SheafSystem  0.0.0.0
jcb_space.h
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 
18 // Interface for class jcb_space.
19 
20 #ifndef JCB_SPACE_H
21 #define JCB_SPACE_H
22 
23 #ifndef SHEAF_DLL_SPEC_H
24 #include "SheafSystem/sheaf_dll_spec.h"
25 #endif
26 
27 #ifndef VD_SPACE_H
28 #include "SheafSystem/vd_space.h"
29 #endif
30 
31 #ifndef JCB_TABLE_DOFS_TYPE_H
32 #include "SheafSystem/jcb_table_dofs_type.h"
33 #endif
34 
35 namespace fiber_bundle
36 {
37 
38  using namespace sheaf;
39  class at1_space;
40  class jcb;
41 
42 
46 class SHEAF_DLL_SPEC jcb_space : public vd_space
47 {
48  friend class fiber_bundles_namespace;
49 
50 public:
51 
52  // ===========================================================
54  // ===========================================================
56 
57 public:
58 
62  typedef jcb member_type;
63 
68 
73 
77  static const std::string& standard_schema_poset_name();
78 
82  static const poset_path& standard_schema_path();
83 
88 
89  using vd_space::d;
90 
94  static int d(const namespace_poset& xns, const poset_path& xschema_path, bool xauto_access);
95 
100  static int d(const namespace_poset& xns, const poset_path& xdomain_space_path, const poset_path& xrange_space_path, bool xauto_access);
101 
105  static int d(int xdd, int xdr);
106 
113  static 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 
127  int dd() const;
128 
132  int dd(bool xauto_access) const;
133 
137  poset_path domain_path() const;
138 
142  poset_path domain_path(bool xauto_access) const;
143 
147  virtual int dr() const;
148 
152  int dr(bool xauto_access) const;
153 
157  poset_path range_path() const;
158 
162  poset_path range_path(bool xauto_access) const;
163 
164 protected:
165 
170  jcb_space();
171 
175  jcb_space(const jcb_space& xother) { };
176 
180  virtual ~jcb_space();
181 
185  jcb_space(jcb* xtop, jcb* xbottom);
186 
187 private:
188 
190 
191  // ===========================================================
193  // ===========================================================
195 
196 public:
197 
198 protected:
199 
200 private:
201 
205  static bool make_prototype();
206 
208 
209  // ===========================================================
211  // ===========================================================
213 
214 public:
215 
219  virtual poset_type type_id() const;
220 
224  virtual const char* class_name() const;
225 
229  virtual pod_index_type prereq_id(int xi) const;
230 
231 protected:
232 
237  {
238  return const_cast<jcb_space&>(*this);
239  };
240 
241 private:
242 
244 
245  // ===========================================================
247  // ===========================================================
249 
250 public:
251 
252 protected:
253 
254 private:
255 
257 
258 
259  // ===========================================================
261  // ===========================================================
263 
264 public:
265 
269  virtual bool is_ancestor_of(const any* xother) const;
270 
275  virtual jcb_space* clone() const;
276 
280  virtual bool invariant() const;
281 
282 protected:
283 private:
284 
286 
287 };
288 
289 
290 } // namespace fiber_bundle
291 
292 
293 #endif // JCB_SPACE_H
at1_space domain_space_type
The type of domain vector space associated with this space.
Definition: jcb_space.h:67
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...
jcb_table_dofs_type table_dofs_type
The table dofs type defined by the standard schema.
Definition: jcb_space.h:87
poset_type
Identifiers for poset types.
Definition: poset_type.h:41
jcb member_type
The type of member associated with this space.
Definition: jcb_space.h:62
A client handle for a general, abstract partially order set.
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
Abstract base class with useful features for all objects.
Definition: any.h:39
Table dofs type for class jcb.
at1_space range_space_type
The type of range vector space associated with this space.
Definition: jcb_space.h:72
jcb_space(const jcb_space &xother)
Copy constructor; disabled.
Definition: jcb_space.h:175
Abstract jacobian class.
Definition: jcb.h:229
int d() const
The dimension.
Definition: vd_space.cc:174
An abstract vector space viewed as an antisymmetric tensor space of degree 1.
Definition: at1_space.h:42
An abstract vector space of dimension d.
Definition: vd_space.h:47
An abstract space of Jacobians.
Definition: jcb_space.h:46
int_type pod_index_type
The plain old data index type.
Definition: pod_types.h:49
Namespace for the sheaves component of the sheaf system.
jcb_space & operator=(const poset_state_handle &xother)
Assignment operator; disabled.
Definition: jcb_space.h:236
Namespace for the fiber_bundles component of the sheaf system.