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.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.
 
unsigned self_test ()
 Run self-test for algebraic mesh – return 0/1 for OK/failure.
 
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.].
 
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.
 
void update_node_update (AlgebraicNode *&node_pt)
 Update the node update info for specified algebraic node following any spatial mesh adaptation.
 
- 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.
 
virtual ~RefineableQuarterCircleSectorMesh ()
 Destructor: Empty.
 
- 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)
 
virtual ~QuarterCircleSectorMesh ()
 Destructor:
 
GeomObject *& wall_pt ()
 Access function to GeomObject representing wall.
 
QuarterCircleSectorDomaindomain_pt ()
 Access function to domain.
 
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)
 

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.
 
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.
 
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.
 
void setup_algebraic_node_update ()
 Setup algebraic update operation for all nodes.
 
void update_node_update_in_lower_right_box (AlgebraicNode *&node_pt)
 Update algebraic node update function for nodes in lower right box.
 
void update_node_update_in_upper_left_box (AlgebraicNode *&node_pt)
 Update algebraic node update function for nodes in upper left box.
 

Private Attributes

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

Additional Inherited Members

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

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
Unstructured refineable Triangle Mesh.

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 433 of file quarter_circle_sector_mesh.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 617 of file quarter_circle_sector_mesh.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 445 of file quarter_circle_sector_mesh.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 495 of file quarter_circle_sector_mesh.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 834 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 921 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 1029 of file quarter_circle_sector_mesh.template.cc.

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

◆ self_test()

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

Definition at line 485 of file quarter_circle_sector_mesh.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 544 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 1138 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 1234 of file quarter_circle_sector_mesh.template.cc.

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

Member Data Documentation

◆ Lambda_x

Fractional width of central box.

Definition at line 625 of file quarter_circle_sector_mesh.h.

◆ Lambda_y

Fractional height of central box.

Definition at line 628 of file quarter_circle_sector_mesh.h.


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