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

A two dimensional Hermite bicubic element quadrilateral mesh for a topologically rectangular domain. The geometry of the problem must be prescribed using the TopologicallyRectangularDomain. Non uniform node spacing can be prescribed using a function pointer. More...

#include <hermite_element_quad_mesh.template.h>

Inheritance diagram for oomph::HermiteQuadMesh< ELEMENT >:

Public Types

typedef void(* MeshSpacingFnPtr) (const Vector< double > &m_uniform_spacing, Vector< double > &m_non_uniform_spacing)
 Mesh Spacing Function Pointer - an optional function pointer to prescibe the node spacing in a non-uniformly spaced mesh - takes the position of a node (in macro element coordinates) in the uniformly spaced mesh and return the position in the non-uniformly spaced mesh. More...
 

Public Member Functions

 HermiteQuadMesh (const unsigned &nx, const unsigned &ny, TopologicallyRectangularDomain *domain, const bool &periodic_in_x=false, TimeStepper *time_stepper_pt=&Mesh::Default_TimeStepper)
 Mesh Constructor (for a uniformly spaced mesh). Takes the following arguments : nx : number of elements in x direction; ny : number of elements in y direction; domain : topologically rectangular domain; periodic_in_x : flag specifying if the mesh is periodic in the x direction (default = false); time_stepper_pt : pointer to the time stepper (default = no timestepper);. More...
 
 HermiteQuadMesh (const unsigned &nx, const unsigned &ny, TopologicallyRectangularDomain *domain, const MeshSpacingFnPtr spacing_fn, const bool &periodic_in_x=false, TimeStepper *time_stepper_pt=&Mesh::Default_TimeStepper)
 Mesh Constructor (for a non-uniformly spaced mesh). Takes the following arguments : nx : number of elements in x direction; ny : number of elements in y direction; domain : topologically rectangular domain; spacing_fn : spacing function prescribing a non-uniformly spaced mesh periodic_in_x : flag specifying if the mesh is periodic in the x direction (default = false); time_stepper_pt : pointer to the time stepper (default = notimestepper);. More...
 
 ~HermiteQuadMesh ()
 Destructor - does nothing - handled in mesh base class. More...
 
unsigned & nelement_in_dim (const unsigned &d)
 Access function for number of elements in mesh in each dimension. More...
 

Private Member Functions

void macro_coordinate_position (const unsigned &node_num_x, const unsigned &node_num_y, Vector< double > &macro_element_position)
 returns the macro element position of the node that is the x-th node along from the LHS and the y-th node up from the lower edge More...
 
void set_position_of_node (const unsigned &node_num_x, const unsigned &node_num_y, Node *node_pt)
 sets the generalised position of the node (i.e. - x_i, dx_i/ds_0, dx_i/ds_1 & d2x_i/ds_0ds_1 for i = 1,2). Takes the x,y coordinates of the node from which its position can be determined. More...
 
void set_position_of_boundary_node (const unsigned &node_num_x, const unsigned &node_num_y, BoundaryNode< Node > *node_pt)
 sets the generalised position of the node (i.e. - x_i, dx_i/ds_0, dx_i/ds_1 & d2x_i/ds_0ds_1 for i = 1,2). Takes the x,y coordinates of the node from which its position can be determined. Also sets coordinates on boundary vector for the node to be the generalised position of the node in macro element coordinates More...
 
void generalised_macro_element_position_of_node (const unsigned &node_num_x, const unsigned &node_num_y, DenseMatrix< double > &m_gen)
 computes the generalised position of the node at position (node_num_x, node_num_y) in the macro element coordinate scheme. index 0 of m_gen : 0 - m_i 1 - dm_i/ds_0 2 - dm_i/ds_1 3 - d2m_i/ds_0ds_1 (where i is index 1 of m_gen) More...
 
virtual void build_mesh (TimeStepper *time_stepper_pt)
 Generic mesh construction function to build the mesh. More...
 
virtual void setup_boundary_element_info ()
 Setup lookup schemes which establish whic elements are located next to mesh's boundaries (wrapper to suppress doc). Specific version for HermiteQuadMesh to ensure that the order of the elements in Boundary_element_pt matches the actual order along the boundary. This is required when hijacking the BiharmonicElement to apply the BiharmonicFluidBoundaryElement in BiharmonicFluidProblem::impose_traction_free_edge(...) More...
 
virtual void setup_boundary_element_info (std::ostream &outfile)
 Setup lookup schemes which establish which elements are located next to which boundaries (Doc to outfile if it's open). Specific version for HermiteQuadMesh to ensure that the order of the elements in Boundary_element_pt matches the actual order along the boundary. This is required when hijacking the BiharmonicElement to apply the BiharmonicFluidBoundaryElement in BiharmonicFluidProblem::impose_traction_free_edge(...) More...
 

Private Attributes

Vector< unsigned > Nelement
 number of elements in each coordinate direction More...
 
bool Xperiodic
 boolean variable to determine whether the mesh is periodic in the x-direction More...
 
TopologicallyRectangularDomainDomain_pt
 Pointer to the topologically rectangular domain which prescribes the problem domain. More...
 
MeshSpacingFnPtr Node_spacing_fn
 non uniform mesh spacing function pointer More...
 

Detailed Description

template<class ELEMENT>
class oomph::HermiteQuadMesh< ELEMENT >

A two dimensional Hermite bicubic element quadrilateral mesh for a topologically rectangular domain. The geometry of the problem must be prescribed using the TopologicallyRectangularDomain. Non uniform node spacing can be prescribed using a function pointer.

Definition at line 52 of file hermite_element_quad_mesh.template.h.

Member Typedef Documentation

◆ MeshSpacingFnPtr

template<class ELEMENT >
typedef void(* oomph::HermiteQuadMesh< ELEMENT >::MeshSpacingFnPtr) (const Vector< double > &m_uniform_spacing, Vector< double > &m_non_uniform_spacing)

Mesh Spacing Function Pointer - an optional function pointer to prescibe the node spacing in a non-uniformly spaced mesh - takes the position of a node (in macro element coordinates) in the uniformly spaced mesh and return the position in the non-uniformly spaced mesh.

Definition at line 59 of file hermite_element_quad_mesh.template.h.

Constructor & Destructor Documentation

◆ HermiteQuadMesh() [1/2]

template<class ELEMENT >
oomph::HermiteQuadMesh< ELEMENT >::HermiteQuadMesh ( const unsigned &  nx,
const unsigned &  ny,
TopologicallyRectangularDomain domain,
const bool &  periodic_in_x = false,
TimeStepper *  time_stepper_pt = &Mesh::Default_TimeStepper 
)
inline

Mesh Constructor (for a uniformly spaced mesh). Takes the following arguments : nx : number of elements in x direction; ny : number of elements in y direction; domain : topologically rectangular domain; periodic_in_x : flag specifying if the mesh is periodic in the x direction (default = false); time_stepper_pt : pointer to the time stepper (default = no timestepper);.

Definition at line 73 of file hermite_element_quad_mesh.template.h.

References oomph::HermiteQuadMesh< ELEMENT >::build_mesh(), oomph::HermiteQuadMesh< ELEMENT >::Domain_pt, oomph::HermiteQuadMesh< ELEMENT >::Nelement, oomph::HermiteQuadMesh< ELEMENT >::Node_spacing_fn, and oomph::HermiteQuadMesh< ELEMENT >::Xperiodic.

◆ HermiteQuadMesh() [2/2]

template<class ELEMENT >
oomph::HermiteQuadMesh< ELEMENT >::HermiteQuadMesh ( const unsigned &  nx,
const unsigned &  ny,
TopologicallyRectangularDomain domain,
const MeshSpacingFnPtr  spacing_fn,
const bool &  periodic_in_x = false,
TimeStepper *  time_stepper_pt = &Mesh::Default_TimeStepper 
)
inline

Mesh Constructor (for a non-uniformly spaced mesh). Takes the following arguments : nx : number of elements in x direction; ny : number of elements in y direction; domain : topologically rectangular domain; spacing_fn : spacing function prescribing a non-uniformly spaced mesh periodic_in_x : flag specifying if the mesh is periodic in the x direction (default = false); time_stepper_pt : pointer to the time stepper (default = notimestepper);.

build the mesh

Definition at line 114 of file hermite_element_quad_mesh.template.h.

References oomph::HermiteQuadMesh< ELEMENT >::build_mesh(), oomph::HermiteQuadMesh< ELEMENT >::Domain_pt, oomph::HermiteQuadMesh< ELEMENT >::Nelement, oomph::HermiteQuadMesh< ELEMENT >::Node_spacing_fn, and oomph::HermiteQuadMesh< ELEMENT >::Xperiodic.

◆ ~HermiteQuadMesh()

template<class ELEMENT >
oomph::HermiteQuadMesh< ELEMENT >::~HermiteQuadMesh ( )
inline

Destructor - does nothing - handled in mesh base class.

Definition at line 144 of file hermite_element_quad_mesh.template.h.

Member Function Documentation

◆ build_mesh()

template<class ELEMENT >
void oomph::HermiteQuadMesh< ELEMENT >::build_mesh ( TimeStepper *  time_stepper_pt)
privatevirtual

Generic mesh construction function to build the mesh.

Definition at line 603 of file hermite_element_quad_mesh.template.cc.

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

◆ generalised_macro_element_position_of_node()

template<class ELEMENT >
void oomph::HermiteQuadMesh< ELEMENT >::generalised_macro_element_position_of_node ( const unsigned &  node_num_x,
const unsigned &  node_num_y,
DenseMatrix< double > &  m_gen 
)
private

computes the generalised position of the node at position (node_num_x, node_num_y) in the macro element coordinate scheme. index 0 of m_gen : 0 - m_i 1 - dm_i/ds_0 2 - dm_i/ds_1 3 - d2m_i/ds_0ds_1 (where i is index 1 of m_gen)

Definition at line 200 of file hermite_element_quad_mesh.template.cc.

◆ macro_coordinate_position()

template<class ELEMENT >
void oomph::HermiteQuadMesh< ELEMENT >::macro_coordinate_position ( const unsigned &  node_num_x,
const unsigned &  node_num_y,
Vector< double > &  macro_element_position 
)
inlineprivate

returns the macro element position of the node that is the x-th node along from the LHS and the y-th node up from the lower edge

Definition at line 157 of file hermite_element_quad_mesh.template.h.

References oomph::HermiteQuadMesh< ELEMENT >::Nelement, and oomph::HermiteQuadMesh< ELEMENT >::Node_spacing_fn.

◆ nelement_in_dim()

template<class ELEMENT >
unsigned& oomph::HermiteQuadMesh< ELEMENT >::nelement_in_dim ( const unsigned &  d)
inline

Access function for number of elements in mesh in each dimension.

Definition at line 148 of file hermite_element_quad_mesh.template.h.

References oomph::HermiteQuadMesh< ELEMENT >::Nelement.

◆ set_position_of_boundary_node()

template<class ELEMENT >
void oomph::HermiteQuadMesh< ELEMENT >::set_position_of_boundary_node ( const unsigned &  node_num_x,
const unsigned &  node_num_y,
BoundaryNode< Node > *  node_pt 
)
private

sets the generalised position of the node (i.e. - x_i, dx_i/ds_0, dx_i/ds_1 & d2x_i/ds_0ds_1 for i = 1,2). Takes the x,y coordinates of the node from which its position can be determined. Also sets coordinates on boundary vector for the node to be the generalised position of the node in macro element coordinates

Definition at line 116 of file hermite_element_quad_mesh.template.cc.

◆ set_position_of_node()

template<class ELEMENT >
void oomph::HermiteQuadMesh< ELEMENT >::set_position_of_node ( const unsigned &  node_num_x,
const unsigned &  node_num_y,
Node *  node_pt 
)
private

sets the generalised position of the node (i.e. - x_i, dx_i/ds_0, dx_i/ds_1 & d2x_i/ds_0ds_1 for i = 1,2). Takes the x,y coordinates of the node from which its position can be determined.

Definition at line 48 of file hermite_element_quad_mesh.template.cc.

◆ setup_boundary_element_info() [1/2]

template<class ELEMENT >
virtual void oomph::HermiteQuadMesh< ELEMENT >::setup_boundary_element_info ( )
inlineprivatevirtual

Setup lookup schemes which establish whic elements are located next to mesh's boundaries (wrapper to suppress doc). Specific version for HermiteQuadMesh to ensure that the order of the elements in Boundary_element_pt matches the actual order along the boundary. This is required when hijacking the BiharmonicElement to apply the BiharmonicFluidBoundaryElement in BiharmonicFluidProblem::impose_traction_free_edge(...)

Definition at line 215 of file hermite_element_quad_mesh.template.h.

◆ setup_boundary_element_info() [2/2]

template<class ELEMENT >
void oomph::HermiteQuadMesh< ELEMENT >::setup_boundary_element_info ( std::ostream &  outfile)
privatevirtual

Setup lookup schemes which establish which elements are located next to which boundaries (Doc to outfile if it's open). Specific version for HermiteQuadMesh to ensure that the order of the elements in Boundary_element_pt matches the actual order along the boundary. This is required when hijacking the BiharmonicElement to apply the BiharmonicFluidBoundaryElement in BiharmonicFluidProblem::impose_traction_free_edge(...)

Definition at line 1271 of file hermite_element_quad_mesh.template.cc.

Member Data Documentation

◆ Domain_pt

template<class ELEMENT >
TopologicallyRectangularDomain* oomph::HermiteQuadMesh< ELEMENT >::Domain_pt
private

Pointer to the topologically rectangular domain which prescribes the problem domain.

Definition at line 241 of file hermite_element_quad_mesh.template.h.

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

◆ Nelement

template<class ELEMENT >
Vector<unsigned> oomph::HermiteQuadMesh< ELEMENT >::Nelement
private

◆ Node_spacing_fn

template<class ELEMENT >
MeshSpacingFnPtr oomph::HermiteQuadMesh< ELEMENT >::Node_spacing_fn
private

◆ Xperiodic

template<class ELEMENT >
bool oomph::HermiteQuadMesh< ELEMENT >::Xperiodic
private

boolean variable to determine whether the mesh is periodic in the x-direction

Definition at line 237 of file hermite_element_quad_mesh.template.h.

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


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