22 #include "SheafSystem/sec_ed_invertible.h" 24 #include "SheafSystem/array_cylindrical_point_locator.h" 25 #include "SheafSystem/assert_contract.h" 26 #include "SheafSystem/chart_point.h" 27 #include "SheafSystem/chart_point_3d.h" 28 #include "SheafSystem/d_array_point_locator.h" 29 #include "SheafSystem/db0_point_locator.h" 30 #include "SheafSystem/d_tree_point_locator.h" 31 #include "SheafSystem/d_uniform_point_locator.h" 32 #include "SheafSystem/namespace_poset.h" 33 #include "SheafSystem/poset.h" 34 #include "SheafSystem/poset_path.h" 35 #include "SheafSystem/sec_at0.h" 36 #include "SheafSystem/sec_at1_space.h" 37 #include "SheafSystem/sec_rep_descriptor.h" 38 #include "SheafSystem/sec_rep_space.h" 39 #include "SheafSystem/section_eval_iterator.h" 40 #include "SheafSystem/section_evaluator.h" 41 #include "SheafSystem/sheaf.h" 142 require(precondition_of(
attach_to_state(xnamespace, xpath, xauto_access)));
150 ensure(postcondition_of(
attach_to_state(xnamespace, xpath, xauto_access)));
210 require(precondition_of(sec_vd::operator=(xfiber)));
218 ensure(postcondition_of(sec_vd::operator=(xfiber)));
232 require(precondition_of(sec_vd::operator=(xfiber)));
240 ensure(postcondition_of(sec_vd::operator=(xfiber)));
295 static bool result =
true;
319 require((1 <=
schema(xauto_access).
df()) && (
schema(xauto_access).
df() <= 3));
432 require_for_all(i, 0, xbin_ub.
ct(), xbin_ub[i] > 0);
665 result = (_inverter != 0);
745 ensure(unexecutable(xresult.
is_valid() ?
746 xresult.chart() contains xvalue at xresult.
local_coord() :
747 no chart contains xvalue));
763 require(xvalue != 0);
764 require(xvalue_ub >=
schema().
df());
774 ensure(unexecutable(xresult.
is_valid() ?
775 xresult.chart() contains xvalue at xresult.
local_coord() :
776 no chart contains xvalue));
790 require(xvalue != 0);
791 require(xvalue_ub >=
schema().
df());
795 define_old_variable(
int old_xresult_ct = xresult.
ct());
803 ensure(xresult.
ct() >= old_xresult_ct);
804 ensure_for_all(i, old_xresult_ct, xresult.
ct(), xresult[i].is_valid());
818 require(xvalue != 0);
819 require(xvalue_ub >=
schema().
df());
823 define_old_variable(
int old_xresult_ct = xresult.
ct());
831 ensure(xresult.
ct() >= old_xresult_ct);
832 ensure_for_all(i, old_xresult_ct, xresult.
ct(),
834 ensure_for_all(i, old_xresult_ct, xresult.
ct(), xresult[i].second.is_valid());
900 require(xother != 0);
virtual void update()=0
Updates the search structure to the current values of coordinates().
virtual void point_at_value(const sec_vd_value_type *xvalue, size_type xvalue_ub, chart_point &xresult)=0
Finds a chart point at which coordinates() has value xvalue.
int df() const
The dimension of the restricted fiber.
virtual int db() const
The dimension of the restricted base.
static chart_point * new_chart_point(int xdb)
Factory method; creates a chart point with db() == xdb.
size_type ct() const
The number of items currently in use.
virtual void initialize_d_array_point_locator(bool xauto_access)
Initializes search structure using d_array_point_locater with bin_ub computed from size of mesh...
virtual array_poset_dof_map & dof_map(bool xrequire_write_access=false)
The map from client_ids to dof values for this poset member (mutable version)
An abstract point location query in domains with global coordinate dimension DC and local coordinate ...
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...
virtual void initialize_point_locator(bool xauto_access)
Initializes point locater search structure using default values.
virtual int db() const =0
The dimension of this chart.
bool is_invertible() const
True if this can be inverted.
virtual void all_points_at_value(const sec_vd_value_type *xvalue, size_type xvalue_ub, block< chart_point_3d > &xresult)=0
Finds all chart points at which coordinates() has value xvalue and appends them to xresult...
A path defined by a poset name and a member name separated by a forward slash ('/'). For example: "cell_definitions/triangle".
bool is_ancestor_of(const any *other) const
True if other conforms to current.
virtual bool invariant() const
Class invariant.
virtual void point_at_value_pa(const ed &xvalue, chart_point &xresult)
Finds a chart point which is the preimage in this of xvalue; pre-allocated version.
virtual void point_at_value_ua(const sec_vd_dof_type *xvalue, size_type xvalue_ub, chart_point &xresult)
Finds a chart point which is the preimage in this of xvalue; unattached version.
virtual void get_read_access() const
Get read access to the state associated with this.
host_type * host() const
The poset this is a member of.
virtual void initialize_d_tree_point_locator(bool xauto_access)
Initializes search structure using d_tree_point_locater with depth computed from the size of the mesh...
std::string name() const
A name for this.
bool is_valid() const
True if this ia a valid point in a chart.
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 void initialize_d_uniform_point_locator(bool xauto_access)
Initializes search structure using d_uniform_point_locater.
virtual chart_point * point_at_value(const ed &xr)
Finds a chart point which is the preimage in this of xr; auto-allocated version.
A section of a fiber bundle with a d-dimensional Euclidean vector space fiber.
Abstract base class with useful features for all objects.
An abstract invertible section of a fiber bundle with a d-dimensional base space and a d-dimensional ...
Euclidean vector space of dimension d (volatile version).
A point location query in domains with global coordinate dimension DC and local coordinate dimension ...
virtual void all_points_at_value_ua(const sec_vd_value_type *xvalue, size_type xvalue_ub, block< chart_point_3d > &xresult)
Finds all chart points at which this has value xvalue and appends them to xresult. Note that charts overlap at their boundaries and hence if xvalue lies on a boundary it is contained in more than one chart.
sec_ed_invertible()
Default constructor.
An index within the external ("client") scope of a given id space.
A point location query in domains with global coordinate dimension dc and local coordinate dimension ...
unsigned long size_type
An unsigned integral type used to represent sizes and capacities.
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 void attach_handle_data_members()
Initializes handle data members when attaching to a different member in the same host.
virtual sec_vd & operator=(const abstract_poset_member &xother)
Assignment operator; synonym for attach_to_state(xother).
void disable_invariant_check() const
Disable invariant check. Intended for preventing recursive calls to invariant and for suppressing inv...
virtual void * dof_tuple()
The dof tuple (mutable version).
bool invariant_check() const
True if invariant checking is enabled.
Euclidean vector space of dimension d (peresistent version).
virtual section_space_schema_member & schema()
The restricted schema for this (mutable version).
bool invariant() const
Class invariant.
virtual sec_ed_invertible * clone() const
Make a new handle, no state instance of current.
int db() const
The dimension of the base space component.
bool is_uniform() const
True if this is a uniform coordinate field.
virtual int d() const
Dimension of this as a vector space.
virtual void branch_points_at_value_ua(const sec_vd_value_type *xvalue, size_type xvalue_ub, block< branch_point_pair > &xresult)
Finds one chart point in each branch at which this has value xvalue and appends them to xresult...
int df() const
The dimension of the fiber space component.
const geometry::point_locator & inverter() const
The search structure used for inversion.
void attach_to_state(const namespace_poset *xns, const poset_path &xpath, bool xauto_access=true)
Attach to the state specified by path xpath in the namespace xns.
An abstract client handle for a member of a poset.
static bool & use_d_array_point_locator()
If true default inverter initialization uses d_array_point_locator other wise uses d_tree_point_locat...
double sec_vd_dof_type
The type of degree of freedom in the section space.
virtual void update_inversion()
Updates search structure to current value of this.
sec_rep_descriptor & rep()
The representation for section spaces on this schema (mutable version).
virtual void branch_points_at_value(const sec_vd_value_type *xvalue, size_type xvalue_ub, block< branch_point_pair > &xresult)=0
Finds one chart point in each branch at which coordinates() has value xvalue and appends them to xres...
~sec_ed_invertible()
Destructor.
Namespace for geometry component of sheaf system.
vd_value_type sec_vd_value_type
The type of component in the value of a section at a point.
void enable_invariant_check() const
Enable invariant checking.
virtual coord_type local_coord(int xi) const =0
The xi-th local coordinate of this point.
virtual sec_ed_invertible & operator=(const abstract_poset_member &xother)
Assignment operator; synonym for attach_to_state(&xother).
A point location query in domains with global coordinate dimension DC and local coordinate dimension ...
void attach_handle_data_members()
Initializes data members introduced by this handle.
An abstract point location query in domains with global coordinate dimension dc and local coordinate ...
A handle for a poset whose members are numerical representations of sections of a fiber bundle...