Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
oomph::ChannelSpineMesh< ELEMENT > Class Template Reference

Spine mesh class derived from standard 2D mesh. The mesh contains a StraightLine GeomObject which defines the height of the left and right regions (0,2) and another GeomObject is passed to the constructor to define the height in the central region. More...

#include <channel_spine_mesh.template.h>

Inheritance diagram for oomph::ChannelSpineMesh< ELEMENT >:
oomph::RectangularQuadMesh< ELEMENT >

Public Member Functions

 ChannelSpineMesh (const unsigned &nx0, const unsigned &nx1, const unsigned &nx2, const unsigned &ny, const double &lx0, const double &lx1, const double &lx2, const double &h, GeomObject *wall_pt, TimeStepper *time_stepper_pt=&Mesh::Default_TimeStepper)
 Constructor: Pass number of elements in x-direction in regions 0,1 and 2, number of elements in y-direction, length in x direction in regions 0,1 and 2, height mesh, pointer to the GeomObject defining the heightof the central region and pointer to timestepper (defaults to Steady timestepper) More...
 
 ChannelSpineMesh (const unsigned &nx0, const unsigned &nx1, const unsigned &nx2, const unsigned &ny, const double &lx0, const double &lx1, const double &lx2, const double &h, GeomObject *wall_pt, const bool &periodic_in_x, TimeStepper *time_stepper_pt=&Mesh::Default_TimeStepper)
 Constructor: Pass number of elements in x-direction in regions 0,1 and 2, number of elements in y-direction, length in x direction in regions 0,1 and 2, height mesh, pointer to the GeomObject defining the heightof the central region, a boolean flag to indicate whether or not the mesh is periodic and pointer to timestepper (defaults to Steady timestepper) More...
 
FiniteElement *& left_element_pt (const unsigned long &i)
 Access functions for pointers to the $ i $ -th element in the left region. More...
 
FiniteElement *& centre_element_pt (const unsigned long &i)
 Access functions for pointers to the $ i $ -th element in the centre region. More...
 
FiniteElement *& right_element_pt (const unsigned long &i)
 Access functions for pointers to the $ i $ -th element in the right region. More...
 
unsigned long nleft () const
 Number of elements in left region. More...
 
unsigned long ncentre () const
 Number of elements in centre region. More...
 
unsigned long nright () const
 Number of elements in right region. More...
 
unsigned long nbulk () const
 Number of elements in bulk. More...
 
void element_reorder ()
 Reorder the elements so we loop over them vertically first (advantageous in "wide" domains if a frontal solver is used). More...
 
virtual void spine_node_update (SpineNode *spine_node_pt)
 General node update function implements pure virtual function defined in SpineMesh base class and performs specific node update actions: along vertical spines. More...
 
virtual double x_spacing_function (unsigned xelement, unsigned xnode, unsigned yelement, unsigned ynode)
 Return the value of the x-coordinate at the node given by the local node number (xnode, ynode) in the element (xelement,yelement). The description is in a "psudeo" two-dimensional coordinate system, so the range of xelement is [0,Nx-1], yelement is [0,Ny-1], and that of xnode and ynode is [0,Np-1]. The default is to return nodes that are equally spaced in the x coodinate. More...
 
Spine *& left_spine_pt (const unsigned long &i)
 Access function for spines in left region. More...
 
Spine *& centre_spine_pt (const unsigned long &i)
 Access function for spines in centre region. More...
 
Spine *& right_spine_pt (const unsigned long &i)
 Access function for spines in right region. More...
 
unsigned nleft_spine ()
 Access function for the number of spines in the left region. More...
 
unsigned ncentre_spine ()
 Access function for the number of spines in the centre region. More...
 
unsigned nright_spine ()
 Access function for the number of spines in the right region. More...
 
GeomObject * wall_pt ()
 Access function to the GeomObject for upper wall. More...
 
GeomObject * straight_wall_pt ()
 Access function to the GeomObject for the straight upper wall. More...
 
- Public Member Functions inherited from oomph::RectangularQuadMesh< ELEMENT >
 RectangularQuadMesh (const unsigned &nx, const unsigned &ny, const double &lx, const double &ly, TimeStepper *time_stepper_pt=&Mesh::Default_TimeStepper)
 Simple constructor: nx: number of elements in x direction; ny: number of elements in y direction; lx, length of domain in x direction (0,lx); ly, length of domain in y direction (0,ly) Also pass pointer to timestepper (defaults to Steady) More...
 
 RectangularQuadMesh (const unsigned &nx, const unsigned &ny, const double &xmin, const double &xmax, const double &ymin, const double &ymax, TimeStepper *time_stepper_pt=&Mesh::Default_TimeStepper)
 Constructor that allows the specification of minimum and maximum values of x and y coordinates. More...
 
 RectangularQuadMesh (const unsigned &nx, const unsigned &ny, const double &lx, const double &ly, const bool &periodic_in_x, TimeStepper *time_stepper_pt=&Mesh::Default_TimeStepper)
 Simple constructor: nx: number of elements in x direction; ny: number of elements in y direction; lx, length of domain in x direction (0,lx); ly, length of domain in y direction (0,ly) Boolean flag specifies if the mesh is periodic in the x-direction. Also pass pointer to timestepper (defaults to Steady) More...
 
 RectangularQuadMesh (const unsigned &nx, const unsigned &ny, const double &xmin, const double &xmax, const double &ymin, const double &ymax, const bool &periodic_in_x, TimeStepper *time_stepper_pt=&Mesh::Default_TimeStepper)
 Constructor that allows the specification of minimum and maximum values of x and y coordinates. Boolean flag specifies if the mesh is periodic in the x-direction. More...
 
const unsigned & nx () const
 Return number of elements in x direction. More...
 
const unsigned & ny () const
 Return number of elements in y direction. More...
 
const double x_min () const
 Return the minimum value of x coordinate. More...
 
const double x_max () const
 Return the maximum value of x coordinate. More...
 
const double y_min () const
 Return the minimum value of y coordinate. More...
 
const double y_max () const
 Return the maximum value of y coordinate. More...
 
virtual double y_spacing_function (unsigned xelement, unsigned xnode, unsigned yelement, unsigned ynode)
 Return the value of the y-coordinate at the node given by the local node number (xnode, ynode) in the element (xelement,yelement). The description is in a "psudeo" two-dimensional coordinate system, so the range of xelement is [0,Nx-1], yelement is [0,Ny-1], and that of xnode and ynode is [0,Np-1]. The default it to return nodes that are equally spaced in the y coordinate. More...
 

Protected Member Functions

virtual void build_channel_spine_mesh (TimeStepper *time_stepper_pt)
 Helper function to actually build the channel-spine mesh (called from various constructors) More...
 
- Protected Member Functions inherited from oomph::RectangularQuadMesh< ELEMENT >
void build_mesh (TimeStepper *time_stepper_pt=&Mesh::Default_TimeStepper)
 Generic mesh construction function: contains all the hard work. More...
 
 RectangularQuadMesh (const unsigned &nx, const unsigned &ny, const double &xmin, const double &xmax, const double &ymin, const double &ymax, const bool &periodic_in_x, const bool &build, TimeStepper *time_stepper_pt=&Mesh::Default_TimeStepper)
 Constructor that allows the specification of minimum and maximum values of x and y coordinates and does not build the mesh This is intend to be used in derived classes that overload the spacing functions. THis is scheduled to be changed, however. The reason why this MUST be done is because the virtual spacing functions cannot be called in the base constructur, because they will not have been overloaded yet!! More...
 

Protected Attributes

Vector< FiniteElement * > Left_element_pt
 Vector of pointers to element in the left region. More...
 
Vector< FiniteElement * > Centre_element_pt
 Vector of pointers to element in the centre region. More...
 
Vector< FiniteElement * > Right_element_pt
 Vector of pointers to element in the right region. More...
 
unsigned Nx0
 Number of elements in the left region. More...
 
unsigned Nx1
 Number of elements in the centre region. More...
 
unsigned Nx2
 Number of elements in the right region. More...
 
double Lx0
 Length of left region. More...
 
double Lx1
 Length of centre region. More...
 
double Lx2
 Length of right region. More...
 
unsigned Nleft_spine
 Number of spines in left region. More...
 
unsigned Ncentre_spine
 Number of spines in centre region. More...
 
unsigned Nright_spine
 Number of spines in right region. More...
 
GeomObject * Wall_pt
 GeomObject for upper wall. More...
 
GeomObject * Straight_wall_pt
 GeomObject for the straight upper wall. More...
 
- Protected Attributes inherited from oomph::RectangularQuadMesh< ELEMENT >
unsigned Nx
 Nx: number of elements in x-direction. More...
 
unsigned Ny
 Ny: number of elements in y-direction. More...
 
unsigned Np
 Np: number of (linear) points in the element. More...
 
double Xmin
 Minimum value of x coordinate. More...
 
double Xmax
 Maximum value of x coordinate. More...
 
double Ymin
 Minimum value of y coordinate. More...
 
double Ymax
 Maximum value of y coordinate. More...
 
bool Xperiodic
 Boolean variable used to determine whether the mesh is periodic in the x-direction. More...
 

Detailed Description

template<class ELEMENT>
class oomph::ChannelSpineMesh< ELEMENT >

Spine mesh class derived from standard 2D mesh. The mesh contains a StraightLine GeomObject which defines the height of the left and right regions (0,2) and another GeomObject is passed to the constructor to define the height in the central region.

Definition at line 42 of file channel_spine_mesh.template.h.

Constructor & Destructor Documentation

◆ ChannelSpineMesh() [1/2]

template<class ELEMENT >
oomph::ChannelSpineMesh< ELEMENT >::ChannelSpineMesh ( const unsigned &  nx0,
const unsigned &  nx1,
const unsigned &  nx2,
const unsigned &  ny,
const double &  lx0,
const double &  lx1,
const double &  lx2,
const double &  h,
GeomObject *  wall_pt,
TimeStepper *  time_stepper_pt = &Mesh::Default_TimeStepper 
)

Constructor: Pass number of elements in x-direction in regions 0,1 and 2, number of elements in y-direction, length in x direction in regions 0,1 and 2, height mesh, pointer to the GeomObject defining the heightof the central region and pointer to timestepper (defaults to Steady timestepper)

Constructor for spine 2D mesh: Pass number of elements in x-direction, number of elements in y-direction, axial length and height of layer, and pointer to timestepper (defaults to Static timestepper).

The mesh contains a layer of spinified fluid elements (of type ELEMENT; e.g SpineElement<QCrouzeixRaviartElement<2>) and a surface layer of corresponding Spine interface elements of type INTERFACE_ELEMENT, e.g. SpineLineFluidInterfaceElement<ELEMENT> for 2D planar problems.

Definition at line 48 of file channel_spine_mesh.template.cc.

References oomph::ChannelSpineMesh< ELEMENT >::build_channel_spine_mesh(), and oomph::ChannelSpineMesh< ELEMENT >::Straight_wall_pt.

◆ ChannelSpineMesh() [2/2]

template<class ELEMENT >
oomph::ChannelSpineMesh< ELEMENT >::ChannelSpineMesh ( const unsigned &  nx0,
const unsigned &  nx1,
const unsigned &  nx2,
const unsigned &  ny,
const double &  lx0,
const double &  lx1,
const double &  lx2,
const double &  h,
GeomObject *  wall_pt,
const bool &  periodic_in_x,
TimeStepper *  time_stepper_pt = &Mesh::Default_TimeStepper 
)

Constructor: Pass number of elements in x-direction in regions 0,1 and 2, number of elements in y-direction, length in x direction in regions 0,1 and 2, height mesh, pointer to the GeomObject defining the heightof the central region, a boolean flag to indicate whether or not the mesh is periodic and pointer to timestepper (defaults to Steady timestepper)

Constuctor for spine 2D mesh: Pass number of elements in x-direction, number of elements in y-direction, axial length and height of layer, a boolean flag to make the mesh periodic in the x-direction, and pointer to timestepper (defaults to Static timestepper).

The mesh contains a layer of elements (of type ELEMENT) and a surface layer of corresponding Spine interface elements (of type SpineLineFluidInterfaceElement<ELEMENT>).

Definition at line 103 of file channel_spine_mesh.template.cc.

References oomph::ChannelSpineMesh< ELEMENT >::build_channel_spine_mesh(), and oomph::ChannelSpineMesh< ELEMENT >::Straight_wall_pt.

Member Function Documentation

◆ build_channel_spine_mesh()

template<class ELEMENT >
void oomph::ChannelSpineMesh< ELEMENT >::build_channel_spine_mesh ( TimeStepper *  time_stepper_pt)
protectedvirtual

Helper function to actually build the channel-spine mesh (called from various constructors)

Helper function that actually builds the channel-spine mesh based on the parameters set in the various constructors.

Definition at line 153 of file channel_spine_mesh.template.cc.

References oomph::RectangularQuadMesh< ELEMENT >::build_mesh().

Referenced by oomph::ChannelSpineMesh< ELEMENT >::ChannelSpineMesh().

◆ centre_element_pt()

template<class ELEMENT >
FiniteElement*& oomph::ChannelSpineMesh< ELEMENT >::centre_element_pt ( const unsigned long &  i)
inline

Access functions for pointers to the $ i $ -th element in the centre region.

Definition at line 88 of file channel_spine_mesh.template.h.

References oomph::ChannelSpineMesh< ELEMENT >::Centre_element_pt.

◆ centre_spine_pt()

template<class ELEMENT >
Spine*& oomph::ChannelSpineMesh< ELEMENT >::centre_spine_pt ( const unsigned long &  i)
inline

Access function for spines in centre region.

Definition at line 214 of file channel_spine_mesh.template.h.

References oomph::ChannelSpineMesh< ELEMENT >::Ncentre_spine, and oomph::ChannelSpineMesh< ELEMENT >::Nleft_spine.

◆ element_reorder()

template<class ELEMENT >
void oomph::ChannelSpineMesh< ELEMENT >::element_reorder
virtual

Reorder the elements so we loop over them vertically first (advantageous in "wide" domains if a frontal solver is used).

Reorder the elements, so we loop over them vertically first (advantageous in "wide" domains if a frontal solver is used).

Reimplemented from oomph::RectangularQuadMesh< ELEMENT >.

Definition at line 694 of file channel_spine_mesh.template.cc.

◆ left_element_pt()

template<class ELEMENT >
FiniteElement*& oomph::ChannelSpineMesh< ELEMENT >::left_element_pt ( const unsigned long &  i)
inline

Access functions for pointers to the $ i $ -th element in the left region.

Definition at line 81 of file channel_spine_mesh.template.h.

References oomph::ChannelSpineMesh< ELEMENT >::Left_element_pt.

◆ left_spine_pt()

template<class ELEMENT >
Spine*& oomph::ChannelSpineMesh< ELEMENT >::left_spine_pt ( const unsigned long &  i)
inline

Access function for spines in left region.

Definition at line 200 of file channel_spine_mesh.template.h.

References oomph::ChannelSpineMesh< ELEMENT >::Nleft_spine.

◆ nbulk()

template<class ELEMENT >
unsigned long oomph::ChannelSpineMesh< ELEMENT >::nbulk ( ) const
inline

◆ ncentre()

template<class ELEMENT >
unsigned long oomph::ChannelSpineMesh< ELEMENT >::ncentre ( ) const
inline

Number of elements in centre region.

Definition at line 107 of file channel_spine_mesh.template.h.

References oomph::ChannelSpineMesh< ELEMENT >::Centre_element_pt.

◆ ncentre_spine()

template<class ELEMENT >
unsigned oomph::ChannelSpineMesh< ELEMENT >::ncentre_spine ( )
inline

Access function for the number of spines in the centre region.

Definition at line 250 of file channel_spine_mesh.template.h.

References oomph::ChannelSpineMesh< ELEMENT >::Ncentre_spine.

◆ nleft()

template<class ELEMENT >
unsigned long oomph::ChannelSpineMesh< ELEMENT >::nleft ( ) const
inline

Number of elements in left region.

Definition at line 101 of file channel_spine_mesh.template.h.

References oomph::ChannelSpineMesh< ELEMENT >::Left_element_pt.

◆ nleft_spine()

template<class ELEMENT >
unsigned oomph::ChannelSpineMesh< ELEMENT >::nleft_spine ( )
inline

Access function for the number of spines in the left region.

Definition at line 244 of file channel_spine_mesh.template.h.

References oomph::ChannelSpineMesh< ELEMENT >::Nleft_spine.

◆ nright()

template<class ELEMENT >
unsigned long oomph::ChannelSpineMesh< ELEMENT >::nright ( ) const
inline

Number of elements in right region.

Definition at line 113 of file channel_spine_mesh.template.h.

References oomph::ChannelSpineMesh< ELEMENT >::Right_element_pt.

◆ nright_spine()

template<class ELEMENT >
unsigned oomph::ChannelSpineMesh< ELEMENT >::nright_spine ( )
inline

Access function for the number of spines in the right region.

Definition at line 256 of file channel_spine_mesh.template.h.

References oomph::ChannelSpineMesh< ELEMENT >::Nright_spine.

◆ right_element_pt()

template<class ELEMENT >
FiniteElement*& oomph::ChannelSpineMesh< ELEMENT >::right_element_pt ( const unsigned long &  i)
inline

Access functions for pointers to the $ i $ -th element in the right region.

Definition at line 95 of file channel_spine_mesh.template.h.

References oomph::ChannelSpineMesh< ELEMENT >::Right_element_pt.

◆ right_spine_pt()

template<class ELEMENT >
Spine*& oomph::ChannelSpineMesh< ELEMENT >::right_spine_pt ( const unsigned long &  i)
inline

◆ spine_node_update()

template<class ELEMENT >
virtual void oomph::ChannelSpineMesh< ELEMENT >::spine_node_update ( SpineNode *  spine_node_pt)
inlinevirtual

General node update function implements pure virtual function defined in SpineMesh base class and performs specific node update actions: along vertical spines.

Definition at line 133 of file channel_spine_mesh.template.h.

References oomph::RectangularQuadMesh< ELEMENT >::Ymin.

◆ straight_wall_pt()

template<class ELEMENT >
GeomObject* oomph::ChannelSpineMesh< ELEMENT >::straight_wall_pt ( )
inline

Access function to the GeomObject for the straight upper wall.

Definition at line 268 of file channel_spine_mesh.template.h.

References oomph::ChannelSpineMesh< ELEMENT >::Straight_wall_pt.

◆ wall_pt()

template<class ELEMENT >
GeomObject* oomph::ChannelSpineMesh< ELEMENT >::wall_pt ( )
inline

Access function to the GeomObject for upper wall.

Definition at line 262 of file channel_spine_mesh.template.h.

References oomph::ChannelSpineMesh< ELEMENT >::Wall_pt.

◆ x_spacing_function()

template<class ELEMENT >
virtual double oomph::ChannelSpineMesh< ELEMENT >::x_spacing_function ( unsigned  xelement,
unsigned  xnode,
unsigned  yelement,
unsigned  ynode 
)
inlinevirtual

Return the value of the x-coordinate at the node given by the local node number (xnode, ynode) in the element (xelement,yelement). The description is in a "psudeo" two-dimensional coordinate system, so the range of xelement is [0,Nx-1], yelement is [0,Ny-1], and that of xnode and ynode is [0,Np-1]. The default is to return nodes that are equally spaced in the x coodinate.

Reimplemented from oomph::RectangularQuadMesh< ELEMENT >.

Definition at line 156 of file channel_spine_mesh.template.h.

References oomph::ChannelSpineMesh< ELEMENT >::Lx0, oomph::ChannelSpineMesh< ELEMENT >::Lx1, oomph::ChannelSpineMesh< ELEMENT >::Lx2, oomph::RectangularQuadMesh< ELEMENT >::Np, oomph::ChannelSpineMesh< ELEMENT >::Nx0, oomph::ChannelSpineMesh< ELEMENT >::Nx1, oomph::ChannelSpineMesh< ELEMENT >::Nx2, and oomph::RectangularQuadMesh< ELEMENT >::Xmin.

Member Data Documentation

◆ Centre_element_pt

template<class ELEMENT >
Vector<FiniteElement*> oomph::ChannelSpineMesh< ELEMENT >::Centre_element_pt
protected

◆ Left_element_pt

template<class ELEMENT >
Vector<FiniteElement*> oomph::ChannelSpineMesh< ELEMENT >::Left_element_pt
protected

◆ Lx0

template<class ELEMENT >
double oomph::ChannelSpineMesh< ELEMENT >::Lx0
protected

Length of left region.

Definition at line 297 of file channel_spine_mesh.template.h.

Referenced by oomph::ChannelSpineMesh< ELEMENT >::x_spacing_function().

◆ Lx1

template<class ELEMENT >
double oomph::ChannelSpineMesh< ELEMENT >::Lx1
protected

Length of centre region.

Definition at line 300 of file channel_spine_mesh.template.h.

Referenced by oomph::ChannelSpineMesh< ELEMENT >::x_spacing_function().

◆ Lx2

template<class ELEMENT >
double oomph::ChannelSpineMesh< ELEMENT >::Lx2
protected

Length of right region.

Definition at line 303 of file channel_spine_mesh.template.h.

Referenced by oomph::ChannelSpineMesh< ELEMENT >::x_spacing_function().

◆ Ncentre_spine

template<class ELEMENT >
unsigned oomph::ChannelSpineMesh< ELEMENT >::Ncentre_spine
protected

◆ Nleft_spine

template<class ELEMENT >
unsigned oomph::ChannelSpineMesh< ELEMENT >::Nleft_spine
protected

◆ Nright_spine

template<class ELEMENT >
unsigned oomph::ChannelSpineMesh< ELEMENT >::Nright_spine
protected

◆ Nx0

template<class ELEMENT >
unsigned oomph::ChannelSpineMesh< ELEMENT >::Nx0
protected

Number of elements in the left region.

Definition at line 288 of file channel_spine_mesh.template.h.

Referenced by oomph::ChannelSpineMesh< ELEMENT >::x_spacing_function().

◆ Nx1

template<class ELEMENT >
unsigned oomph::ChannelSpineMesh< ELEMENT >::Nx1
protected

Number of elements in the centre region.

Definition at line 291 of file channel_spine_mesh.template.h.

Referenced by oomph::ChannelSpineMesh< ELEMENT >::x_spacing_function().

◆ Nx2

template<class ELEMENT >
unsigned oomph::ChannelSpineMesh< ELEMENT >::Nx2
protected

Number of elements in the right region.

Definition at line 294 of file channel_spine_mesh.template.h.

Referenced by oomph::ChannelSpineMesh< ELEMENT >::x_spacing_function().

◆ Right_element_pt

template<class ELEMENT >
Vector<FiniteElement*> oomph::ChannelSpineMesh< ELEMENT >::Right_element_pt
protected

◆ Straight_wall_pt

template<class ELEMENT >
GeomObject* oomph::ChannelSpineMesh< ELEMENT >::Straight_wall_pt
protected

◆ Wall_pt

template<class ELEMENT >
GeomObject* oomph::ChannelSpineMesh< ELEMENT >::Wall_pt
protected

GeomObject for upper wall.

Definition at line 315 of file channel_spine_mesh.template.h.

Referenced by oomph::ChannelSpineMesh< ELEMENT >::wall_pt().


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