SheafSystem  0.0.0.0
sec_at3_e3.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_AT3_E3_H
22 #define SEC_AT3_E3_H
23 
24 #ifndef SHEAF_DLL_SPEC_H
25 #include "SheafSystem/sheaf_dll_spec.h"
26 #endif
27 
28 #ifndef SEC_AT3_H
29 #include "SheafSystem/sec_at3.h"
30 #endif
31 
32 #ifndef AT3_E3
33 #include "SheafSystem/at3_e3.h"
34 #endif
35 
36 namespace fiber_bundle
37 {
38 
39 class sec_e3;
40 
41 //==============================================================================
42 // CLASS SEC_AT3_E3
43 //==============================================================================
44 
48 class SHEAF_DLL_SPEC sec_at3_e3 : public sec_at3
49 {
50 
51  // ===========================================================
53  // ===========================================================
55 
56 public:
57 
58  // Typedefs:
59 
63  typedef at3_e3 fiber_type;
64 
69 
75  static host_type& new_host(namespace_type& xns,
76  const poset_path& xhost_path,
77  const poset_path& xschema_path,
78  const poset_path& xvector_space_path,
79  bool xauto_access);
80 
87  static host_type& standard_host(namespace_type& xns,
88  const poset_path& xbase_path,
89  const poset_path& xrep_path,
90  const std::string& xsection_suffix,
91  const std::string& xfiber_suffix,
92  bool xauto_access);
93 
94 protected:
95 
96 private:
97 
99 
100 
101 
102  //============================================================================
104  //============================================================================
106 
107 public:
108 
112  sec_at3_e3();
113 
118  sec_at3_e3(const sec_rep_space_member& xother);
119 
125  sec_at3_e3(sec_rep_space* xhost,
126  abstract_poset_member& xbase_mbr,
127  int xbase_version = CURRENT_HOST_VERSION,
128  bool xauto_access = true);
129 
133  virtual sec_at3_e3& operator=(const abstract_poset_member& xother);
134 
138  sec_at3_e3& operator=(const sec_at3_e3& xother);
139 
143  sec_at3_e3& operator=(const at3_e3& xfiber);
144 
148  sec_at3_e3& operator=(const at3_e3_lite& xfiber);
149 
153  ~sec_at3_e3();
154 
158  virtual const fiber_type& fiber_prototype() const;
159 
164  sec_at3_e3(sec_rep_space* xhost,
165  section_dof_map* xdof_map = 0,
166  bool xauto_access = true);
167 
172  sec_at3_e3(const sec_rep_space* xhost, pod_index_type xhub_id);
173 
178  sec_at3_e3(const sec_rep_space* xhost, const scoped_index& xid);
179 
184  sec_at3_e3(const sec_rep_space* xhost, const std::string& xname);
185 
190  sec_at3_e3(const namespace_poset* xnamespace,
191  const poset_path& xpath,
192  bool xauto_access = true);
193 
194 protected:
195 
196 private:
197 
199 
200 
201  //============================================================================
203  //============================================================================
205 
206 public:
207 
208 protected:
209 
210 private:
211 
213 
214 
215  //============================================================================
217  //============================================================================
219 
220 public:
221 
222 protected:
223 
224 private:
225 
227 
228 
229  //============================================================================
231  //============================================================================
233 
234 public:
235 
236 protected:
237 
238 private:
239 
241 
242 
243  //============================================================================
245  //============================================================================
247 
248 public:
249 
250 protected:
251 
252 private:
253 
255 
256 
257  //============================================================================
259  //============================================================================
261 
262 public:
263 
264 protected:
265 
266 private:
267 
269 
270 
271  //============================================================================
273  //============================================================================
275 
276 public:
277 
281  virtual const std::string& class_name() const;
282 
286  static const std::string& static_class_name();
287 
291  virtual sec_at3_e3* clone() const;
292 
298  inline sec_at3_e3* clone(bool xnew_state, bool xauto_access = true) const
299  {
300  return static_cast<sec_at3_e3*>(sec_atp::clone(xnew_state, xauto_access));
301  }
302 
303 protected:
304 
305 private:
306 
308 
309 
310  //============================================================================
312  //============================================================================
314 
315 public:
316 
320  bool fiber_is_ancestor_of(const any* xother) const;
321 
325  bool is_ancestor_of(const any* other) const;
326 
330  bool invariant() const;
331 
332 protected:
333 
334 private:
335 
337 
338 };
339 
340 //==============================================================================
341 // NON-MEMBER FUNCTIONS
342 //==============================================================================
343 
344 class sec_at0;
345 class sec_e3;
346 class sec_at2_e3;
347 
348 namespace sec_atp_algebra
349 {
350 
355 SHEAF_DLL_SPEC void hook(const sec_at3_e3& x0, const sec_e3& x1, sec_at2_e3& xresult,
356  bool xauto_access);
357 
362 SHEAF_DLL_SPEC void star(const sec_at3_e3& x0, sec_at0& xresult, bool xauto_access);
363 
368 SHEAF_DLL_SPEC void star(const sec_at0& x0, sec_at3_e3& xresult, bool xauto_access);
369 
374 SHEAF_DLL_SPEC void wedge(const sec_at2_e3& x0, const sec_e3& x1, sec_at3_e3& xresult,
375  bool xauto_access);
376 
377 } // namespace sec_atp_algebra
378 
379 } // namespace fiber_bundle
380 
381 #endif // ifndef SEC_AT3_E3_H
382 
at3_e3 fiber_type
The fiber type.
Definition: sec_at3_e3.h:63
A section of a bundle with fiber type at2_e3.
Definition: sec_at2_e3.h:48
The abstract map from section dof ids to section dof values of heterogeneous type.
A section of a bundle with fiber type at3_e3.
Definition: sec_at3_e3.h:48
An antisymmetric rank 3 tensor over a Euclidean vector space of dimension 3. (volatile version)...
Definition: at3_e3.h:120
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 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 rank 3 tensor over a 3D Euclidean vector space.
Definition: at3_e3.h:372
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
virtual sec_atp * clone() const
Make a new handle, no state instance of current.
Definition: sec_atp.cc:563
SHEAF_DLL_SPEC tensor_variance hook(const tensor_variance &x0)
The variance of the hook of a tensor with variance x0.
A section of a bundle with fiber type at3.
Definition: sec_at3.h:46
A section of a fiber bundle with a 3-dimensional Euclidean vector space fiber.
Definition: sec_e3.h:47
sec_e3 vector_space_type
Type of underlying vector space.
Definition: sec_at3_e3.h:68
int_type pod_index_type
The plain old data index type.
Definition: pod_types.h:49
sec_at3_e3 * 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_at3_e3.h:298
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.
Antisymetric tensor of degree 0. As the degree is 0 there is nothing to be symmetric or antisymmetric...
Definition: sec_at0.h:51
A handle for a poset whose members are numerical representations of sections of a fiber bundle...
Definition: sec_rep_space.h:61