27 #ifndef OOMPH_QUARTER_CIRCLE_SECTOR_DOMAIN_HEADER
28 #define OOMPH_QUARTER_CIRCLE_SECTOR_DOMAIN_HEADER
31 #include "../generic/quadtree.h"
32 #include "../generic/domain.h"
33 #include "../generic/geom_objects.h"
49 const double& fract_mid,
54 Wall_pt(boundary_geom_object_pt),
64 for (
unsigned i = 0;
i < nmacro;
i++)
113 const unsigned& i_macro,
114 const unsigned& i_direct,
221 const unsigned& imacro,
222 const unsigned& idirect,
226 #ifdef WARN_ABOUT_SUBTLY_CHANGED_OOMPH_INTERFACES
229 "Order of function arguments has changed between versions 0.8 and 0.85",
230 "QuarterCircleSectorDomain::macro_element_boundary(...)",
231 OOMPH_EXCEPTION_LOCATION);
238 using namespace QuadTreeNames;
248 else if (idirect ==
S)
252 else if (idirect ==
W)
256 else if (idirect ==
E)
262 std::ostringstream error_stream;
263 error_stream <<
"idirect is " << idirect <<
" not one of N, S, E, W"
267 OOMPH_CURRENT_FUNCTION,
268 OOMPH_EXCEPTION_LOCATION);
281 else if (idirect ==
S)
285 else if (idirect ==
W)
289 else if (idirect ==
E)
295 std::ostringstream error_stream;
296 error_stream <<
"idirect is " << idirect <<
" not one of N, S, E, W"
300 OOMPH_CURRENT_FUNCTION,
301 OOMPH_EXCEPTION_LOCATION);
314 else if (idirect ==
S)
318 else if (idirect ==
W)
322 else if (idirect ==
E)
328 std::ostringstream error_stream;
329 error_stream <<
"idirect is " << idirect <<
" not one of N, S, E, W"
333 OOMPH_CURRENT_FUNCTION,
334 OOMPH_EXCEPTION_LOCATION);
342 std::ostringstream error_stream;
343 error_stream <<
"Wrong imacro " << imacro << std::endl;
346 error_stream.str(), OOMPH_CURRENT_FUNCTION, OOMPH_EXCEPTION_LOCATION);
383 f[1] = 0.5 * r_top[1] * (1.0 +
s_squashed(0.5 * (
s[0] + 1.0)));
409 f[0] = 0.5 * r_bot[0] * 0.5 * (
s[0] + 1.0);
410 f[1] = 0.5 * r_top[1];
441 f[0] = 0.5 * (r_bot[0] +
s_squashed(0.5 * (
s[0] + 1.0)) *
442 (2.0 * r_half[0] - r_bot[0]));
443 f[1] = 0.5 * (r_top[1] +
s_squashed(0.5 * (
s[0] + 1.0)) *
444 (2.0 * r_half[1] - r_top[1]));
479 f[0] = 0.5 * r_bot[0];
480 f[1] = 0.5 * r_top[1] * 0.5 * (
s[0] + 1.0);
498 f[0] = 0.5 * r_bot[0] * (1.0 +
s_squashed(0.5 * (
s[0] + 1.0)));
554 f[0] = 0.5 * r_bot[0] * 0.5 * (
s[0] + 1.0);
574 f[1] = 0.5 * r_top[1] * 0.5 * (
s[0] + 1.0);
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.
/////////////////////////////////////////////////////////////////////
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....
An OomphLibWarning object which should be created as a temporary object to issue a warning....
QMacroElement specialised to 2 spatial dimensions.
Circular sector as domain. Domain is bounded by curved boundary which is represented by a GeomObject....
void r_top_left_S(const unsigned &t, const Vector< double > &zeta, Vector< double > &f)
Boundary of top left macro element zeta .
QuarterCircleSectorDomain(const QuarterCircleSectorDomain &)=delete
Broken copy constructor.
void r_centr_N(const unsigned &t, const Vector< double > &zeta, Vector< double > &f)
Boundary of central box macro element zeta .
void r_centr_W(const unsigned &t, const Vector< double > &zeta, Vector< double > &f)
Boundary of central box macro element zeta .
void r_bot_right_S(const unsigned &t, const Vector< double > &zeta, Vector< double > &f)
Boundary of bottom right macro element zeta .
GeomObject * Wall_pt
Pointer to geometric object that represents the curved wall.
double s_squashed(const double &s)
Function that squashes the outer two macro elements towards the wall by mapping the input value of th...
double(* BLSquashFctPt)(const double &s)
Typedef for function pointer for function that squashes the outer two macro elements towards the wall...
void operator=(const QuarterCircleSectorDomain &)=delete
Broken assignment operator.
void r_top_left_W(const unsigned &t, const Vector< double > &zeta, Vector< double > &f)
Boundary of top left macro element zeta .
void r_bot_right_W(const unsigned &t, const Vector< double > &zeta, Vector< double > &f)
Boundary of bottom right macro element zeta .
void r_top_left_E(const unsigned &t, const Vector< double > &zeta, Vector< double > &f)
Boundary of top left macro element zeta .
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 r_centr_S(const unsigned &t, const Vector< double > &zeta, Vector< double > &f)
Boundary of central box macro element zeta .
double Xi_hi
Upper limit for the (1D) coordinates along the wall.
void r_bot_right_E(const unsigned &t, const Vector< double > &zeta, Vector< double > &f)
Boundary of bottom right macro element zeta .
QuarterCircleSectorDomain(GeomObject *boundary_geom_object_pt, const double &xi_lo, const double &fract_mid, const double &xi_hi)
Constructor: Pass boundary object and start and end coordinates and fraction along boundary object wh...
BLSquashFctPt & bl_squash_fct_pt()
Function pointer for function that squashes the outer two macro elements towards the wall by mapping ...
void r_bot_right_N(const unsigned &t, const Vector< double > &zeta, Vector< double > &f)
Boundary of bottom right macro element zeta .
static double default_BL_squash_fct(const double &s)
Default for function that squashes the outer two macro elements towards the wall by mapping the input...
double Fract_mid
Fraction along wall where outer ring is to be divided.
void r_centr_E(const unsigned &t, const Vector< double > &zeta, Vector< double > &f)
Boundary of central box macro element zeta .
BLSquashFctPt BL_squash_fct_pt
Function pointer for function that squashes the outer two macro elements towards the wall by mapping ...
~QuarterCircleSectorDomain()
Destructor: empty; cleanup done in base class.
void r_top_left_N(const unsigned &t, const Vector< double > &zeta, Vector< double > &f)
Boundary of top left macro element zeta .
double Xi_lo
Lower limit for the (1D) coordinates along the wall.
//////////////////////////////////////////////////////////////////// ////////////////////////////////...