SheafSystem  0.0.0.0
fields::zone_centered_segment_refiner Class Reference

A field refiner that introduces a new vertex in the center of a segment. More...

#include <zone_centered_segment_refiner.h>

Inheritance diagram for fields::zone_centered_segment_refiner:
fields::local_field_refiner sheaf::any

ZONE_CENTERED_SEGMENT_REFINER FACET

scoped_index _new_point_id
 The index of the point added by the current base space refinement. More...
 
scoped_index _new_seg_0_id
 The index of the first segment added by the current base space refinement. More...
 
scoped_index _new_seg_1_id
 The index of the second segment added by the current base space refinement. More...
 
 zone_centered_segment_refiner (const field_refinement_policy &xpolicy)
 Creates an instance for refining base space xbase_space using policy xpolicy. More...
 
 zone_centered_segment_refiner (const zone_centered_segment_refiner &xother)
 Copy constructor. More...
 
 zone_centered_segment_refiner ()
 Default constructor; disabled. More...
 
virtual void refine_base_space (field_refinement_buffer &xbuffer)
 Refines the base space or the target. More...
 
void modify_crg (field_refinement_buffer &xbuffer)
 Modifies the cover relation graph of the base space. More...
 
void modify_subposets (field_refinement_buffer &xbuffer)
 Modifies subposets in the base space. More...
 
virtual void refine_coordinates (field_refinement_buffer &xbuffer)
 Refines the coordinates of the target. More...
 

LOCAL_FIELD_REFINER FACET

virtual int db () const
 The base dimension; the dimension of the local coordinates (independent variable). More...
 
virtual const std::string & zone_type_name () const
 The name of the type of zone this creates during refinement. More...
 
virtual size_type refined_zone_ct () const
 The number of refined zones created by this. More...
 
const chart_point_coord_typelocal_coordinates_map (size_type xi) const
 The map from the local coordinates of refined zone xi the the local coordinates of the parent zone. More...
 

ANY FACET

virtual zone_centered_segment_refinerclone () const
 Virtual constructor, creates a new instance of the same type as this. More...
 
virtual zone_centered_segment_refineroperator= (const local_field_refiner &xother)
 Assignment operator. More...
 
zone_centered_segment_refineroperator= (const zone_centered_segment_refiner &xother)
 Assignment operator. More...
 
virtual ~zone_centered_segment_refiner ()
 Destructor. More...
 
virtual bool invariant () const
 Class invariant. More...
 
virtual bool is_ancestor_of (const any *xother) const
 Conformance test; true if other conforms to this. More...
 

Additional Inherited Members

- Public Member Functions inherited from fields::local_field_refiner
virtual ~local_field_refiner ()
 Destructor. More...
 
virtual const std::string & vertex_type_name () const
 The name of the type of vertex this creates during refinement. More...
 
const field_refinement_policypolicy () const
 The refinement policy for this refiner. More...
 
void refine (field_refinement_buffer &xbuffer)
 Refines the zone specified by xbuffer.zone_id one level and evaluates the coordinates section on the refined zone. More...
 
const block< scoped_index > & refined_zone_ids () const
 The member ids of the zones created by the most recent execution of refine(). More...
 
- Public Member Functions inherited from sheaf::any
bool is_same_type (const any *other) const
 True if other is 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 fields::local_field_refiner
 local_field_refiner ()
 Default constructor; disabled. More...
 
 local_field_refiner (const local_field_refiner &xother)
 Copy constructor. More...
 
 local_field_refiner (const field_refinement_policy &xpolicy)
 Creates an instance for refining xtarget using xsource as the reference field. More...
 
void initialize_buffers ()
 Initializes the dof tuple and refined zone buffers. More...
 
pod_index_type create_vertex (base_space_poset &xbase, int xdepth)
 Creates a new vertex at depth xdepth. More...
 
pod_index_type create_zone (base_space_poset &xbase, int xdepth)
 Creates a new quadrangle in base space xbase, with refinement depth xdepth. More...
 
- Protected Member Functions inherited from sheaf::any
 any ()
 default constructor More...
 
- Protected Attributes inherited from fields::local_field_refiner
const field_refinement_policy_policy
 The refinement policy. More...
 
block< scoped_index_point_dof_tuple_ids
 The dof tuple index for point cells at various depths. More...
 
block< scoped_index_zone_dof_tuple_ids
 The dof tuple index for quadrangle cells at various depths. More...
 
block< scoped_index_refined_zone_ids
 The member ids of the zones created by the most recent execution of refine(). More...
 

Detailed Description

A field refiner that introduces a new vertex in the center of a segment.

Definition at line 38 of file zone_centered_segment_refiner.h.

Constructor & Destructor Documentation

◆ zone_centered_segment_refiner() [1/3]

fields::zone_centered_segment_refiner::zone_centered_segment_refiner ( const field_refinement_policy xpolicy)

Creates an instance for refining base space xbase_space using policy xpolicy.

Postcondition

Definition at line 42 of file zone_centered_segment_refiner.cc.

References invariant(), fields::local_field_refiner::policy(), and zone_centered_segment_refiner().

◆ zone_centered_segment_refiner() [2/3]

fields::zone_centered_segment_refiner::zone_centered_segment_refiner ( const zone_centered_segment_refiner xother)

Copy constructor.

Not Implemented.

Postcondition

Definition at line 59 of file zone_centered_segment_refiner.cc.

References invariant(), and zone_centered_segment_refiner().

◆ zone_centered_segment_refiner() [3/3]

fields::zone_centered_segment_refiner::zone_centered_segment_refiner ( )
protected

Default constructor; disabled.

Not Implemented.

Postcondition

Definition at line 78 of file zone_centered_segment_refiner.cc.

References invariant(), and refine_base_space().

Referenced by clone(), and zone_centered_segment_refiner().

◆ ~zone_centered_segment_refiner()

fields::zone_centered_segment_refiner::~zone_centered_segment_refiner ( )
virtual

Destructor.

Postcondition

Definition at line 491 of file zone_centered_segment_refiner.cc.

References invariant().

Referenced by operator=().

Member Function Documentation

◆ clone()

fields::zone_centered_segment_refiner * fields::zone_centered_segment_refiner::clone ( ) const
virtual

Virtual constructor, creates a new instance of the same type as this.

Postcondition
  • result != 0
  • is_same_type(result)

Implements fields::local_field_refiner.

Definition at line 428 of file zone_centered_segment_refiner.cc.

References invariant(), sheaf::any::is_same_type(), operator=(), and zone_centered_segment_refiner().

Referenced by local_coordinates_map().

◆ db()

int fields::zone_centered_segment_refiner::db ( ) const
virtual

The base dimension; the dimension of the local coordinates (independent variable).

Postcondition
  • result == 1

Implements fields::local_field_refiner.

Definition at line 315 of file zone_centered_segment_refiner.cc.

References zone_type_name().

Referenced by refine_coordinates().

◆ invariant()

◆ is_ancestor_of()

bool fields::zone_centered_segment_refiner::is_ancestor_of ( const any xother) const
virtual

Conformance test; true if other conforms to this.

Precondition
  • xother != 0

Reimplemented from fields::local_field_refiner.

Definition at line 537 of file zone_centered_segment_refiner.cc.

Referenced by invariant(), and operator=().

◆ local_coordinates_map()

const fiber_bundle::chart_point_coord_type * fields::zone_centered_segment_refiner::local_coordinates_map ( size_type  xi) const
virtual

The map from the local coordinates of refined zone xi the the local coordinates of the parent zone.

Precondition

Implements fields::local_field_refiner.

Definition at line 380 of file zone_centered_segment_refiner.cc.

References clone(), and refined_zone_ct().

Referenced by refined_zone_ct().

◆ modify_crg()

void fields::zone_centered_segment_refiner::modify_crg ( field_refinement_buffer xbuffer)
protected

Modifies the cover relation graph of the base space.

Precondition
  • xbuffer.base_space != 0
  • xbuffer.base_space->in_jim_edit_mode()
Issue:
assume the lower cover of the zone contains only its standard 2 vertices.

Definition at line 127 of file zone_centered_segment_refiner.cc.

References _new_point_id, _new_seg_0_id, _new_seg_1_id, fields::field_refinement_buffer::base_space, fields::local_field_refiner::create_vertex(), fields::local_field_refiner::create_zone(), sheaf::poset_state_handle::in_jim_edit_mode(), sheaf::LOWER, modify_subposets(), sheaf::scoped_index::pod(), sheaf::scoped_index::same_scope(), and fields::field_refinement_buffer::zone_id.

Referenced by refine_base_space().

◆ modify_subposets()

void fields::zone_centered_segment_refiner::modify_subposets ( field_refinement_buffer xbuffer)
protected

Modifies subposets in the base space.

Precondition
  • xbuffer.base_space != 0
Issue:
There's subtle question here: what defines the membership of the elements subposet? For instance, is it all the triangle shaped cells, or just the finest ones that are also jims? We're following the latter definition. The elements subposet is frequently used as an evaluation subposet and we don't want non-jims showing up as evaluators.
Issue:
is this producing some sort of efficiency problem by scattering dofs allocated on this sequence id?

Definition at line 192 of file zone_centered_segment_refiner.cc.

References _new_point_id, _new_seg_0_id, _new_seg_1_id, fields::field_refinement_buffer::base_space, fields::field_refinement_buffer::coord_disc_seq_id_space, fiber_bundle::base_space_poset::elements(), fields::field_refinement_buffer::elements_id_space, sheaf::scattered_insertion_index_space_handle::insert(), sheaf::subposet::insert_member(), sheaf::explicit_index_space_handle::pod(), sheaf::gathered_insertion_index_space_handle::push_back(), refine_coordinates(), sheaf::gathered_insertion_index_space_handle::remove(), sheaf::subposet::remove_member(), fiber_bundle::base_space_poset::vertices(), fields::field_refinement_buffer::vertices_id_space, and fields::field_refinement_buffer::zone_id.

Referenced by modify_crg(), and refine_base_space().

◆ operator=() [1/2]

fields::zone_centered_segment_refiner & fields::zone_centered_segment_refiner::operator= ( const local_field_refiner xother)
virtual

Assignment operator.

Precondition
  • is_ancestor_of(&xother)
Not Implemented.
Postcondition

Reimplemented from fields::local_field_refiner.

Definition at line 450 of file zone_centered_segment_refiner.cc.

References invariant(), and is_ancestor_of().

Referenced by clone().

◆ operator=() [2/2]

fields::zone_centered_segment_refiner & fields::zone_centered_segment_refiner::operator= ( const zone_centered_segment_refiner xother)

Assignment operator.

Precondition
  • is_ancestor_of(&xother)
Not Implemented.
Postcondition

Definition at line 470 of file zone_centered_segment_refiner.cc.

References invariant(), is_ancestor_of(), and ~zone_centered_segment_refiner().

◆ refine_base_space()

void fields::zone_centered_segment_refiner::refine_base_space ( field_refinement_buffer xbuffer)
protectedvirtual

◆ refine_coordinates()

◆ refined_zone_ct()

sheaf::size_type fields::zone_centered_segment_refiner::refined_zone_ct ( ) const
virtual

The number of refined zones created by this.

Postcondition
  • result > 1

Implements fields::local_field_refiner.

Definition at line 358 of file zone_centered_segment_refiner.cc.

References local_coordinates_map().

Referenced by local_coordinates_map(), and zone_type_name().

◆ zone_type_name()

const std::string & fields::zone_centered_segment_refiner::zone_type_name ( ) const
virtual

The name of the type of zone this creates during refinement.

Postcondition
  • !result.empty()

Implements fields::local_field_refiner.

Definition at line 338 of file zone_centered_segment_refiner.cc.

References refined_zone_ct().

Referenced by db().

Member Data Documentation

◆ _new_point_id

scoped_index fields::zone_centered_segment_refiner::_new_point_id
protected

The index of the point added by the current base space refinement.

Definition at line 69 of file zone_centered_segment_refiner.h.

Referenced by modify_crg(), modify_subposets(), and refine_coordinates().

◆ _new_seg_0_id

scoped_index fields::zone_centered_segment_refiner::_new_seg_0_id
protected

The index of the first segment added by the current base space refinement.

Definition at line 74 of file zone_centered_segment_refiner.h.

Referenced by modify_crg(), modify_subposets(), and refine_base_space().

◆ _new_seg_1_id

scoped_index fields::zone_centered_segment_refiner::_new_seg_1_id
protected

The index of the second segment added by the current base space refinement.

Definition at line 79 of file zone_centered_segment_refiner.h.

Referenced by modify_crg(), modify_subposets(), and refine_base_space().


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