24 #ifndef SHEAF_DLL_SPEC_H 25 #include "SheafSystem/sheaf_dll_spec.h" 29 #include "SheafSystem/ed.h" 155 e3_lite(
const row_dofs_type& xrow_dofs);
160 e3_lite& operator=(
const row_dofs_type& xrow_dofs);
178 operator row_dofs_type& ();
184 operator const row_dofs_type& ()
const;
191 virtual void put_components(
const value_type& x_comp,
259 virtual int dd()
const;
294 static const tp_lite& static_tp_prototype(
int xp);
300 virtual const tp_lite& tp_prototype(
int xp)
const;
306 static const atp_lite& static_atp_prototype(
int xp);
312 virtual const atp_lite& atp_prototype(
int xp)
const;
318 static const stp_lite& static_stp_prototype(
int xp);
324 virtual const stp_lite& stp_prototype(
int xp)
const;
347 bool c_le(
const e3_lite& xother)
const;
357 bool c_ge(
const e3_lite& xother)
const;
362 bool d_lt(
const e3_lite& xother)
const;
367 bool d_le(
const e3_lite& xother)
const;
372 bool d_gt(
const e3_lite& xother)
const;
377 bool d_ge(
const e3_lite& xother)
const;
395 virtual const std::string& class_name()
const;
433 virtual bool is_ancestor_of(
const any_lite& xother)
const;
438 bool invariant()
const;
448 virtual const void*
row_dofs()
const;
467 class SHEAF_DLL_SPEC
e3 :
public ed 479 static const poset_path& standard_schema_path();
576 const row_dofs_type& xrdt,
577 bool xauto_access =
true);
582 e3& operator=(
const row_dofs_type& xrdt);
592 e3& operator=(
const e3& xother);
602 virtual const volatile_type& lite_prototype()
const;
607 virtual volatile_type* lite_type()
const;
675 virtual void put_components(
dof_type x_comp,
683 operator row_dofs_type& ();
689 operator const row_dofs_type& ()
const;
708 static tp* new_tp(
tp_space& xvector_space,
int xp);
714 static atp* new_atp(
tp_space& xvector_space,
int xp);
720 static stp* new_stp(
tp_space& xvector_space,
int xp);
726 virtual tp* new_tp(
int xp,
bool xauto_access)
const;
732 virtual atp* new_atp(
int xp,
bool xauto_access)
const;
738 virtual stp* new_stp(
int xp,
bool xauto_access)
const;
756 virtual const std::string& class_name()
const;
773 inline e3*
clone(
bool xnew_state,
bool xauto_access =
true)
const 775 return static_cast<e3*
>(
ed::clone(xnew_state, xauto_access));
794 bool is_ancestor_of(
const any* xother)
const;
799 bool invariant()
const;
815 template <
typename T>
816 std::ostream& operator<<(std::ostream& xos, const e3_row_dofs_type<T>& xrdt);
824 deep_size(
const e3_lite& x0,
bool xinclude_shallow =
true);
841 void SHEAF_DLL_SPEC
cross(
const e3& x0,
const e3& x1,
e3& xresult,
bool xauto_access);
847 void SHEAF_DLL_SPEC
cross_equal(
e3& xresult,
const e3& xother,
bool xauto_access);
1135 namespace vd_algebra
1144 bool is_contravariant =
true);
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.
e3_row_dofs_type< double > row_dofs_type
The type of the row dofs.
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).
at2_e3_lite atp_type
Type of antisymmetric tensor of degree 2 over e3_lite.
void atp_type
Type of antisymmetric tensor of degree 4 over e3_lite.
e3_row_dofs_type< T > row_dofs_type
The type of the row dofs (type of this).
A symmetric tensor of degree p over an abstract vector space.
vd_value_type value_type
The type of component in the fiber; the scalar type in the fiber vector space.
row_dofs_type _row_dofs
Row_dofs_type.
An antisymmetric tensor of degree p.
t4_e3 tp_type
Type of general tensor of degree 4 over e3.
Euclidean vector space of dimension 3 (volatile version).
st4_e3 stp_type
Type of symmetric tensor of degree 4 over e3.
static const std::string & static_class_name()
The name of this class.
e3 stp_type
Type of symmetric tensor of degree 1 over e3.
at0_lite stp_type
Type of symmetric tensor of degree 0 over e3_lite.
An antisymmetric rank 3 tensor over a Euclidean vector space of dimension 3. (volatile version)...
An antisymmetric rank 2 tensor over a Euclidean vector space of dimension 3. (persistent version)...
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.
at2_e3 atp_type
Type of antisymmetric tensor of degree 2 over e3.
A client handle for a general, abstract partially order set.
A symmetric rank 3 tensor over a 3D Euclidean vector space (persistent version).
A path defined by a poset name and a member name separated by a forward slash ('/'). For example: "cell_definitions/triangle".
A tensor of degree 2 over a Euclidean vector space of dimension 3 (persistent version).
at0 atp_type
Type of antisymmetric tensor of degree 0 over e3.
A symmetric rank 4 tensor over a Euclidean vector space of dimension 3. (volatile version)...
t3_e3_lite tp_type
Type of general tensor of degree 3 over e3_lite.
virtual void put_components(const dof_type xcomps[], int xcomps_dimension)
Set values of all the components to the values in xcomps.
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).
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.
void atp_type
Type of antisymmetric tensor of degree 4 over e3.
Euclidean vector space of dimension 3 (persistent version).
T components[3]
The components (row_dofs).
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).
e3 tp_type
Type of general tensor of degree 1 over e3.
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).
An antisymmetric tensor of degree p over an abstract vector space (volatile version).
A general tensor of "degree" p and given "variance" over an abstract vector space.
at0 stp_type
Type of symmetric tensor of degree 0 over e3.
Abstract base class with useful features for all volatile objects.
An antisymmetric rank 3 tensor over a 3D Euclidean vector space.
Abstract base class with useful features for all objects.
A tensor of degree 3 over a Euclidean vector space of dimension 3 (volatile version).
Tensor types of degree P over VECTOR_TYPE. No generic implementation defined, must be specialized for...
e3_lite atp_type
Type of antisymmetric tensor of degree 1 over e3_lite.
e3 atp_type
Type of antisymmetric tensor of degree 1 over e3.
e3_lite stp_type
Type of symmetric tensor of degree 1 over e3_lite.
Euclidean vector space of dimension d (volatile version).
A symmetric tensor of degree 2 over a Euclidean vector space of dimension 3 (volatile version)...
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.
An index within the external ("client") scope of a given id space.
A tensor of degree 4 over a Euclidean vector space of dimension 3 (volatile version).
st3_e3_lite stp_type
Type of symmetric tensor of degree 3 over e3_lite.
A scalar viewed as an antisymmetric tensor of degree 0. As the degree is 0 there is nothing to be sym...
Antisymetric tensor of degree 0 (volatile version).
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...
T dof_type
The type of the dofs.
e3_lite vector_space_type
Type of underlying vector space.
A tensor of degree 2 over a Euclidean vector space of dimension 3 (volatile version).
A general tensor of degree p over an abstract vector space (volatile version). Volatile version does ...
The mathematical group GL(3, R). The group of all invertible, linear transformations on the R3...
virtual ed * clone() const
Make a new handle, no state instance of current.
T & operator[](int xindex)
Value of xindex-th component (row dof) (non const version).
static int d()
The dimension of the row dof components.
t3_e3 tp_type
Type of general tensor of degree 3 over e3.
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.
st2_e3_lite stp_type
Type of symmetric tensor of degree 2 over e3_lite.
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).
st2_e3 stp_type
Type of symmetric tensor of degree 2 over e3.
at3_e3 atp_type
Type of antisymmetric tensor of degree 3 over e3.
Euclidean vector space of dimension d (peresistent version).
int_type pod_index_type
The plain old data index type.
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.
st3_e3 stp_type
Type of symmetric tensor of degree 3 over e3.
A symmetric rank 3 tensor over a Euclidean vector space of dimension 3. (volatile version)...
A symmetric rank 3 tensor over a 3D Euclidean vector space (persistent version).
t2_e3_lite tp_type
Type of general tensor of degree 2 over e3_lite.
An antisymmetric rank 2 tensor over a Euclidean vector space of dimension 3. (volatile version)...
st4_e3_lite stp_type
Type of symmetric tensor of degree 4 over e3_lite.
e3 vector_space_type
Type of underlying vector space.
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.
at3_e3_lite atp_type
Type of antisymmetric tensor of degree 3 over e3_lite.
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...
at0_lite atp_type
Type of antisymmetric tensor of degree 0 over e3_lite.
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...
at0 tp_type
Type of general tensor of degree 0 over e3.
An abstract tensor space of degree p.
A symmetric tensor of degree p over an abstract vector space (volatile version).
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).
e3_lite volatile_type
The associated volatile type.
void put_components(const dof_type comps[], int comps_dimension)
Sets values of all the components to the values in comps.
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).
double vd_value_type
The type of component in the fiber; the scalar type in the fiber vector space.
t4_e3_lite tp_type
Type of general tensor of degree 4 over e3_lite.
Row dofs type for class e3.
A symmetric tensor of degree 2 over a Euclidean vector space of dimension 3 (persistent version)...
e3_row_dofs_type< double > row_dofs_type
The type of the row dofs.
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.
t2_e3 tp_type
Type of general tensor of degree 2 over e3.
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.