21 #include "SheafSystem/e3.impl.h" 23 #include "SheafSystem/abstract_poset_member.impl.h" 24 #include "SheafSystem/assert_contract.h" 25 #include "SheafSystem/at0.h" 26 #include "SheafSystem/at0_space.h" 27 #include "SheafSystem/at1_space.h" 28 #include "SheafSystem/at2_e3.h" 29 #include "SheafSystem/at3_e3.h" 30 #include "SheafSystem/fiber_bundles_namespace.h" 31 #include "SheafSystem/gl3.h" 32 #include "SheafSystem/schema_poset_member.h" 33 #include "SheafSystem/st2_e3.h" 34 #include "SheafSystem/st3_e3.h" 35 #include "SheafSystem/st4_e3.h" 36 #include "SheafSystem/stp_space.h" 37 #include "SheafSystem/t2_e3.h" 38 #include "SheafSystem/t3_e3.h" 39 #include "SheafSystem/t4_e3.h" 40 #include "SheafSystem/tolerance_comparison.h" 41 #include "SheafSystem/wsv_block.h" 105 ensure(unexecutable(*
this == xother));
147 _row_dofs = xrow_dofs;
152 ensure(unexecutable(
row_dofs() == xrow_dofs));
168 _row_dofs.components[0] = xvalue;
169 _row_dofs.components[1] = xvalue;
170 _row_dofs.components[2] = xvalue;
189 _row_dofs.components[0] = x0;
190 _row_dofs.components[1] = x1;
191 _row_dofs.components[2] = x2;
203 fiber_bundle::e3_lite::
221 fiber_bundle::e3_lite::
253 _row_dofs.components[0] = x_comp;
254 _row_dofs.components[1] = y_comp;
255 _row_dofs.components[2] = z_comp;
375 _row_dofs.components[1] = xvalue;
376 _row_dofs.components[2] = xvalue;
381 ensure_for_all(i, 0, d(), component(i) == xvalue);
398 (_row_dofs.components[0] == xvalue) &&
399 (_row_dofs.components[1] == xvalue) &&
400 (_row_dofs.components[2] == xvalue);
405 ensure_for_all(i, 0, d(), !result || component(i) == xvalue);
419 require((0 <= xp) && (xp <= 4));
460 ensure(unexecutable(
"result.p() == xp"));
471 require(precondition_of(static_tp_prototype(xp)));
475 const tp_lite& result = static_tp_prototype(xp);
479 ensure(postcondition_of(static_tp_prototype(xp)));
492 require((0 <= xp) && (xp <= 3));
528 ensure(unexecutable(
"result.p() == xp"));
539 require(precondition_of(static_atp_prototype(xp)));
543 const atp_lite& result = static_atp_prototype(xp);
547 ensure(postcondition_of(static_atp_prototype(xp)));
560 require((2 <= xp) && (xp <= 4));
591 ensure(unexecutable(
"result.p() == xp"));
602 require(precondition_of(static_stp_prototype(xp)));
606 const stp_lite& result = static_stp_prototype(xp);
610 ensure(postcondition_of(static_stp_prototype(xp)));
648 ensure(result == (((*
this)[0] < xother[0]) && ((*
this)[1] < xother[1]) && ((*
this)[2] < xother[2])));
675 ensure(result == (((*
this)[0] <= xother[0]) && ((*
this)[1] <= xother[1]) && ((*
this)[2] <= xother[2])));
702 ensure(result == (((*
this)[0] > xother[0]) && ((*
this)[1] > xother[1]) && ((*
this)[2] > xother[2])));
729 ensure(result == (((*
this)[0] >= xother[0]) && ((*
this)[1] >= xother[1]) && ((*
this)[2] >= xother[2])));
959 const string& result = static_class_name();
963 ensure(!result.empty());
978 static const string result(
"e3_lite");
982 ensure(!result.empty());
1003 ensure(result != 0);
1004 ensure(is_same_type(*result));
1028 require(&xother != 0);
1034 bool result =
dynamic_cast<const e3_lite*
>(&xother) != 0;
1047 if(invariant_check())
1051 disable_invariant_check();
1055 invariance(ed_lite::invariant());
1061 enable_invariant_check();
1107 static const poset_path result(standard_schema_poset_name(),
"e3_schema");
1128 string lmember_names =
"x DOUBLE false ";
1129 lmember_names +=
"y DOUBLE false ";
1130 lmember_names +=
"z DOUBLE false";
1133 standard_schema_path().member_name(),
1134 ed::standard_schema_path(),
1163 require(!xhost_path.
empty());
1166 require(xschema_path.
full());
1168 require(schema_poset_member::conforms_to(xns, xschema_path, standard_schema_path()));
1169 require(schema_poset_member::row_dof_ct(xns, xschema_path, xauto_access) == 3);
1177 host_type::new_table(xns, xhost_path, xschema_path, xscalar_space_path, xauto_access);
1181 ensure(xns.
owns(result, xauto_access));
1182 ensure(result.
path(
true) == xhost_path);
1184 ensure(result.
schema(
true).
path(xauto_access) == xschema_path);
1187 ensure(result.
d(
true) == 3);
1189 ensure(result.
p(
true) == 1);
1190 ensure(result.
dd(
true) == 3);
1209 require(xsuffix.empty() || poset_path::is_valid_name(xsuffix));
1210 require(standard_host_is_available<e3>(xns, xsuffix, xauto_access));
1220 poset_path lscalar_space_path = scalar_type::standard_host(xns, xsuffix, xauto_access).
path(
true);
1222 poset_path lpath(standard_host_path<e3>(xsuffix));
1231 result_ptr = &new_host(xns, lpath, standard_schema_path(), lscalar_space_path, xauto_access);
1238 ensure(xns.
owns(result, xauto_access));
1239 ensure(result.
path(
true) == standard_host_path<e3>(xsuffix));
1241 ensure(result.
schema(
true).
path(xauto_access) == standard_schema_path());
1244 ensure(result.
d(
true) == 3);
1245 ensure(result.
scalar_space_path(
true) == standard_host_path<scalar_type>(xsuffix) );
1246 ensure(result.
p(
true) == 1);
1247 ensure(result.
dd(
true) == 3);
1276 ensure(invariant());
1286 require(xhost != 0);
1292 attach_to_state(xhost, xhub_id);
1296 ensure(invariant());
1298 ensure(index() == xhub_id);
1299 ensure(is_attached());
1307 require(xhost != 0);
1313 attach_to_state(xhost, xid.
hub_pod());
1317 ensure(invariant());
1319 ensure(index() ==~ xid);
1320 ensure(is_attached());
1329 require(xhost != 0);
1331 require(!xname.empty());
1336 attach_to_state(xhost, xname);
1340 ensure(invariant());
1342 ensure(name() == xname);
1343 ensure(is_attached());
1353 require(xother != 0);
1357 attach_to_state(xother);
1361 ensure(invariant());
1362 ensure(is_attached());
1363 ensure(is_same_state(xother));
1375 require(precondition_of(new_jim_state(xhost, 0,
false, xauto_access)));
1379 new_jim_state(xhost, 0,
false, xauto_access);
1383 ensure(postcondition_of(new_jim_state(xhost, 0,
false, xauto_access)));
1398 require(precondition_of(new_jim_state(&xhost, 0,
false, xauto_access)));
1402 new_jim_state(&xhost, 0,
false, xauto_access);
1418 ensure(postcondition_of(new_jim_state(&xhost, 0,
false, xauto_access)));
1431 require(state_is_read_write_accessible());
1439 ensure_for_all(i, 0, d(), component(i) == xrdt.
components[i]);
1454 require(is_ancestor_of(&xother));
1455 require(precondition_of(attach_to_state(&xother)));
1459 attach_to_state(&xother);
1463 ensure(postcondition_of(attach_to_state(&xother)));
1477 require(precondition_of(attach_to_state(&xother)));
1481 attach_to_state(&xother);
1485 ensure(postcondition_of(attach_to_state(&xother)));
1600 require(state_is_read_write_accessible());
1604 put_component(0, xcomp);
1605 put_component(1, ycomp);
1606 put_component(2, zcomp);
1610 ensure(invariant());
1670 require((0 <= xp) && (xp <= 4));
1677 const string& lvector_space_name = xvector_space.
name();
1683 const string lname =
1684 create_tensor_space_name(lvector_space_name,
"at0");
1686 at0* result =
new at0(&lhost);
1692 const string lname =
1693 create_tensor_space_name(lvector_space_name,
"e3");
1695 e3* result =
new e3(&lhost);
1701 const string lname =
1702 create_tensor_space_name(lvector_space_name,
"t2_e3");
1710 const string lname =
1711 create_tensor_space_name(lvector_space_name,
"t3_e3");
1719 const string lname =
1720 create_tensor_space_name(lvector_space_name,
"t4_e3");
1734 ensure(unexecutable(
"result.p() == xp"));
1746 require((0 <= xp) && (xp <= 3));
1751 const string& lvector_space_name = xvector_space.
name();
1757 const string lname =
1758 create_tensor_space_name(lvector_space_name,
"at0");
1760 at0* result =
new at0(&lhost);
1766 const string lname =
1767 create_tensor_space_name(lvector_space_name,
"e3");
1769 e3* result =
new e3(&lhost);
1775 const string lname =
1776 create_tensor_space_name(lvector_space_name,
"at2_e3");
1784 const string lname =
1785 create_tensor_space_name(lvector_space_name,
"at3_e3");
1798 ensure(unexecutable(
"result.p() == xp"));
1811 require((2 <= xp) && (xp <= 4));
1816 const string& lvector_space_name = xvector_space.
name();
1822 const string lname =
1823 create_tensor_space_name(lvector_space_name,
"st2_e3");
1831 const string lname =
1832 create_tensor_space_name(lvector_space_name,
"st3_e3");
1840 const string lname =
1841 create_tensor_space_name(lvector_space_name,
"st4_e3");
1855 ensure(unexecutable(
"result.p() == xp"));
1866 require(precondition_of(e3::new_tp(vector_space(xauto_access), xp)));
1870 tp* result = e3::new_tp(vector_space(xauto_access), xp);
1874 ensure(postcondition_of(e3::new_tp(vector_space(xauto_access), xp)));
1887 require(precondition_of(e3::new_atp(vector_space(xauto_access), xp)));
1891 atp* result = e3::new_atp(vector_space(xauto_access), xp);
1895 ensure(postcondition_of(e3::new_atp(vector_space(xauto_access), xp)));
1908 require(precondition_of(e3::new_stp(vector_space(xauto_access), xp)));
1912 stp* result = e3::new_stp(vector_space(xauto_access), xp);
1916 ensure(postcondition_of(e3::new_stp(vector_space(xauto_access), xp)));
1942 const string& result = static_class_name();
1946 ensure(!result.empty());
1961 static const string result(
"e3");
1965 ensure(!result.empty());
1983 e3* result =
new e3();
1987 ensure(result != 0);
2014 require(xother != 0);
2021 bool result =
dynamic_cast<const e3*
>(xother) != 0;
2045 invariance(ed::invariant());
2047 if(invariant_check())
2051 disable_invariant_check();
2053 invariance((is_attached() ? d() == 3 :
true));
2057 enable_invariant_check();
2062 ensure(is_derived_query);
2080 deep_size(
const e3_lite& x0,
bool xinclude_shallow)
2095 ensure(result == 0);
2119 require(x0.
d(xauto_access) >= xresult.
d(xauto_access));
2120 require(x1.
d(xauto_access) >= xresult.
d(xauto_access));
2161 ensure(unexecutable(
"result == x0 cross x1"));
2173 require(precondition_of(
cross(xresult, xother, xresult, xauto_access)));
2177 cross(xresult, xother, xresult, xauto_access);
2181 ensure(postcondition_of(
cross(xresult, xother, xresult, xauto_access)));
2196 cross(x0, x1, *result);
2240 cross(x0, xother, xresult);
2288 require(xtransform.
n() == xv.
d());
2330 if(!is_contravariant)
2338 for(
int m=0; m<3; ++m)
2341 for(
int k=0; k<3; ++k)
2343 Ve[m] += B[k][m]*xv[k];
2355 for(
int m=0; m<3; ++m)
2358 for(
int k=0; k<3; ++k)
2360 Ve[m] += C[m][k]*xv[k];
2367 for(
int i=0; i<3; ++i)
2385 require(x0.
d() >= xresult.
d());
2386 require(x1.
d() >= xresult.
d());
2402 ensure(unexecutable(
"for_all: i, 0, xresult.d(), \ 2403 xresult.component(i) == old_x0.component(i)*(1.0 - xt) + old_x1.component(i)*xt"));
2421 require(x0.
d() == x1.
d());
2446 require(x0.
d() == x1.
d());
2471 require(x0.
d() == x1.
d());
2497 require(x0.
d() == x1.
d());
2522 require(x0.
d() == x1.
d());
2547 require(x0.
d() == x1.
d());
2573 require(x0.
d() == x1.
d());
2598 require(x0.
d() == x1.
d());
2623 require(x0.
d() == x1.
d());
virtual void get_read_write_access(bool xrelease_read_only_access=false)
Get read write access to the state associated with this. If release_read_only_access is requested...
virtual int n() const
Dimension of the representation space; n in GL(n, R).
virtual poset_path path(bool xauto_access=true) const
The path of this poset.
bool state_is_auto_read_write_accessible(bool xauto_access) const
True if state is auto accessible for read and write, that is, if the state is already accessible for ...
matrix_type & basis_matrix()
The associated basis transformation matrix (non const version).
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).
static const poset_path & standard_schema_path()
The path to the standard schema for this class.
bool d_le(const e3_lite &xother) const
Dictionary (lexicographic) order less than or equal comparison.
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.
bool full() const
True if both poset name and member name are not empty.
static stp * new_stp(tp_space &xvector_space, int xp)
Static constructor for symmetric tensors of degree xp over vector space xvector_space.
row_dofs_type _row_dofs
Row_dofs_type.
SHEAF_DLL_SPEC bool r_eql(const e3_lite &x0, const e3_lite &x1)
Relative equality comparison of e3_lite x0 to e3_lite x1 using tolerance double_tolerance.
An antisymmetric tensor of degree p.
void put_is_p_vector(bool xauto_access)
Sets is_p_vector to true; synonym for put_is_contravariant(xauto_access).
Euclidean vector space of dimension 3 (volatile version).
static int d(const namespace_poset &xns, int xp, const poset_path &xvector_space_path, bool xauto_access)
The tensor dimension implied by tensor degree xp and the dimension of the domain vector space specifi...
static void make_standard_schema(namespace_poset &xns)
Creates the standard schema for this class in namespace xns.
An antisymmetric rank 3 tensor over a Euclidean vector space of dimension 3. (volatile version)...
poset_path path(bool xauto_access=true) const
A path to this component.
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.
bool state_is_read_accessible() const
True if this is attached and if the state is accessible for read or access control is disabled...
static tp * new_tp(tp_space &xvector_space, int xp)
Static constructor for general tensors of degree xp over vector space xvector_space.
bool c_lt(const e3_lite &xother) const
Cartesian order less than comparison.
bool path_is_auto_read_accessible(const poset_path &xpath, bool xauto_access) const
True if the state referred to xpath exists and is auto read accessible.
The standard fiber bundles name space; extends the standard sheaves namespace by defining base space...
virtual void * row_dofs()
The row dofs for this instance (mutable version).
poset_path vector_space_path() const
The path of the underlying vector space.
A general antisymmetric tensor of degree 1 over an abstract vector space (volatile version)...
bool contains_poset_member(pod_index_type xposet_hub_id, pod_index_type xmember_hub_id, bool xauto_access=true) const
True if this contains a poset with hub id xposet_hub_id which contains a member with hub id xmember_h...
bool state_is_auto_read_accessible(bool xauto_access) const
True if the state is auto accessible for read, that is, if the state is already accessible for read o...
A client handle for a general, abstract partially order set.
bool invariant() const
Class invariant.
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".
virtual void components(dof_type xresult[], int comps_dimension) const
The values of all the components (preallocated version).
value_type component(int xindex) const
The xindex-th component.
A tensor of degree 2 over a Euclidean vector space of dimension 3 (persistent version).
virtual ~e3_lite()
Destructor.
virtual void get_read_access() const
Get read access to the state associated with this.
poset_state_handle & member_poset(pod_index_type xhub_id, bool xauto_access=true) const
The poset_state_handle object referred to by hub id xhub_id.
static atp * new_atp(tp_space &xvector_space, int xp)
Static constructor for antisymmetric tensors of degree xp over vector space xvector_space.
A symmetric rank 4 tensor over a Euclidean vector space of dimension 3. (volatile 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.
virtual bool is_ancestor_of(const any_lite &xother) const
Conformance test; true if other conforms to this.
matrix_type & component_matrix()
The associated component transformation matrix (non const version).
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).
void SHEAF_DLL_SPEC cross_equal(e3 &xresult, const e3 &xother, bool xauto_access)
The 3D Euclidean vector "cross" product of xresult with xother (self-allocated version).
e3_lite()
Default constructor.
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.
bool c_gt(const e3_lite &xother) const
Cartesian order greater than comparison.
virtual void release_access(bool xall=false) const
Release access. If xall is true, release all levels of access. Otherwise, release one level of access...
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).
bool operator==(const e3_lite &xother) const
True if this has the same components as xother.
virtual e3_lite * clone() const
Virtual constructor, makes a new instance of the same type as this.
virtual volatile_type * lite_type() const
Virtual conversion to the associated volatile type.
SHEAF_DLL_SPEC bool c_eql(float xf0, float xf1)
Combined equality comparison of float xf0 to float xf1 using tolerance float_tolerance.
virtual schema_poset_member & schema()
The schema for this poset (mutable version).
SHEAF_DLL_SPEC bool c_eql(const e3_lite &x0, const e3_lite &x1)
Combined equality equality comparison of e3_lite x0 to e3_lite x1 using tolerance double_tolerance...
static const std::string & static_class_name()
The name of this class.
A space of scalars viewed as an antisymmetric tensor space of degree 0.
static host_type & standard_host(namespace_type &xns, const std::string &xsuffix, bool xauto_access)
The host with path standard_host_path<e3>(xsuffix). Returns the host if it already exists...
An abstract antisymmetric tensor space of degree p.
bool state_is_read_write_accessible() const
True if this is attached and if the state is accessible for read and write or access control is disab...
A symmetric tensor of degree 2 over a Euclidean vector space of dimension 3 (volatile version)...
virtual const atp_lite & atp_prototype(int xp) const
Prototype for antisymmetric tensors of degree xp over this vector space.
virtual int dd() const
Dimension of the underlying vector space.
bool owns(const poset_state_handle &xposet, bool xauto_access) const
True if and only if this contains the poset xposet. synonym for contains_poset(xposet.poset_path(true), xauto_access)
virtual void detach_from_state()
Detach this handle from its state, if any.
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).
static const atp_lite & static_atp_prototype(int xp)
Static prototype for antisymmetric tensors of degree xp over this vector space.
bool d_lt(const e3_lite &xother) const
Dictionary (lexicographic) order less than comparison.
A scalar viewed as an antisymmetric tensor of degree 0. As the degree is 0 there is nothing to be sym...
bool contains_path(const poset_path &xpath, bool xauto_access=true) const
True if this contains the poset or poset member specified by xpath.
bool is_p_form(bool xauto_access) const
True if this is a p-form; synonym for is_covariant(xauto_access).
Antisymetric tensor of degree 0 (volatile version).
virtual bool contains_member(pod_index_type xmbr_hub_id, bool xauto_access=true) const
True if some version of this poset contains poset member with hub id xmbr_hub_id. ...
int p(int xd, int xdd) const
Tensor degree as a function of tensor dimension xd and domain dimension xdd.
virtual const volatile_type & lite_prototype() const
Virtual constructor for the associated volatile type.
static const std::string & static_class_name()
The name of this class.
const double double_tolerance
Tolerance for double comparisons.
static const stp_lite & static_stp_prototype(int xp)
Static prototype for symmetric tensors of degree xp over this vector space.
SHEAF_DLL_SPEC bool a_eql(const e3_lite &x0, const e3_lite &x1)
Absolute equality comparison of e3_lite x0 to e3_lite x1 using tolerance double_tolerance.
virtual value_type component(int xindex) const
The value of the xi-th component.
gl3_row_dofs_type< double >::matrix_type matrix_type
The type of the associated matrix.
virtual int d() const
Dimension of this as a vector space.
virtual std::string name() const
The name of this poset.
bool empty() const
True if both poset name and member name are empty.
virtual void release_access(bool xall=false) const
Release access. If xall is true, release all levels of access. Otherwise, release one level of access...
virtual const std::string & class_name() const
The name of this class.
A tensor of degree 2 over a Euclidean vector space of dimension 3 (volatile version).
virtual const tp_lite & tp_prototype(int xp) const
Prototype for general tensors of degree xp over this vector space.
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...
bool c_le(const e3_lite &xother) const
Cartesian order less than or equal comparison.
bool contains_poset(pod_index_type xhub_id, bool xauto_access=true) const
True if this contains a poset with hub id xhub_id..
bool path_is_auto_read_available(const poset_path &xpath, bool xauto_access) const
True if the state referred to xpath does not exist or exists and is auto read accessible.
poset_path scalar_space_path() const
The path of the underlying space of scalars.
bool d_gt(const e3_lite &xother) const
Dictionary (lexicographic) order greater than comparison.
e3_lite & operator=(const e3_lite &xother)
Copy assignment operator.
static host_type & new_host(namespace_type &xns, const poset_path &xhost_path, const poset_path &xschema_path, const poset_path &xscalar_space_path, bool xauto_access)
Creates a new host table for members of this type. The poset is created in namespace xns with path xh...
namespace_poset * name_space() const
The namespace this poset resides in.
void SHEAF_DLL_SPEC cross(const e3 &x0, const e3 &x1, e3 &xresult, bool xauto_access)
The 3D Euclidean vector "cross" product of x0 with x1 (pre-allocated version).
virtual void get_read_write_access(bool xrelease_read_only_access=false)
Get read write access to the state associated with this. If release_read_only_access is requested...
void put_component(int xindex, value_type xcomp)
Set the xindex-th component to xcomp.
An abstract vector space viewed as an antisymmetric tensor space of degree 1.
virtual e3 * clone() const
Make a new handle, no state instance of current.
static const tp_lite & static_tp_prototype(int xp)
Static prototype for general tensors of degree xp over this vector space.
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).
static int factor_ct(int xd)
Factor_ct() as a function of dimension xd.
int_type pod_index_type
The plain old data index type.
SHEAF_DLL_SPEC bool r_eql(float xf0, float xf1)
Relative equality comparison of float xf0 to float xf1 using tolerance float_tolerance.
bool is_ancestor_of(const any *xother) const
True if other conforms to current.
int dd() const
The dimension of the underlying ("domain") vector space.
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).
virtual void put_components(dof_type x_comp, dof_type y_comp, dof_type z_comp)
Set values of the components to the given arguments.
virtual int d() const
Dimension of this as a vector space.
An antisymmetric rank 2 tensor over a Euclidean vector space of dimension 3. (volatile version)...
e3 & operator=(const row_dofs_type &xrdt)
Assignment to an instance of the associated row dofs type.
SHEAF_DLL_SPEC bool a_eql(float xf0, float xf1)
Absolute equality comparison of float xf0 to float xf1 using tolerance float_tolerance.
An abstract client handle for a member of a poset.
virtual const stp_lite & stp_prototype(int xp) const
Prototype for symmetric tensors of degree xp over this vector space.
std::string path() const
The full path as a string.
vd_dof_type dof_type
The type of the degrees of freedom. Note that although dof_type == value_type in this implementation...
virtual const std::string & class_name() const
The name of this class.
virtual void put_component(int xindex, value_type xvalue)
Sets the value of the xindex-th component to xvalue.
void put_is_p_form(bool xauto_access)
Sets is_p_form to true; synonym for put_is_covariant(xauto_access).
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).
bool c_ge(const e3_lite &xother) const
Cartesian order greater than or equal comparison.
An abstract symmetric tensor space of degree p.
bool invariant() const
Class invariant.
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).
virtual void put_components(const value_type &x_comp, const value_type &y_comp, const value_type &z_comp)
Set values of the components to the given arguments.
bool state_is_not_read_accessible() const
True if this is attached and if the state is accessible for read or if access control is disabled...
A client handle for a poset member which has been prepared for use as a schema.
double vd_value_type
The type of component in the fiber; the scalar type in the fiber vector space.
A symmetric tensor of degree 2 over a Euclidean vector space of dimension 3 (persistent version)...
bool d_ge(const e3_lite &xother) const
Dictionary (lexicographic) order greater than or equal comparison.
pod_type hub_pod() const
The pod value of this mapped to the unglued hub id space.
SHEAF_DLL_SPEC bool isunordered_or_equals(float x1, float x2)
True if isunordered(x1, x2) or x1 == x2.