SheafSystem  0.0.0.0
sec_at2_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_AT2_E2_H
22 #define SEC_AT2_E2_H
23 
24 #ifndef SHEAF_DLL_SPEC_H
25 #include "SheafSystem/sheaf_dll_spec.h"
26 #endif
27 
28 #ifndef SEC_AT2_H
29 #include "SheafSystem/sec_at2.h"
30 #endif
31 
32 #ifndef AT2_E2
33 #include "SheafSystem/at2_e2.h"
34 #endif
35 
36 namespace fiber_bundle
37 {
38 
39 class sec_e2;
40 
41 //==============================================================================
42 // CLASS SEC_AT2_E2
43 //==============================================================================
44 
48 class SHEAF_DLL_SPEC sec_at2_e2 : public sec_at2
49 {
50  // ===========================================================
52  // ===========================================================
54 
55 public:
56 
57  // Typedefs:
58 
62  typedef at2_e2 fiber_type;
63 
68 
74  static host_type& new_host(namespace_type& xns,
75  const poset_path& xhost_path,
76  const poset_path& xschema_path,
77  const poset_path& xvector_space_path,
78  bool xauto_access);
79 
86  static host_type& standard_host(namespace_type& xns,
87  const poset_path& xbase_path,
88  const poset_path& xrep_path,
89  const std::string& xsection_suffix,
90  const std::string& xfiber_suffix,
91  bool xauto_access);
92 
93 protected:
94 
95 private:
96 
98 
99 
100  //============================================================================
102  //============================================================================
104 
105 public:
106 
110  sec_at2_e2();
111 
116  sec_at2_e2(const sec_rep_space_member& xother);
117 
123  sec_at2_e2(sec_rep_space* xhost,
124  abstract_poset_member& xbase_mbr,
125  int xbase_version = CURRENT_HOST_VERSION,
126  bool xauto_access = true);
127 
131  virtual sec_at2_e2& operator=(const abstract_poset_member& xother);
132 
136  sec_at2_e2& operator=(const sec_at2_e2& xother);
137 
141  sec_at2_e2& operator=(const at2_e2& xfiber);
142 
146  sec_at2_e2& operator=(const at2_e2_lite& xfiber);
147 
151  ~sec_at2_e2();
152 
156  virtual const fiber_type& fiber_prototype() const;
157 
162  sec_at2_e2(sec_rep_space* xhost,
163  section_dof_map* xdof_map = 0,
164  bool xauto_access = true);
165 
170  sec_at2_e2(const sec_rep_space* xhost, pod_index_type xhub_id);
171 
176  sec_at2_e2(const sec_rep_space* xhost, const scoped_index& xid);
177 
182  sec_at2_e2(const sec_rep_space* xhost, const std::string& xname);
183 
188  sec_at2_e2(const namespace_poset* xnamespace,
189  const poset_path& xpath,
190  bool xauto_access = true);
191 
192 protected:
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 
239 
240 
241  //============================================================================
243  //============================================================================
245 
246 public:
247 
248 protected:
249 
250 private:
251 
253 
254 
255  //============================================================================
257  //============================================================================
259 
260 public:
261 
265  virtual const std::string& class_name() const;
266 
270  static const std::string& static_class_name();
271 
275  virtual sec_at2_e2* clone() const;
276 
282  inline sec_at2_e2* clone(bool xnew_state, bool xauto_access = true) const
283  {
284  return static_cast<sec_at2_e2*>(sec_atp::clone(xnew_state, xauto_access));
285  }
286 
287 protected:
288 
289 private:
290 
292 
293 
294  //============================================================================
296  //============================================================================
298 
299 public:
300 
304  bool fiber_is_ancestor_of(const any* xother) const;
305 
309  bool is_ancestor_of(const any* xother) const;
310 
314  bool invariant() const;
315 
316 protected:
317 
318 private:
319 
321 
322 };
323 
324 //==============================================================================
325 // NON-MEMBER FUNCTIONS
326 //==============================================================================
327 
328 class sec_at0;
329 class sec_e2;
330 
331 namespace sec_atp_algebra
332 {
333 
338 SHEAF_DLL_SPEC void hook(const sec_e2& x0, const sec_e2& x1, sec_at0& xresult,
339  bool xauto_access);
340 
345 SHEAF_DLL_SPEC void hook(const sec_at2_e2& x0, const sec_e2& x1, sec_e2& xresult,
346  bool xauto_access);
347 
352 SHEAF_DLL_SPEC void star(const sec_at2_e2& x0, sec_at0& xresult, bool xauto_access);
357 SHEAF_DLL_SPEC void star(const sec_at0& x0, sec_at2_e2& xresult, bool xauto_access);
362 SHEAF_DLL_SPEC void star(const sec_e2& x0, sec_e2& xresult, bool xauto_access);
363 
368 SHEAF_DLL_SPEC void wedge(const sec_e2& x0, const sec_e2& x1, sec_at2_e2& xresult,
369  bool xauto_access);
370 
371 } // namespace sec_atp_algebra
372 
373 } // namespace fiber_bundle
374 
375 #endif // ifndef SEC_AT2_E2_H
An antisymmetric rank 2 tensor over a Euclidean vector space of dimension 2 (persistent version)...
Definition: at2_e2.h:412
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.
An antisymmetric rank 2 tensor over a Euclidean vector space of dimension 2 (volatile version)...
Definition: at2_e2.h:146
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
A section of a bundle with fiber type at2_e2.
Definition: sec_at2_e2.h:48
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
at2_e2 fiber_type
The fiber type.
Definition: sec_at2_e2.h:62
A section of a bundle with fiber type at2.
Definition: sec_at2.h:46
SHEAF_DLL_SPEC tensor_variance hook(const tensor_variance &x0)
The variance of the hook of a tensor with variance x0.
sec_e2 vector_space_type
Type of underlying vector space.
Definition: sec_at2_e2.h:67
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.
Antisymetric tensor of degree 0. As the degree is 0 there is nothing to be symmetric or antisymmetric...
Definition: sec_at0.h:51
sec_at2_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_at2_e2.h:282
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