Public Member Functions | Private Types | Private Member Functions | Private Attributes | List of all members
oomph::AlgebraicRefineableQuarterCircleSectorMesh< ELEMENT > Class Template Reference

Algebraic version of RefineableQuarterCircleSectorMesh. More...

#include <quarter_circle_sector_mesh.template.h>

Inheritance diagram for oomph::AlgebraicRefineableQuarterCircleSectorMesh< ELEMENT >:
oomph::RefineableQuarterCircleSectorMesh< ELEMENT > oomph::QuarterCircleSectorMesh< ELEMENT >

Public Member Functions

 AlgebraicRefineableQuarterCircleSectorMesh (GeomObject *wall_pt, const double &xi_lo, const double &fract_mid, const double &xi_hi, TimeStepper *time_stepper_pt=&Mesh::Default_TimeStepper)
 Constructor: Pass pointer to geometric object, start and end coordinates on the geometric object and the fraction along which the dividing line is to be placed when updating the nodal positions, and timestepper (defaults to (Steady) default timestepper defined in Mesh). Setup the refineable mesh (by calling the constructor for the underlying RefineableQuarterCircleSectorMesh) and the algebraic update functions for nodes. More...
 
unsigned self_test ()
 Run self-test for algebraic mesh – return 0/1 for OK/failure. More...
 
void node_update (const bool &update_all_solid_nodes=false)
 Resolve mesh update: Update current nodal positions via algebraic node update. [Doesn't make sense to use this mesh with SolidElements anyway, so we buffer the case if update_all_solid_nodes is set to true.]. More...
 
void algebraic_node_update (const unsigned &t, AlgebraicNode *&node_pt)
 Implement the algebraic node update function for a node at time level t (t=0: present; t>0: previous): Update with the node's first (default) update function. More...
 
void update_node_update (AlgebraicNode *&node_pt)
 Update the node update info for specified algebraic node following any spatial mesh adaptation. More...
 
- Public Member Functions inherited from oomph::RefineableQuarterCircleSectorMesh< ELEMENT >
 RefineableQuarterCircleSectorMesh (GeomObject *wall_pt, const double &xi_lo, const double &fract_mid, const double &xi_hi, TimeStepper *time_stepper_pt=&Mesh::Default_TimeStepper)
 Constructor: Pass pointer to geometric object that specifies the wall, start and end coordinates on the geometric object, and the fraction along which the dividing line is to be placed, and the timestepper (defaults to (Steady) default timestepper defined in Mesh). Adds refinement data to elements of QuarterCircleSectorMesh. More...
 
virtual ~RefineableQuarterCircleSectorMesh ()
 Destructor: Empty. More...
 
- Public Member Functions inherited from oomph::QuarterCircleSectorMesh< ELEMENT >
 QuarterCircleSectorMesh (GeomObject *wall_pt, const double &xi_lo, const double &fract_mid, const double &xi_hi, TimeStepper *time_stepper_pt=&Mesh::Default_TimeStepper)
 Constructor: Pass pointer to geometric object that specifies the wall, start and end coordinates on the geometric object, and the fraction along which the dividing line is to be placed, and the timestepper (defaults to (Steady) default timestepper defined in Mesh) More...
 
virtual ~QuarterCircleSectorMesh ()
 Destructor: More...
 
GeomObject *& wall_pt ()
 Access function to GeomObject representing wall. More...
 
QuarterCircleSectorDomaindomain_pt ()
 Access function to domain. More...
 
QuarterCircleSectorDomain::BLSquashFctPtbl_squash_fct_pt ()
 Function pointer for function that squashes the outer two macro elements towards the wall by mapping the input value of the "radial" macro element coordinate to the return value (defined in the underlying Domain object) More...
 

Private Types

enum  { Central_box , Lower_right_box , Upper_left_box }
 Remesh function ids. More...
 

Private Member Functions

void node_update_in_central_box (const unsigned &t, AlgebraicNode *&node_pt)
 Algebraic update function for a node that is located in the central box. More...
 
void node_update_in_lower_right_box (const unsigned &t, AlgebraicNode *&node_pt)
 Algebraic update function for a node that is located in the lower right box. More...
 
void node_update_in_upper_left_box (const unsigned &t, AlgebraicNode *&node_pt)
 Algebraic update function for a node that is located in the upper left box. More...
 
void setup_algebraic_node_update ()
 Setup algebraic update operation for all nodes. More...
 
void update_node_update_in_lower_right_box (AlgebraicNode *&node_pt)
 Update algebraic node update function for nodes in lower right box. More...
 
void update_node_update_in_upper_left_box (AlgebraicNode *&node_pt)
 Update algebraic node update function for nodes in upper left box. More...
 

Private Attributes

double Lambda_x
 Fractional width of central box. More...
 
double Lambda_y
 Fractional height of central box. More...
 

Additional Inherited Members

- Protected Attributes inherited from oomph::QuarterCircleSectorMesh< ELEMENT >
QuarterCircleSectorDomainDomain_pt
 Pointer to Domain. More...
 
GeomObject * Wall_pt
 Pointer to the geometric object that represents the curved wall (mesh boundary 1) More...
 
double Xi_lo
 Lower limit for the (1D) coordinates along the wall. More...
 
double Fract_mid
 Fraction along wall where outer ring is to be divided. More...
 
double Xi_hi
 Upper limit for the (1D) coordinates along the wall. More...
 

Detailed Description

template<class ELEMENT>
class oomph::AlgebraicRefineableQuarterCircleSectorMesh< ELEMENT >

Algebraic version of RefineableQuarterCircleSectorMesh.

---___
| ---____
| - BOUNDARY 1
| /
| [2] / |
| / |
| N / |
| |_ E / |
BOUNDARY 2 |----------- |
| | [1] |
| [0] | | ^
| | | / \ direction of
| N | N | | Lagrangian
| |_ E | |_ E | | coordinate
|__________|___________| | along wall GeomObject
BOUNDARY 0
Within the elements (MacroElements), the local coordinates
are such that the (E)astern direction coincides with the positive
s_0 direction, while the (N)orther direction coincides with the positive
s_1 direction.

Domain is parametrised by three macro elements as sketched. Elements need to be derived from AlgebraicElementBase. In addition to all the refinement procedures available for RefineableQuarterCircleSectorMesh which forms the basis for this mesh, we implement algebraic node update functions for the nodes.

Definition at line 439 of file quarter_circle_sector_mesh.template.h.

Member Enumeration Documentation

◆ anonymous enum

template<class ELEMENT >
anonymous enum
private

Remesh function ids.

Enumerator
Central_box 
Lower_right_box 
Upper_left_box 

Definition at line 625 of file quarter_circle_sector_mesh.template.h.

Constructor & Destructor Documentation

◆ AlgebraicRefineableQuarterCircleSectorMesh()

template<class ELEMENT >
oomph::AlgebraicRefineableQuarterCircleSectorMesh< ELEMENT >::AlgebraicRefineableQuarterCircleSectorMesh ( GeomObject *  wall_pt,
const double &  xi_lo,
const double &  fract_mid,
const double &  xi_hi,
TimeStepper *  time_stepper_pt = &Mesh::Default_TimeStepper 
)
inline

Constructor: Pass pointer to geometric object, start and end coordinates on the geometric object and the fraction along which the dividing line is to be placed when updating the nodal positions, and timestepper (defaults to (Steady) default timestepper defined in Mesh). Setup the refineable mesh (by calling the constructor for the underlying RefineableQuarterCircleSectorMesh) and the algebraic update functions for nodes.

Definition at line 451 of file quarter_circle_sector_mesh.template.h.

References oomph::AlgebraicRefineableQuarterCircleSectorMesh< ELEMENT >::setup_algebraic_node_update(), and oomph::QuarterCircleSectorMesh< ELEMENT >::wall_pt().

Member Function Documentation

◆ algebraic_node_update()

template<class ELEMENT >
void oomph::AlgebraicRefineableQuarterCircleSectorMesh< ELEMENT >::algebraic_node_update ( const unsigned &  t,
AlgebraicNode *&  node_pt 
)
inline

◆ node_update()

template<class ELEMENT >
void oomph::AlgebraicRefineableQuarterCircleSectorMesh< ELEMENT >::node_update ( const bool &  update_all_solid_nodes = false)
inline

Resolve mesh update: Update current nodal positions via algebraic node update. [Doesn't make sense to use this mesh with SolidElements anyway, so we buffer the case if update_all_solid_nodes is set to true.].

Definition at line 501 of file quarter_circle_sector_mesh.template.h.

◆ node_update_in_central_box()

template<class ELEMENT >
void oomph::AlgebraicRefineableQuarterCircleSectorMesh< ELEMENT >::node_update_in_central_box ( const unsigned &  t,
AlgebraicNode *&  node_pt 
)
private

Algebraic update function for a node that is located in the central box.

Algebraic update function: Update in central box according to wall shape at time level t (t=0: present; t>0: previous)

Definition at line 851 of file quarter_circle_sector_mesh.template.cc.

Referenced by oomph::AlgebraicRefineableQuarterCircleSectorMesh< ELEMENT >::algebraic_node_update().

◆ node_update_in_lower_right_box()

template<class ELEMENT >
void oomph::AlgebraicRefineableQuarterCircleSectorMesh< ELEMENT >::node_update_in_lower_right_box ( const unsigned &  t,
AlgebraicNode *&  node_pt 
)
private

Algebraic update function for a node that is located in the lower right box.

Algebraic update function: Update in lower right box according to wall shape at time level t (t=0: present; t>0: previous)

Definition at line 940 of file quarter_circle_sector_mesh.template.cc.

Referenced by oomph::AlgebraicRefineableQuarterCircleSectorMesh< ELEMENT >::algebraic_node_update().

◆ node_update_in_upper_left_box()

template<class ELEMENT >
void oomph::AlgebraicRefineableQuarterCircleSectorMesh< ELEMENT >::node_update_in_upper_left_box ( const unsigned &  t,
AlgebraicNode *&  node_pt 
)
private

Algebraic update function for a node that is located in the upper left box.

Algebraic update function: Update in upper left box according to wall shape at time level t (t=0: present; t>0: previous)

Definition at line 1048 of file quarter_circle_sector_mesh.template.cc.

Referenced by oomph::AlgebraicRefineableQuarterCircleSectorMesh< ELEMENT >::algebraic_node_update().

◆ self_test()

template<class ELEMENT >
unsigned oomph::AlgebraicRefineableQuarterCircleSectorMesh< ELEMENT >::self_test ( )
inline

Run self-test for algebraic mesh – return 0/1 for OK/failure.

Definition at line 491 of file quarter_circle_sector_mesh.template.h.

◆ setup_algebraic_node_update()

template<class ELEMENT >
void oomph::AlgebraicRefineableQuarterCircleSectorMesh< ELEMENT >::setup_algebraic_node_update
private

Setup algebraic update operation for all nodes.

////////////////////////////////////////////////////////////////////

//////////////////////////////////////////////////////////////////// Setup algebraic update operation, based on individual blocks. Mesh is suspended from the ‘wall’ GeomObject pointed to by wall_pt. The lower right corner of the mesh is located at the wall's coordinate xi_lo, the upper left corner at xi_hi; The dividing line between the two blocks at the outer ring is located at the fraction fract_mid between these two coordinates. Node updating strategy:

  • the shape of the central box remains rectangular; the position of its top right corner is located at a fixed fraction of the width and height of the domain. Nodes in this region are located at fixed horizontal and vertical fractions of the box.
  • Nodes in the two outer "ring" elements (bottom right and top left) are located on straight lines running from the edges of the central box to the outer wall.

Pointer to algebraic element in central box

Definition at line 557 of file quarter_circle_sector_mesh.template.cc.

Referenced by oomph::AlgebraicRefineableQuarterCircleSectorMesh< ELEMENT >::AlgebraicRefineableQuarterCircleSectorMesh().

◆ update_node_update()

template<class ELEMENT >
void oomph::AlgebraicRefineableQuarterCircleSectorMesh< ELEMENT >::update_node_update ( AlgebraicNode *&  node_pt)
inline

◆ update_node_update_in_lower_right_box()

template<class ELEMENT >
void oomph::AlgebraicRefineableQuarterCircleSectorMesh< ELEMENT >::update_node_update_in_lower_right_box ( AlgebraicNode *&  node_pt)
private

Update algebraic node update function for nodes in lower right box.

Update algebraic update function for nodes in lower right box.

Definition at line 1159 of file quarter_circle_sector_mesh.template.cc.

Referenced by oomph::AlgebraicRefineableQuarterCircleSectorMesh< ELEMENT >::update_node_update().

◆ update_node_update_in_upper_left_box()

template<class ELEMENT >
void oomph::AlgebraicRefineableQuarterCircleSectorMesh< ELEMENT >::update_node_update_in_upper_left_box ( AlgebraicNode *&  node_pt)
private

Update algebraic node update function for nodes in upper left box.

Update algebraic update function for nodes in upper left box.

Definition at line 1259 of file quarter_circle_sector_mesh.template.cc.

Referenced by oomph::AlgebraicRefineableQuarterCircleSectorMesh< ELEMENT >::update_node_update().

Member Data Documentation

◆ Lambda_x

template<class ELEMENT >
double oomph::AlgebraicRefineableQuarterCircleSectorMesh< ELEMENT >::Lambda_x
private

Fractional width of central box.

Definition at line 634 of file quarter_circle_sector_mesh.template.h.

◆ Lambda_y

template<class ELEMENT >
double oomph::AlgebraicRefineableQuarterCircleSectorMesh< ELEMENT >::Lambda_y
private

Fractional height of central box.

Definition at line 637 of file quarter_circle_sector_mesh.template.h.


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