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.