SheafSystem  0.0.0.0
sec_atp.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_ATP_H
22 #define SEC_ATP_H
23 
24 #ifndef SHEAF_DLL_SPEC_H
25 #include "SheafSystem/sheaf_dll_spec.h"
26 #endif
27 
28 #ifndef SEC_TP_H
29 #include "SheafSystem/sec_tp.h"
30 #endif
31 
32 #ifndef ATP_H
33 #include "SheafSystem/atp.h"
34 #endif
35 
36 namespace fiber_bundle
37 {
38 
39 class sec_atp_space;
40 
41 //==============================================================================
42 // CLASS SEC_ATP
43 //==============================================================================
44 
48 class SHEAF_DLL_SPEC sec_atp : public sec_tp
49 {
50 
51  // ===========================================================
53  // ===========================================================
55 
56 public:
57 
62 
66  typedef atp fiber_type;
67 
73  static host_type& new_host(namespace_type& xns,
74  const poset_path& xhost_path,
75  const poset_path& xschema_path,
76  const poset_path& xvector_space_path,
77  bool xauto_access);
78 
79 protected:
80 
81 private:
82 
84 
85 
86  //============================================================================
88  //============================================================================
90 
91 public:
92 
96  sec_atp();
97 
102  sec_atp(const sec_rep_space* xhost, pod_index_type xhub_id);
103 
108  sec_atp(const sec_rep_space* xhost, const scoped_index& xid);
109 
114  sec_atp(const sec_rep_space* xhost, const std::string& xname);
115 
120  sec_atp(const namespace_poset* xnamespace,
121  const poset_path& xpath,
122  bool xauto_access = true);
123 
127  explicit sec_atp(const sec_rep_space_member* xother);
128 
132  sec_atp(sec_rep_space* xhost,
133  section_dof_map* xdof_map = 0,
134  bool xauto_access = true);
135 
141  sec_atp(sec_rep_space* xhost,
142  abstract_poset_member& xbase_mbr,
143  int xbase_version = CURRENT_HOST_VERSION,
144  bool xauto_access = true);
145 
149  virtual sec_atp& operator=(const abstract_poset_member& xother);
150 
154  sec_atp& operator=(const sec_atp& xother);
155 
159  sec_atp& operator=(const atp& xfiber);
160 
164  sec_atp& operator=(const atp_lite& xfiber);
165 
169  ~sec_atp();
170 
174  virtual const fiber_type& fiber_prototype() const;
175 
179  bool is_p_form(bool xauto_access) const;
180 
184  void put_is_p_form(bool xauto_access);
185 
189  bool is_p_vector(bool xauto_access) const;
190 
194  void put_is_p_vector(bool xauto_access);
195 
196 protected:
197 
198 private:
199 
201 
202 
203  //============================================================================
205  //============================================================================
207 
208 public:
209 
210 protected:
211 
212 private:
213 
215 
216 
217  //============================================================================
219  //============================================================================
221 
222 public:
223 
224 protected:
225 
226 private:
227 
229 
230 
231  //============================================================================
233  //============================================================================
235 
236 public:
237 
238 protected:
239 
240 private:
241 
243 
244 
245  //============================================================================
247  //============================================================================
249 
250 public:
251 
255  virtual const std::string& class_name() const;
256 
260  static const std::string& static_class_name();
261 
265  virtual sec_atp* clone() const;
266 
272  inline sec_atp* clone(bool xnew_state, bool xauto_access = true) const
273  {
274  return static_cast<sec_atp*>(sec_tp::clone(xnew_state, xauto_access));
275  }
276 
277 protected:
278 
279 private:
280 
282 
283 
284  // ===========================================================
286  // ===========================================================
288 
289 public:
290 
294  host_type* host() const;
295 
299  virtual bool host_is_ancestor_of(const poset_state_handle* other) const;
300 
301 protected:
302 
303 private:
304 
306 
307 
308  //============================================================================
310  //============================================================================
312 
313 public:
314 
318  bool fiber_is_ancestor_of(const any* xother) const;
319 
323  bool is_ancestor_of(const any* other) const;
324 
328  bool invariant() const;
329 
330 protected:
331 
332 private:
333 
335 
336 };
337 
338 //==============================================================================
339 // NON-MEMBER FUNCTIONS
340 //==============================================================================
341 
346 namespace sec_atp_algebra
347 {
348 
353 SHEAF_DLL_SPEC void hook(const sec_atp& x0, const sec_atp& x1, sec_atp& xresult,
354  bool xauto_access);
355 
360 SHEAF_DLL_SPEC void star(const sec_atp& x0, sec_atp& xresult, bool xauto_access);
361 
366 SHEAF_DLL_SPEC void wedge(const sec_atp& x0, const sec_atp& x1, sec_atp& xresult,
367  bool xauto_access);
368 
369 } // namespace sec_atp_algebra
370 
371 } // namespace fiber_bundle
372 
373 #endif // ifndef SEC_ATP_H
374 
375 
atp fiber_type
The fiber type.
Definition: sec_atp.h:66
An antisymmetric tensor of degree p.
Definition: atp.h:190
The abstract map from section dof ids to section dof values of heterogeneous type.
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...
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
A member of a sec_rep_space; a section.
An antisymmetric tensor of degree p over an abstract vector space (volatile version).
Definition: atp.h:44
Abstract base class with useful features for all objects.
Definition: any.h:39
An abstract antisymmetric tensor section space of degree p.
Definition: sec_atp_space.h:47
An index within the external ("client") scope of a given id space.
Definition: scoped_index.h:116
A section of a bundle with fiber type atp.
Definition: sec_atp.h:48
SHEAF_DLL_SPEC tensor_variance hook(const tensor_variance &x0)
The variance of the hook of a tensor with variance x0.
sec_atp * 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...
Definition: sec_atp.h:272
virtual sec_tp * clone() const
Make a new handle, no state instance of current.
Definition: sec_tp.cc:903
sec_atp_space host_type
The type of host poset.
Definition: sec_atp.h:61
int_type pod_index_type
The plain old data index type.
Definition: pod_types.h:49
SHEAF_DLL_SPEC tensor_variance wedge(const tensor_variance &x0, const tensor_variance &x1)
The variance of the wedge of a tensor with variance x0 with a tnesor with variance x1...
An abstract client handle for a member of a poset.
SHEAF_DLL_SPEC tensor_variance star(const tensor_variance &x0, int xdd)
The variance of the Hodge star of a tensor with variance x0 over a vector space of dimension xdd...
Namespace for the fiber_bundles component of the sheaf system.
A section of a bundle with fiber type tp.
Definition: sec_tp.h:49
A handle for a poset whose members are numerical representations of sections of a fiber bundle...
Definition: sec_rep_space.h:61