22 #include "SheafSystem/property_disc_iterator.h" 24 #include "SheafSystem/assert_contract.h" 25 #include "SheafSystem/base_space_member.h" 26 #include "SheafSystem/binary_section_space_schema_member.h" 27 #include "SheafSystem/error_message.h" 28 #include "SheafSystem/eval_family.h" 29 #include "SheafSystem/property_disc_iterator_1_1.h" 30 #include "SheafSystem/property_disc_iterator_1_2.h" 31 #include "SheafSystem/property_disc_iterator_1_3.h" 32 #include "SheafSystem/property_disc_iterator_4_2.h" 33 #include "SheafSystem/property_disc_iterator_4_3.h" 34 #include "SheafSystem/sec_rep_descriptor.h" 35 #include "SheafSystem/section_evaluator.h" 36 #include "SheafSystem/section_space_schema_member.h" 37 #include "SheafSystem/sec_ed_invertible.h" 38 #include "SheafSystem/sec_vd.h" 39 #include "SheafSystem/std_limits.h" 40 #include "SheafSystem/structured_block_1d.h" 41 #include "SheafSystem/structured_block_2d.h" 42 #include "SheafSystem/structured_block_3d.h" 43 #include "SheafSystem/subposet_member_iterator.h" 44 #include "SheafSystem/uniform_eval_family.h" 45 #include "SheafSystem/field_vd.h" 118 post_fatal_error_message(
"Property rep not supported with this coordinates rep.");
121 else if(xcoords_schema.
rep().
name() ==
"vertex_vertex_constant")
125 if(xprop_schema.
rep().
name() ==
"vertex_vertex_constant")
136 post_fatal_error_message(
"Property rep not supported with this coordinates rep.");
143 post_fatal_error_message(
"Coordinates rep not supported.");
174 require(is_initialized());
195 require(is_initialized());
224 ensure(result.
is_same_state(coordinates_schema().base_space().host()));
225 ensure(result.
is_same_state(property_schema().base_space().host()));
240 const subposet& result = _coord_state.eval_sp;
244 ensure(result.
is_same_state(&coordinates_schema().evaluation()));
259 const subposet& result = _prop_state.eval_sp;
263 ensure(result.
is_same_state(&property_schema().evaluation()));
282 result = base_space().db(index());
305 result = base_space().type_id(index());
328 string result(base_space().type_name(index()));
344 require(is_initialized());
368 require(is_initialized());
397 _coord_state.discretization_members;
417 _prop_state.discretization_members;
468 disable_invariant_check();
478 initialize_order(xorder);
483 enable_invariant_check();
488 ensure(is_initialized());
492 ensure(property_schema().is_same_state(&xfield.
property().
schema()));
493 ensure(property_schema().is_same_type(&xfield.
property().
schema()));
495 ensure(descending());
497 ensure(unexecutable(!is_done() implies
this is first member));
519 disable_invariant_check();
523 _coord_state.initialize(xcoordinates_schema);
524 _prop_state.initialize(xproperty_schema);
528 initialize_order(xorder);
529 initialize_traversal(xproperty_schema.
base_space());
533 enable_invariant_check();
538 ensure(is_initialized());
539 ensure(coordinates_schema().is_same_state(&xcoordinates_schema));
540 ensure(coordinates_schema().is_same_type(&xcoordinates_schema));
541 ensure(coordinates_schema().version() == xcoordinates_schema.
version());
542 ensure(property_schema().is_same_state(&xproperty_schema));
543 ensure(property_schema().is_same_type(&xproperty_schema));
544 ensure(property_schema().version() == xproperty_schema.
version());
545 ensure(descending());
547 ensure(unexecutable(!is_done() implies
this is first member));
609 if(invariant_check())
611 invariance(depth_first_iterator::invariant());
613 disable_invariant_check();
615 invariance(anchor().is_same_state(&(property_schema().base_space())));
616 invariance(property_schema().base_space().le(&coordinates_schema().base_space()));
620 enable_invariant_check();
645 _prop_state.down_set.set_ct(0);
646 _prop_state.discretization_members.set_ct(0);
648 _coord_state.down_set.set_ct(0);
649 _coord_state.discretization_members.set_ct(0);
654 depth_first_iterator::force_is_done();
A client handle for a subposet.
const block< discretization_context > & coordinate_discretization_members() const
The coordinate discretization members in the downset of the current evaluation member.
A property discretization iterator for a proerty section with the same evaluation subposet as the coo...
int version(bool xunalias=true) const
The (possibly aliased) version of this component. The version of the host used when evaluating proper...
virtual void get_prop_disc_values(const sec_vd &xsec)=0
The gets the values of xsec at the property discretization points.
A property discretization iterator for a field with uniform coordinates section and a property sectio...
Namespace for fields component of sheaf system.
bool conforms_to(const schema_poset_member &xother) const
True if the dofs defined by this agree in type and in order with the dofs defined by xother...
bool state_is_read_accessible() const
True if this is attached and if the state is accessible for read or access control is disabled...
subposet & evaluation()
The evaluation subposet for section spaces on this schema (mutable version).
const section_space_schema_member & property_schema() const
The property field schema member which is being iterated over.
section_evaluator & coordinate_evaluator() const
The coordinate field evaluator associated with the current evaluation member.
bool is_same_state(const poset_state_handle *xhost, pod_index_type xhub_id) const
True is this is attached to state with hub id xhub_id in host xhost.
order_type
The types of order in which the iterator will visit the members of the poset. Determines which action...
std::string name() const
A name for this.
section_evaluator & property_evaluator() const
The property field evaluator associated with the current evaluation member.
void initialize_iteration(const field_vd &xfield, order_type xorder)
Initializes this for iteration of type xorder over the schema of xfield.
pod_index_type type_id() const
The type id of the current member.
virtual property_disc_iterator * clone() const =0
Make a new instance of the same type as this.
Abstract base class with useful features for all objects.
The lattice of closed cells of a cellular space; a lattice representation of a computational mesh...
std::string type_name() const
The type name of the current member.
bool eval_is_above_disc() const
True is the evaluation subposet is strictly above the discretization subposet.
~property_disc_iterator()
Destructor.
const base_space_poset & base_space() const
The base space shared by both schema.
const subposet & coordinates_evaluation() const
The evaluation subposet for the coordinates.
A vd-valued property as a function of global coordinates.
sec_vd & property() const
The dependent variable of this field.
bool le(pod_index_type xother_index) const
True if this is less than or equal to the member with index xother_index.
std::string evaluator_family_name() const
The name of the evaluator family for section spaces on schemae hosted by this.
virtual void force_is_done()
Force the iterator to be done.
base_space_member & base_space() const
The base space of this field.
virtual bool is_ancestor_of(const any *xother) const
True if other conforms to this.
const block< discretization_context > & property_discretization_members() const
The property discretization members in the downset of the current evaluation member.
An abstract local section evaluator; a map from {local coordinates x dofs} to section value...
A section of a fiber bundle with a d-dimensional vector space fiber.
const subposet & property_evaluation() const
The evaluation subposet for the property.
total_poset_member & base_space()
The base space component of this (mutable version).
virtual section_space_schema_member & schema()
The restricted schema for this (mutable version).
int_type pod_index_type
The plain old data index type.
static property_disc_iterator * new_property_disc_iterator(const section_space_schema_member &xcoords_schema, const section_space_schema_member &xprop_schema)
Creates an iterator appropriate for xcoords and xprop.
A client handle for a poset member which has been prepared for use as a schema for a section space...
sec_ed_invertible & coordinates() const
The independent variable of this field.
bool state_is_read_accessible() const
True if this is attached and if the coordinates and property are accessible for read or access contro...
int db() const
The dimension of the current evaluation member.
A property discretization iterator for a property section with the same evaluation subposet as the co...
const section_space_schema_member & coordinates_schema() const
The coordinates field schema member which is being iterated over.
int df() const
The dimension of the fiber space component.
bool is_same_state(const poset_state_handle *xother) const
True if this is attached to the same state as xother.
A property discretization iterator for a property section with the same discretization as the coordin...
bool invariant() const
The class invariant.
sec_rep_descriptor & rep()
The representation for section spaces on this schema (mutable version).
virtual schema_poset_member & schema()
The schema for this member (mutable version).
A property discretization iterator for a field with uniform coordinates section and a property sectio...
Abstract iterator over the discretization of the property section of a field_vd. Concurrently travers...