SheafSystem  0.0.0.0
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 E3_H
22 #define E3_H
23 
24 #ifndef SHEAF_DLL_SPEC_H
25 #include "SheafSystem/sheaf_dll_spec.h"
26 #endif
27 
28 #ifndef ED_H
29 #include "SheafSystem/ed.h"
30 #endif
31 
32 namespace fiber_bundle
33 {
34 
35 class atp;
36 class stp;
37 class tp;
38 
39 
40 //==============================================================================
41 // CLASS E3_ROW_DOFS_TYPE
42 //==============================================================================
43 
47 template <typename T>
49 {
50 public:
51 
55  typedef T dof_type;
56 
61 
65  static const std::string& static_class_name();
66 
70  static int d();
71 
76  T& operator[] (int xindex);
77 
82  const T& operator[] (int xindex) const;
83 
87  e3_row_dofs_type<T>* clone() const;
88 
93  e3_row_dofs_type<T>* clone(bool xnew_state, bool xauto_access) const
94  {
95  return clone();
96  }
97 
102 
103 protected:
104 private:
105 
106 };
107 
108 //==============================================================================
109 // CLASS E3_LITE
110 //==============================================================================
111 
116 class SHEAF_DLL_SPEC e3_lite : public ed_lite
117 {
118  //============================================================================
120  //============================================================================
122 
123 public:
124 
125  // Typedefs:
126 
131 
135  e3_lite();
136 
140  e3_lite(const e3_lite& xother);
141 
145  e3_lite& operator=(const e3_lite& xother);
146 
150  virtual ~e3_lite();
151 
155  e3_lite(const row_dofs_type& xrow_dofs);
156 
160  e3_lite& operator=(const row_dofs_type& xrow_dofs);
161 
165  explicit e3_lite(const value_type& xvalue);
166 
170  e3_lite(const value_type& x_comp,
171  const value_type& y_comp,
172  const value_type& z_comp);
173 
178  operator row_dofs_type& ();
179 
184  operator const row_dofs_type& () const;
185 
187 
191  virtual void put_components(const value_type& x_comp,
192  const value_type& y_comp,
193  const value_type& z_comp);
194 
195 
196 protected:
197 
201  row_dofs_type _row_dofs;
202 
203 private:
204 
206 
207 
208  //============================================================================
210  //============================================================================
212 
213 public:
214 protected:
215 private:
216 
218 
219 
220  //============================================================================
222  //============================================================================
224 
225 public:
226 protected:
227 private:
228 
230 
231 
232  //============================================================================
234  //============================================================================
236 
237 public:
238 protected:
239 private:
240 
242 
243 
244  //============================================================================
246  //============================================================================
248 
249 public:
250 
255 
259  virtual int dd() const;
260 
261 protected:
262 private:
263 
265 
266 
267  //============================================================================
269  //============================================================================
271 
272 public:
273 
277  bool operator==(const e3_lite& xother) const;
278 
282  e3_lite& operator=(const value_type& xvalue);
283 
288  bool operator==(const value_type& xvalue) const;
289 
294  static const tp_lite& static_tp_prototype(int xp);
295 
300  virtual const tp_lite& tp_prototype(int xp) const;
301 
306  static const atp_lite& static_atp_prototype(int xp);
307 
312  virtual const atp_lite& atp_prototype(int xp) const;
313 
318  static const stp_lite& static_stp_prototype(int xp);
319 
324  virtual const stp_lite& stp_prototype(int xp) const;
325 
326 protected:
327 private:
328 
330 
331 
332  //============================================================================
334  //============================================================================
336 
337 public:
338 
342  bool c_lt(const e3_lite& xother) const;
343 
347  bool c_le(const e3_lite& xother) const;
348 
352  bool c_gt(const e3_lite& xother) const;
353 
357  bool c_ge(const e3_lite& xother) const;
358 
362  bool d_lt(const e3_lite& xother) const;
363 
367  bool d_le(const e3_lite& xother) const;
368 
372  bool d_gt(const e3_lite& xother) const;
373 
377  bool d_ge(const e3_lite& xother) const;
378 
379 protected:
380 private:
381 
383 
384 
385  //============================================================================
387  //============================================================================
389 
390 public:
391 
395  virtual const std::string& class_name() const;
396 
400  static const std::string& static_class_name();
401 
405  virtual e3_lite* clone() const;
406 
411  virtual e3_lite* clone(bool xnew_state, bool xauto_access) const
412  {
413  return clone();
414  }
415 
416 protected:
417 private:
418 
420 
421 
422 
423  //============================================================================
425  //============================================================================
427 
428 public:
429 
433  virtual bool is_ancestor_of(const any_lite& xother) const;
434 
438  bool invariant() const;
439 
443  virtual void* row_dofs();
444 
448  virtual const void* row_dofs() const;
449 
450 protected:
451 private:
452 
454 };
455 
456 
457 //==============================================================================
458 // CLASS E3
459 //==============================================================================
460 
461 class tp_space;
462 
467 class SHEAF_DLL_SPEC e3 : public ed
468 {
469  // ===========================================================
471  // ===========================================================
473 
474 public:
475 
479  static const poset_path& standard_schema_path();
480 
484  static void make_standard_schema(namespace_poset& xns);
485 
491  static host_type& new_host(namespace_type& xns,
492  const poset_path& xhost_path,
493  const poset_path& xschema_path,
494  const poset_path& xscalar_space_path,
495  bool xauto_access);
496 
503  static host_type& standard_host(namespace_type& xns, const std::string& xsuffix, bool xauto_access);
504 
505 protected:
506 
507 private:
508 
510 
511 
512  //============================================================================
514  //============================================================================
516 
517 public:
518 
519  // Typedefs:
520 
525 
530 
535 
539  e3();
540 
541  // New handle/old state constructors.
542 
547  e3(const poset_state_handle* xhost, pod_index_type xhub_id);
548 
553  e3(const poset_state_handle* xhost, const scoped_index& xid);
554 
559  e3(const poset_state_handle* xhost, const std::string& xname);
560 
564  explicit e3(abstract_poset_member* xother);
565 
569  e3(poset_state_handle* xhost, bool xauto_access = true);
570 
575  e3(poset_state_handle& xhost,
576  const row_dofs_type& xrdt,
577  bool xauto_access = true);
578 
582  e3& operator=(const row_dofs_type& xrdt);
583 
587  virtual e3& operator=(const abstract_poset_member& xother);
588 
592  e3& operator=(const e3& xother);
593 
597  ~e3();
598 
602  virtual const volatile_type& lite_prototype() const;
603 
607  virtual volatile_type* lite_type() const;
608 
609 protected:
610 private:
611 
613 
614 
615  //============================================================================
617  //============================================================================
619 
620 public:
621 protected:
622 private:
623 
625 
626 
627  //===========================================================================
629  //===========================================================================
631 
632 public:
633 protected:
634 private:
635 
637 
638 
639  //===========================================================================
641  //===========================================================================
643 
644 public:
645 protected:
646 private:
647 
649 
650 
651  //===========================================================================
653  //===========================================================================
655 
656 public:
657 protected:
658 private:
659 
661 
662 
663  //===========================================================================
665  //===========================================================================
667 
668 public:
669 
670  using ed::put_components;
671 
675  virtual void put_components(dof_type x_comp,
676  dof_type y_comp,
677  dof_type z_comp);
678 
683  operator row_dofs_type& ();
684 
689  operator const row_dofs_type& () const;
690 
691 protected:
692 private:
693 
695 
696 
697  //===========================================================================
699  //===========================================================================
701 
702 public:
703 
708  static tp* new_tp(tp_space& xvector_space, int xp);
709 
714  static atp* new_atp(tp_space& xvector_space, int xp);
715 
720  static stp* new_stp(tp_space& xvector_space, int xp);
721 
726  virtual tp* new_tp(int xp, bool xauto_access) const;
727 
732  virtual atp* new_atp(int xp, bool xauto_access) const;
733 
738  virtual stp* new_stp(int xp, bool xauto_access) const;
739 
740 protected:
741 private:
742 
744 
745 
746  //============================================================================
748  //============================================================================
750 
751 public:
752 
756  virtual const std::string& class_name() const;
757 
761  static const std::string& static_class_name();
762 
766  virtual e3* clone() const;
767 
773  inline e3* clone(bool xnew_state, bool xauto_access = true) const
774  {
775  return static_cast<e3*>(ed::clone(xnew_state, xauto_access));
776  }
777 
778 protected:
779 private:
780 
782 
783 
784  //============================================================================
786  //============================================================================
788 
789 public:
790 
794  bool is_ancestor_of(const any* xother) const;
795 
799  bool invariant() const;
800 
801 
802 protected:
803 private:
804 
806 };
807 
808 //==============================================================================
809 // NON-MEMBER FUNCTIONS
810 //==============================================================================
811 
815 template <typename T>
816 std::ostream& operator<<(std::ostream& xos, const e3_row_dofs_type<T>& xrdt);
817 
822 size_t
823 SHEAF_DLL_SPEC
824 deep_size(const e3_lite& x0, bool xinclude_shallow = true);
825 
826 //==============================================================================
827 // E3 FACET:
828 //==============================================================================
829 
834 namespace e3_algebra
835 {
836 
841 void SHEAF_DLL_SPEC cross(const e3& x0, const e3& x1, e3& xresult, bool xauto_access);
842 
847 void SHEAF_DLL_SPEC cross_equal(e3& xresult, const e3& xother, bool xauto_access);
848 
853 SHEAF_DLL_SPEC e3_lite* cross(const e3_lite& x0, const e3_lite& x1);
854 
859 void SHEAF_DLL_SPEC cross(const e3_lite& x0, const e3_lite& x1, e3_lite& xresult);
860 
865 void SHEAF_DLL_SPEC cross_equal(e3_lite& xresult, const e3_lite& xother);
866 
871 SHEAF_DLL_SPEC e3_lite* operator^(const e3_lite& x0, const e3_lite& x1);
872 
877 SHEAF_DLL_SPEC e3_lite& operator^=(e3_lite& xresult, const e3_lite& xother);
878 
879 } // namespace e3_algebra
880 
881 //==============================================================================
882 // TP FACET
883 //==============================================================================
884 
885 // Forward declarations needed for specialization:
886 
887 class at0_lite;
888 class at2_e3_lite;
889 class at3_e3_lite;
890 class st2_e3_lite;
891 class st3_e3_lite;
892 class st4_e3_lite;
893 class t2_e3_lite;
894 class t3_e3_lite;
895 class t4_e3_lite;
896 
897 class at0;
898 class at2_e3;
899 class at3_e3;
900 class st2_e3;
901 class st3_e3;
902 class st4_e3;
903 class t2_e3;
904 class t3_e3;
905 class t4_e3;
906 
907 
911 template<> class tensor_traits<0, e3_lite>
912 {
913 public:
917  typedef at0_lite tp_type;
918 
923 
928 };
929 
933 template<> class tensor_traits<1, e3_lite>
934 {
935 public:
939  typedef e3_lite tp_type;
940 
944  typedef e3_lite atp_type;
945 
949  typedef e3_lite stp_type;
950 };
951 
955 template<> class tensor_traits<2, e3_lite>
956 {
957 public:
962 
967 
972 };
973 
977 template<> class tensor_traits<3, e3_lite>
978 {
979 public:
984 
989 
994 };
995 
999 template<> class tensor_traits<4, e3_lite>
1000 {
1001 public:
1006 
1010  typedef void atp_type;
1011 
1016 };
1017 
1021 template<> class tensor_traits<0, e3>
1022 {
1023 public:
1027  typedef at0 tp_type;
1028 
1032  typedef at0 atp_type;
1033 
1037  typedef at0 stp_type;
1038 };
1039 
1043 template<> class tensor_traits<1, e3>
1044 {
1045 public:
1049  typedef e3 tp_type;
1050 
1054  typedef e3 atp_type;
1055 
1059  typedef e3 stp_type;
1060 };
1061 
1065 template<> class tensor_traits<2, e3>
1066 {
1067 public:
1071  typedef t2_e3 tp_type;
1072 
1076  typedef at2_e3 atp_type;
1077 
1081  typedef st2_e3 stp_type;
1082 };
1083 
1087 template<> class tensor_traits<3, e3>
1088 {
1089 public:
1093  typedef t3_e3 tp_type;
1094 
1098  typedef at3_e3 atp_type;
1099 
1103  typedef st3_e3 stp_type;
1104 };
1105 
1109 template<> class tensor_traits<4, e3>
1110 {
1111 public:
1115  typedef t4_e3 tp_type;
1116 
1120  typedef void atp_type;
1121 
1125  typedef st4_e3 stp_type;
1126 };
1127 
1128 
1129 class gl3_lite;
1130 
1131 //==============================================================================
1132 // VD FACET
1133 //==============================================================================
1134 
1135 namespace vd_algebra
1136 {
1137 
1138 //@hack Need to move this to vd.h.
1139 
1143 SHEAF_DLL_SPEC void transform_basis_by(e3_lite& xv, const gl3_lite& xtransform,
1144  bool is_contravariant = true);
1145 
1149 SHEAF_DLL_SPEC void add(const e3_lite& x0, const e3_lite& x1, vd_value_type xt, e3_lite& xresult);
1150 
1151 // ===========================================================
1152 // VECTOR ALGEBRA: TOLERANCE COMPARISON
1153 // ===========================================================
1154 
1158 SHEAF_DLL_SPEC bool a_eql(const e3_lite& x0, const e3_lite& x1);
1159 
1163 SHEAF_DLL_SPEC bool a_eql(const e3_lite& x0, const e3_lite& x1, double xtolerance);
1164 
1168 SHEAF_DLL_SPEC bool a_eql(const e3_lite& x0, const e3_lite& x1, const e3_lite& xtolerance);
1169 
1173 SHEAF_DLL_SPEC bool r_eql(const e3_lite& x0, const e3_lite& x1);
1174 
1178 SHEAF_DLL_SPEC bool r_eql(const e3_lite& x0, const e3_lite& x1, double xtolerance);
1179 
1183 SHEAF_DLL_SPEC bool r_eql(const e3_lite& x0, const e3_lite& x1, const e3_lite& xtolerance);
1184 
1188 SHEAF_DLL_SPEC bool c_eql(const e3_lite& x0, const e3_lite& x1);
1189 
1193 SHEAF_DLL_SPEC bool c_eql(const e3_lite& x0, const e3_lite& x1, double xtolerance);
1194 
1198 SHEAF_DLL_SPEC bool c_eql(const e3_lite& x0, const e3_lite& x1, const e3_lite& xtolerance);
1199 
1200 } // namespace vd_algebra
1201 
1202 } // namespace fiber_bundle
1203 
1204 #endif // ifndef E3_H
e3_row_dofs_type< T > * clone(bool xnew_state, bool xauto_access) const
Virtual constructor, makes a new instance of the same type as this; synonym for clone(), intended for use only in certain templates.
Definition: e3.h:93
e3_row_dofs_type< double > row_dofs_type
The type of the row dofs.
Definition: e3.h:524
SHEAF_DLL_SPEC void add(const e3_lite &x0, const e3_lite &x1, vd_value_type xt, e3_lite &xresult)
Weighted sum x0*(1-xt) + x1*xt (pre-allocated version for volatile types).
Definition: e3.cc:2381
at2_e3_lite atp_type
Type of antisymmetric tensor of degree 2 over e3_lite.
Definition: e3.h:966
void atp_type
Type of antisymmetric tensor of degree 4 over e3_lite.
Definition: e3.h:1010
e3_row_dofs_type< T > row_dofs_type
The type of the row dofs (type of this).
Definition: e3.h:60
A symmetric tensor of degree p over an abstract vector space.
Definition: stp.h:190
vd_value_type value_type
The type of component in the fiber; the scalar type in the fiber vector space.
Definition: vd.h:129
row_dofs_type _row_dofs
Row_dofs_type.
Definition: e3.h:201
An antisymmetric tensor of degree p.
Definition: atp.h:190
t4_e3 tp_type
Type of general tensor of degree 4 over e3.
Definition: e3.h:1115
Euclidean vector space of dimension 3 (volatile version).
Definition: e3.h:116
st4_e3 stp_type
Type of symmetric tensor of degree 4 over e3.
Definition: e3.h:1125
static const std::string & static_class_name()
The name of this class.
Definition: e3.impl.h:41
e3 stp_type
Type of symmetric tensor of degree 1 over e3.
Definition: e3.h:1059
at0_lite stp_type
Type of symmetric tensor of degree 0 over e3_lite.
Definition: e3.h:927
An antisymmetric rank 3 tensor over a Euclidean vector space of dimension 3. (volatile version)...
Definition: at3_e3.h:120
An antisymmetric rank 2 tensor over a Euclidean vector space of dimension 3. (persistent version)...
Definition: at2_e3.h:424
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...
e3_lite tp_type
Type of general tensor of degree 1 over e3_lite.
Definition: e3.h:939
at2_e3 atp_type
Type of antisymmetric tensor of degree 2 over e3.
Definition: e3.h:1076
A client handle for a general, abstract partially order set.
A symmetric rank 3 tensor over a 3D Euclidean vector space (persistent version).
Definition: st3_e3.h:370
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 tensor of degree 2 over a Euclidean vector space of dimension 3 (persistent version).
Definition: t2_e3.h:457
at0 atp_type
Type of antisymmetric tensor of degree 0 over e3.
Definition: e3.h:1032
A symmetric rank 4 tensor over a Euclidean vector space of dimension 3. (volatile version)...
Definition: st4_e3.h:134
t3_e3_lite tp_type
Type of general tensor of degree 3 over e3_lite.
Definition: e3.h:983
virtual void put_components(const dof_type xcomps[], int xcomps_dimension)
Set values of all the components to the values in xcomps.
Definition: vd.cc:278
void SHEAF_DLL_SPEC cross(const e3_lite &x0, const e3_lite &x1, e3_lite &xresult)
The 3D Euclidean vector "cross" product of x0 with x1 (pre-allocated version).
Definition: e3.cc:2208
SHEAF_DLL_SPEC void transform_basis_by(e3_lite &xv, const gl3_lite &xtransform, bool is_contravariant=true)
Transform the basis and components of xv by xtransform.
Definition: e3.cc:2283
void atp_type
Type of antisymmetric tensor of degree 4 over e3.
Definition: e3.h:1120
Euclidean vector space of dimension 3 (persistent version).
Definition: e3.h:467
T components[3]
The components (row_dofs).
Definition: e3.h:101
T::row_dofs_type & row_dofs(T &x0)
The row dofs pod type for x0 (mutable version).
A tensor of degree 4 over a Euclidean vector space of dimension 3 (persistent version).
Definition: t4_e3.h:438
e3 tp_type
Type of general tensor of degree 1 over e3.
Definition: e3.h:1049
void SHEAF_DLL_SPEC cross_equal(e3_lite &xresult, const e3_lite &xother)
The 3D Euclidean vector "cross" product of xresult with xother (self-allocated version).
Definition: e3.cc:2233
An antisymmetric tensor of degree p over an abstract vector space (volatile version).
Definition: atp.h:44
A general tensor of "degree" p and given "variance" over an abstract vector space.
Definition: tp.h:253
at0 stp_type
Type of symmetric tensor of degree 0 over e3.
Definition: e3.h:1037
Abstract base class with useful features for all volatile objects.
Definition: any_lite.h:48
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
A tensor of degree 3 over a Euclidean vector space of dimension 3 (volatile version).
Definition: t3_e3.h:151
Tensor types of degree P over VECTOR_TYPE. No generic implementation defined, must be specialized for...
Definition: vd.h:714
e3_lite atp_type
Type of antisymmetric tensor of degree 1 over e3_lite.
Definition: e3.h:944
e3 atp_type
Type of antisymmetric tensor of degree 1 over e3.
Definition: e3.h:1054
e3_lite stp_type
Type of symmetric tensor of degree 1 over e3_lite.
Definition: e3.h:949
Euclidean vector space of dimension d (volatile version).
Definition: ed.h:44
A symmetric tensor of degree 2 over a Euclidean vector space of dimension 3 (volatile version)...
Definition: st2_e3.h:148
SHEAF_DLL_SPEC bool c_lt(double xd0, double xd1)
Combined less than comparison of double xd0 to double xd1 using tolerance double_tolerance.
e3_row_dofs_type< T > * clone() const
Creates a new instance of the same type as this.
Definition: e3.impl.h:124
An index within the external ("client") scope of a given id space.
Definition: scoped_index.h:116
A tensor of degree 4 over a Euclidean vector space of dimension 3 (volatile version).
Definition: t4_e3.h:210
st3_e3_lite stp_type
Type of symmetric tensor of degree 3 over e3_lite.
Definition: e3.h:993
A scalar viewed as an antisymmetric tensor of degree 0. As the degree is 0 there is nothing to be sym...
Definition: at0.h:424
Antisymetric tensor of degree 0 (volatile version).
Definition: at0.h:127
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: e3.h:773
T dof_type
The type of the dofs.
Definition: e3.h:55
e3_lite vector_space_type
Type of underlying vector space.
Definition: e3.h:254
A tensor of degree 2 over a Euclidean vector space of dimension 3 (volatile version).
Definition: t2_e3.h:151
A general tensor of degree p over an abstract vector space (volatile version). Volatile version does ...
Definition: tp.h:59
The mathematical group GL(3, R). The group of all invertible, linear transformations on the R3...
Definition: gl3.h:183
virtual ed * clone() const
Make a new handle, no state instance of current.
Definition: ed.cc:759
T & operator[](int xindex)
Value of xindex-th component (row dof) (non const version).
Definition: e3.impl.h:81
static int d()
The dimension of the row dof components.
Definition: e3.impl.h:61
t3_e3 tp_type
Type of general tensor of degree 3 over e3.
Definition: e3.h:1093
bool operator==(const singly_linked_list< T, Alloc > &lhs, const singly_linked_list< T, Alloc > &rhs)
Checks if the contents of lhs and rhs are equal, that is, whether lhs.size() == rhs.size() and each element in lhs compares equal with the element in rhs at the same position.
An abstract vector space viewed as an antisymmetric tensor space of degree 1.
Definition: at1_space.h:42
st2_e3_lite stp_type
Type of symmetric tensor of degree 2 over e3_lite.
Definition: e3.h:971
SHEAF_DLL_SPEC e3_lite * operator^(const e3_lite &x0, const e3_lite &x1)
The 3D Euclidean vector "cross" product of x0 with x1 (auto-allocated version).
Definition: e3.cc:2249
st2_e3 stp_type
Type of symmetric tensor of degree 2 over e3.
Definition: e3.h:1081
at3_e3 atp_type
Type of antisymmetric tensor of degree 3 over e3.
Definition: e3.h:1098
Euclidean vector space of dimension d (peresistent version).
Definition: ed.h:210
int_type pod_index_type
The plain old data index type.
Definition: pod_types.h:49
SHEAF_DLL_SPEC bool c_gt(double xd0, double xd1)
Combined greater than comparison of double xd0 to double xd1 using tolerance double_tolerance.
at0_lite tp_type
Type of general tensor of degree 0 over e3_lite.
Definition: e3.h:917
st3_e3 stp_type
Type of symmetric tensor of degree 3 over e3.
Definition: e3.h:1103
A symmetric rank 3 tensor over a Euclidean vector space of dimension 3. (volatile version)...
Definition: st3_e3.h:118
A symmetric rank 3 tensor over a 3D Euclidean vector space (persistent version).
Definition: st4_e3.h:386
t2_e3_lite tp_type
Type of general tensor of degree 2 over e3_lite.
Definition: e3.h:961
An antisymmetric rank 2 tensor over a Euclidean vector space of dimension 3. (volatile version)...
Definition: at2_e3.h:142
st4_e3_lite stp_type
Type of symmetric tensor of degree 4 over e3_lite.
Definition: e3.h:1015
e3 vector_space_type
Type of underlying vector space.
Definition: e3.h:534
SHEAF_DLL_SPEC bool r_eql(const e3_lite &x0, const e3_lite &x1, const e3_lite &xtolerance)
Relative equality comparison of e3_lite x0 to e3_lite x1 using tolerance e3_lite xtolerance.
Definition: e3.cc:2543
at3_e3_lite atp_type
Type of antisymmetric tensor of degree 3 over e3_lite.
Definition: e3.h:988
SHEAF_DLL_SPEC bool c_eql(const e3_lite &x0, const e3_lite &x1, const e3_lite &xtolerance)
Combined equality equality comparison of e3_lite x0 to e3_lite x1 using tolerance e3_lite xtolerance...
Definition: e3.cc:2619
at0_lite atp_type
Type of antisymmetric tensor of degree 0 over e3_lite.
Definition: e3.h:922
An abstract client handle for a member of a poset.
vd_dof_type dof_type
The type of the degrees of freedom. Note that although dof_type == value_type in this implementation...
Definition: vd.h:431
at0 tp_type
Type of general tensor of degree 0 over e3.
Definition: e3.h:1027
An abstract tensor space of degree p.
Definition: tp_space.h:47
A symmetric tensor of degree p over an abstract vector space (volatile version).
Definition: stp.h:44
SHEAF_DLL_SPEC e3_lite & operator^=(e3_lite &xresult, const e3_lite &xother)
The 3D Euclidean vector "cross" product of xresult with xother (pre-allocated version).
Definition: e3.cc:2266
e3_lite volatile_type
The associated volatile type.
Definition: e3.h:529
void put_components(const dof_type comps[], int comps_dimension)
Sets values of all the components to the values in comps.
Definition: vd.cc:1252
Namespace for the fiber_bundles component of the sheaf system.
A tensor of degree 3 over a Euclidean vector space of dimension 3 (persistent version).
Definition: t3_e3.h:401
double vd_value_type
The type of component in the fiber; the scalar type in the fiber vector space.
Definition: fiber_bundle.h:63
t4_e3_lite tp_type
Type of general tensor of degree 4 over e3_lite.
Definition: e3.h:1005
Row dofs type for class e3.
Definition: e3.h:48
A symmetric tensor of degree 2 over a Euclidean vector space of dimension 3 (persistent version)...
Definition: st2_e3.h:435
e3_row_dofs_type< double > row_dofs_type
The type of the row dofs.
Definition: e3.h:130
SHEAF_DLL_SPEC bool a_eql(const e3_lite &x0, const e3_lite &x1, const e3_lite &xtolerance)
Absolute equality comparison of e3_lite x0 to e3_lite x1 using tolerance e3_lite xtolerance.
Definition: e3.cc:2467
t2_e3 tp_type
Type of general tensor of degree 2 over e3.
Definition: e3.h:1071
virtual e3_lite * clone(bool xnew_state, bool xauto_access) const
Virtual constructor, makes a new instance of the same type as this; synonym for clone(), intended for use only in certain templates.
Definition: e3.h:411