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" 85 const Vector<double> &theta_positions,
86 const Vector<double> &radius_box) :
91 const unsigned n_macro=5;
92 Macro_element_pt.resize(n_macro);
95 for (
unsigned i=0;i<n_macro;i++)
97 Macro_element_pt[i]=
new QMacroElement<2>(
this,i);
104 BrokenCopy::broken_copy(
"FullCircleDomain");
110 BrokenCopy::broken_assign(
"FullCircleDomain");
117 for(
unsigned i=0;i<5;i++)
119 delete Macro_element_pt[i];
129 const unsigned& i_macro,
130 const unsigned& i_direct,
131 const Vector<double>& s,
153 const Vector<double> &high,
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,
182 const Vector<double>& s,
186 using namespace QuadTreeNames;
189 Vector<Vector<double> > Box(4);
191 Vector<Vector<double> > Wall(4);
194 Vector<double> zeta(2);
197 for(
unsigned j=0;j<4;j++)
207 Area_pt->position(t,zeta,Box[j]);
211 Area_pt->position(t,zeta,Wall[j]);
215 const double pi = MathematicalConstants::Pi;
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);
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.
GeomObject * Area_pt
Pointer to geometric object that represents the domain.
~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 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 ...