30 #ifndef OOMPH_TWO_LAYER_SPINE_MESH_HEADER    31 #define OOMPH_TWO_LAYER_SPINE_MESH_HEADER    35 #include "../generic/spines.h"    64 template <
class ELEMENT>
    96                    const bool& periodic_in_x,
   113                    const bool& periodic_in_x,
   175      std::ostringstream error_message;
   176      error_message << 
"Unknown id passed to spine_node_update " << 
id    179                          OOMPH_CURRENT_FUNCTION,
   180                          OOMPH_EXCEPTION_LOCATION);
   218                            unsigned yelement, 
unsigned ynode);
   223                            unsigned yelement, 
unsigned ynode);
   231    double H = spine_node_pt->
h();
   233    spine_node_pt->
x(1) = this->
Ymin + W*H;
   244    double H = spine_node_pt->
h();  
   247    spine_node_pt->
x(1) = (this->
Ymin+H) + W *(this->
Ymax - (this->
Ymin+H) );
 
Vector< FiniteElement * > Lower_layer_element_pt
Vector of pointers to element in the upper layer. 
const unsigned & nx() const
Return number of elements in x direction. 
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) ...
FiniteElement *& interface_lower_boundary_element_pt(const unsigned long &i)
Access functions for pointers to elements in bottom layer. 
unsigned long nlower() const
Number of elements in top layer. 
static Steady< 0 > Default_TimeStepper
Default Steady Timestepper, to be used in default arguments to Mesh constructors. ...
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) ...
double & fraction()
Set reference to fraction along spine. 
A general Finite Element class. 
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. 
unsigned & node_update_fct_id()
Access function to ID of node update function (within specific mesh) 
FiniteElement *& interface_upper_boundary_element_pt(const unsigned long &i)
Access functions for pointers to elements in upper layer. 
FiniteElement *& upper_layer_element_pt(const unsigned long &i)
Access functions for pointers to elements in upper layer. 
unsigned long ninterface_lower() const
Number of elements in top layer. 
unsigned long nupper() const
Number of 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 ...
FiniteElement *& lower_layer_element_pt(const unsigned long &i)
Access functions for pointers to elements in bottom layer. 
double & x(const unsigned &i)
Return the i-th nodal coordinate. 
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) ...
void spine_node_update_upper(SpineNode *spine_node_pt)
Update function for the upper part of the domain. 
unsigned Ny2
Number of elements in upper layer. 
unsigned Ny1
Number of elements in lower layer. 
Vector< FiniteElement * > Interface_lower_boundary_element_pt
Vector of pointers to the elements adjacent to the interface on the lower layer. 
Vector< FiniteElement * > Upper_layer_element_pt
Vector of pointers to element in the lower layer. 
double H1
Height of the lower layer. 
double H2
Height of the upper layer. 
unsigned long ninterface_upper() const
Number of elements in upper layer. 
void build_mesh(TimeStepper *time_stepper_pt=&Mesh::Default_TimeStepper)
Generic mesh construction function: contains all the hard work. 
Vector< FiniteElement * > Interface_upper_boundary_element_pt
Vector of pointers to the element adjacent to the interface on the upper layer. 
double & h()
Access function to spine height. 
double Ymax
Maximum value of y coordinate. 
double x_spacing_function(unsigned xelement, unsigned xnode, unsigned yelement, unsigned ynode)
The spacing function for the x co-ordinates with two regions. 
void spine_node_update_lower(SpineNode *spine_node_pt)
Update function for the lower part of the domain. 
Base class for time-stepping schemes. Timestepper provides an approximation of the temporal derivativ...
double Ymin
Minimum value of y coordinate.