21 #include "SheafSystem/sec_st4.h" 23 #include "SheafSystem/assert_contract.h" 24 #include "SheafSystem/binary_section_space_schema_member.impl.h" 25 #include "SheafSystem/binary_section_space_schema_poset.h" 26 #include "SheafSystem/fiber_bundles_namespace.h" 27 #include "SheafSystem/sec_at0.h" 28 #include "SheafSystem/sec_at0_space.h" 29 #include "SheafSystem/sec_stp_space.h" 30 #include "SheafSystem/sec_tuple_space.impl.h" 31 #include "SheafSystem/section_space_schema_member.impl.h" 32 #include "SheafSystem/section_space_schema_poset.h" 33 #include "SheafSystem/stp.h" 34 #include "SheafSystem/stp_space.h" 64 require(!xhost_path.
empty());
67 require(xschema_path.
full());
69 require(host_type::fiber_space_conforms<fiber_type::host_type>(xns, xschema_path, xauto_access));
73 require(host_type::same_scalar_fiber_space(xns, xschema_path, xscalar_space_path, xauto_access));
77 host_type& result = host_type::new_table(xns, xhost_path, xschema_path, xscalar_space_path, xauto_access);
81 ensure(xns.
owns(result, xauto_access));
82 ensure(result.
path(
true) == xhost_path);
84 ensure(result.
schema(
true).
path(xauto_access) == xschema_path);
88 ensure(result.
d(
true) == result.
dd(
true));
91 ensure(result.
p(
true) == 4);
135 attach_to_state(xhost, xhub_id);
141 ensure(index() == xhub_id);
142 ensure(is_attached());
143 ensure(!is_restricted());
157 attach_to_state(xhost, xid.
hub_pod());
163 ensure(index() ==~ xid);
164 ensure(is_attached());
165 ensure(!is_restricted());
176 require(!xname.empty());
181 attach_to_state(xhost, xname);
187 ensure(name() == xname);
188 ensure(is_attached());
189 ensure(!is_restricted());
202 require(precondition_of(attach_to_state(same args)));
206 attach_to_state(xnamespace, xpath, xauto_access);
210 ensure(postcondition_of(attach_to_state(same args)));
224 require(xother != 0);
228 attach_to_state(xother);
233 ensure(is_attached());
234 ensure(is_same_state(xother));
235 ensure(is_same_restriction(xother));
245 require(precondition_of(new_jim_state(xhost, xdof_map,
false, xauto_access)));
249 new_jim_state(xhost, xdof_map,
false, xauto_access);
253 ensure(postcondition_of(new_jim_state(xhost, xdof_map,
false, xauto_access)));
269 require(precondition_of(new_jim_state(xhost, xbase_mbr, xbase_version, xauto_access)));
273 new_jim_state(xhost, xbase_mbr, xbase_version, xauto_access);
277 ensure(postcondition_of(new_jim_state(xhost, xbase_mbr, xbase_version, xauto_access)));
290 require(is_ancestor_of(&xother));
291 require(precondition_of(attach_to_state(&xother)));
295 attach_to_state(&xother);
299 ensure(postcondition_of(attach_to_state(&xother)));
312 require(precondition_of(attach_to_state(&xother)));
316 attach_to_state(&xother);
320 ensure(postcondition_of(attach_to_state(&xother)));
333 require(precondition_of(sec_vd::operator=(xfiber)));
337 sec_vd::operator=(xfiber);
341 ensure(postcondition_of(sec_vd::operator=(xfiber)));
354 require(precondition_of(sec_vd::operator=(xfiber)));
358 sec_vd::operator=(xfiber);
362 ensure(postcondition_of(sec_vd::operator=(xfiber)));
460 const string& result = static_class_name();
464 ensure(!result.empty());
479 static const string result(
"sec_st4");
483 ensure(!result.empty());
532 require(xother != 0);
539 bool result =
dynamic_cast<const st4*
>(xother) != 0;
559 require(xother != 0);
566 bool result =
dynamic_cast<const sec_st4*
>(xother) != 0;
590 invariance(sec_stp::invariant());
592 if (invariant_check())
596 disable_invariant_check();
598 invariance(is_attached() ? p() == 4 :
true);
602 enable_invariant_check();
607 ensure(is_derived_query);
virtual bool invariant() const
Class invariant, intended to be redefined in each descendant. See below for template for invariant in...
static int factor_ct(int xd)
Factor_ct() as a function of dimension xd.
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 ...
An abstract symmetric tensor section space of degree p.
bool full() const
True if both poset name and member name are not empty.
A Cartesian product section space.
The abstract map from section dof ids to section dof values of heterogeneous type.
poset_path path(bool xauto_access=true) const
A path to this component.
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...
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...
bool is_ancestor_of(const any *xother) const
True if xother conforms to current.
A path defined by a poset name and a member name separated by a forward slash ('/'). For example: "cell_definitions/triangle".
A member of a sec_rep_space; a section.
poset_path vector_space_path() const
The path of the underlying vector space.
bool invariant() const
Class invariant.
A schema poset for a section space. A binary Cartesian product subspace of the binary tensor product ...
A symmetric rank 4 tensor over an abstract vector space (persistent version).
Abstract base class with useful features for all objects.
int p() const
The tensor degree of this space.
virtual section_space_schema_member & schema()
The schema for this poset (mutable version)
virtual int d(int xp, int xdd) const
Dimension d() as a function of degree xp and domain dimension xdd.
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)
An index within the external ("client") scope of a given id space.
bool contains_path(const poset_path &xpath, bool xauto_access=true) const
True if this contains the poset or poset member specified by xpath.
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. ...
virtual const std::string & class_name() const
The name of this class.
int dd() const
The dimension of the underlying ("domain") vector space.
bool empty() const
True if both poset name and member name are empty.
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...
virtual const fiber_type & fiber_prototype() const
Virtual constructor for the associated fiber type.
virtual sec_st4 * clone() const
Make a new handle, no state instance of current.
int_type pod_index_type
The plain old data index type.
poset_path scalar_space_path() const
The path of the underlying space of scalars.
poset & fiber_space()
The fiber space for section spaces on this schema (mutable version).
bool fiber_is_ancestor_of(const any *xother) const
True if xother conforms to an instance of the fiber of current.
A section of a bundle with fiber type st4.
sec_st4()
Default constructor.
static const std::string & static_class_name()
The name of this class.
An abstract client handle for a member of a poset.
An abstract symmetric tensor space of degree p.
Namespace for the fiber_bundles component of the sheaf system.
virtual sec_st4 & operator=(const abstract_poset_member &xother)
Assignment operator; synonym for attach_to_state(&xother).
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 symmetric rank 4 tensor over an abstract vector space. (volatile version).
pod_type hub_pod() const
The pod value of this mapped to the unglued hub id space.
A handle for a poset whose members are numerical representations of sections of a fiber bundle...