29 #ifndef OOMPH_HERMITE_ELEMENT_QUAD_MESH_HEADER
30 #define OOMPH_HERMITE_ELEMENT_QUAD_MESH_HEADER
35 #include <oomph-lib-config.h>
39 #include "../generic/hermite_elements.h"
40 #include "../generic/mesh.h"
51 template<
class ELEMENT>
60 Vector<double>& m_non_uniform_spacing);
76 const bool& periodic_in_x =
false,
77 TimeStepper* time_stepper_pt = &Mesh::Default_TimeStepper)
80 MeshChecker::assert_geometric_element<QHermiteElementBase, ELEMENT>(2);
118 const bool& periodic_in_x =
false,
119 TimeStepper* time_stepper_pt = &Mesh::Default_TimeStepper)
122 MeshChecker::assert_geometric_element<QHermiteElementBase, ELEMENT>(2);
158 const unsigned& node_num_y,
159 Vector<double>& macro_element_position)
162 macro_element_position[0] = 2 * node_num_x / double(
Nelement[0]) - 1;
163 macro_element_position[1] = 2 * node_num_y / double(
Nelement[1]) - 1;
168 Vector<double> temp(macro_element_position);
169 (*Node_spacing_fn)(temp, macro_element_position);
178 const unsigned& node_num_y,
188 const unsigned& node_num_y,
189 BoundaryNode<Node>* node_pt);
200 const unsigned& node_num_y,
201 DenseMatrix<double>& m_gen);
205 virtual void build_mesh(TimeStepper* time_stepper_pt);
217 std::ofstream outfile;
A two dimensional Hermite bicubic element quadrilateral mesh for a topologically rectangular domain....
unsigned & nelement_in_dim(const unsigned &d)
Access function for number of elements in mesh in each dimension.
Vector< unsigned > Nelement
number of elements in each coordinate direction
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 eleme...
MeshSpacingFnPtr Node_spacing_fn
non uniform mesh spacing function pointer
virtual void setup_boundary_element_info()
Setup lookup schemes which establish whic elements are located next to mesh's boundaries (wrapper to ...
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 = ...
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 ...
~HermiteQuadMesh()
Destructor - does nothing - handled in mesh base class.
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 = ...
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-un...
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 el...
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 elemen...
bool Xperiodic
boolean variable to determine whether the mesh is periodic in the x-direction
TopologicallyRectangularDomain * Domain_pt
Pointer to the topologically rectangular domain which prescribes the problem domain.
virtual void build_mesh(TimeStepper *time_stepper_pt)
Generic mesh construction function to build the mesh.
Topologically Rectangular Domain - a domain dexcribing a topologically rectangular problem - primaril...
////////////////////////////////////////////////////////////////////// //////////////////////////////...