24 #ifndef SHEAF_DLL_SPEC_H 25 #include "SheafSystem/sheaf_dll_spec.h" 28 #ifndef PRIMITIVE_TYPE_H 29 #include "SheafSystem/primitive_type.h" 33 #include "SheafSystem/tuple.h" 37 #include "SheafSystem/std_cmath.h" 40 #ifndef VD_TABLE_DOFS_TYPE_H 41 #include "SheafSystem/vd_table_dofs_type.h" 95 row_dofs_type*
clone()
const;
169 vd_lite(
const row_dofs_type& xrow_dofs);
174 vd_lite& operator=(
const row_dofs_type& xrow_dofs);
179 virtual int d()
const;
184 value_type component(
int xindex)
const;
189 void put_component(
int xindex, value_type xcomp);
194 virtual void components(dof_type xresult[],
int comps_dimension)
const;
199 virtual void put_components(
const dof_type xcomps[],
int xcomps_dimension);
204 vd_lite& operator=(
const value_type& xvalue);
210 bool operator==(
const value_type& xvalue)
const;
222 virtual const value_type&
operator[] (
int xindex)
const;
228 static const tp_lite& static_tp_prototype(
int xp);
234 virtual const tp_lite& tp_prototype(
int xp)
const;
240 static const atp_lite& static_atp_prototype(
int xp);
246 virtual const atp_lite& atp_prototype(
int xp)
const;
252 static const stp_lite& static_stp_prototype(
int xp);
258 virtual const stp_lite& stp_prototype(
int xp)
const;
277 virtual int factor_ct()
const;
295 virtual const std::string& class_name()
const;
328 virtual bool is_ancestor_of(
const any_lite& xother)
const;
333 bool invariant()
const;
372 static const poset_path& standard_schema_path();
453 vd& operator=(
const vd& xother);
491 virtual int d()
const;
496 virtual int d(
bool xauto_access)
const;
506 poset_path scalar_space_path(
bool xauto_access)
const;
511 virtual value_type component(
int xindex)
const;
516 value_type component(
int xindex,
bool xauto_access)
const;
521 virtual void put_component(
int xindex, value_type xvalue);
526 void put_component(
int xindex, value_type xvalue,
bool xauto_access);
531 void components(dof_type comps[],
int comps_dimension)
const;
536 void put_components(
const dof_type comps[],
int comps_dimension);
548 const dof_type&
operator[] (
int xindex)
const;
553 virtual const volatile_type& lite_prototype()
const;
558 virtual volatile_type* lite_type()
const;
563 virtual bool is_vector(
bool xauto_access)
const;
568 virtual void put_is_vector(
bool xauto_access);
573 virtual bool is_covector(
bool xauto_access)
const;;
578 virtual void put_is_covector(
bool xauto_access);
595 virtual const std::string& class_name()
const;
607 inline vd*
clone(
bool xnew_state,
bool xauto_access =
true)
const 627 host_type* host()
const;
651 bool is_ancestor_of(
const any* other)
const;
661 bool invariant()
const;
674 #ifndef DOXYGEN_1_5_4_SKIP_UNKNOWN 684 SHEAF_DLL_SPEC std::ostream&
operator<<(std::ostream& xos,
const vd& x0);
686 #endif // ifndef DOXYGEN_1_5_4_SKIP_UNKNOWN 850 SHEAF_DLL_SPEC
void add(
const vd& x0,
const vd& x1,
vd& xresult,
bool xauto_access);
865 template <
typename T>
866 T*
add(
const T& x0,
const T& x1);
872 SHEAF_DLL_SPEC
void add_equal(
vd& xresult,
const vd& xother,
bool xauto_access);
877 template <
typename T>
878 void add_equal(T& xresult,
const T& xother);
884 template <
typename T>
891 template <
typename T>
902 SHEAF_DLL_SPEC
void subtract(
const vd& x0,
const vd& x1,
vd& xresult,
bool xauto_access);
912 template <
typename T>
913 T*
subtract(
const T& x0,
const T& x1);
924 template <
typename T>
931 template <
typename T>
938 template <
typename T>
946 #ifndef DOXYGEN_1_5_4_SKIP_UNKNOWN 961 template <
typename T>
973 template <
typename T>
980 template <
typename T>
987 template <
typename T>
990 #endif // ifndef DOXYGEN_1_5_4_SKIP_UNKNOWN 1010 template <
typename T>
1022 template <
typename T>
1029 template <
typename T>
1036 template <
typename T>
1040 #ifndef DOXYGEN_1_5_4_SKIP_UNKNOWN 1087 #endif // ifndef DOXYGEN_1_5_4_SKIP_UNKNOWN 1189 SHEAF_DLL_SPEC
unsigned int factorial(
unsigned int xi);
1202 #endif // ifndef VD_H A tensor of degree 3 over an abstract vector space (volatile version).
T & operator*=(T &xresult, const vd_value_type &x1)
Vector x0 *= scalar x1 (self-allocated for volatile types); synonym for multiply_equal(x0, x1).
at0 scalar_type
The type of scalar.
An antisymmetric rank 3 tensor over an abstract vector space (volatile version).
at3_lite atp_type
Type of antisymmetric tensor of degree 3 over vd_lite.
vd_value_type value_type
The type of component in the fiber; the scalar type in the fiber vector space.
row_dofs_type * clone() const
Creates a new instance of the same type as this.
T & operator-=(T &xresult, const T &xother)
x0 -= x1 (self-allocated for volatile types); synonym for subtract_equal(x0, x1). ...
static const std::string & static_class_name()
The name of this class.
st4_lite stp_type
Type of symmetric tensor of degree 4 over vd_lite.
SHEAF_DLL_SPEC unsigned int factorial(unsigned int xi)
Factorial of xi.
vd_row_dofs_type< T > row_dofs_type
The type of the row dofs (type of this).
T * subtract(const T &x0, const T &x1)
x0 subtract x1 (auto-allocated version volatile types).
at0 atp_type
Type of antisymmetric tensor of degree 0 over vd_lite.
T * operator/(const T &x0, const vd_value_type &x1)
Vector x0 / scalar x1 (auto-allocated for volatile types); synonym for divide(x0, x1)...
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...
T * add(const T &x0, const T &x1)
x0 add x1 (auto-allocated version for volatile types).
T dof_type
The type of the dofs.
A client handle for a general, abstract partially order set.
A path defined by a poset name and a member name separated by a forward slash ('/'). For example: "cell_definitions/triangle".
at0 stp_type
Type of symmetric tensor of degree 0 over vd_lite.
t4_lite tp_type
Type of general tensor of degree 4 over vd_lite.
vd_table_dofs_type table_dofs_type
The type of the table dofs.
T & operator+=(T &xresult, const T &xother)
x0 += x1 (self-allocated for volatile types); synonym for add_equal(x0, x1).
SHEAF_DLL_SPEC bool r_eql(const vd_lite &x0, const vd_lite &x1, const vd_lite &xtolerance)
Relative equality comparison of vd_lite x0 to vd_lite x1 using vd_lite tolerance xtolerance.
vd_table_dofs_type table_dofs_type
The type of the table dofs.
void divide_equal(T &xresult, const vd_value_type &x1)
Vector x0 divided by scalar x1 (self-allocated version for volatile types).
SHEAF_DLL_SPEC unsigned int binomial_coefficient(unsigned int xi, unsigned int xj)
Binomial coefficient (xi, xj).
void add_equal(T &xresult, const T &xother)
x0 add x1 (self-allocated version for volatile types).
A tensor of degree 2 over an abstract vector space (volatile version).
An antisymmetric tensor of degree p over an abstract vector space (volatile version).
at0 tp_type
Type of general tensor of degree 0 over vd_lite.
t3_lite tp_type
Type of general tensor of degree 3 over vd_lite.
t2_lite tp_type
Type of general tensor of degree 2 over vd_lite.
T * operator+(const T &x0, const T &x1)
x0 + x1 (auto-allocated for volatile types); synonym for add(x0, x1).
SHEAF_DLL_SPEC bool a_eql(const vd_lite &x0, const vd_lite &x1, const vd_lite &xtolerance)
Absolute equality comparison of vd_lite x0 to vd_lite x1 using vd_lite tolerance xtolerance.
Abstract base class with useful features for all volatile objects.
SHEAF_DLL_SPEC vd_value_type max(const vd_lite &x0)
Maximum component of x0, auto-allocated version.
Abstract base class with useful features for all objects.
A general symmetric tensor of degree 2 over an abstract vector space (volatile version).
Abstract vector space over dof_type (volatile version).
Tensor types of degree P over VECTOR_TYPE. No generic implementation defined, must be specialized for...
vd_row_dofs_type< double > row_dofs_type
The type of the row dofs.
vd_lite tp_type
Type of general tensor of degree 1 over vd_lite.
T * divide(const T &x0, const vd_value_type &x1)
Vector x0 divided by scalar x1 (auto-allocated version for volatile types).
void subtract_equal(T &xresult, const T &xother)
x0 subtract_equal x1 (self-allocated version for volatile types).
void atp_type
Type of antisymmetric tensor of degree 4 over vd_lite.
An index within the external ("client") scope of a given id space.
double vd_dof_type
The type of degree of freedom in the fiber space.
A scalar viewed as an antisymmetric tensor of degree 0. As the degree is 0 there is nothing to be sym...
SHEAF_DLL_SPEC vd_value_type min(const vd_lite &x0)
Minimum component of x0, auto-allocated version.
A member of a Cartesian product space; a tuple of attributes (volatile version).
T & operator/=(T &xresult, const vd_value_type &x1)
Vector x0 /= scalar x1 (self-allocated for volatile types); synonym for divide_equal(x0, x1).
st3_lite stp_type
Type of symmetric tensor of degree 3 over vd_lite.
vd_lite volatile_type
The associated volatile type.
vd_dof_type dof_type
The type of the degrees of freedom.
A symmetric rank 3 tensor over an abstract vector space. (volatile version).
Table dofs type for class vd_table_dofs_type.
A member of a Cartesian product space; a tuple of attributes (persistent version).
SHEAF_DLL_SPEC tensor_variance contract(const tensor_variance &x0, int xp, int xq)
The variance of the contration of a tensor with variance x0 on indices xp and xq. ...
A general tensor of degree p over an abstract vector space (volatile version). Volatile version does ...
vd_lite stp_type
Type of symmetric tensor of degree 1 over vd_lite.
A tensor of degree 4 over an abstract vector space (volatile version).
void multiply_equal(T &xresult, const vd_value_type &xother)
Vector x0 multiplied by scalar x1 (self-allocated version for volatile types).
SHEAF_DLL_SPEC bool c_eql(const vd_lite &x0, const vd_lite &x1, const vd_lite &xtolerance)
Combined equality equality comparison of vd_lite x0 to vd_lite x1 using vd_lite tolerance xtolerance...
T * operator-(const T &x0, const T &x1)
x0 - x1 (auto-allocated for volatile types); synonym for subtract(x0, x1).
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.
T * operator*(const T &x0, const vd_value_type &x1)
Vector x0 * scalar x1 (auto-allocated for volatile types); synonym for multiply(x0, x1).
An abstract vector space of dimension d.
st2_lite stp_type
Type of symmetric tensor of degree 2 over vd_lite.
T::table_dofs_type & table_dofs(T &x0)
The table dofs pod type for x0 (mutable version).
int_type pod_index_type
The plain old data index type.
vd_row_dofs_type< double > row_dofs_type
The type of the row dofs.
vd_space host_type
The type of host poset.
vd_value_type value_type
The POD ("plain old data") type of scalar in the vector space of this.
T & operator[](int xindex)
Value of xindex-th component (row dof) (non const version).
A general antisymmetric tensor of degree 2 over an abstract vector space (volatile version)...
virtual tuple * clone() const
Make a new handle, no state instance of current.
vd_lite atp_type
Type of antisymmetric tensor of degree 1 over vd_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...
vd * 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...
A symmetric tensor of degree p over an abstract vector space (volatile version).
Namespace for the fiber_bundles component of the sheaf system.
Abstract vector space over dof_type.
Row dofs type for class vd.
double vd_value_type
The type of component in the fiber; the scalar type in the fiber vector space.
A symmetric rank 4 tensor over an abstract vector space. (volatile version).
SHEAF_DLL_SPEC std::ostream & operator<<(std::ostream &os, const binary_index &xbi)
Insert binary_index& xbi into ostream& os.
at2_lite atp_type
Type of antisymmetric tensor of degree 2 over vd_lite.
T * multiply(const T &x0, const vd_value_type &x1)
Vector x0 multiplied by scalar x1 (auto-allocated version for volatile types).