SheafSystem  0.0.0.0
fields::refining_section_pusher Class Reference

A refining section push-forward operator. Moves sections from one sec_rep_space to another using extension by zero to define the target outside the domain of the source. Refines the base of the target as specfied by a given refinement policy. More...

#include <refining_section_pusher.h>

Inheritance diagram for fields::refining_section_pusher:
sheaf::any

REFINING_SECTION_PUSHER FACET

 refining_section_pusher (const poset &xbase_space, const std::string &xrefiner_family_name, const std::string &xrefinement_policy_name, bool xauto_access)
 Creates an instance for sections over base space xbase_space using the refiner family with name xrefiner_family_name and the policy with name xrefinement_policy_name. More...
 
field_refiner_familyrefiners ()
 The family of refiners for the range. More...
 
field_refinement_policypolicy () const
 The refinement policy of the refiners. More...
 
void push (const field_vd &xsource, field_vd &xtarget, bool xauto_access)
 Pushes field xsource to field xtarget, pre-allocated. More...
 
bool same_fiber (const sec_vd &x1, const sec_vd &x2) const
 True if and only if x1 and x2 have the same fiber type and dimension. More...
 
 refining_section_pusher ()
 Default constructor; disabled. More...
 

ANY FACET

 refining_section_pusher (const refining_section_pusher &xother)
 Copy constructor. More...
 
virtual ~refining_section_pusher ()
 Destructor. More...
 
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 refining section push-forward operator. Moves sections from one sec_rep_space to another using extension by zero to define the target outside the domain of the source. Refines the base of the target as specfied by a given refinement policy.

Definition at line 62 of file refining_section_pusher.h.

Constructor & Destructor Documentation

◆ refining_section_pusher() [1/3]

fields::refining_section_pusher::refining_section_pusher ( const poset xbase_space,
const std::string &  xrefiner_family_name,
const std::string &  xrefinement_policy_name,
bool  xauto_access 
)

Creates an instance for sections over base space xbase_space using the refiner family with name xrefiner_family_name and the policy with name xrefinement_policy_name.

Precondition
  • xauto_access || xbase_space.state_is_read_accessible()
Todo:
Remove dynamic cast when base_space_member returns base_space_poset as its host.
Postcondition

Definition at line 54 of file refining_section_pusher.cc.

References sheaf::poset_state_handle::get_read_access(), refiners(), sheaf::poset_state_handle::release_access(), and sheaf::read_write_monitor_handle::state_is_read_accessible().

◆ refining_section_pusher() [2/3]

fields::refining_section_pusher::refining_section_pusher ( )
protected

Default constructor; disabled.

Not Implemented.

Definition at line 292 of file refining_section_pusher.cc.

Referenced by same_fiber().

◆ refining_section_pusher() [3/3]

fields::refining_section_pusher::refining_section_pusher ( const refining_section_pusher xother)

Copy constructor.

Not Implemented.

Postcondition

Definition at line 315 of file refining_section_pusher.cc.

References invariant(), and ~refining_section_pusher().

◆ ~refining_section_pusher()

fields::refining_section_pusher::~refining_section_pusher ( )
virtual

Destructor.

Definition at line 331 of file refining_section_pusher.cc.

References invariant().

Referenced by refining_section_pusher().

Member Function Documentation

◆ invariant()

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

◆ policy()

fields::field_refinement_policy & fields::refining_section_pusher::policy ( ) const

The refinement policy of the refiners.

Definition at line 109 of file refining_section_pusher.cc.

References push().

Referenced by refiners().

◆ push()

void fields::refining_section_pusher::push ( const field_vd xsource,
field_vd xtarget,
bool  xauto_access 
)

Pushes field xsource to field xtarget, pre-allocated.

Precondition
  • xauto_access || xsource.state_is_read_accessible()
  • xauto_access || xtarget.base_space().state_is_read_write_accessible()
  • xauto_access || xtarget.state_is_read_write_accessible()
  • xtarget.same_evaluation()
Hack:
have to create separate handle because base_space_member::host() is type poset.
Todo:
remove when sheaves/fiber_bundles refactored and host type is fixed.
Todo:
integrate the gather with the push; more efficient.
Postcondition
  • xsource.access_request_depth() == old_xsource_access_request_depth
  • xtarget.access_request_depth() == old_xtarget_access_request_depth

Definition at line 129 of file refining_section_pusher.cc.

References fields::field_vd::access_request_depth(), fields::field_vd::base_space(), sheaf::poset::begin_jim_edit_mode(), fields::field_eval_iterator::coordinate_discretization_members(), fields::field_eval_iterator::coordinate_evaluator(), fields::field_vd::coordinates(), sheaf::poset::end_jim_edit_mode(), sheaf::schema_poset_member::force_cache_update(), fields::field_vd::get_read_access(), fields::field_vd::get_read_write_access(), fiber_bundle::base_space_member::host(), sheaf::depth_first_iterator::index(), geometry::sec_ed_invertible::initialize_point_locator(), sheaf::depth_first_iterator::is_done(), geometry::sec_ed_invertible::is_invertible(), fields::field_eval_iterator::next(), fields::local_field_refiner::policy(), fields::field_vd::property(), fields::field_eval_iterator::property_discretization_members(), fields::field_eval_iterator::property_evaluator(), fields::local_field_refiner::refine(), fields::field_eval_iterator::refinement_depth(), fields::field_vd::release_access(), fields::field_eval_iterator::repeat(), fields::field_vd::same_evaluation(), same_fiber(), fiber_bundle::sec_rep_space_member::schema(), fields::field_refinement_policy::should_refine(), fields::field_vd::state_is_read_accessible(), sheaf::read_write_monitor_handle::state_is_read_write_accessible(), fields::field_vd::state_is_read_write_accessible(), fields::field_eval_iterator::type_id(), and fields::field_refinement_buffer::zone_id.

Referenced by policy().

◆ refiners()

fields::field_refiner_family & fields::refining_section_pusher::refiners ( )

The family of refiners for the range.

Definition at line 102 of file refining_section_pusher.cc.

References policy().

Referenced by refining_section_pusher().

◆ same_fiber()

bool fields::refining_section_pusher::same_fiber ( const sec_vd x1,
const sec_vd x2 
) const

True if and only if x1 and x2 have the same fiber type and dimension.

Precondition
  • x1.state_is_read_accessible()
  • x2.state_is_read_accessible()
Postcondition
  • result == (x1.schema().fiber_schema().is_same_state(&x2.schema().fiber_schema()) && (x1.schema().df() == x2.schema().df()))

Definition at line 262 of file refining_section_pusher.cc.

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

Referenced by push().


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