SheafSystem  0.0.0.0
local_base_space_member.h
Go to the documentation of this file.
1 
2 //
3 // Copyright (c) 2014 Limit Point Systems, Inc.
4 //
5 // Licensed under the Apache License, Version 2.0 (the "License");
6 // you may not use this file except in compliance with the License.
7 // You may obtain a copy of the License at
8 //
9 // http://www.apache.org/licenses/LICENSE-2.0
10 //
11 // Unless required by applicable law or agreed to in writing, software
12 // distributed under the License is distributed on an "AS IS" BASIS,
13 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 // See the License for the specific language governing permissions and
15 // limitations under the License.
16 //
17 
20 
21 #ifndef LOCAL_BASE_SPACE_MEMBER_H
22 #define LOCAL_BASE_SPACE_MEMBER_H
23 
24 #ifndef SHEAF_DLL_SPEC_H
25 #include "SheafSystem/sheaf_dll_spec.h"
26 #endif
27 
28 #ifndef BASE_SPACE_MEMBER_H
29 #include "SheafSystem/base_space_member.h"
30 #endif
31 
32 #ifndef ARRAY_POSET_DOF_MAP_H
33 #include "SheafSystem/array_poset_dof_map.h"
34 #endif
35 
36 namespace fiber_bundle
37 {
38 
39  using namespace sheaf;
40 
41 class chart_point;
42 
46 class SHEAF_DLL_SPEC local_base_space_member : public base_space_member
47 {
48  // ===========================================================
50  // ===========================================================
52 
53 public:
54 
59  chart_point* refine_point(const chart_point& xpt) const;
60 
65  virtual void refine_point_pa(const chart_point& xpt, chart_point& result) const = 0;
66 
71  chart_point* unrefine_point(const chart_point& xpt) const;
72 
77  virtual void unrefine_point_pa(const chart_point& xpt, chart_point& result) const = 0;
78 
83  virtual void refine() = 0;
84 
89  virtual void unrefine() = 0;
90 
95  virtual void simplify() = 0;
96 
101  virtual void unsimplify() = 0;
102 
103 protected:
104 
109 
110 private:
111 
113 
114 
115  // ===========================================================
117  // ===========================================================
119 
120 public:
121 
122 protected:
123 
124 private:
125 
127 
128 
129  // ===========================================================
131  // ===========================================================
133 
134 public:
135 
136 protected:
137 
138 private:
139 
141 
142 
143  // ===========================================================
145  // ===========================================================
147 
148 public:
149 
153  virtual local_base_space_member* clone() const = 0;
154 
160  inline local_base_space_member* clone(bool xnew_state, bool xauto_access = true) const
161  {
162  return static_cast<local_base_space_member*>(base_space_member::clone(xnew_state, xauto_access));
163  }
164 
165 protected:
166 
167 private:
168 
170 
171 
172  // ===========================================================
174  // ===========================================================
176 
177 public:
178 
183  {
185  };
186 
191  {
193  };
194 
195 protected:
196 
197 private:
198 
200 
201 
202  // ===========================================================
204  // ===========================================================
206 
207 public:
208 
214  {
215  return static_cast<local_base_space_member*>(base_space_member::p_join(other));
216  };
217 
223  {
224  return static_cast<local_base_space_member*>(base_space_member::p_meet(other));
225  };
226 
227 protected:
228 
229 private:
230 
232 
233 
234  // ===========================================================
236  // ===========================================================
238 
239 public:
240 
246  inline local_base_space_member* l_join(abstract_poset_member* other, bool xnew_jem = true)
247  {
248  return static_cast<local_base_space_member*>(base_space_member::l_join(other, xnew_jem));
249  };
250 
256  inline local_base_space_member* l_meet(abstract_poset_member* other, bool xnew_jem = true)
257  {
258  return static_cast<local_base_space_member*>(base_space_member::l_meet(other, xnew_jem));
259  };
260 
266  inline local_base_space_member* l_not(bool xnew_jem = true) const
267  {
268  return static_cast<local_base_space_member*>(base_space_member::l_not(xnew_jem));
269  };
270 
271 protected:
272 
273 private:
274 
276 
277 
278  // ===========================================================
280  // ===========================================================
282 
283 public:
284 
285 protected:
286 
287 private:
288 
290 
291 
292  // ===========================================================
294  // ===========================================================
295 
296 public:
297 
301  virtual bool invariant() const;
302 
306  virtual bool is_ancestor_of(const any* other) const;
307 
311  virtual local_base_space_member& operator=(const abstract_poset_member& xother);
312 
316  local_base_space_member& operator=(const local_base_space_member& xother);
317 
318 protected:
319 
320 private:
321 
323 };
324 
325 } // namespace fiber_bundle
326 
327 #endif // LOCAL_BASE_SPACE_MEMBER_H
A client handle for a member of a base space poset.
base_space_member * p_join(abstract_poset_member *other) const
poset join of this with other, auto-, pre-, and self-allocated versions the poset join is the least u...
local_base_space_member * l_not(bool xnew_jem=true) const
lattice pseudo-complement of this, auto-, pre- and self allocated versions The lattice pseudo-complem...
base_space_member * l_join(abstract_poset_member *other, bool xnew_jem=true)
lattice join of this with other, auto-, pre-, and self-allocated versions the lattice join is the lea...
local_base_space_member * least_jem() const
The smallest member which is join-equivalent to this.
A point in chart space.
Definition: chart_point.h:52
local_base_space_member * p_meet(abstract_poset_member *other)
poset meet of this with other, auto-, pre-, and self-allocated versions the poset meet is the greates...
local_base_space_member * l_meet(abstract_poset_member *other, bool xnew_jem=true)
lattice meet of this with other, auto-, pre-, and self-allocated versions the lattice meet is the gre...
base_space_member * least_jem() const
The smallest member which is join-equivalent to this.
A client handle for a member of a base space poset.
base_space_member * l_not(bool xnew_jem=true) const
lattice pseudo-complement of this, auto-, pre- and self allocated versions The lattice pseudo-complem...
Abstract base class with useful features for all objects.
Definition: any.h:39
local_base_space_member * greatest_jem() const
The largest member which is join-equivalent to this.
local_base_space_member * l_join(abstract_poset_member *other, bool xnew_jem=true)
lattice join of this with other, auto-, pre-, and self-allocated versions the lattice join is the lea...
base_space_member * p_meet(abstract_poset_member *other)
poset meet of this with other, auto-, pre-, and self-allocated versions the poset meet is the greates...
local_base_space_member * p_join(abstract_poset_member *other) const
poset join of this with other, auto-, pre-, and self-allocated versions the poset join is the least u...
base_space_member * l_meet(abstract_poset_member *other, bool xnew_jem=true)
lattice meet of this with other, auto-, pre-, and self-allocated versions the lattice meet is the gre...
local_base_space_member * clone(bool xnew_state, bool xauto_access=true) const
Make a new handle instance of current. Attach the new instance to a new state if xnew_state is true...
Namespace for the sheaves component of the sheaf system.
base_space_member * greatest_jem() const
The largest member which is join-equivalent to this.
An abstract client handle for a member of a poset.
Namespace for the fiber_bundles component of the sheaf system.
virtual base_space_member * clone() const
Make a new handle, no state instance of current.