31 #ifndef OOMPH_QUARTER_PIPE_MESH_TEMPLATE_HEADER 32 #define OOMPH_QUARTER_PIPE_MESH_TEMPLATE_HEADER 35 #include "../generic/mesh.h" 36 #include "../generic/brick_mesh.h" 37 #include "../generic/refineable_brick_mesh.h" 42 #include "../generic/macro_element.h" 43 #include "../generic/domain.h" 58 template <
class ELEMENT>
67 const unsigned &ntheta,
const unsigned &nr,
const unsigned &
nz,
68 const double &rmin,
const double &rmax,
70 TimeStepper* time_stepper_pt=&Mesh::Default_TimeStepper);
121 template <
class ELEMENT>
124 public RefineableBrickMesh<ELEMENT>
132 const unsigned &ntheta,
const unsigned &nr,
const unsigned &
nz,
133 const double &rmin,
const double &rmax,
const double &length,
134 TimeStepper* time_stepper_pt=&Mesh::Default_TimeStepper) :
136 QuarterPipeMesh<ELEMENT>(ntheta,nr,nz,rmin,rmax,length,time_stepper_pt)
141 Vector<TreeRoot*> trees_pt;
142 for (
unsigned iel=0;iel<(nr*ntheta*
nz);iel++)
145 ELEMENT* ref_el_pt=
dynamic_cast<ELEMENT*
>(el_pt);
146 OcTreeRoot* octree_root_pt=
new OcTreeRoot(ref_el_pt);
147 trees_pt.push_back(octree_root_pt);
150 this->Forest_pt =
new OcTreeForest(trees_pt);
157 delete this->Forest_pt;
174 template <
class ELEMENT>
177 public virtual SolidMesh
188 const unsigned &
nz,
const double &rmin,
189 const double &rmax,
const double &length,
190 TimeStepper* time_stepper_pt=
191 &Mesh::Default_TimeStepper) :
193 QuarterPipeMesh<ELEMENT>(ntheta,nr,nz,rmin,rmax,length,time_stepper_pt)
198 set_lagrangian_nodal_coordinates();
214 template <
class ELEMENT>
217 public RefineableBrickMesh<ELEMENT>
227 const unsigned &
nz,
const double &rmin,
228 const double &rmax,
const double &length,
229 TimeStepper* time_stepper_pt=
230 &Mesh::Default_TimeStepper) :
232 QuarterPipeMesh<ELEMENT>(ntheta,nr,nz,rmin,rmax,length,time_stepper_pt),
238 Vector<TreeRoot*> trees_pt;
239 for (
unsigned iel=0;iel<(nr*ntheta*
nz);iel++)
242 ELEMENT* ref_el_pt=
dynamic_cast<ELEMENT*
>(el_pt);
243 OcTreeRoot* octree_root_pt=
new OcTreeRoot(ref_el_pt);
244 trees_pt.push_back(octree_root_pt);
246 this->Forest_pt =
new OcTreeForest(trees_pt);
249 unsigned n_element=this->nelement();
250 for (
unsigned e=0;e<n_element;e++)
253 ELEMENT* el_pt=
dynamic_cast<ELEMENT*
>(this->element_pt(e));
258 el_pt->set_undeformed_macro_elem_pt(this->
264 el_pt->enable_use_of_undeformed_macro_element_for_new_lagrangian_coords();
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...
const unsigned & nz() const
Access function for number of elements in y directions.
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...
Simple cubic 3D Brick mesh class.
QuarterPipeDomain * domain_pt() const
Access function to underlying domain.
Refineable elastic quarter pipe mesh class.
QuarterPipeDomain * Domain_pt
Pointer to domain.
QuarterPipeDomain * domain_pt()
Access function to domain.
unsigned Nz
Number of elements axial direction.
unsigned Nr
Number of elements radial direction.
Refineable quarter pipe mesh class.
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...
Domain representing a quarter pipe.
virtual ~QuarterPipeMesh()
Empty Destructor.
unsigned Ntheta
Number of elements azimuthal direction.
virtual ~RefineableQuarterPipeMesh()
Destructor – delete forest.