SheafSystem  0.0.0.0
sec_st2_e2.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_ST2_E2_H
22 #define SEC_ST2_E2_H
23 
24 #ifndef SHEAF_DLL_SPEC_H
25 #include "SheafSystem/sheaf_dll_spec.h"
26 #endif
27 
28 #ifndef SEC_ST2_H
29 #include "SheafSystem/sec_st2.h"
30 #endif
31 
32 #ifndef ST2_E2
33 #include "SheafSystem/st2_e2.h"
34 #endif
35 
36 namespace fiber_bundle
37 {
38 
39 class sec_e2;
40 
41 //==============================================================================
42 // CLASS SEC_ST2_E2
43 //==============================================================================
44 
48 class SHEAF_DLL_SPEC sec_st2_e2 : public sec_st2
49 {
50 
51  // ===========================================================
53  // ===========================================================
55 
56 public:
57 
58  // Typedefs:
59 
63  typedef st2_e2 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  //============================================================================
103  //============================================================================
105 
106 public:
107 
111  sec_st2_e2();
112 
113  // New handle/old state constructor.
114 
119  sec_st2_e2(const sec_rep_space* xhost, pod_index_type xhub_id);
120 
125  sec_st2_e2(const sec_rep_space* xhost, const scoped_index& xid);
126 
131  sec_st2_e2(const sec_rep_space* xhost, const std::string& xname);
132 
137  sec_st2_e2(const namespace_poset* xnamespace,
138  const poset_path& xpath,
139  bool xauto_access = true);
140 
144  explicit sec_st2_e2(const sec_rep_space_member* xother);
145 
149  sec_st2_e2(sec_rep_space* xhost,
150  section_dof_map* xdof_map = 0,
151  bool xauto_access = true);
152 
158  sec_st2_e2(sec_rep_space* xhost,
159  abstract_poset_member& xbase_mbr,
160  int xbase_version = CURRENT_HOST_VERSION,
161  bool xauto_access = true);
162 
166  virtual sec_st2_e2& operator=(const abstract_poset_member& xother);
167 
171  sec_st2_e2& operator=(const sec_st2_e2& xother);
172 
176  sec_st2_e2& operator=(const st2_e2& xfiber);
177 
181  sec_st2_e2& operator=(const st2_e2_lite& xfiber);
182 
186  ~sec_st2_e2();
187 
191  virtual const fiber_type& fiber_prototype() const;
192 
193 protected:
194 
195 private:
196 
198 
199 
200  //============================================================================
202  //============================================================================
204 
205 public:
206 
207 protected:
208 
209 private:
210 
212 
213 
214  //============================================================================
216  //============================================================================
218 
219 public:
220 
221 protected:
222 
223 private:
224 
226 
227 
228  //============================================================================
230  //============================================================================
232 
233 public:
234 
235 protected:
236 
237 private:
238 
240 
241 
242  //============================================================================
244  //============================================================================
246 
247 public:
248 
249 protected:
250 
251 private:
252 
254 
255 
256  //============================================================================
258  //============================================================================
260 
261 public:
262 
263 protected:
264 
265 private:
266 
268 
269 
270  //============================================================================
272  //============================================================================
274 
275 public:
276 
280  virtual const std::string& class_name() const;
281 
285  static const std::string& static_class_name();
286 
290  virtual sec_st2_e2* clone() const;
291 
297  inline sec_st2_e2* clone(bool xnew_state, bool xauto_access = true) const
298  {
299  return static_cast<sec_st2_e2*>(sec_st2::clone(xnew_state, xauto_access));
300  }
301 
302 protected:
303 
304 private:
305 
307 
308 
309  //============================================================================
311  //============================================================================
313 
314 public:
315 
319  bool fiber_is_ancestor_of(const any* xother) const;
320 
324  bool is_ancestor_of(const any* xother) const;
325 
329  bool invariant() const;
330 
331 protected:
332 
333 private:
334 
336 
337 };
338 
339 //==============================================================================
340 // NON-MEMBER FUNCTIONS
341 //==============================================================================
342 
343 
344 class sec_at0;
345 
346 namespace sec_st2_algebra
347 {
348 
349 #ifndef DOXYGEN_1_5_4_SKIP_UNKNOWN
350 
354 SHEAF_DLL_SPEC void determinant(const sec_st2_e2& x0, sec_at0& xresult, bool xauto_access);
355 
356 #endif // ifndef DOXYGEN_1_5_4_SKIP_UNKNOWN
357 
358 } // namespace sec_st2_algebra
359 
360 } // namespace fiber_bundle
361 
362 #endif // ifndef SEC_ST2_E2_H
363 
364 
An abstract symmetric tensor section space of degree p.
Definition: sec_stp_space.h:47
virtual sec_st2 * clone() const
Make a new handle, no state instance of current.
Definition: sec_st2.cc:491
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 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.
A section of a bundle with fiber type st2_e2.
Definition: sec_st2_e2.h:48
Abstract base class with useful features for all objects.
Definition: any.h:39
sec_e2 vector_space_type
Type of underlying vector space.
Definition: sec_st2_e2.h:68
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 st2.
Definition: sec_st2.h:46
st2_e2 fiber_type
The fiber type.
Definition: sec_st2_e2.h:63
sec_st2_e2 * 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_st2_e2.h:297
void determinant(const S0 &x0, SR &xresult, bool xauto_access)
Definition: sec_st2.impl.h:131
int_type pod_index_type
The plain old data index type.
Definition: pod_types.h:49
A symmetric tensor of degree 2 over a Euclidean vector space of dimension 2 (persistent version)...
Definition: st2_e2.h:431
A symmetric tensor of degree 2 over a Euclidean vector space of dimension 2 (volatile version)...
Definition: st2_e2.h:150
An abstract client handle for a member of a poset.
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 section of a fiber bundle with a 2-dimensional Euclidean vector space fiber.
Definition: sec_e2.h:48
A handle for a poset whose members are numerical representations of sections of a fiber bundle...
Definition: sec_rep_space.h:61