27#ifndef OOMPH_FULL_CIRCLE_MESH_TEMPLATE_CC
28#define OOMPH_FULL_CIRCLE_MESH_TEMPLATE_CC
39 template<
class ELEMENT>
51 "This mesh is hard coded to only work for the case when there are 5 "
52 "elements: the central square and 4 surrounding elements, but you gave "
53 "vectors inconsistent with this.";
60 MeshChecker::assert_geometric_element<QElementGeometricBase, ELEMENT>(2);
72 const unsigned nelem = 5;
194 for (
unsigned i = 0;
i < 2;
i++)
196 double error = std::fabs(
203 oomph_info <<
"Error in node killing for i " <<
i <<
" "
204 <<
error << std::endl;
278 for (
unsigned i = 0;
i < 2;
i++)
280 double error = std::fabs(
287 oomph_info <<
"Error in node killing for i " <<
i <<
" "
288 <<
error << std::endl;
304 if ((
i0 == 0) && (
i1 != 0))
315 for (
unsigned i = 0;
i < 2;
i++)
317 double error = std::fabs(
324 oomph_info <<
"Error in node killing for i " <<
i <<
" "
325 <<
error << std::endl;
399 for (
unsigned i = 0;
i < 2;
i++)
401 double error = std::fabs(
408 oomph_info <<
"Error in node killing for i " <<
i <<
" "
409 <<
error << std::endl;
424 if ((
i1 == 0) && (
i0 !=
n_p - 1))
435 for (
unsigned i = 0;
i < 2;
i++)
437 double error = std::fabs(
444 oomph_info <<
"Error in node killing for i " <<
i <<
" "
445 <<
error << std::endl;
517 for (
unsigned i = 0;
i < 2;
i++)
519 double error = std::fabs(
526 oomph_info <<
"Error in node killing for i " <<
i <<
" "
527 <<
error << std::endl;
553 for (
unsigned i = 0;
i < 2;
i++)
555 double error = std::fabs(
562 oomph_info <<
"Error in node killing for i " <<
i <<
" "
563 <<
error << std::endl;
578 if ((
i1 == 0) && (
i0 !=
n_p - 1))
589 for (
unsigned i = 0;
i < 2;
i++)
591 double error = std::fabs(
598 oomph_info <<
"Error in node killing for i " <<
i <<
" "
599 <<
error << std::endl;
651 <<
"The most probable cause is that the domain is not\n"
652 <<
"compatible with the mesh.\n"
653 <<
"For the FullCircleMesh, the domain must be\n"
654 <<
"topologically consistent with a quarter tube with a\n"
655 <<
"non-curved centreline.\n";
MacroElement * macro_element_pt(const unsigned &i)
Access to i-th macro element.
double size() const
Calculate the size of the element (length, area, volume,...) in Eulerian computational coordinates....
virtual Node * construct_node(const unsigned &n)
Construct the local node n and return a pointer to the newly created node object.
Node *& node_pt(const unsigned &n)
Return a pointer to the local node n.
virtual unsigned nnode_1d() const
Return the number of nodes along one edge of the element Default is to return zero — must be overload...
Topologically circular domain, e.g. a tube cross section. The entire domain must be defined by a Geom...
FullCircleDomain * Domain_pt
Pointer to domain.
GeomObject *& area_pt()
Access function to GeomObject representing wall.
FullCircleMesh(GeomObject *wall_pt, const Vector< double > &theta_positions, const Vector< double > &radius_box, TimeStepper *time_stepper_pt=&Mesh::Default_TimeStepper)
Constructor: Pass pointer to geometric object that specifies the area; values of theta at which divid...
/////////////////////////////////////////////////////////////////////
void macro_map(const Vector< double > &s, Vector< double > &r)
The mapping from local to global coordinates at the current time : r(s)
void add_boundary_node(const unsigned &b, Node *const &node_pt)
Add a (pointer to) a node to the b-th boundary.
Vector< Node * > Node_pt
Vector of pointers to nodes.
std::vector< bool > Boundary_coordinate_exists
Vector of boolean data that indicates whether the boundary coordinates have been set for the boundary...
FiniteElement * finite_element_pt(const unsigned &e) const
Upcast (downcast?) to FiniteElement (needed to access FiniteElement member functions).
void set_nboundary(const unsigned &nbound)
Set the number of boundaries in the mesh.
Node *& node_pt(const unsigned long &n)
Return pointer to global node n.
void convert_to_boundary_node(Node *&node_pt, const Vector< FiniteElement * > &finite_element_pt)
A function that upgrades an ordinary node to a boundary node We shouldn't ever really use this,...
Vector< GeneralisedElement * > Element_pt
Vector of pointers to generalised elements.
Nodes are derived from Data, but, in addition, have a definite (Eulerian) position in a space of a gi...
double & x(const unsigned &i)
Return the i-th nodal coordinate.
An OomphLibError object which should be thrown when an run-time error is encountered....
void setup_boundary_element_info()
Setup lookup schemes which establish whic elements are located next to mesh's boundaries (wrapper to ...
//////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////// //////////////////////////////...
const double Pi
50 digits from maple
//////////////////////////////////////////////////////////////////// ////////////////////////////////...
OomphInfo oomph_info
Single (global) instantiation of the OomphInfo object – this is used throughout the library as a "rep...