21 #include "SheafSystem/sec_e1.h" 23 #include "SheafSystem/assert_contract.h" 24 #include "SheafSystem/base_space_poset.h" 25 #include "SheafSystem/binary_section_space_schema_member.impl.h" 26 #include "SheafSystem/at1_space.h" 27 #include "SheafSystem/fiber_bundles_namespace.h" 28 #include "SheafSystem/index_space_iterator.h" 29 #include "SheafSystem/sec_at0.h" 30 #include "SheafSystem/sec_at0_space.h" 31 #include "SheafSystem/sec_at1_space.h" 32 #include "SheafSystem/sec_tuple.impl.h" 33 #include "SheafSystem/sec_tuple_space.impl.h" 34 #include "SheafSystem/sec_vd.impl.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) == 1);
106 const std::string& xsection_suffix,
107 const std::string& xfiber_suffix,
116 require(xbase_path.
full());
119 require(xrep_path.
empty() || xrep_path.
full());
122 require(xsection_suffix.empty() || poset_path::is_valid_name(xsection_suffix));
124 require(xfiber_suffix.empty() || poset_path::is_valid_name(xfiber_suffix));
126 require(standard_host_is_available<sec_e1>(xns, xbase_path, xrep_path, xsection_suffix, xfiber_suffix, xauto_access));
127 require(fiber_type::standard_host_is_available<fiber_type>(xns, xfiber_suffix, xauto_access));
128 require(schema_type::standard_host_is_available<sec_e1>(xns, xbase_path, xrep_path, xfiber_suffix, xauto_access));
132 poset_path lstd_path = standard_host_path<sec_e1>(xbase_path, xrep_path, xsection_suffix, xfiber_suffix);
148 poset_path lrep_path = (!xrep_path.empty() ? xrep_path : standard_rep_path());
153 schema_type::standard_member<sec_e1>(xns, xbase_path, lrep_path, xfiber_suffix, xauto_access);
158 scalar_type::standard_host(xns, xbase_path, lrep_path, xsection_suffix, xfiber_suffix, xauto_access).
path(xauto_access);
162 lresult_ptr = &new_host(xns, lstd_path, lstd_schema_path, lscalar_space_path, xauto_access);
169 ensure(xns.
owns(result, xauto_access));
170 ensure(result.
path(
true) == standard_host_path<sec_e1>(xbase_path, xrep_path, xsection_suffix, xfiber_suffix));
172 ensure(result.
schema(
true).
path(xauto_access) ==
173 schema_type::standard_member_path<sec_e1>(xbase_path, xrep_path, xfiber_suffix));
177 ensure(result.
d(
true) == result.
dd(
true));
179 scalar_type::standard_host_path<scalar_type>(xbase_path, result.
rep().
path(xauto_access), xsection_suffix, xfiber_suffix));
181 ensure(result.
p(
true) == 1);
225 attach_to_state(xhost, xhub_id);
231 ensure(index() == xhub_id);
232 ensure(is_attached());
233 ensure(!is_restricted());
247 attach_to_state(xhost, xid.
hub_pod());
253 ensure(index() ==~ xid);
254 ensure(is_attached());
255 ensure(!is_restricted());
265 require(!xname.empty());
270 attach_to_state(xhost, xname);
276 ensure(name() == xname);
277 ensure(is_attached());
278 ensure(!is_restricted());
289 require(precondition_of(attach_to_state(same args)));
293 attach_to_state(xnamespace, xpath, xauto_access);
297 ensure(postcondition_of(attach_to_state(same args)));
309 require(xother != 0);
313 attach_to_state(xother);
318 ensure(is_attached());
319 ensure(is_same_state(xother));
320 ensure(is_same_restriction(xother));
329 require(precondition_of(new_jim_state(xhost, xdof_map,
false, xauto_access)));
333 new_jim_state(xhost, xdof_map,
false, xauto_access);
337 ensure(postcondition_of(new_jim_state(xhost, xdof_map,
false, xauto_access)));
347 int xbase_version,
bool xauto_access)
351 require(precondition_of(\
352 new_jim_state(xhost, xbase_mbr, xbase_version, xauto_access)));
356 new_jim_state(xhost, xbase_mbr, xbase_version, xauto_access);
360 ensure(postcondition_of(\
361 new_jim_state(xhost, xbase_mbr, xbase_version, xauto_access)));
373 require(precondition_of(new_jim_state(xhost, xbase_parts, xauto_access)));
377 new_jrm_state(xhost, xbase_parts, xauto_access);
381 require(postcondition_of(new_jim_state(xhost, xbase_parts, xauto_access)));
394 require(is_ancestor_of(&xother));
395 require(precondition_of(attach_to_state(&xother)));
399 attach_to_state(&xother);
403 ensure(postcondition_of(attach_to_state(&xother)));
416 require(precondition_of(attach_to_state(&xother)));
420 attach_to_state(&xother);
424 ensure(postcondition_of(attach_to_state(&xother)));
437 require(precondition_of(sec_vd::operator=(xfiber)));
441 sec_vd::operator=(xfiber);
445 ensure(postcondition_of(sec_vd::operator=(xfiber)));
458 require(precondition_of(sec_vd::operator=(xfiber)));
462 sec_vd::operator=(xfiber);
466 ensure(postcondition_of(sec_vd::operator=(xfiber)));
586 const string& result = static_class_name();
590 ensure(!result.empty());
605 static const string result(
"sec_e1");
609 ensure(!result.empty());
657 require(xother != 0);
664 bool result =
dynamic_cast<const e1*
>(xother) != 0;
683 require(xother != 0);
690 bool result =
dynamic_cast<const sec_e1*
>(xother) != 0;
714 invariance(sec_ed::invariant());
716 if (invariant_check())
720 disable_invariant_check();
722 invariance(is_attached() ? df() == 1 :
true);
726 enable_invariant_check();
731 ensure(is_derived_query);
virtual sec_e1 * clone() const
make a new handle, no state instance of current
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 ...
A client handle for a subposet.
sec_e1()
default constructor
bool full() const
True if both poset name and member name are not empty.
bool invariant() const
class invariant
A Cartesian product section space.
The abstract map from section dof ids to section dof values of heterogeneous type.
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...
A space of scalars viewed as an antisymmetric tensor section space of degree 1.
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.
A general antisymmetric tensor of degree 1 over an abstract vector space (persistent version)...
The standard fiber bundles name space; extends the standard sheaves namespace by defining base space...
virtual const fiber_type & fiber_prototype() const
Virtual constructor for the associated fiber type.
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 is_ancestor_of(const any *other) const
true if other conforms to current
A schema poset for a section space. A binary Cartesian product subspace of the binary tensor product ...
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.
The poset for sec_rep_descriptors.
Euclidean vector space of dimension 1 (persistent version).
virtual sec_e1 & operator=(const abstract_poset_member &xother)
Assignment operator; synonym for attach_to_state(&xother).
Abstract base class with useful features for all objects.
int p() const
The tensor degree of this space.
The lattice of closed cells of a cellular space; a lattice representation of a computational mesh...
sec_rep_descriptor & rep()
A representation descriptor for this sec rep space (mutable version).
virtual section_space_schema_member & schema()
The schema for this poset (mutable version)
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.
static host_type & standard_host(namespace_type &xns, const poset_path &xbase_path, const poset_path &xrep_path, const std::string &xsection_suffix, const std::string &xfiber_suffix, bool xauto_access)
The standard host for sections of this type with base space xbase_path, representation xrep_path...
virtual const std::string & class_name() const
The name of this class.
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. ...
bool fiber_is_ancestor_of(const any *xother) const
True if xother conforms to an instance of the fiber of current.
int dd() const
The dimension of the underlying ("domain") vector space.
bool empty() const
True if both poset name and member name are empty.
An abstract vector space viewed as an antisymmetric tensor space of degree 1.
static const std::string & static_class_name()
The name of this class.
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).
A section of a fiber bundle with a 1-dimensional Euclidean vector space fiber.
Euclidean vector space of dimension 1 (volatile version).
An abstract client handle for a member of a poset.
std::string path() const
The full path as a string.
Namespace for the fiber_bundles component of the sheaf system.
virtual int d(int xp, int xdd) const
Dimension d() as a function of degree xp and domain dimension xdd.
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...
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...