SheafSystem  0.0.0.0
sec_e4.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_E4_H
22 #define SEC_E4_H
23 
24 #ifndef SHEAF_DLL_SPEC_H
25 #include "SheafSystem/sheaf_dll_spec.h"
26 #endif
27 
28 #ifndef SEC_ED_H
29 #include "SheafSystem/sec_ed.h"
30 #endif
31 
32 #ifndef E4_H
33 #include "SheafSystem/e4.h"
34 #endif
35 
36 namespace fiber_bundle
37 {
38 
39 //==============================================================================
40 // CLASS SEC_E4
41 //==============================================================================
42 
47 class SHEAF_DLL_SPEC sec_e4 : public sec_ed
48 {
49 
50  // ===========================================================
52  // ===========================================================
54 
55 public:
56 
57  // Typedefs:
58 
62  typedef e4 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& xscalar_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_e4();
111 
116  sec_e4(const sec_rep_space* xhost, const scoped_index& xindex);
117 
122  sec_e4(const sec_rep_space* xhost, const std::string& xname);
123 
128  sec_e4(const namespace_poset* xnamespace,
129  const poset_path& xpath,
130  bool xauto_access = true);
131 
135  explicit sec_e4(const sec_rep_space_member* xother);
136 
141  sec_e4(sec_rep_space* xhost,
142  section_dof_map* xdof_map = 0,
143  bool xauto_access = true);
144 
150  sec_e4(sec_rep_space* xhost,
151  abstract_poset_member& xbase_mbr,
152  int xbase_version = CURRENT_HOST_VERSION,
153  bool xauto_access = true);
154 
160  sec_e4(sec_rep_space* xhost, const subposet& xbase_parts, bool xauto_sccess);
161 
165  virtual sec_e4& operator=(const abstract_poset_member& xother);
166 
170  sec_e4& operator=(const sec_e4& xother);
171 
175  sec_e4& operator=(const e4& xfiber);
176 
180  sec_e4& operator=(const e4_lite& xfiber);
181 
185  ~sec_e4();
186 
190  virtual const fiber_type& fiber_prototype() const;
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  //============================================================================
230 
231 public:
232 protected:
233 private:
234 
235  //============================================================================
237  //============================================================================
239 
240 public:
241 
242 protected:
243 
244 private:
245 
247 
248 
249  //============================================================================
251  //============================================================================
253 
254 public:
255 
256 protected:
257 
258 private:
259 
261 
262 
263  //============================================================================
265  //============================================================================
267 
268 public:
269 
270 protected:
271 
272 private:
273 
275 
276 
277  //============================================================================
279  //============================================================================
281 
282 public:
283 
287  virtual const std::string& class_name() const;
288 
292  static const std::string& static_class_name();
293 
297  virtual sec_e4* clone() const;
298 
304  inline sec_e4* clone(bool xnew_state, bool xauto_access = true) const
305  {
306  return static_cast<sec_e4*>(sec_ed::clone(xnew_state, xauto_access));
307  }
308 
309 protected:
310 
311 private:
312 
314 
315 
316  //============================================================================
318  //============================================================================
320 
321 public:
322 
326  bool fiber_is_ancestor_of(const any* xother) const;
327 
331  bool is_ancestor_of(const any* other) const;
332 
336  bool invariant() const;
337 
338 protected:
339 
340 private:
341 
343 
344 };
345 
346 //==============================================================================
347 // NON-MEMBER FUNCTIONS
348 //==============================================================================
349 
350 #ifndef DOXYGEN_1_5_4_SKIP_UNKNOWN
351 
355 std::ostream& operator << (std::ostream& xos, sec_e4& xv);
356 
357 #endif // ifndef DOXYGEN_1_5_4_SKIP_UNKNOWN
358 
359 //==============================================================================
360 // NON-MEMBER FUNCTIONS
361 //==============================================================================
362 
363 //==============================================================================
364 // TP FACET
365 //==============================================================================
366 
367 // Forward declarations needed for specialization:
368 
369 class sec_at0;
370 // class sec_t2_e4;
371 // class sec_t3_e4;
372 // class sec_at2_e4;
373 // class sec_at3_e4;
374 // class sec_st2_e4;
375 // class sec_st3_e4;
376 
380 template<> class tensor_section_traits<0, sec_e4>
381 {
382 public:
386  typedef sec_at0 tp_type;
387 
391  typedef sec_at0 atp_type;
392 
396  typedef sec_at0 stp_type;
397 };
398 
402 template<> class tensor_section_traits<1, sec_e4>
403 {
404 public:
408  typedef sec_e4 tp_type;
409 
413  typedef sec_e4 atp_type;
414 
418  typedef sec_e4 stp_type;
419 };
420 
424 template<> class tensor_section_traits<2, sec_e4>
425 {
426 public:
430  //typedef sec_t2_e4 tp_type;
431  typedef void tp_type;
432 
436  //typedef sec_at2_e4 atp_type;
437  typedef void atp_type;
438 
442  //typedef sec_st2_e4 stp_type;
443  typedef void stp_type;
444 };
445 
449 template<> class tensor_section_traits<3, sec_e4>
450 {
451 public:
455  //typedef sec_t3_e4 tp_type;
456  typedef void tp_type;
457 
461  //typedef sec_at3_e4 atp_type;
462  //typedef void atp_type;
463 
467  //typedef sec_st3_e4 stp_type;
468  typedef void stp_type;
469 };
470 
471 } // namespace fiber_bundle
472 
473 #endif // ifndef SEC_E4_H
474 
475 
A client handle for a subposet.
Definition: subposet.h:86
Euclidean vector space of dimension 4 (persistent version).
Definition: e4.h:410
The abstract map from section dof ids to section dof values of heterogeneous type.
A space of scalars viewed as an antisymmetric tensor section space of degree 1.
Definition: sec_at1_space.h:48
sec_at0 atp_type
Type of antisymmetric tensor of degree 0 over sec_e4.
Definition: sec_e4.h:391
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.
sec_e4 stp_type
Type of symmetric tensor of degree 1 over sec_e4.
Definition: sec_e4.h:418
sec_e4 tp_type
Type of general tensor of degree 1 over sec_e4.
Definition: sec_e4.h:408
void stp_type
Type of antisymmetric tensor of degree 3 over sec_e4.
Definition: sec_e4.h:468
void atp_type
Type of antisymmetric tensor of degree 2 over sec_e4.
Definition: sec_e4.h:437
void stp_type
Type of symmetric tensor of degree 2 over sec_e4.
Definition: sec_e4.h:443
A section of a fiber bundle with a d-dimensional Euclidean vector space fiber.
Definition: sec_ed.h:47
Abstract base class with useful features for all objects.
Definition: any.h:39
virtual sec_ed * clone() const
Make a new handle, no state instance of current.
Definition: sec_ed.cc:502
sec_at0 stp_type
Type of symmetric tensor of degree 0 over sec_e4.
Definition: sec_e4.h:396
An index within the external ("client") scope of a given id space.
Definition: scoped_index.h:116
sec_e4 * 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_e4.h:304
sec_e4 atp_type
Type of antisymmetric tensor of degree 1 over sec_e4.
Definition: sec_e4.h:413
sec_e4 vector_space_type
Type of underlying vector space.
Definition: sec_e4.h:67
Tensor types of degree P over VECTOR_TYPE. Must be specialized for every supported combination of VEC...
Definition: sec_vd.h:519
e4 fiber_type
The fiber type.
Definition: sec_e4.h:62
Euclidean vector space of dimension 4 (volatile version).
Definition: e4.h:111
sec_at0 tp_type
Type of general tensor of degree 0 over sec_e4.
Definition: sec_e4.h:386
void tp_type
Type of general tensor of degree 3 over sec_e4.
Definition: sec_e4.h:456
A section of a fiber bundle with a 4-dimensional Euclidean vector space fiber.
Definition: sec_e4.h:47
An abstract client handle for a member of a poset.
Namespace for the fiber_bundles component of the sheaf system.
void tp_type
Type of general tensor of degree 2 over sec_e4.
Definition: sec_e4.h:431
Antisymetric tensor of degree 0. As the degree is 0 there is nothing to be symmetric or antisymmetric...
Definition: sec_at0.h:51
SHEAF_DLL_SPEC std::ostream & operator<<(std::ostream &os, const binary_index &xbi)
Insert binary_index& xbi into ostream& os.
Definition: binary_index.cc:35
A handle for a poset whose members are numerical representations of sections of a fiber bundle...
Definition: sec_rep_space.h:61