26 #ifndef OOMPH_CYLINDER_WITH_FLAG_MESH_HEADER
27 #define OOMPH_CYLINDER_WITH_FLAG_MESH_HEADER
34 #include "../generic/refineable_quad_mesh.h"
35 #include "../generic/quad_mesh.h"
38 #include "../generic/algebraic_elements.h"
47 template<
class ELEMENT>
58 GeomObject* top_flag_pt,
59 GeomObject* bottom_flag_pt,
60 GeomObject* tip_flag_pt,
63 const double& flag_length,
64 const double& flag_height,
65 const double& centre_x,
66 const double& centre_y,
68 TimeStepper* time_stepper_pt = &Mesh::Default_TimeStepper);
97 template<
class ELEMENT>
99 public RefineableQuadMesh<ELEMENT>
109 GeomObject* top_flag_pt,
110 GeomObject* bottom_flag_pt,
111 GeomObject* tip_flag_pt,
112 const double& length,
113 const double& height,
114 const double& flag_length,
115 const double& flag_height,
116 const double& centre_x,
117 const double& centre_y,
119 TimeStepper* time_stepper_pt = &Mesh::Default_TimeStepper)
137 this->setup_quadtree_forest();
154 template<
class ELEMENT>
156 :
public AlgebraicMesh,
170 const double& length,
171 const double& height,
172 const double& flag_length,
173 const double& flag_height,
174 const double& centre_x,
175 const double& centre_y,
177 TimeStepper* time_stepper_pt = &Mesh::Default_TimeStepper)
204 AlgebraicMesh::add_geom_object_list_pt(cylinder_pt);
205 AlgebraicMesh::add_geom_object_list_pt(
top_flag_pt);
207 AlgebraicMesh::add_geom_object_list_pt(
tip_flag_pt);
282 void node_update_I(
const unsigned& t, AlgebraicNode*& node_pt);
294 void node_update_V(
const unsigned& t, AlgebraicNode*& node_pt);
350 template<
class ELEMENT>
352 :
public RefineableQuadMesh<ELEMENT>,
366 const double& length,
367 const double& height,
368 const double& flag_length,
369 const double& flag_height,
370 const double& centre_x,
371 const double& centre_y,
373 TimeStepper* time_stepper_pt = &Mesh::Default_TimeStepper)
400 this->setup_quadtree_forest();
/////////////////////////////////////////////////////////////////////// /////////////////////////////...
void node_update_V(const unsigned &t, AlgebraicNode *&node_pt)
Helper function.
GeomObject * top_flag_pt() const
Read-only access to geometric object that defines the top face of the flag.
void set_tip_flag_pt(GeomObject *tip_flag_pt)
Set the geometric object that defines the tip of the flag.
void node_update_II(const unsigned &t, AlgebraicNode *&node_pt)
Helper function.
double Height
Height of the domain.
AlgebraicCylinderWithFlagMesh(Circle *cylinder_pt, GeomObject *top_flag_pt, GeomObject *bottom_flag_pt, GeomObject *tip_flag_pt, const double &length, const double &height, const double &flag_length, const double &flag_height, const double ¢re_x, const double ¢re_y, const double &a, TimeStepper *time_stepper_pt=&Mesh::Default_TimeStepper)
Constructor. Pass the pointers to the GeomObjects that parametrise the cylinder, the three edges of t...
GeomObject * Top_flag_pt
Top flag.
double Centre_x
x position of the centre of the cylinder
void node_update_III(const unsigned &t, AlgebraicNode *&node_pt)
Helper function.
GeomObject * Cylinder_pt
Cylinder.
void algebraic_node_update(const unsigned &t, AlgebraicNode *&node_pt)
Update nodal position at time level t (t=0: present; t>0: previous)
void node_update_IV(const unsigned &t, AlgebraicNode *&node_pt)
Helper function.
void set_bottom_flag_pt(GeomObject *bottom_flag_pt)
Set geometric object that defines the bottom face of the flag.
double Centre_y
x position of the centre of the cylinder
void node_update_I(const unsigned &t, AlgebraicNode *&node_pt)
Helper function.
double Length
Length of the domain.
double Flag_height
Flag thickness.
double Flag_length
Flag length.
void node_update_VIII(const unsigned &t, AlgebraicNode *&node_pt)
Helper function.
void node_update_VI(const unsigned &t, AlgebraicNode *&node_pt)
Helper function.
GeomObject * bottom_flag_pt() const
Read-only access to geometric object that defines the bottom face of the flag.
void set_top_flag_pt(GeomObject *top_flag_pt)
Set the geometric object that defines the top face of the flag.
void update_node_update(AlgebraicNode *&node_pt)
Update the geometric references that are used to update node after mesh adaptation....
double A
radius of the cylinder
void node_update_VII(const unsigned &t, AlgebraicNode *&node_pt)
Helper function.
GeomObject * Bottom_flag_pt
Bottom flag.
virtual ~AlgebraicCylinderWithFlagMesh()
Destructor: empty.
GeomObject * Tip_flag_pt
Tip flag.
void setup_algebraic_node_update()
Function to setup the algebraic node update.
GeomObject * tip_flag_pt() const
Read-only access to geometric object that defines the tip of the flag.
void node_update_IX(const unsigned &t, AlgebraicNode *&node_pt)
Helper function.
Domain for cylinder with flag as in Turek benchmark.
GeomObject *& top_flag_pt()
GeomObject *& bottom_flag_pt()
Access fct to GeomObjects for top, bottom and tip.
GeomObject *& tip_flag_pt()
Domain-based mesh for cylinder with flag as in Turek benchmark.
virtual ~CylinderWithFlagMesh()
Destructor: Kill the domain.
CylinderWithFlagDomain * Domain_pt
Pointer to the domain.
CylinderWithFlagMesh(Circle *cylinder_pt, GeomObject *top_flag_pt, GeomObject *bottom_flag_pt, GeomObject *tip_flag_pt, const double &length, const double &height, const double &flag_length, const double &flag_height, const double ¢re_x, const double ¢re_y, const double &a, TimeStepper *time_stepper_pt=&Mesh::Default_TimeStepper)
Constructor. Pass the pointers to the GeomObjects that parametrise the cylinder, the three edges of t...
CylinderWithFlagDomain * domain_pt()
Access function to the domain.
//////////////////////////////////////////////////////////////////////// ////////////////////////////...
void update_node_update(AlgebraicNode *&node_pt)
Update the node update data for specified node following any mesh adapation.
RefineableAlgebraicCylinderWithFlagMesh(Circle *cylinder_pt, GeomObject *top_flag_pt, GeomObject *bottom_flag_pt, GeomObject *tip_flag_pt, const double &length, const double &height, const double &flag_length, const double &flag_height, const double ¢re_x, const double ¢re_y, const double &a, TimeStepper *time_stepper_pt=&Mesh::Default_TimeStepper)
Constructor: Pass the pointers to the GeomObjects that parametrise the cylinder, the three edges of t...
/////////////////////////////////////////////////////////////////////// /////////////////////////////...
virtual ~RefineableCylinderWithFlagMesh()
Destructor: Empty.
RefineableCylinderWithFlagMesh(Circle *cylinder_pt, GeomObject *top_flag_pt, GeomObject *bottom_flag_pt, GeomObject *tip_flag_pt, const double &length, const double &height, const double &flag_length, const double &flag_height, const double ¢re_x, const double ¢re_y, const double &a, TimeStepper *time_stepper_pt=&Mesh::Default_TimeStepper)
Constructor. Pass the pointers to the GeomObjects that parametrise the cylinder, the three edges of t...
////////////////////////////////////////////////////////////////////// //////////////////////////////...