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>
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 > ¯o_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... | |
TopologicallyRectangularDomain * | Domain_pt |
Pointer to the topologically rectangular domain which prescribes the problem domain. More... | |
MeshSpacingFnPtr | Node_spacing_fn |
non uniform mesh spacing function pointer More... | |
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.
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.
|
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.
|
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.
|
inline |
Destructor - does nothing - handled in mesh base class.
Definition at line 144 of file hermite_element_quad_mesh.template.h.
|
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().
|
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.
|
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.
|
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.
|
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.
|
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.
|
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.
|
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.
|
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().
|
private |
number of elements in each coordinate direction
Definition at line 233 of file hermite_element_quad_mesh.template.h.
Referenced by oomph::HermiteQuadMesh< ELEMENT >::HermiteQuadMesh(), oomph::HermiteQuadMesh< ELEMENT >::macro_coordinate_position(), and oomph::HermiteQuadMesh< ELEMENT >::nelement_in_dim().
|
private |
non uniform mesh spacing function pointer
Definition at line 244 of file hermite_element_quad_mesh.template.h.
Referenced by oomph::HermiteQuadMesh< ELEMENT >::HermiteQuadMesh(), and oomph::HermiteQuadMesh< ELEMENT >::macro_coordinate_position().
|
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().