21 #include "SheafSystem/sec_jcb_ed.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/section_space_schema_member.impl.h" 28 #include "SheafSystem/section_space_schema_poset.h" 29 #include "SheafSystem/sec_at0.h" 30 #include "SheafSystem/sec_at1.h" 31 #include "SheafSystem/sec_at1_space.h" 32 #include "SheafSystem/sec_jcb_space.h" 33 #include "SheafSystem/sec_tuple_space.impl.h" 34 #include "SheafSystem/jcb_ed.h" 35 #include "SheafSystem/jcb_space.h" 65 require(!xhost_path.
empty());
68 require(xschema_path.
full());
70 require(host_type::fiber_space_conforms<fiber_type::host_type>(xns, xschema_path, xauto_access));
75 require(host_type::same_vector_fiber_space(xns, xschema_path, xdomain_path, xrange_path, xauto_access));
79 host_type& result = host_type::new_table(xns, xhost_path, xschema_path, xdomain_path, xrange_path, xauto_access);
83 ensure(xns.
owns(result, xauto_access));
84 ensure(result.
path(
true) == xhost_path);
86 ensure(result.
schema(
true).
path(xauto_access) == xschema_path);
97 ensure(result.
range_path(
true) == xrange_path);
142 attach_to_state(xhost, xhub_id);
148 ensure(index() == xhub_id);
149 ensure(is_attached());
150 ensure(!is_restricted());
164 attach_to_state(xhost, xid.
hub_pod());
170 ensure(index() ==~ xid);
171 ensure(is_attached());
172 ensure(!is_restricted());
183 require(!xname.empty());
188 attach_to_state(xhost, xname);
194 ensure(name() == xname);
195 ensure(is_attached());
196 ensure(!is_restricted());
209 require(precondition_of(attach_to_state(same args)));
213 attach_to_state(xnamespace, xpath, xauto_access);
217 ensure(postcondition_of(attach_to_state(same args)));
231 require(xother != 0);
235 attach_to_state(xother);
240 ensure(is_attached());
241 ensure(is_same_state(xother));
242 ensure(is_same_restriction(xother));
252 require(precondition_of(new_jim_state(xhost, xdof_map,
false, xauto_access)));
256 new_jim_state(xhost, xdof_map,
false, xauto_access);
260 ensure(postcondition_of(new_jim_state(xhost, xdof_map,
false, xauto_access)));
273 require(is_ancestor_of(&xother));
274 require(precondition_of(attach_to_state(&xother)));
278 attach_to_state(&xother);
282 ensure(postcondition_of(attach_to_state(&xother)));
295 require(precondition_of(attach_to_state(&xother)));
299 attach_to_state(&xother);
303 ensure(postcondition_of(attach_to_state(&xother)));
316 require(precondition_of(sec_vd::operator=(xfiber)));
320 sec_vd::operator=(xfiber);
324 ensure(postcondition_of(sec_vd::operator=(xfiber)));
337 require(precondition_of(sec_vd::operator=(xfiber)));
341 sec_vd::operator=(xfiber);
345 ensure(postcondition_of(sec_vd::operator=(xfiber)));
433 const string& result = static_class_name();
437 ensure(!result.empty());
452 static const string result(
"sec_jcb_ed");
456 ensure(!result.empty());
505 require(xother != 0);
512 bool result =
dynamic_cast<const jcb_ed*
>(xother) != 0;
531 require(xother != 0);
538 bool result =
dynamic_cast<const sec_jcb_ed*
>(xother) != 0;
562 invariance(sec_jcb::invariant());
564 if (invariant_check())
568 disable_invariant_check();
572 enable_invariant_check();
577 ensure(is_derived_query);
static int d(int xdd, int xdr)
Dimension d() as a function of domain dimension xdd and range dimension xdr.
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 ...
bool is_ancestor_of(const any *xother) const
True if xother conforms to current.
bool full() const
True if both poset name and member name are not empty.
sec_jcb_ed()
Default constructor.
poset_path range_path() const
The path of the range vector space.
The abstract map from section dof ids to section dof values of heterogeneous type.
virtual sec_jcb_ed * clone() const
Make a new handle, no state instance of current.
Abstract jacobian for d dimensional Euclidean space (volatile version).
A space of scalars viewed as an antisymmetric tensor section space of degree 1.
poset_path domain_path() const
The path of the domain vector space.
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 invariant() const
Class invariant.
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.
A schema poset for a section space. A binary Cartesian product subspace of the binary tensor product ...
bool fiber_is_ancestor_of(const any *xother) const
True if xother conforms to an instance of the fiber of current.
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.
Abstract base class with useful features for all objects.
virtual section_space_schema_member & schema()
The schema for this poset (mutable version)
virtual int dr() const
Dimension of the range.
virtual sec_jcb_ed & operator=(const abstract_poset_member &xother)
Assignment operator; synonym for attach_to_state(&xother).
int dd() const
The dimension of the underlying ("domain") 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)
An index within the external ("client") scope of a given id space.
A section of a bundle with fiber type jcb_ed.
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 empty() const
True if both poset name and member name are empty.
static const std::string & static_class_name()
The name of this class.
virtual const std::string & class_name() const
The name of this class.
An abstract space of Jacobians.
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).
An abstract section space of Jacobians.
static host_type & new_host(namespace_type &xns, const poset_path &xhost_path, const poset_path &xschema_path, const poset_path &xdomain_space_path, const poset_path &xrange_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...
Abstract jacobian for d dimensional Euclidean space (persistent version).
An abstract client handle for a member of a poset.
Namespace for the fiber_bundles component of the sheaf system.
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.
virtual const fiber_type & fiber_prototype() const
Virtual constructor for the associated fiber type.
A handle for a poset whose members are numerical representations of sections of a fiber bundle...