27 #ifndef OOMPH_QUARTER_PIPE_MESH_TEMPLATE_HEADER
28 #define OOMPH_QUARTER_PIPE_MESH_TEMPLATE_HEADER
31 #include "../generic/mesh.h"
32 #include "../generic/brick_mesh.h"
33 #include "../generic/refineable_brick_mesh.h"
38 #include "../generic/macro_element.h"
39 #include "../generic/domain.h"
51 template<
class ELEMENT>
63 TimeStepper* time_stepper_pt = &Mesh::Default_TimeStepper);
117 template<
class ELEMENT>
119 public RefineableBrickMesh<ELEMENT>
125 const unsigned& ntheta,
130 const double& length,
131 TimeStepper* time_stepper_pt = &Mesh::Default_TimeStepper)
133 ntheta, nr,
nz, 1.0, 1.0, 1.0, time_stepper_pt),
135 ntheta, nr,
nz, rmin, rmax, length, time_stepper_pt)
139 Vector<TreeRoot*> trees_pt;
140 for (
unsigned iel = 0; iel < (nr * ntheta *
nz); iel++)
143 ELEMENT* ref_el_pt =
dynamic_cast<ELEMENT*
>(el_pt);
144 OcTreeRoot* octree_root_pt =
new OcTreeRoot(ref_el_pt);
145 trees_pt.push_back(octree_root_pt);
148 this->Forest_pt =
new OcTreeForest(trees_pt);
155 delete this->Forest_pt;
170 template<
class ELEMENT>
172 public virtual SolidMesh
180 const unsigned& ntheta,
185 const double& length,
186 TimeStepper* time_stepper_pt = &Mesh::Default_TimeStepper)
188 ntheta, nr,
nz, 1.0, 1.0, 1.0, time_stepper_pt),
190 ntheta, nr,
nz, rmin, rmax, length, time_stepper_pt)
195 set_lagrangian_nodal_coordinates();
208 template<
class ELEMENT>
211 public RefineableBrickMesh<ELEMENT>
219 const unsigned& ntheta,
224 const double& length,
225 TimeStepper* time_stepper_pt = &Mesh::Default_TimeStepper)
227 ntheta, nr,
nz, 1.0, 1.0, 1.0, time_stepper_pt),
229 ntheta, nr,
nz, rmin, rmax, length, time_stepper_pt),
231 ntheta, nr,
nz, rmin, rmax, length, time_stepper_pt)
235 Vector<TreeRoot*> trees_pt;
236 for (
unsigned iel = 0; iel < (nr * ntheta *
nz); iel++)
239 ELEMENT* ref_el_pt =
dynamic_cast<ELEMENT*
>(el_pt);
240 OcTreeRoot* octree_root_pt =
new OcTreeRoot(ref_el_pt);
241 trees_pt.push_back(octree_root_pt);
243 this->Forest_pt =
new OcTreeForest(trees_pt);
246 unsigned n_element = this->nelement();
247 for (
unsigned e = 0; e < n_element; e++)
250 ELEMENT* el_pt =
dynamic_cast<ELEMENT*
>(this->element_pt(e));
255 el_pt->set_undeformed_macro_elem_pt(
262 ->enable_use_of_undeformed_macro_element_for_new_lagrangian_coords();
/////////////////////////////////////////////////////////////////////// /////////////////////////////...
ElasticQuarterPipeMesh(const unsigned &ntheta, const unsigned &nr, const unsigned &nz, const double &rmin, const double &rmax, const double &length, TimeStepper *time_stepper_pt=&Mesh::Default_TimeStepper)
Constructor: Pass number of elements in various directions, the inner and outer radius and the length...
/////////////////////////////////////////////////////////////////////// /////////////////////////////...
ElasticRefineableQuarterPipeMesh(const unsigned &ntheta, const unsigned &nr, const unsigned &nz, const double &rmin, const double &rmax, const double &length, TimeStepper *time_stepper_pt=&Mesh::Default_TimeStepper)
Constructor: Pass number of elements in various directions, the inner and outer radius and the length...
Domain representing a quarter pipe.
Non refineable quarter pipe mesh class Deform a simple cubic mesh into a quarter pipe r: radial direc...
QuarterPipeDomain * Domain_pt
Pointer to domain.
unsigned Nz
Number of elements axial direction.
QuarterPipeMesh(const unsigned &ntheta, const unsigned &nr, const unsigned &nz, const double &rmin, const double &rmax, const double &length, TimeStepper *time_stepper_pt=&Mesh::Default_TimeStepper)
Constructor: Pass number of elements in various directions, the inner and outer radius and the length...
virtual ~QuarterPipeMesh()
Empty Destructor.
unsigned Nr
Number of elements radial direction.
QuarterPipeDomain * domain_pt()
Access function to domain.
unsigned Ntheta
Number of elements azimuthal direction.
QuarterPipeDomain * domain_pt() const
Access function to underlying domain.
/////////////////////////////////////////////////////////////////////// /////////////////////////////...
RefineableQuarterPipeMesh(const unsigned &ntheta, const unsigned &nr, const unsigned &nz, const double &rmin, const double &rmax, const double &length, TimeStepper *time_stepper_pt=&Mesh::Default_TimeStepper)
Constructor: Pass number of elements in various directions, the inner and outer radius and the length...
virtual ~RefineableQuarterPipeMesh()
Destructor – delete forest.
Simple cubic 3D Brick mesh class.
const unsigned & nz() const
Access function for number of elements in y directions.
////////////////////////////////////////////////////////////////////// //////////////////////////////...