31 #ifndef OOMPH_QUARTER_CIRCLE_SECTOR_DOMAIN_HEADER 32 #define OOMPH_QUARTER_CIRCLE_SECTOR_DOMAIN_HEADER 35 #include "../generic/quadtree.h" 36 #include "../generic/domain.h" 37 #include "../generic/geom_objects.h" 61 const double& fract_mid,
62 const double& xi_hi) :
73 for (
unsigned i=0;
i<nmacro;
i++)
96 for (
unsigned i=0;
i<3;
i++)
135 const unsigned& i_macro,
136 const unsigned& i_direct,
235 const unsigned& imacro,
236 const unsigned& idirect,
242 #ifdef WARN_ABOUT_SUBTLY_CHANGED_OOMPH_INTERFACES 245 "Order of function arguments has changed between versions 0.8 and 0.85",
246 "QuarterCircleSectorDomain::macro_element_boundary(...)",
247 OOMPH_EXCEPTION_LOCATION);
255 using namespace QuadTreeNames;
279 std::ostringstream error_stream;
280 error_stream <<
"idirect is " << idirect
281 <<
" not one of N, S, E, W" << std::endl;
285 OOMPH_CURRENT_FUNCTION,
286 OOMPH_EXCEPTION_LOCATION);
313 std::ostringstream error_stream;
314 error_stream <<
"idirect is " << idirect
315 <<
" not one of N, S, E, W" << std::endl;
319 OOMPH_CURRENT_FUNCTION,
320 OOMPH_EXCEPTION_LOCATION);
347 std::ostringstream error_stream;
348 error_stream <<
"idirect is " << idirect
349 <<
" not one of N, S, E, W" << std::endl;
353 OOMPH_CURRENT_FUNCTION,
354 OOMPH_EXCEPTION_LOCATION);
362 std::ostringstream error_stream;
363 error_stream <<
"Wrong imacro " << imacro << std::endl;
366 OOMPH_CURRENT_FUNCTION,
367 OOMPH_EXCEPTION_LOCATION);
409 f[1]=0.5*r_top[1]*(1.0+
s_squashed(0.5*(s[0]+1.0)));
436 f[0]=0.5*r_bot[0]*0.5*(s[0]+1.0);
470 f[0]=0.5*(r_bot[0]+
s_squashed(0.5*(s[0]+1.0))*(2.0*r_half[0]-r_bot[0]));
471 f[1]=0.5*(r_top[1]+
s_squashed(0.5*(s[0]+1.0))*(2.0*r_half[1]-r_top[1]));
512 f[1]=0.5*r_top[1]*0.5*(s[0]+1.0);
530 f[0]=0.5*r_bot[0]*(1.0+
s_squashed(0.5*(s[0]+1.0)));
592 f[0]=0.5*r_bot[0]*0.5*(s[0]+1.0);
615 f[1]=0.5*r_top[1]*0.5*(s[0]+1.0);
void r_top_left_N(const unsigned &t, const Vector< double > &zeta, Vector< double > &f)
Boundary of top left macro element zeta .
void broken_copy(const std::string &class_name)
Issue error message and terminate execution.
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...
void r_centr_E(const unsigned &t, const Vector< double > &zeta, Vector< double > &f)
Boundary of central box macro element zeta .
Vector< MacroElement * > Macro_element_pt
Vector of pointers to macro elements.
void r_bot_right_S(const unsigned &t, const Vector< double > &zeta, Vector< double > &f)
Boundary of bottom right macro element zeta .
double Xi_hi
Upper limit for the (1D) coordinates along the wall.
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=...
virtual void position(const Vector< double > &zeta, Vector< double > &r) const =0
Parametrised position on object at current time: r(zeta).
void r_centr_N(const unsigned &t, const Vector< double > &zeta, Vector< double > &f)
Boundary of central box macro element zeta .
double s_squashed(const double &s)
Function that squashes the outer two macro elements towards the wall by mapping the input value of th...
BLSquashFctPt & bl_squash_fct_pt()
Function pointer for function that squashes the outer two macro elements towards the wall by mapping ...
QuarterCircleSectorDomain(const QuarterCircleSectorDomain &)
Broken copy constructor.
void r_bot_right_W(const unsigned &t, const Vector< double > &zeta, Vector< double > &f)
Boundary of bottom right macro element zeta .
void r_bot_right_E(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(* BLSquashFctPt)(const double &s)
Typedef for function pointer for function that squashes the outer two macro elements towards the wall...
void r_bot_right_N(const unsigned &t, const Vector< double > &zeta, Vector< double > &f)
Boundary of bottom right macro element zeta .
Circular sector as domain. Domain is bounded by curved boundary which is represented by a GeomObject...
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...
void broken_assign(const std::string &class_name)
Issue error message and terminate execution.
double Fract_mid
Fraction along wall where outer ring is to be divided.
void r_top_left_W(const unsigned &t, const Vector< double > &zeta, Vector< double > &f)
Boundary of top left macro element zeta .
BLSquashFctPt BL_squash_fct_pt
Function pointer for function that squashes the outer two macro elements towards the wall by mapping ...
void r_centr_S(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_top_left_E(const unsigned &t, const Vector< double > &zeta, Vector< double > &f)
Boundary of top left macro element zeta .
void r_top_left_S(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.
Base class for Domains with curvilinear and/or time-dependent boundaries. Domain boundaries are typic...
~QuarterCircleSectorDomain()
Destructor: Kill macro elements.
void operator=(const QuarterCircleSectorDomain &)
Broken assignment operator.