26#ifndef OOMPH_TWO_LAYER_SPINE_MESH_HEADER
27#define OOMPH_TWO_LAYER_SPINE_MESH_HEADER
30#include "generic/spines.h"
57 template<
class ELEMENT>
189 error_message <<
"Unknown id passed to spine_node_update " <<
id
Collapsible channel mesh with MacroElement-based node update. The collapsible segment is represented ...
RectangularQuadMesh is a two-dimensional mesh of Quad elements with Nx elements in the "x" (horizonal...
const unsigned & nx() const
Return number of elements in x direction.
double Ymax
Maximum value of y coordinate.
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.
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)
FiniteElement *& interface_lower_boundary_element_pt(const unsigned long &i)
Access functions for pointers to elements in bottom layer.
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.
FiniteElement *& lower_layer_element_pt(const unsigned long &i)
Access functions for pointers to elements in bottom 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.
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 *& upper_layer_element_pt(const unsigned long &i)
Access functions for pointers to elements in upper layer.