26 #ifndef OOMPH_TWO_LAYER_SPINE_MESH_HEADER
27 #define OOMPH_TWO_LAYER_SPINE_MESH_HEADER
31 #include "../generic/spines.h"
58 template<
class ELEMENT>
74 TimeStepper* time_stepper_pt = &Mesh::Default_TimeStepper);
89 const bool& periodic_in_x,
90 TimeStepper* time_stepper_pt = &Mesh::Default_TimeStepper);
106 const bool& periodic_in_x,
108 TimeStepper* time_stepper_pt = &Mesh::Default_TimeStepper);
177 unsigned id = spine_node_pt->node_update_fct_id();
189 std::ostringstream error_message;
190 error_message <<
"Unknown id passed to spine_node_update " <<
id
192 throw OomphLibError(error_message.str(),
193 OOMPH_CURRENT_FUNCTION,
194 OOMPH_EXCEPTION_LOCATION);
245 double W = spine_node_pt->fraction();
247 double H = spine_node_pt->h();
249 spine_node_pt->x(1) = this->
Ymin + W * H;
257 double W = spine_node_pt->fraction();
260 double H = spine_node_pt->h();
263 spine_node_pt->x(1) =
RectangularQuadMesh is a two-dimensional mesh of Quad elements with Nx elements in the "x" (horizonal...
double Ymax
Maximum value of y coordinate.
const unsigned & nx() const
Return number of elements in x direction.
double Ymin
Minimum value of y coordinate.
void build_mesh(TimeStepper *time_stepper_pt=&Mesh::Default_TimeStepper)
Generic mesh construction function: contains all the hard work.
Two-layer spine mesh class derived from standard 2D mesh. The mesh contains two layers of spinified f...
Vector< FiniteElement * > Upper_layer_element_pt
Vector of pointers to element in the lower layer.
double H2
Height of the upper layer.
FiniteElement *& upper_layer_element_pt(const unsigned long &i)
Access functions for pointers to elements in upper layer.
TwoLayerSpineMesh(const unsigned &nx, const unsigned &ny1, const unsigned &ny2, const double &lx, const double &h1, const double &h2, TimeStepper *time_stepper_pt=&Mesh::Default_TimeStepper)
Constructor: Pass number of elements in x-direction, number of elements in y-direction in bottom and ...
Vector< FiniteElement * > Lower_layer_element_pt
Vector of pointers to element in the upper layer.
Vector< FiniteElement * > Interface_upper_boundary_element_pt
Vector of pointers to the element adjacent to the interface on the upper layer.
double y_spacing_function(unsigned xelement, unsigned xnode, unsigned yelement, unsigned ynode)
The spacing function for the y co-ordinates with three regions in each fluid.
int interface_upper_face_index_at_boundary(const unsigned &e)
Index of the face of the elements next to the interface in the upper region (always -2)
int interface_lower_face_index_at_boundary(const unsigned &e)
Index of the face of the elements next to the interface in the lower region (always 2)
unsigned Ny2
Number of elements in upper layer.
unsigned long ninterface_lower() const
Number of elements in top layer.
double x_spacing_function(unsigned xelement, unsigned xnode, unsigned yelement, unsigned ynode)
The spacing function for the x co-ordinates with two regions.
unsigned Ny1
Number of elements in lower layer.
FiniteElement *& lower_layer_element_pt(const unsigned long &i)
Access functions for pointers to elements in bottom layer.
void spine_node_update_lower(SpineNode *spine_node_pt)
Update function for the lower part of the domain.
unsigned long nupper() const
Number of elements in upper layer.
FiniteElement *& interface_upper_boundary_element_pt(const unsigned long &i)
Access functions for pointers to elements in upper layer.
Vector< FiniteElement * > Interface_lower_boundary_element_pt
Vector of pointers to the elements adjacent to the interface on the lower layer.
unsigned long nlower() const
Number of elements in top layer.
double H1
Height of the lower layer.
void spine_node_update(SpineNode *spine_node_pt)
General node update function implements pure virtual function defined in SpineMesh base class and per...
virtual void build_two_layer_mesh(TimeStepper *time_stepper_pt)
Helper function to actually build the two-layer spine mesh (called from various constructors)
unsigned long ninterface_upper() const
Number of elements in upper layer.
void spine_node_update_upper(SpineNode *spine_node_pt)
Update function for the upper part of the domain.
FiniteElement *& interface_lower_boundary_element_pt(const unsigned long &i)
Access functions for pointers to elements in bottom layer.
////////////////////////////////////////////////////////////////////// //////////////////////////////...