30 #ifndef OOMPH_TUBE_MESH_HEADER    31 #define OOMPH_TUBE_MESH_HEADER    34 #include "../generic/refineable_brick_mesh.h"    35 #include "../generic/macro_element.h"    36 #include "../generic/domain.h"    37 #include "../generic/algebraic_elements.h"    38 #include "../generic/brick_mesh.h"    39 #include "../generic/macro_element_node_update_element.h"    61 template <
class ELEMENT>
    75            const Vector<double> ¢reline_limits,
    76            const Vector<double> &theta_positions,  
    77            const Vector<double> &radius_box, 
    78            const unsigned& nlayer,
    79            TimeStepper* time_stepper_pt=
    80            &Mesh::Default_TimeStepper);
   130 template<
class ELEMENT> 
   132   public RefineableBrickMesh<ELEMENT>
   147                     const Vector<double> ¢reline_limits,
   148                     const Vector<double> &theta_positions,  
   149                     const Vector<double> &radius_box, 
   150                     const unsigned& nlayer,
   151                     TimeStepper* time_stepper_pt=
   152                     &Mesh::Default_TimeStepper):
   153  TubeMesh<ELEMENT>(wall_pt,centreline_limits,theta_positions,
   155                    nlayer,time_stepper_pt)
   158   for (
unsigned ielem=0;ielem<TubeMesh<ELEMENT>::nelement();ielem++)
   160      dynamic_cast<RefineableQElement<3>*
>(
   162       set_macro_elem_pt(this->
Domain_pt->macro_element_pt(ielem));
   168    Vector<TreeRoot*> trees_pt;
   169    for (
unsigned iel=0;iel<TubeMesh<ELEMENT>::nelement();iel++)
   172      ELEMENT* ref_el_pt=
dynamic_cast<ELEMENT*
>(el_pt);
   173      OcTreeRoot* octree_root_pt=
new OcTreeRoot(ref_el_pt);
   174      trees_pt.push_back(octree_root_pt);
   176    this->Forest_pt = 
new OcTreeForest(trees_pt);
   180    unsigned success_flag=
   181     dynamic_cast<OcTreeForest*
>(this->Forest_pt)->self_test();
   184      oomph_info << 
"Successfully built octree forest " << std::endl;
   189       "Trouble in building octree forest ",
   190       OOMPH_CURRENT_FUNCTION,
   191       OOMPH_EXCEPTION_LOCATION);
 TubeMesh(GeomObject *wall_pt, const Vector< double > ¢reline_limits, const Vector< double > &theta_positions, const Vector< double > &radius_box, const unsigned &nlayer, TimeStepper *time_stepper_pt=&Mesh::Default_TimeStepper)
Constructor: Pass pointer to geometric object that specifies the volume, start and end coordinates fo...
 
RefineableTubeMesh(GeomObject *wall_pt, const Vector< double > ¢reline_limits, const Vector< double > &theta_positions, const Vector< double > &radius_box, const unsigned &nlayer, TimeStepper *time_stepper_pt=&Mesh::Default_TimeStepper)
Constructor for adaptive deformable quarter tube mesh class. Pass pointer to geometric object that sp...
 
TubeDomain * domain_pt()
Access function to domain. 
 
TubeDomain * domain_pt() const
Access function to underlying domain. 
 
Tube as a domain. The entire domain must be defined by a GeomObject with the following convention: ze...
 
virtual ~RefineableTubeMesh()
Destructor: empty. 
 
GeomObject * Volume_pt
Pointer to the geometric object that represents the curved wall. 
 
TubeDomain * Domain_pt
Pointer to domain. 
 
GeomObject *& volume_pt()
Access function to GeomObject representing wall. 
 
virtual ~TubeMesh()
Destructor: empty. 
 
3D tube mesh class. The domain is specified by the GeomObject that identifies the entire volume...