Public Member Functions | Private Attributes | List of all members
ElasticTwoLayerMesh< ELEMENT > Class Template Reference

Two layer mesh which employs a pseudo-solid node-update strategy. This class is essentially a wrapper to an ElasticRectangularQuadMesh, with an additional boundary to represent the interface between the two fluid layers. In addition, the mesh paritions the elements into those above and below the interface and relabels boundaries so that we can impose a volume constraint on the lower or upper fluid. More...

Inheritance diagram for ElasticTwoLayerMesh< ELEMENT >:

Public Member Functions

 ElasticTwoLayerMesh (const unsigned &nx, const unsigned &ny1, const unsigned &ny2, const double &lx, const double &h1, const double &h2, const bool &periodic_in_x=false, TimeStepper *time_stepper_pt=&Mesh::Default_TimeStepper)
 Constructor: Pass number of elements in x-direction, number of elements in y-direction in bottom and top layer, respectively, axial length and height of top and bottom layers, a boolean flag to make the mesh periodic in the x-direction, and pointer to timestepper (defaults to Steady timestepper) More...
 
FiniteElement *& upper_layer_element_pt (const unsigned long &i)
 Access functions for pointers to elements in upper layer. More...
 
FiniteElement *& lower_layer_element_pt (const unsigned long &i)
 Access functions for pointers to elements in bottom layer. More...
 
unsigned long nupper () const
 Number of elements in upper layer. More...
 
unsigned long nlower () const
 Number of elements in top layer. More...
 
FiniteElement *& interface_upper_boundary_element_pt (const unsigned long &i)
 Access functions for pointers to elements in upper layer. More...
 
FiniteElement *& interface_lower_boundary_element_pt (const unsigned long &i)
 Access functions for pointers to elements in bottom layer. More...
 
unsigned long ninterface_upper () const
 Number of elements in upper layer. More...
 
unsigned long ninterface_lower () const
 Number of elements in top layer. More...
 
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) More...
 
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) More...
 

Private Attributes

Vector< FiniteElement * > Lower_layer_element_pt
 Vector of pointers to element in the upper layer. More...
 
Vector< FiniteElement * > Upper_layer_element_pt
 Vector of pointers to element in the lower layer. More...
 
Vector< FiniteElement * > Interface_lower_boundary_element_pt
 Vector of pointers to the elements adjacent to the interface on the lower layer. More...
 
Vector< FiniteElement * > Interface_upper_boundary_element_pt
 Vector of pointers to the element adjacent to the interface on the upper layer. More...
 

Detailed Description

template<class ELEMENT>
class ElasticTwoLayerMesh< ELEMENT >

Two layer mesh which employs a pseudo-solid node-update strategy. This class is essentially a wrapper to an ElasticRectangularQuadMesh, with an additional boundary to represent the interface between the two fluid layers. In addition, the mesh paritions the elements into those above and below the interface and relabels boundaries so that we can impose a volume constraint on the lower or upper fluid.

                            3
          ---------------------------------------
          |                                     |
        4 |                                     | 2
          |                 6                   |
          ---------------------------------------
          |                                     |
        5 |                                     | 1
          |                                     |
          ---------------------------------------
                            0

Definition at line 452 of file static_two_layer.cc.

Constructor & Destructor Documentation

◆ ElasticTwoLayerMesh()

template<class ELEMENT >
ElasticTwoLayerMesh< ELEMENT >::ElasticTwoLayerMesh ( const unsigned &  nx,
const unsigned &  ny1,
const unsigned &  ny2,
const double &  lx,
const double &  h1,
const double &  h2,
const bool &  periodic_in_x = false,
TimeStepper *  time_stepper_pt = &Mesh::Default_TimeStepper 
)
inline

Constructor: Pass number of elements in x-direction, number of elements in y-direction in bottom and top layer, respectively, axial length and height of top and bottom layers, a boolean flag to make the mesh periodic in the x-direction, and pointer to timestepper (defaults to Steady timestepper)

Definition at line 463 of file static_two_layer.cc.

References ElasticTwoLayerMesh< ELEMENT >::Interface_lower_boundary_element_pt, ElasticTwoLayerMesh< ELEMENT >::Interface_upper_boundary_element_pt, ElasticTwoLayerMesh< ELEMENT >::Lower_layer_element_pt, and ElasticTwoLayerMesh< ELEMENT >::Upper_layer_element_pt.

Member Function Documentation

◆ interface_lower_boundary_element_pt()

template<class ELEMENT >
FiniteElement* & ElasticTwoLayerMesh< ELEMENT >::interface_lower_boundary_element_pt ( const unsigned long &  i)
inline

Access functions for pointers to elements in bottom layer.

Definition at line 701 of file static_two_layer.cc.

References ElasticTwoLayerMesh< ELEMENT >::Interface_lower_boundary_element_pt.

◆ interface_lower_face_index_at_boundary()

template<class ELEMENT >
int ElasticTwoLayerMesh< ELEMENT >::interface_lower_face_index_at_boundary ( const unsigned &  e)
inline

Index of the face of the elements next to the interface in the lower region (always 2)

Definition at line 719 of file static_two_layer.cc.

◆ interface_upper_boundary_element_pt()

template<class ELEMENT >
FiniteElement* & ElasticTwoLayerMesh< ELEMENT >::interface_upper_boundary_element_pt ( const unsigned long &  i)
inline

Access functions for pointers to elements in upper layer.

Definition at line 697 of file static_two_layer.cc.

References ElasticTwoLayerMesh< ELEMENT >::Interface_upper_boundary_element_pt.

◆ interface_upper_face_index_at_boundary()

template<class ELEMENT >
int ElasticTwoLayerMesh< ELEMENT >::interface_upper_face_index_at_boundary ( const unsigned &  e)
inline

Index of the face of the elements next to the interface in the upper region (always -2)

Definition at line 714 of file static_two_layer.cc.

◆ lower_layer_element_pt()

template<class ELEMENT >
FiniteElement* & ElasticTwoLayerMesh< ELEMENT >::lower_layer_element_pt ( const unsigned long &  i)
inline

Access functions for pointers to elements in bottom layer.

Definition at line 687 of file static_two_layer.cc.

References ElasticTwoLayerMesh< ELEMENT >::Lower_layer_element_pt.

◆ ninterface_lower()

template<class ELEMENT >
unsigned long ElasticTwoLayerMesh< ELEMENT >::ninterface_lower ( ) const
inline

Number of elements in top layer.

Definition at line 709 of file static_two_layer.cc.

References ElasticTwoLayerMesh< ELEMENT >::Interface_lower_boundary_element_pt.

◆ ninterface_upper()

template<class ELEMENT >
unsigned long ElasticTwoLayerMesh< ELEMENT >::ninterface_upper ( ) const
inline

Number of elements in upper layer.

Definition at line 705 of file static_two_layer.cc.

References ElasticTwoLayerMesh< ELEMENT >::Interface_upper_boundary_element_pt.

◆ nlower()

template<class ELEMENT >
unsigned long ElasticTwoLayerMesh< ELEMENT >::nlower ( ) const
inline

Number of elements in top layer.

Definition at line 694 of file static_two_layer.cc.

References ElasticTwoLayerMesh< ELEMENT >::Lower_layer_element_pt.

◆ nupper()

template<class ELEMENT >
unsigned long ElasticTwoLayerMesh< ELEMENT >::nupper ( ) const
inline

Number of elements in upper layer.

Definition at line 691 of file static_two_layer.cc.

References ElasticTwoLayerMesh< ELEMENT >::Upper_layer_element_pt.

◆ upper_layer_element_pt()

template<class ELEMENT >
FiniteElement* & ElasticTwoLayerMesh< ELEMENT >::upper_layer_element_pt ( const unsigned long &  i)
inline

Access functions for pointers to elements in upper layer.

Definition at line 683 of file static_two_layer.cc.

References ElasticTwoLayerMesh< ELEMENT >::Upper_layer_element_pt.

Member Data Documentation

◆ Interface_lower_boundary_element_pt

template<class ELEMENT >
Vector<FiniteElement*> ElasticTwoLayerMesh< ELEMENT >::Interface_lower_boundary_element_pt
private

Vector of pointers to the elements adjacent to the interface on the lower layer.

Definition at line 732 of file static_two_layer.cc.

Referenced by ElasticTwoLayerMesh< ELEMENT >::ElasticTwoLayerMesh(), ElasticTwoLayerMesh< ELEMENT >::interface_lower_boundary_element_pt(), and ElasticTwoLayerMesh< ELEMENT >::ninterface_lower().

◆ Interface_upper_boundary_element_pt

template<class ELEMENT >
Vector<FiniteElement *> ElasticTwoLayerMesh< ELEMENT >::Interface_upper_boundary_element_pt
private

Vector of pointers to the element adjacent to the interface on the upper layer.

Definition at line 736 of file static_two_layer.cc.

Referenced by ElasticTwoLayerMesh< ELEMENT >::ElasticTwoLayerMesh(), ElasticTwoLayerMesh< ELEMENT >::interface_upper_boundary_element_pt(), and ElasticTwoLayerMesh< ELEMENT >::ninterface_upper().

◆ Lower_layer_element_pt

template<class ELEMENT >
Vector<FiniteElement *> ElasticTwoLayerMesh< ELEMENT >::Lower_layer_element_pt
private

◆ Upper_layer_element_pt

template<class ELEMENT >
Vector<FiniteElement *> ElasticTwoLayerMesh< ELEMENT >::Upper_layer_element_pt
private

The documentation for this class was generated from the following file: