SheafSystem  0.0.0.0
sec_jcb_space.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 SEC_JCB_SPACE_H
22 #define SEC_JCB_SPACE_H
23 
24 #ifndef SHEAF_DLL_SPEC_H
25 #include "SheafSystem/sheaf_dll_spec.h"
26 #endif
27 
28 #ifndef SEC_VD_SPACE_H
29 #include "SheafSystem/sec_vd_space.h"
30 #endif
31 
32 #ifndef JCB_TABLE_DOFS_TYPE_H
33 #include "SheafSystem/jcb_table_dofs_type.h"
34 #endif
35 
36 namespace sheaf
37 {
38 class namespace_poset;
39 }
40 
41 namespace fiber_bundle
42 {
43 using namespace sheaf;
44 
45 class sec_at0;
46 class sec_at1;
47 class sec_jcb;
48 class jcb;
49 
53 class SHEAF_DLL_SPEC sec_jcb_space : public sec_vd_space
54 {
55  friend class fiber_bundles_namespace;
56 
57  // ===========================================================
59  // ===========================================================
61 
62 public:
63 
68 
72  typedef jcb fiber_type;
73 
78 
83 
88 
93 
102  static bool same_vector_fiber_space(const namespace_poset& xns,
103  const poset_path& xschema_path,
104  const poset_path& xdomain_path,
105  const poset_path& xrange_path,
106  bool xauto_access);
107 
113  static sec_jcb_space& new_table(namespace_type& xhost,
114  const poset_path& xpath,
115  const poset_path& xschema_path,
116  const poset_path& xdomain_path,
117  const poset_path& xrange_path,
118  bool xauto_access);
119 
120  //============================================================================
121  // TABLE DOFS
122  //============================================================================
123 
124  using sec_vd_space::d;
125 
129  static int d(int xdd, int xdr);
130 
134  int dd() const;
135 
139  int dd(bool xauto_access) const;
140 
144  poset_path domain_path() const;
145 
149  poset_path domain_path(bool xauto_access) const;
150 
154  virtual int dr() const;
155 
159  int dr(bool xauto_access) const;
160 
164  poset_path range_path() const;
165 
169  poset_path range_path(bool xauto_access) const;
170 
171 protected:
172 
177  sec_jcb_space();
178 
182  sec_jcb_space(const sec_jcb_space& xother) { };
183 
187  virtual ~sec_jcb_space();
188 
192  sec_jcb_space(sec_jcb* xtop, sec_jcb* xbottom);
193 
194 private:
195 
197 
198 
199  // ===========================================================
201  // ===========================================================
203 
204 public:
205 
206 protected:
207 
208 private:
209 
211 
212 
213  // ===========================================================
215  // ===========================================================
217 
218 public:
219 
220 protected:
221 
222 private:
223 
225 
226 
227  // ===========================================================
229  // ===========================================================
231 
232 public:
233 
234 protected:
235 
236 private:
237 
241  static bool make_prototype();
242 
244 
245 
246  // ===========================================================
248  // ===========================================================
250 
251 public:
252 
256  virtual poset_type type_id() const;
257 
261  virtual const char* class_name() const;
262 
266  virtual pod_index_type prereq_id(int xi) const;
267 
268 protected:
269 
274  {
275  return const_cast<sec_jcb_space&>(*this);
276  };
277 
278 private:
279 
281 
282 
283  // ===========================================================
285  // ===========================================================
287 
288 public:
289 
290 protected:
291 
292 private:
293 
295 
296 
297  // ===========================================================
299  // ===========================================================
301 
302 public:
303 
307  virtual bool is_ancestor_of(const any* xother) const;
308 
313  virtual sec_jcb_space* clone() const;
314 
318  virtual bool invariant() const;
319 
320 protected:
321 
322 private:
323 
325 
326 };
327 
328 
329 } // namespace fiber_bundle
330 
331 
332 #endif // SEC_JCB_SPACE_H
sec_jcb_space & operator=(const poset_state_handle &xother)
Assignment operator; disabled.
The default name space; a poset which contains other posets as members.
The standard fiber bundles name space; extends the standard sheaves namespace by defining base space...
poset_type
Identifiers for poset types.
Definition: poset_type.h:41
A client handle for a general, abstract partially order set.
jcb fiber_type
The fiber type.
Definition: sec_jcb_space.h:72
A path defined by a poset name and a member name separated by a forward slash (&#39;/&#39;). For example: "cell_definitions/triangle".
Definition: poset_path.h:48
An abstract vector section space of dimension d.
Definition: sec_vd_space.h:52
A section of a bundle with fiber type at1.
Definition: sec_at1.h:48
jcb_table_dofs_type table_dofs_type
The table dofs type defined by the standard schema.
Definition: sec_jcb_space.h:92
Abstract base class with useful features for all objects.
Definition: any.h:39
sec_jcb member_type
The type of member associated with this space.
Definition: sec_jcb_space.h:67
sec_at1 range_space_type
The type of vector sections that form the range of jacobian sections of this type.
Definition: sec_jcb_space.h:87
Table dofs type for class jcb.
sec_at0 scalar_type
The scalar type definition.
Definition: sec_jcb_space.h:77
Abstract jacobian class.
Definition: jcb.h:229
sec_jcb_space(const sec_jcb_space &xother)
Copy constructor; disabled.
A section of a bundle with fiber type jcb.
Definition: sec_jcb.h:49
int_type pod_index_type
The plain old data index type.
Definition: pod_types.h:49
An abstract section space of Jacobians.
Definition: sec_jcb_space.h:53
Namespace for the sheaves component of the sheaf system.
sec_at1 domain_space_type
The type of vector sections that form the domain of jacobian sections of this type.
Definition: sec_jcb_space.h:82
Namespace for the fiber_bundles component of the sheaf system.
Antisymetric tensor of degree 0. As the degree is 0 there is nothing to be symmetric or antisymmetric...
Definition: sec_at0.h:51