26 #ifndef OOMPH_ANNULAR_DOMAIN_HEADER
27 #define OOMPH_ANNULAR_DOMAIN_HEADER
30 #include "../generic/quadtree.h"
31 #include "../generic/domain.h"
32 #include "../generic/geom_objects.h"
46 const unsigned& ntheta,
58 const unsigned n_macro = ntheta * nr;
59 Macro_element_pt.resize(n_macro);
62 for (
unsigned i = 0; i < n_macro; i++)
64 Macro_element_pt[i] =
new QMacroElement<2>(
this, i);
83 const unsigned& i_macro,
84 const unsigned& i_direct,
85 const Vector<double>& s,
120 const unsigned& imacro,
121 const unsigned& idirect,
122 const Vector<double>& s,
125 using namespace QuadTreeNames;
128 unsigned i_theta = imacro %
Ntheta;
129 unsigned i_r = (imacro - i_theta) /
Ntheta;
133 double(i_theta) / double(
Ntheta);
136 double(i_theta + 1) / double(
Ntheta);
140 theta_lo = -MathematicalConstants::Pi +
142 theta_hi = -MathematicalConstants::Pi +
157 theta = theta_lo + 0.5 * (s[0] + 1.0) * (theta_hi - theta_lo);
164 theta = theta_lo + 0.5 * (s[0] + 1.0) * (theta_hi - theta_lo);
172 r = r_lo + 0.5 * (s[0] + 1.0) * (r_hi - r_lo);
179 r = r_lo + 0.5 * (s[0] + 1.0) * (r_hi - r_lo);
184 std::ostringstream error_stream;
185 error_stream <<
"idirect is " << idirect <<
" not one of N, S, W, E"
189 error_stream.str(), OOMPH_CURRENT_FUNCTION, OOMPH_EXCEPTION_LOCATION);
192 f[0] = r * cos(theta +
Phi);
193 f[1] = r * sin(theta +
Phi);
double Phi
Rotation angle.
unsigned Nr
Number of macro elements in radial direction.
AnnularDomain(const AnnularDomain &)=delete
Broken copy constructor.
double Thickness
Thickness.
double Inner_radius
Inner radius.
unsigned Ntheta
Number of macro elements in azimuthal direction.
~AnnularDomain()
Destructor: Empty; cleanup done in base class.
AnnularDomain(const double &azimuthal_fraction, const unsigned &ntheta, const unsigned &nr, const double &a, const double &h, const double &phi)
Constructor: Specify azimuthal fraction (1.0 is 360 degrees) number of macro elements in azimuthal an...
double Azimuthal_fraction
Azimuthal fraction.
void macro_element_boundary(const unsigned &t, const unsigned &i_macro, const unsigned &i_direct, const Vector< double > &s, Vector< double > &f)
Vector representation of the i_macro-th macro element boundary i_direct (N/S/W/E) at time level t (t=...
void operator=(const AnnularDomain &)=delete
Broken assignment operator.
////////////////////////////////////////////////////////////////////// //////////////////////////////...