31 #ifndef OOMPH_FULL_CIRCLE_DOMAIN_HEADER 32 #define OOMPH_FULL_CIRCLE_DOMAIN_HEADER 35 #include "../generic/quadtree.h" 36 #include "../generic/domain.h" 37 #include "../generic/geom_objects.h" 91 const unsigned n_macro=5;
95 for (
unsigned i=0;
i<n_macro;
i++)
117 for(
unsigned i=0;
i<5;
i++)
129 const unsigned& i_macro,
130 const unsigned& i_direct,
158 for(
unsigned i=0;
i<2;
i++)
160 f[
i] = low[
i] + (high[
i] - low[
i])*0.5*(s+1.0);
180 const unsigned& imacro,
181 const unsigned& idirect,
186 using namespace QuadTreeNames;
197 for(
unsigned j=0;j<4;j++)
249 std::ostringstream error_stream;
250 error_stream <<
"idirect is " << idirect
251 <<
" not one of N, S, E, W" << std::endl;
255 OOMPH_CURRENT_FUNCTION,
256 OOMPH_EXCEPTION_LOCATION);
295 std::ostringstream error_stream;
296 error_stream <<
"idirect is " << idirect
297 <<
" not one of N, S, E, W" << std::endl;
301 OOMPH_CURRENT_FUNCTION,
302 OOMPH_EXCEPTION_LOCATION);
340 std::ostringstream error_stream;
341 error_stream <<
"idirect is " << idirect
342 <<
" not one of N, S, W, E" << std::endl;
346 OOMPH_CURRENT_FUNCTION,
347 OOMPH_EXCEPTION_LOCATION);
383 std::ostringstream error_stream;
384 error_stream <<
"idirect is " << idirect
385 <<
" not one of N, S, E, W" << std::endl;
389 OOMPH_CURRENT_FUNCTION,
390 OOMPH_EXCEPTION_LOCATION);
430 std::ostringstream error_stream;
431 error_stream <<
"idirect is " << idirect
432 <<
" not one of N, S, W, E" << std::endl;
436 OOMPH_CURRENT_FUNCTION,
437 OOMPH_EXCEPTION_LOCATION);
444 std::ostringstream error_stream;
445 error_stream <<
"Wrong imacro " << imacro << std::endl;
448 OOMPH_CURRENT_FUNCTION,
449 OOMPH_EXCEPTION_LOCATION);
void broken_copy(const std::string &class_name)
Issue error message and terminate execution.
FullCircleDomain(const FullCircleDomain &)
Broken copy constructor.
Topologically circular domain, e.g. a tube cross section. The entire domain must be defined by a Geom...
void operator=(const FullCircleDomain &)
Broken assignment operator.
const double Pi
50 digits from maple
Vector< MacroElement * > Macro_element_pt
Vector of pointers to macro elements.
GeomObject * Area_pt
Pointer to geometric object that represents the domain.
virtual void position(const Vector< double > &zeta, Vector< double > &r) const =0
Parametrised position on object at current time: r(zeta).
~FullCircleDomain()
Destructor: Kill all macro elements.
Vector< double > Theta_positions
Storage for the dividing lines on the boundary starting from the lower left and proceeding anticlockw...
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 broken_assign(const std::string &class_name)
Issue error message and terminate execution.
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
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 ...
Base class for Domains with curvilinear and/or time-dependent boundaries. Domain boundaries are typic...