A 2D solid mesh for (topologically) circular cylindrical shells. The shell is represented by two Lagrangian coordinates that correspond to z and theta in cylindrical polars. The required mesh is therefore a 2D mesh and is therefore inherited from the generic RectangularQuadMesh. More...
#include <circular_shell_mesh.template.h>
Public Types | |
typedef double(* | AxialBLStretchingFctPt) (const double &x) |
Typedef for fct that defines the axial stretching fct. More... | |
Public Member Functions | |
CircularCylindricalShellMesh (const unsigned &nx, const unsigned &ny, const double &lx, const double &ly, TimeStepper *time_stepper_pt=&Mesh::Default_TimeStepper) | |
Constructor for the mesh – uniformly spaced elements. More... | |
CircularCylindricalShellMesh (const unsigned &nx, const unsigned &ny, const double &lx, const double &ly, AxialBLStretchingFctPt axial_bl_stretching_fct_pt, TimeStepper *time_stepper_pt=&Mesh::Default_TimeStepper) | |
Constructor for the mesh – specify fct that maps axial Lagr. coordinates to new positions to allow for better resolution of bending boundary layer. More... | |
CircularCylindricalShellMesh (const unsigned &nx, const unsigned &ny, const double &lx, const double &ly, const unsigned &nx_bl, const double &delta_bl, TimeStepper *time_stepper_pt=&Mesh::Default_TimeStepper) | |
Constructor for the mesh. nx_bl azimuthal layers of elements near the ends are squashed to that axial extent of the elements changes from lx/nx to delta_bl. More... | |
void | assign_undeformed_positions (GeomObject *const &undeformed_midplane_pt) |
In all elastic problems, the nodes must be assigned an undeformed, or reference, position, corresponding to the stress-free state of the elastic body. This function assigns the undeformed position for the nodes on the elastic tube. More... | |
AxialBLStretchingFctPt | axial_bl_stretching_fct_pt () const |
Access to fct pointer to fct that defines the axial stretching fct. 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 void | element_reorder () |
Reorder the elements: By default they are ordered in "horizontal" layers (increasing in x, then in y). This function changes this to an ordering in the vertical direction (y first, then x). This is more efficient if a frontal solver is used and the mesh has more elements in the x than the y direction. Can be overloaded in specific derived meshes. 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... | |
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... | |
Private Member Functions | |
void | build_mesh (const unsigned &nx, const unsigned &ny, const double &lx, const double &ly) |
Mesh build helper fct. More... | |
double | scaled_x (const double &x) |
Fct that defines the axial stretching to accomodate bending boundary layers. More... | |
double | piecewise_linear_axial_bl_stretching_fct (const double &xi) |
Default axial scaling fct. More... | |
Private Attributes | |
AxialBLStretchingFctPt | Axial_bl_stretching_fct_pt |
Fct pointer to fct that defines the axial stretching fct. More... | |
unsigned | Nx_bl |
Number of azimuthal element layers that get squashed into each of the the two boundary layers at the ends of the tube. More... | |
double | Delta_bl |
Axial extent of the squashed boundary layer part of the mesh occupied by Nx_bl elements (at each end of the tube) More... | |
Additional Inherited Members | |
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 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... | |
A 2D solid mesh for (topologically) circular cylindrical shells. The shell is represented by two Lagrangian coordinates that correspond to z and theta in cylindrical polars. The required mesh is therefore a 2D mesh and is therefore inherited from the generic RectangularQuadMesh.
Definition at line 51 of file circular_shell_mesh.template.h.
typedef double(* oomph::CircularCylindricalShellMesh< ELEMENT >::AxialBLStretchingFctPt) (const double &x) |
Typedef for fct that defines the axial stretching fct.
Definition at line 57 of file circular_shell_mesh.template.h.
|
inline |
Constructor for the mesh – uniformly spaced elements.
Definition at line 60 of file circular_shell_mesh.template.h.
References oomph::CircularCylindricalShellMesh< ELEMENT >::Axial_bl_stretching_fct_pt, oomph::CircularCylindricalShellMesh< ELEMENT >::build_mesh(), oomph::CircularCylindricalShellMesh< ELEMENT >::Delta_bl, oomph::RectangularQuadMesh< ELEMENT >::nx(), oomph::CircularCylindricalShellMesh< ELEMENT >::Nx_bl, and oomph::RectangularQuadMesh< ELEMENT >::ny().
|
inline |
Constructor for the mesh – specify fct that maps axial Lagr. coordinates to new positions to allow for better resolution of bending boundary layer.
Definition at line 83 of file circular_shell_mesh.template.h.
References oomph::CircularCylindricalShellMesh< ELEMENT >::axial_bl_stretching_fct_pt(), oomph::CircularCylindricalShellMesh< ELEMENT >::Axial_bl_stretching_fct_pt, oomph::CircularCylindricalShellMesh< ELEMENT >::build_mesh(), oomph::CircularCylindricalShellMesh< ELEMENT >::Delta_bl, oomph::RectangularQuadMesh< ELEMENT >::nx(), oomph::CircularCylindricalShellMesh< ELEMENT >::Nx_bl, and oomph::RectangularQuadMesh< ELEMENT >::ny().
|
inline |
Constructor for the mesh. nx_bl azimuthal layers of elements near the ends are squashed to that axial extent of the elements changes from lx/nx to delta_bl.
Definition at line 106 of file circular_shell_mesh.template.h.
References oomph::CircularCylindricalShellMesh< ELEMENT >::Axial_bl_stretching_fct_pt, oomph::CircularCylindricalShellMesh< ELEMENT >::build_mesh(), oomph::CircularCylindricalShellMesh< ELEMENT >::Delta_bl, oomph::CircularCylindricalShellMesh< ELEMENT >::Nx_bl, and oomph::RectangularQuadMesh< ELEMENT >::ny().
void oomph::CircularCylindricalShellMesh< ELEMENT >::assign_undeformed_positions | ( | GeomObject *const & | undeformed_midplane_pt | ) |
In all elastic problems, the nodes must be assigned an undeformed, or reference, position, corresponding to the stress-free state of the elastic body. This function assigns the undeformed position for the nodes on the elastic tube.
Set the undeformed coordinates of the nodes.
Definition at line 127 of file circular_shell_mesh.template.cc.
|
inline |
Access to fct pointer to fct that defines the axial stretching fct.
Definition at line 136 of file circular_shell_mesh.template.h.
References oomph::CircularCylindricalShellMesh< ELEMENT >::Axial_bl_stretching_fct_pt.
Referenced by oomph::CircularCylindricalShellMesh< ELEMENT >::CircularCylindricalShellMesh().
|
private |
Mesh build helper fct.
Mesh build fct.
Definition at line 41 of file circular_shell_mesh.template.cc.
Referenced by oomph::CircularCylindricalShellMesh< ELEMENT >::CircularCylindricalShellMesh().
|
inlineprivate |
Default axial scaling fct.
Definition at line 165 of file circular_shell_mesh.template.h.
References oomph::CircularCylindricalShellMesh< ELEMENT >::Delta_bl, oomph::RectangularQuadMesh< ELEMENT >::Nx, oomph::CircularCylindricalShellMesh< ELEMENT >::Nx_bl, oomph::RectangularQuadMesh< ELEMENT >::Xmax, and oomph::RectangularQuadMesh< ELEMENT >::Xmin.
Referenced by oomph::CircularCylindricalShellMesh< ELEMENT >::scaled_x().
|
inlineprivate |
Fct that defines the axial stretching to accomodate bending boundary layers.
Definition at line 152 of file circular_shell_mesh.template.h.
References oomph::CircularCylindricalShellMesh< ELEMENT >::Axial_bl_stretching_fct_pt, and oomph::CircularCylindricalShellMesh< ELEMENT >::piecewise_linear_axial_bl_stretching_fct().
|
private |
Fct pointer to fct that defines the axial stretching fct.
Definition at line 193 of file circular_shell_mesh.template.h.
Referenced by oomph::CircularCylindricalShellMesh< ELEMENT >::axial_bl_stretching_fct_pt(), oomph::CircularCylindricalShellMesh< ELEMENT >::CircularCylindricalShellMesh(), and oomph::CircularCylindricalShellMesh< ELEMENT >::scaled_x().
|
private |
Axial extent of the squashed boundary layer part of the mesh occupied by Nx_bl elements (at each end of the tube)
Definition at line 201 of file circular_shell_mesh.template.h.
Referenced by oomph::CircularCylindricalShellMesh< ELEMENT >::CircularCylindricalShellMesh(), and oomph::CircularCylindricalShellMesh< ELEMENT >::piecewise_linear_axial_bl_stretching_fct().
|
private |
Number of azimuthal element layers that get squashed into each of the the two boundary layers at the ends of the tube.
Definition at line 197 of file circular_shell_mesh.template.h.
Referenced by oomph::CircularCylindricalShellMesh< ELEMENT >::CircularCylindricalShellMesh(), and oomph::CircularCylindricalShellMesh< ELEMENT >::piecewise_linear_axial_bl_stretching_fct().