SheafSystem  0.0.0.0
fields::base_space_map Class Reference

A map from one base space to another generated by coordinate sections. More...

#include <base_space_map.h>

Inheritance diagram for fields::base_space_map:
sheaf::any

BASE_SPACE_MAP FACET

 base_space_map (const base_space_map &xother)
 Copy constructor. More...
 
 base_space_map (const sec_ed &xdomain_coord, const sec_ed &xrange_coord, bool xauto_access)
 Creates the map induced by xdomain_coord and xrange_coord. More...
 
virtual ~base_space_map ()
 Destructor. More...
 
const base_space_posetdomain () const
 The domain of the push-forward map. More...
 
const geometry::sec_ed_invertibledomain_coords () const
 The coordinates section for the domain. More...
 
const base_space_posetrange () const
 The range of the push-forward map. More...
 
const sec_edrange_coords () const
 The coordinates section for the range. More...
 
void push (const sec_vd &xinput, sec_vd &xoutput, bool xauto_access)
 Pushes section xinput on domain() to xoutput on range(). More...
 
void push (const block< sec_vd *> &xinputs, block< sec_vd *> &xoutputs, bool xauto_access)
 Pushes each section in xinput on domain() to the corresponding section in xoutput on range(). More...
 
bool same_base (const sec_vd &xsec1, const sec_vd &xsec2, bool xauto_access) const
 True if and only if xsec1 and xsec2 have the same base space. More...
 
bool same_rep (const sec_vd &xsec1, const sec_vd &xsec2, bool xauto_access) const
 True if and only if xsec1 and xsec2 have the same rep. More...
 
bool same_fiber (const sec_vd &xsec1, const sec_vd &xsec2, bool xauto_access) const
 True if and only if xsec1 and xsec2 have the same fiber type and dimension. More...
 
base_space_map_push_actionoverlap_action () const
 Computes value of destination dofs where dst overlaps src. More...
 
base_space_map_push_actiondefault_overlap_action () const
 Overlap action if none specified by clinet. More...
 
base_space_map_push_actionextension_action () const
 Computes value of destination dofs where dst does not overlap src. More...
 
base_space_map_push_actiondefault_extension_action () const
 Extension action if none specified by clinet. More...
 
void put_overlap_action (base_space_map_push_action &xoverlap_action)
 Sets the overlap action to xoverlap_action. More...
 
void put_extension_action (base_space_map_push_action &xextension_action)
 Sets the extension action to xextension_action. More...
 
 base_space_map ()
 Default constructor; protected to prevent default construction. More...
 

ANY FACET

virtual bool invariant () const
 Class invariant. More...
 

Additional Inherited Members

- Public Member Functions inherited from sheaf::any
virtual bool is_ancestor_of (const any *other) const
 True if other conforms to this. More...
 
bool is_same_type (const any *other) const
 True if other is the same type as this. More...
 
virtual anyclone () const
 Virtual constructor, makes a new instance of the same type as this. More...
 
virtual ~any ()
 Destructor. More...
 
bool invariant_check () const
 True if invariant checking is enabled. More...
 
void enable_invariant_check () const
 Enable invariant checking. More...
 
void disable_invariant_check () const
 Disable invariant check. Intended for preventing recursive calls to invariant and for suppressing invariant checking during multi-phase initialization. More...
 
int disable_invariance_check_request_depth () const
 Number of times disable_invariant_check has been called without matching call to enable_invariant_check. More...
 
- Protected Member Functions inherited from sheaf::any
 any ()
 default constructor More...
 

Detailed Description

A map from one base space to another generated by coordinate sections.

Definition at line 75 of file base_space_map.h.

Constructor & Destructor Documentation

◆ base_space_map() [1/3]

fields::base_space_map::base_space_map ( const base_space_map xother)

Copy constructor.

Not Implemented.

Postcondition

Definition at line 148 of file base_space_map.cc.

References invariant(), and ~base_space_map().

◆ base_space_map() [2/3]

fields::base_space_map::base_space_map ( const sec_ed xdomain_coord,
const sec_ed xrange_coord,
bool  xauto_access 
)

Creates the map induced by xdomain_coord and xrange_coord.

Precondition
  • xauto_access || xdomain_coord.state_is_read_accessible()
  • xauto_access || xrange_coord.state_is_read_accessible()
  • same_fiber(xdomain_coord, xrange_coord, xauto_access)
  • dynamic_cast<const binary_section_space_schema_member*> (&(xrange_coord.schema()))
Postcondition
  • domain().is_same_state(&xdomain_coord.schema().host()->base_space())
  • range().is_same_state(&xrange_coord.schema().host()->base_space())
  • xdomain_coord.access_request_depth() == old_xdomain_coord_access_request_depth
  • xrange_coord.access_request_depth() == old_xrange_coord_access_request_depth

Definition at line 90 of file base_space_map.cc.

References sheaf::read_write_monitor_handle::access_request_depth(), sheaf::abstract_poset_member::attach_to_state(), fiber_bundle::section_space_schema_poset::base_space(), base_space_map(), domain(), sheaf::poset_component::get_read_access(), fiber_bundle::section_space_schema_member::host(), invariant(), range(), sheaf::poset_component::release_access(), same_fiber(), fiber_bundle::sec_rep_space_member::schema(), and sheaf::read_write_monitor_handle::state_is_read_accessible().

◆ ~base_space_map()

fields::base_space_map::~base_space_map ( )
virtual

◆ base_space_map() [3/3]

fields::base_space_map::base_space_map ( )
protected

Default constructor; protected to prevent default construction.

Not Implemented.

Definition at line 587 of file base_space_map.cc.

References geometry::sec_ed_invertible::all_points_at_value_ua(), sheaf::abstract_poset_member::attach_to_state(), fiber_bundle::section_space_schema_member::base_space(), fiber_bundle::section_space_schema_member::base_space_id(), geometry::sec_ed_invertible::branch_points_at_value_ua(), sheaf::any::clone(), sheaf::auto_block< T, un_block_initialization_policy< T > >::ct(), sheaf::auto_block< T, S >::ct(), fiber_bundle::sec_tuple::detach_from_state(), fields::pullback_map_entry::disc_id, fiber_bundle::discretization_context::disc_id, domain(), domain_coords(), fields::pullback_map_entry::domain_pt, sheaf::DOWN, fiber_bundle::section_space_schema_member::evaluation(), fiber_bundle::eval_iterator::evaluator(), fields::base_space_map_push_action::finalize(), fiber_bundle::eval_iterator::force_is_done(), sheaf::depth_first_iterator::force_is_done(), fiber_bundle::eval_iterator::gather_dofs(), fiber_bundle::sec_rep_space_member::get_branch_id_space(), fields::property_disc_iterator::get_prop_disc_values(), fiber_bundle::sec_vd::host(), sheaf::index_space_handle::hub_pod(), sheaf::poset_component::index(), sheaf::depth_first_iterator::index(), fields::base_space_map_push_action::initialize(), geometry::sec_ed_invertible::initialize_point_locator(), sheaf::invalid_pod_index(), fiber_bundle::chart_point::invalidate(), sheaf::scoped_index::invalidate(), invariant(), sheaf::depth_first_iterator::is_done(), geometry::sec_ed_invertible::is_invertible(), sheaf::abstract_poset_member::is_jim(), fiber_bundle::sec_rep_space_member::is_multisection(), fiber_bundle::base_space_poset::max_db(), sheaf::poset_state_handle::member_index_ub(), fields::property_disc_iterator::new_property_disc_iterator(), sheaf::depth_first_iterator::next(), sheaf::NOT_STRICT, sheaf::index_space_handle::pod(), sheaf::scoped_index::pod(), geometry::sec_ed_invertible::point_at_value_ua(), fields::property_disc_iterator::property_discretization_members(), sheaf::auto_block< T, S >::push_back(), range_coords(), sheaf::index_space_handle::release_id_space(), sheaf::auto_block< T, S >::reserve(), fiber_bundle::sec_rep_space_member::schema(), sheaf::auto_block< T, S >::set_ct(), sheaf::read_write_monitor_handle::state_is_read_accessible(), sheaf::depth_first_iterator::truncate(), fiber_bundle::section_evaluator::value_at_coord(), and fiber_bundle::discretization_context::values.

Referenced by base_space_map(), and put_extension_action().

Member Function Documentation

◆ default_extension_action()

fields::base_space_map_push_action & fields::base_space_map::default_extension_action ( ) const

Extension action if none specified by clinet.

Definition at line 537 of file base_space_map.cc.

References put_overlap_action().

Referenced by extension_action().

◆ default_overlap_action()

fields::base_space_map_push_action & fields::base_space_map::default_overlap_action ( ) const

Overlap action if none specified by clinet.

Definition at line 523 of file base_space_map.cc.

References extension_action().

Referenced by overlap_action().

◆ domain()

const fiber_bundle::base_space_poset & fields::base_space_map::domain ( ) const

The domain of the push-forward map.

Definition at line 197 of file base_space_map.cc.

References domain_coords().

Referenced by base_space_map(), push(), and ~base_space_map().

◆ domain_coords()

const geometry::sec_ed_invertible & fields::base_space_map::domain_coords ( ) const

The coordinates section for the domain.

Definition at line 214 of file base_space_map.cc.

References range().

Referenced by base_space_map(), domain(), and push().

◆ extension_action()

fields::base_space_map_push_action & fields::base_space_map::extension_action ( ) const

Computes value of destination dofs where dst does not overlap src.

Definition at line 530 of file base_space_map.cc.

References default_extension_action().

Referenced by default_overlap_action(), and put_extension_action().

◆ invariant()

bool fields::base_space_map::invariant ( ) const
virtual

◆ overlap_action()

fields::base_space_map_push_action & fields::base_space_map::overlap_action ( ) const

Computes value of destination dofs where dst overlaps src.

Definition at line 516 of file base_space_map.cc.

References default_overlap_action().

Referenced by put_overlap_action(), and same_fiber().

◆ push() [1/2]

void fields::base_space_map::push ( const sec_vd xinput,
sec_vd xoutput,
bool  xauto_access 
)

Pushes section xinput on domain() to xoutput on range().

Todo:
improve this precondition.
Precondition
  • precondition_of(push(block, block, bool))

Definition at line 265 of file base_space_map.cc.

References sheaf::auto_block< T, un_block_initialization_policy< T > >::push_back().

Referenced by range_coords().

◆ push() [2/2]

void fields::base_space_map::push ( const block< sec_vd *> &  xinputs,
block< sec_vd *> &  xoutputs,
bool  xauto_access 
)

Pushes each section in xinput on domain() to the corresponding section in xoutput on range().

Precondition
  • xinputs.ct() > 0
  • xoutputs.ct() == xinputs.ct()
  • for(int i = ( 0 ); i < ( xinputs.ct() ); ++ i ) xauto_access || xinputs[i]->state_is_read_accessible()
  • for(int i = ( 0 ); i < ( xoutputs.ct() ); ++ i ) xauto_access || xoutputs[i]->state_is_read_write_accessible()
  • for(int i = ( 1 ); i < ( xoutputs.ct() ); ++ i ) same_base(*xoutputs[i], *xoutputs[0], xauto_access)
  • for(int i = ( 1 ); i < ( xoutputs.ct() ); ++ i ) same_rep(*xoutputs[i], *xoutputs[0], xauto_access)
  • -unexecutable( "all multisection inputs must be defined on the same decomposition" )
  • for(int i = ( 0 ); i < ( xinputs.ct() ); ++ i ) domain().contains_member(&xinputs[i]->schema().base_space(), xauto_access)
  • for(int i = ( 0 ); i < ( xoutputs.ct() ); ++ i ) range().contains_member(&xoutputs[i]->schema().base_space(), xauto_access)
Postcondition
  • domain_coords().access_request_depth() == old_domain_coord_access_request_depth
  • range_coords().access_request_depth() == old_range_coord_access_request_depth

Definition at line 295 of file base_space_map.cc.

References sheaf::poset_state_handle::contains_member(), sheaf::auto_block< T, un_block_initialization_policy< T > >::ct(), domain(), domain_coords(), sheaf::poset_component::get_read_access(), range(), range_coords(), sheaf::poset_component::release_access(), same_base(), same_rep(), and fiber_bundle::sec_rep_space_member::schema().

◆ put_extension_action()

void fields::base_space_map::put_extension_action ( base_space_map_push_action xextension_action)

Sets the extension action to xextension_action.

Postcondition

Definition at line 565 of file base_space_map.cc.

References base_space_map(), and extension_action().

Referenced by put_overlap_action().

◆ put_overlap_action()

void fields::base_space_map::put_overlap_action ( base_space_map_push_action xoverlap_action)

Sets the overlap action to xoverlap_action.

Postcondition

Definition at line 545 of file base_space_map.cc.

References overlap_action(), and put_extension_action().

Referenced by default_extension_action().

◆ range()

const fiber_bundle::base_space_poset & fields::base_space_map::range ( ) const

The range of the push-forward map.

Definition at line 231 of file base_space_map.cc.

References range_coords().

Referenced by base_space_map(), domain_coords(), and push().

◆ range_coords()

const fiber_bundle::sec_ed & fields::base_space_map::range_coords ( ) const

The coordinates section for the range.

Definition at line 248 of file base_space_map.cc.

References push().

Referenced by base_space_map(), push(), and range().

◆ same_base()

bool fields::base_space_map::same_base ( const sec_vd xsec1,
const sec_vd xsec2,
bool  xauto_access 
) const

True if and only if xsec1 and xsec2 have the same base space.

Precondition
  • xauto_access || xsec1.state_is_read_accessible()
  • xauto_access || xsec2.state_is_read_accessible()

Definition at line 411 of file base_space_map.cc.

References fiber_bundle::section_space_schema_member::base_space(), sheaf::poset_component::get_read_access(), sheaf::poset_component::is_same_state(), sheaf::poset_component::release_access(), same_rep(), fiber_bundle::sec_rep_space_member::schema(), and sheaf::read_write_monitor_handle::state_is_read_accessible().

Referenced by push().

◆ same_fiber()

bool fields::base_space_map::same_fiber ( const sec_vd xsec1,
const sec_vd xsec2,
bool  xauto_access 
) const

True if and only if xsec1 and xsec2 have the same fiber type and dimension.

Precondition
  • xauto_access || xsec1.state_is_read_accessible()
  • xauto_access || xsec2.state_is_read_accessible()

Definition at line 480 of file base_space_map.cc.

References fiber_bundle::section_space_schema_member::df(), fiber_bundle::section_space_schema_member::fiber_schema(), sheaf::poset_component::get_read_access(), sheaf::poset_component::is_same_state(), overlap_action(), sheaf::poset_component::release_access(), fiber_bundle::sec_rep_space_member::schema(), and sheaf::read_write_monitor_handle::state_is_read_accessible().

Referenced by base_space_map(), and same_rep().

◆ same_rep()

bool fields::base_space_map::same_rep ( const sec_vd xsec1,
const sec_vd xsec2,
bool  xauto_access 
) const

True if and only if xsec1 and xsec2 have the same rep.

Precondition
  • xauto_access || xsec1.state_is_read_accessible()
  • xauto_access || xsec2.state_is_read_accessible()

Definition at line 446 of file base_space_map.cc.

References sheaf::poset_component::get_read_access(), sheaf::poset_component::is_same_state(), sheaf::poset_component::release_access(), fiber_bundle::section_space_schema_member::rep(), same_fiber(), fiber_bundle::sec_rep_space_member::schema(), and sheaf::read_write_monitor_handle::state_is_read_accessible().

Referenced by push(), and same_base().


The documentation for this class was generated from the following files: