27 #ifndef OOMPH_FULL_CIRCLE_DOMAIN_HEADER
28 #define OOMPH_FULL_CIRCLE_DOMAIN_HEADER
31 #include "../generic/quadtree.h"
32 #include "../generic/domain.h"
33 #include "../generic/geom_objects.h"
85 const unsigned n_macro = 5;
89 for (
unsigned i = 0;
i < n_macro;
i++)
111 const unsigned& i_macro,
112 const unsigned& i_direct,
139 for (
unsigned i = 0;
i < 2;
i++)
141 f[
i] = low[
i] + (high[
i] - low[
i]) * 0.5 * (
s + 1.0);
158 const unsigned& imacro,
159 const unsigned& idirect,
163 using namespace QuadTreeNames;
174 for (
unsigned j = 0; j < 4; j++)
224 std::ostringstream error_stream;
225 error_stream <<
"idirect is " << idirect <<
" not one of N, S, E, W"
229 OOMPH_CURRENT_FUNCTION,
230 OOMPH_EXCEPTION_LOCATION);
269 std::ostringstream error_stream;
270 error_stream <<
"idirect is " << idirect <<
" not one of N, S, E, W"
274 OOMPH_CURRENT_FUNCTION,
275 OOMPH_EXCEPTION_LOCATION);
314 std::ostringstream error_stream;
315 error_stream <<
"idirect is " << idirect <<
" not one of N, S, W, E"
319 OOMPH_CURRENT_FUNCTION,
320 OOMPH_EXCEPTION_LOCATION);
357 std::ostringstream error_stream;
358 error_stream <<
"idirect is " << idirect <<
" not one of N, S, E, W"
362 OOMPH_CURRENT_FUNCTION,
363 OOMPH_EXCEPTION_LOCATION);
403 std::ostringstream error_stream;
404 error_stream <<
"idirect is " << idirect <<
" not one of N, S, W, E"
408 OOMPH_CURRENT_FUNCTION,
409 OOMPH_EXCEPTION_LOCATION);
416 std::ostringstream error_stream;
417 error_stream <<
"Wrong imacro " << imacro << std::endl;
419 error_stream.str(), OOMPH_CURRENT_FUNCTION, OOMPH_EXCEPTION_LOCATION);
Base class for Domains with curvilinear and/or time-dependent boundaries. Domain boundaries are typic...
Vector< MacroElement * > Macro_element_pt
Vector of pointers to macro elements.
Topologically circular domain, e.g. a tube cross section. The entire domain must be defined by a Geom...
FullCircleDomain(const FullCircleDomain &)=delete
Broken copy constructor.
FullCircleDomain(GeomObject *area_geom_object_pt, const Vector< double > &theta_positions, const Vector< double > &radius_box)
Constructor: Pass geometric object; the theta locations marking the division between the elements of ...
GeomObject * Area_pt
Pointer to geometric object that represents the domain.
void lin_interpolate(const Vector< double > &low, const Vector< double > &high, const double &s, Vector< double > &f)
A very little linear interpolation helper. Interpolate from the low point to the high point using the...
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=...
Vector< double > Radius_box
Storage for the fraction of the radius at which the central box should be located corresponding to th...
void operator=(const FullCircleDomain &)=delete
Broken assignment operator.
Vector< double > Theta_positions
Storage for the dividing lines on the boundary starting from the lower left and proceeding anticlockw...
~FullCircleDomain()
Destructor: Empty; cleanup done in base class.
/////////////////////////////////////////////////////////////////////
virtual void position(const Vector< double > &zeta, Vector< double > &r) const =0
Parametrised position on object at current time: r(zeta).
An OomphLibError object which should be thrown when an run-time error is encountered....
QMacroElement specialised to 2 spatial dimensions.
const double Pi
50 digits from maple
//////////////////////////////////////////////////////////////////// ////////////////////////////////...