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>
 
  117   template<
class ELEMENT>
 
  125       const unsigned& ntheta,
 
  130       const double& length,
 
  133           ntheta, nr, 
nz, 1.0, 1.0, 1.0, time_stepper_pt),
 
  135           ntheta, nr, 
nz, rmin, rmax, length, time_stepper_pt)
 
  140       for (
unsigned iel = 0; iel < (nr * ntheta * 
nz); iel++)
 
  143         ELEMENT* ref_el_pt = 
dynamic_cast<ELEMENT*
>(el_pt);
 
  145         trees_pt.push_back(octree_root_pt);
 
  170   template<
class ELEMENT>
 
  180       const unsigned& ntheta,
 
  185       const double& length,
 
  188           ntheta, nr, 
nz, 1.0, 1.0, 1.0, time_stepper_pt),
 
  190           ntheta, nr, 
nz, rmin, rmax, length, time_stepper_pt)
 
  208   template<
class ELEMENT>
 
  219       const unsigned& ntheta,
 
  224       const double& length,
 
  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)
 
  236       for (
unsigned iel = 0; iel < (nr * ntheta * 
nz); iel++)
 
  239         ELEMENT* ref_el_pt = 
dynamic_cast<ELEMENT*
>(el_pt);
 
  241         trees_pt.push_back(octree_root_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();
 
MacroElement * macro_element_pt(const unsigned &i)
Access to i-th macro element.
 
/////////////////////////////////////////////////////////////////////// /////////////////////////////...
 
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...
 
A general Finite Element class.
 
static Steady< 0 > Default_TimeStepper
Default Steady Timestepper, to be used in default arguments to Mesh constructors.
 
FiniteElement * finite_element_pt(const unsigned &e) const
Upcast (downcast?) to FiniteElement (needed to access FiniteElement member functions).
 
const Vector< GeneralisedElement * > & element_pt() const
Return reference to the Vector of elements.
 
unsigned long nelement() const
Return number of elements in the mesh.
 
/////////////////////////////////////////////////////////////////////// /////////////////////////////...
 
OcTreeRoot is a OcTree that forms the root of a (recursive) octree. The "root node" is special as it ...
 
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.
 
Intermediate mesh class that implements the mesh adaptation functions specified in the TreeBasedRefin...
 
/////////////////////////////////////////////////////////////////////// /////////////////////////////...
 
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.
 
void set_lagrangian_nodal_coordinates()
Make the current configuration the undeformed one by setting the nodal Lagrangian coordinates to thei...
 
////////////////////////////////////////////////////////////////////// //////////////////////////////...
 
TreeForest * Forest_pt
Forest representation of the mesh.
 
A slight extension to the standard template vector class so that we can include "graceful" array rang...
 
//////////////////////////////////////////////////////////////////// ////////////////////////////////...