30 #ifndef OOMPH_QUARTER_PIPE_MESH_TEMPLATE_CC 31 #define OOMPH_QUARTER_PIPE_MESH_TEMPLATE_CC 44 template<
class ELEMENT>
56 MeshChecker::assert_geometric_element<QElementGeometricBase,ELEMENT>(3);
71 for (
unsigned e=0;
e<nel;
e++)
87 for (
unsigned j=0;j<nnod;j++)
93 double x=nod_pt->
x(0);
94 double y=nod_pt->
x(1);
95 double z=nod_pt->
x(2);
98 double phi=atan2(y,x);
virtual void set_coordinates_on_boundary(const unsigned &b, const unsigned &k, const Vector< double > &boundary_zeta)
Set the vector of the k-th generalised boundary coordinates on mesh boundary b. Broken virtual interf...
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...
Node *& boundary_node_pt(const unsigned &b, const unsigned &n)
Return pointer to node n on boundary b.
const unsigned & nz() const
Access function for number of elements in y directions.
std::vector< bool > Boundary_coordinate_exists
Vector of boolean data that indicates whether the boundary coordinates have been set for the boundary...
Simple cubic 3D Brick mesh class.
A general Finite Element class.
MacroElement * macro_element_pt(const unsigned &i)
Access to i-th macro element.
Nodes are derived from Data, but, in addition, have a definite (Eulerian) position in a space of a gi...
unsigned long nboundary_node(const unsigned &ibound) const
Return number of nodes on a particular boundary.
QuarterPipeDomain * Domain_pt
Pointer to domain.
unsigned long nelement() const
Return number of elements in the mesh.
virtual void set_macro_elem_pt(MacroElement *macro_elem_pt)
Set pointer to macro element – can be overloaded in derived elements to perform additional tasks...
double & x(const unsigned &i)
Return the i-th nodal coordinate.
unsigned Nz
Number of elements axial direction.
unsigned Nr
Number of elements radial direction.
Domain representing a quarter pipe.
virtual void node_update(const bool &update_all_solid_nodes=false)
Update nodal positions in response to changes in the domain shape. Uses the FiniteElement::get_x(...) function for FiniteElements and doesn't do anything for other element types. If a MacroElement pointer has been set for a FiniteElement, the MacroElement representation is used to update the nodal positions; if not get_x(...) uses the FE interpolation and thus leaves the nodal positions unchanged. Virtual, so it can be overloaded by specific meshes, such as AlgebraicMeshes or SpineMeshes. Generally, this function updates the position of all nodes in response to changes in the boundary position. However, we ignore all SolidNodes since their position is computed as part of the solution – unless the bool flag is set to true. Such calls are typically made when the initial mesh is created and/or after a mesh has been refined repeatedly before the start of the computation.
const Vector< GeneralisedElement * > & element_pt() const
Return reference to the Vector of elements.
unsigned Ntheta
Number of elements azimuthal direction.
Base class for time-stepping schemes. Timestepper provides an approximation of the temporal derivativ...