SheafSystem  0.0.0.0
fields::barycentric_quad_refiner Class Reference

A field refiner that subdivides a quad into 4 quads by introducing a new vertex in the center of the quad and each of its edges. More...

#include <barycentric_quad_refiner.h>

Inheritance diagram for fields::barycentric_quad_refiner:
fields::edge_centered_polygon_refiner fields::local_field_refiner sheaf::any

BARYCENTRIC_QUAD_REFINER FACET

 barycentric_quad_refiner (const field_refinement_policy &xpolicy)
 Creates an instance for refining base space xbase_space using policy xpolicy. More...
 
 barycentric_quad_refiner (const barycentric_quad_refiner &xother)
 Copy constructor. More...
 
 barycentric_quad_refiner ()
 Default constructor; disabled. More...
 
virtual size_type unrefined_vertex_ct () const
 The number of vertices with refinement depth <= unrefined zone depth. More...
 
virtual size_type refined_zone_ct () const
 The number of refined zones created by this. More...
 
virtual bool is_zone_centered_refiner () const
 True if this adds a vertex at the center of the zone. More...
 
virtual const block< size_type > & first_vertex_index () const
 The index in _vertex_pos of the first vertex of each new zone; contains number of zones + 1 because first entry is duplicated at the end. More...
 

LOCAL_FIELD_REFINER FACET

virtual const std::string & zone_type_name () const
 The name of the type of zone this creates during refinement. More...
 
const chart_point_coord_typelocal_coordinates_map (size_type xi) const
 The map from the local coordinates of refined zone xi t0 the local coordinates of the parent zone. More...
 

ANY FACET

virtual barycentric_quad_refinerclone () const
 Virtual constructor, creates a new instance of the same type as this. More...
 
virtual barycentric_quad_refineroperator= (const local_field_refiner &xother)
 Assignment operator. More...
 
barycentric_quad_refineroperator= (const barycentric_quad_refiner &xother)
 Assignment operator. More...
 
virtual ~barycentric_quad_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::edge_centered_polygon_refiner
virtual int db () const
 The base dimension; the dimension of the local coordinates (independent variable). More...
 
edge_centered_polygon_refineroperator= (const edge_centered_polygon_refiner &xother)
 Assignment operator. More...
 
virtual ~edge_centered_polygon_refiner ()
 Destructor. More...
 
- 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 Types inherited from fields::edge_centered_polygon_refiner
typedef std::list< scoped_indexvertex_list_type
 The type of buffer used for processing vertices. More...
 
- Protected Member Functions inherited from fields::edge_centered_polygon_refiner
 edge_centered_polygon_refiner (const field_refinement_policy &xpolicy)
 Creates an instance for refining base space xbase_space using policy xpolicy. More...
 
 edge_centered_polygon_refiner (const edge_centered_polygon_refiner &xother)
 Copy constructor. More...
 
size_type refined_vertex_ct () const
 The number of boundary vertices with refinement depth <= refined zone depth; does not include center vertex, if one exists. More...
 
size_type edge_ct () const
 The number of edges in the zone. More...
 
 edge_centered_polygon_refiner ()
 Default constructor; disabled. More...
 
void reserve_vertex_buffers ()
 Reserves space in vertex buffers. More...
 
virtual void refine_base_space (field_refinement_buffer &xbuffer)
 Refines the base space or the target. More...
 
virtual 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...
 
pod_index_type create_edge_center (base_space_poset &xbase, const scoped_index &xzone_id, int xdepth, const scoped_index &xprev_mbr_id, const scoped_index &xmbr_id)
 Creates a new edge center vextex and puts it in _new_point_ids[xid]. More...
 
void make_new_vertices (field_refinement_buffer &xbuffer)
 Makes new vertices in edge centers as needed and builds the list of vertices in the boundary of the zone. More...
 
void make_new_zones (field_refinement_buffer &xbuffer)
 Make the new zones in the refinement. 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::edge_centered_polygon_refiner
block< scoped_index_vertex_ids
 The ids of the vertices in boundary <= new refinement depth. More...
 
block< bool > _is_new_vertex
 True if i-th member is a new vertex. More...
 
block< vertex_list_type::iterator > _vertex_pos
 The position in _vertex_list of ids of the vertices in the currnet refinement. More...
 
vertex_list_type _vertex_list
 List for processing vertices. More...
 
scoped_index _zone_ctr_id
 The id of the new vertex in the center of the zone. 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 subdivides a quad into 4 quads by introducing a new vertex in the center of the quad and each of its edges.

Definition at line 40 of file barycentric_quad_refiner.h.

Constructor & Destructor Documentation

◆ barycentric_quad_refiner() [1/3]

fields::barycentric_quad_refiner::barycentric_quad_refiner ( const field_refinement_policy xpolicy)

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

Postcondition

Definition at line 39 of file barycentric_quad_refiner.cc.

References barycentric_quad_refiner(), invariant(), fields::local_field_refiner::policy(), and fields::edge_centered_polygon_refiner::reserve_vertex_buffers().

◆ barycentric_quad_refiner() [2/3]

fields::barycentric_quad_refiner::barycentric_quad_refiner ( const barycentric_quad_refiner xother)

Copy constructor.

Not Implemented.

Postcondition

Definition at line 58 of file barycentric_quad_refiner.cc.

References barycentric_quad_refiner(), and invariant().

◆ barycentric_quad_refiner() [3/3]

fields::barycentric_quad_refiner::barycentric_quad_refiner ( )
protected

Default constructor; disabled.

Not Implemented.

Postcondition

Definition at line 78 of file barycentric_quad_refiner.cc.

References invariant(), and unrefined_vertex_ct().

Referenced by barycentric_quad_refiner(), and clone().

◆ ~barycentric_quad_refiner()

fields::barycentric_quad_refiner::~barycentric_quad_refiner ( )
virtual

Destructor.

Postcondition

Definition at line 335 of file barycentric_quad_refiner.cc.

References invariant().

Referenced by operator=().

Member Function Documentation

◆ clone()

fields::barycentric_quad_refiner * fields::barycentric_quad_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::edge_centered_polygon_refiner.

Definition at line 272 of file barycentric_quad_refiner.cc.

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

Referenced by local_coordinates_map().

◆ first_vertex_index()

const sheaf::block< sheaf::size_type > & fields::barycentric_quad_refiner::first_vertex_index ( ) const
protectedvirtual

The index in _vertex_pos of the first vertex of each new zone; contains number of zones + 1 because first entry is duplicated at the end.

Postcondition
  • result.ct() > 1

Implements fields::edge_centered_polygon_refiner.

Definition at line 158 of file barycentric_quad_refiner.cc.

References sheaf::auto_block< T, un_block_initialization_policy< T > >::ct(), and zone_type_name().

Referenced by is_zone_centered_refiner().

◆ invariant()

◆ is_ancestor_of()

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

Conformance test; true if other conforms to this.

Precondition
  • xother != 0

Reimplemented from fields::edge_centered_polygon_refiner.

Definition at line 380 of file barycentric_quad_refiner.cc.

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

◆ is_zone_centered_refiner()

bool fields::barycentric_quad_refiner::is_zone_centered_refiner ( ) const
protectedvirtual

True if this adds a vertex at the center of the zone.

Implements fields::edge_centered_polygon_refiner.

Definition at line 137 of file barycentric_quad_refiner.cc.

References first_vertex_index().

Referenced by refined_zone_ct().

◆ local_coordinates_map()

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

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

Precondition

Implements fields::local_field_refiner.

Definition at line 222 of file barycentric_quad_refiner.cc.

References clone(), and refined_zone_ct().

Referenced by zone_type_name().

◆ operator=() [1/2]

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

Assignment operator.

Precondition
  • is_ancestor_of(&xother)
Not Implemented.
Postcondition

Reimplemented from fields::edge_centered_polygon_refiner.

Definition at line 294 of file barycentric_quad_refiner.cc.

References invariant(), and is_ancestor_of().

Referenced by clone().

◆ operator=() [2/2]

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

Assignment operator.

Precondition
  • is_ancestor_of(&xother)
Not Implemented.
Postcondition

Definition at line 314 of file barycentric_quad_refiner.cc.

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

◆ refined_zone_ct()

sheaf::size_type fields::barycentric_quad_refiner::refined_zone_ct ( ) const
protectedvirtual

The number of refined zones created by this.

Postcondition
  • result > 1

Implements fields::local_field_refiner.

Definition at line 115 of file barycentric_quad_refiner.cc.

References is_zone_centered_refiner().

Referenced by local_coordinates_map(), and unrefined_vertex_ct().

◆ unrefined_vertex_ct()

sheaf::size_type fields::barycentric_quad_refiner::unrefined_vertex_ct ( ) const
protectedvirtual

The number of vertices with refinement depth <= unrefined zone depth.

Implements fields::edge_centered_polygon_refiner.

Definition at line 95 of file barycentric_quad_refiner.cc.

References refined_zone_ct().

Referenced by barycentric_quad_refiner().

◆ zone_type_name()

const std::string & fields::barycentric_quad_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 202 of file barycentric_quad_refiner.cc.

References local_coordinates_map().

Referenced by first_vertex_index().


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