26 #ifndef OOMPH_CIRCULAR_SHELL_MESH_HEADER
27 #define OOMPH_CIRCULAR_SHELL_MESH_HEADER
31 #include <oomph-lib-config.h>
35 #include "../generic/mesh.h"
36 #include "../generic/matrices.h"
37 #include "../generic/quadtree.h"
38 #include "../generic/quad_mesh.h"
50 template<
class ELEMENT>
53 public virtual SolidMesh
65 TimeStepper* time_stepper_pt = &Mesh::Default_TimeStepper)
89 TimeStepper* time_stepper_pt = &Mesh::Default_TimeStepper)
111 const unsigned& nx_bl,
112 const double& delta_bl,
113 TimeStepper* time_stepper_pt = &Mesh::Default_TimeStepper)
168 double lx = this->
Xmax - this->
Xmin;
171 double old_delta_bl = double(
Nx_bl) * lx / double(this->
Nx);
174 if (xi < old_delta_bl)
176 tmp_xi = xi *
Delta_bl / old_delta_bl;
178 else if (xi < (lx - old_delta_bl))
180 tmp_xi =
Delta_bl + (xi - old_delta_bl) / (lx - 2.0 * old_delta_bl) *
186 tmp_xi = end_x + (xi - (lx - old_delta_bl)) / old_delta_bl *
Delta_bl;
A 2D solid mesh for (topologically) circular cylindrical shells. The shell is represented by two Lagr...
void build_mesh(const unsigned &nx, const unsigned &ny, const double &lx, const double &ly)
Mesh build helper fct.
void assign_undeformed_positions(GeomObject *const &undeformed_midplane_pt)
In all elastic problems, the nodes must be assigned an undeformed, or reference, position,...
unsigned Nx_bl
Number of azimuthal element layers that get squashed into each of the the two boundary layers at the ...
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 fo...
double scaled_x(const double &x)
Fct that defines the axial stretching to accomodate bending boundary layers.
AxialBLStretchingFctPt Axial_bl_stretching_fct_pt
Fct pointer to fct that defines the axial stretching fct.
double piecewise_linear_axial_bl_stretching_fct(const double &xi)
Default axial scaling fct.
double(* AxialBLStretchingFctPt)(const double &x)
Typedef for fct that defines the axial stretching fct.
double Delta_bl
Axial extent of the squashed boundary layer part of the mesh occupied by Nx_bl elements (at each end ...
AxialBLStretchingFctPt axial_bl_stretching_fct_pt() const
Access to fct pointer to fct that defines the axial stretching fct.
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...
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.
RectangularQuadMesh is a two-dimensional mesh of Quad elements with Nx elements in the "x" (horizonal...
unsigned Nx
Nx: number of elements in x-direction.
const unsigned & ny() const
Return number of elements in y direction.
double Xmax
Maximum value of x coordinate.
const unsigned & nx() const
Return number of elements in x direction.
double Xmin
Minimum value of x coordinate.
////////////////////////////////////////////////////////////////////// //////////////////////////////...