30 #ifndef OOMPH_ANNULAR_MESH_TEMPLATE_CC 31 #define OOMPH_ANNULAR_MESH_TEMPLATE_CC 44 template<
class ELEMENT>
48 const double& azimuthal_fraction,
56 Vector<double> base(2);
58 const unsigned n_node = this->nnode();
59 for(
unsigned n=0;n<n_node;n++)
62 Node* nod_pt = this->node_pt(n);
67 xi[0] = (1.0-1.0e-10)*(-azimuthal_fraction*nod_pt->x(0))*
68 2.0*MathematicalConstants::Pi+
69 MathematicalConstants::Pi-
70 (1.0-azimuthal_fraction)*2.0*MathematicalConstants::Pi;
76 double w = nod_pt->x(1);
79 ellipse.position(xi,base);
82 double norm = sqrt(base[0]*base[0] + base[1]*base[1]);
87 nod_pt->x(0) = base[0] + w*(h+a-norm)*N[0];
88 nod_pt->x(1) = base[1] + w*(h+a-norm)*N[1];
91 Vector<double> xi_bound(1);
94 if(nod_pt->is_on_boundary(0))
96 xi_bound[0]=atan2(nod_pt->x(1),nod_pt->x(0));
97 nod_pt->set_coordinates_on_boundary(0,xi_bound);
101 if(nod_pt->is_on_boundary(1))
103 xi_bound[0]=sqrt(pow(nod_pt->x(0),2)+pow(nod_pt->x(1),2));
104 nod_pt->set_coordinates_on_boundary(1,xi_bound);
108 if(nod_pt->is_on_boundary(2))
110 xi_bound[0]=atan2(nod_pt->x(1),nod_pt->x(0));
111 nod_pt->set_coordinates_on_boundary(2,xi_bound);
115 if(nod_pt->is_on_boundary(3))
117 xi_bound[0]=sqrt(pow(nod_pt->x(0),2)+pow(nod_pt->x(1),2));
118 nod_pt->set_coordinates_on_boundary(3,xi_bound);
122 this->Boundary_coordinate_exists[0]=
true;
123 this->Boundary_coordinate_exists[1]=
true;
124 this->Boundary_coordinate_exists[2]=
true;
125 this->Boundary_coordinate_exists[3]=
true;
void wrap_into_annular_shape(const double &a, const double &h, const double &azimuthal_fraction, const double &phi)
Wrap mesh into annular shape.