27 #ifndef OOMPH_QUARTER_TUBE_DOMAIN_HEADER
28 #define OOMPH_QUARTER_TUBE_DOMAIN_HEADER
31 #include "../generic/quadtree.h"
32 #include "../generic/domain.h"
33 #include "../generic/geom_objects.h"
50 const double& fract_mid,
52 const unsigned& nlayer)
57 Wall_pt(boundary_geom_object_pt),
62 unsigned nmacro = 3 * nlayer;
68 for (
unsigned i = 0;
i < nmacro;
i++)
134 const unsigned& i_macro,
135 const unsigned& i_direct,
190 const unsigned& i_layer,
197 const unsigned& i_layer,
204 const unsigned& i_layer,
211 const unsigned& i_layer,
218 const unsigned& i_layer,
225 const unsigned& i_layer,
233 const unsigned& i_layer,
240 const unsigned& i_layer,
247 const unsigned& i_layer,
254 const unsigned& i_layer,
261 const unsigned& i_layer,
268 const unsigned& i_layer,
276 const unsigned& i_layer,
283 const unsigned& i_layer,
290 const unsigned& i_layer,
297 const unsigned& i_layer,
304 const unsigned& i_layer,
311 const unsigned& i_layer,
327 const unsigned& imacro,
328 const unsigned& idirect,
332 using namespace OcTreeNames;
334 #ifdef WARN_ABOUT_SUBTLY_CHANGED_OOMPH_INTERFACES
337 "Order of function arguments has changed between versions 0.8 and 0.85",
338 "QuarterTubeDomain::macro_element_boundary(...)",
343 unsigned ilayer =
unsigned(imacro / 3);
357 else if (idirect ==
R)
361 else if (idirect ==
D)
365 else if (idirect ==
U)
369 else if (idirect ==
B)
373 else if (idirect ==
F)
379 std::ostringstream error_stream;
380 error_stream <<
"idirect is " << idirect
381 <<
" not one of L, R, D, U, B, F" << std::endl;
399 else if (idirect ==
R)
403 else if (idirect ==
D)
407 else if (idirect ==
U)
411 else if (idirect ==
B)
415 else if (idirect ==
F)
421 std::ostringstream error_stream;
422 error_stream <<
"idirect is " << idirect
423 <<
" not one of L, R, D, U, B, F" << std::endl;
441 else if (idirect ==
R)
445 else if (idirect ==
D)
449 else if (idirect ==
U)
453 else if (idirect ==
B)
457 else if (idirect ==
F)
463 std::ostringstream error_stream;
464 error_stream <<
"idirect is " << idirect
465 <<
" not one of L, R, D, U, B, F" << std::endl;
477 std::ostringstream error_stream;
478 error_stream <<
"Wrong imacro " << imacro << std::endl;
491 const unsigned& i_layer,
508 f[1] = r_top[1] * 0.25 * (1.0 +
zeta[0]);
511 f[2] =
x[0] + rho * (r_top[2] -
x[0]);
523 const unsigned& i_layer,
553 f[0] = 0.5 * r_bottom[0];
554 f[1] = r_top[1] * 0.25 * (1.0 +
zeta[0]);
558 f[2] =
x[0] + rho * (r_top[2] -
x[0]);
569 const unsigned& i_layer,
585 f[0] = r_bottom[0] * 0.25 * (1.0 +
zeta[0]);
590 f[2] =
x[0] + rho * (r_bottom[2] -
x[0]);
601 const unsigned& i_layer,
628 f[0] = r_bottom[0] * 0.25 * (1.0 +
zeta[0]);
629 f[1] = 0.5 * r_top[1];
633 f[2] =
x[0] + rho * (r_bottom[2] -
x[0]);
644 const unsigned& i_layer,
668 f[0] = r_bottom[0] * 0.25 * (1.0 +
zeta[0]);
669 f[1] = r_top[1] * 0.25 * (1.0 +
zeta[1]);
673 f[2] =
x[0] + rho * (r_top[2] -
x[0]);
684 const unsigned& i_layer,
708 f[0] = r_bottom[0] * 0.25 * (1.0 +
zeta[0]);
709 f[1] = r_top[1] * 0.25 * (1.0 +
zeta[1]);
713 f[2] =
x[0] + rho * (r_top[2] -
x[0]);
727 const unsigned& i_layer,
740 const unsigned& i_layer,
762 const unsigned& i_layer,
783 f[2] =
x[0] + rho * (r_bottom[2] -
x[0]);
794 const unsigned& i_layer,
813 zeta_central[0] = 1.0;
814 zeta_central[1] =
zeta[1];
815 r_centr_R(
t, zeta_central, i_layer, r_central);
819 f[0] = r_central[0] +
821 f[1] = r_central[1] +
823 f[2] = r_central[2] +
834 const unsigned& i_layer,
850 zeta_central[0] =
zeta[1];
851 zeta_central[1] = -1.0;
852 r_centr_R(
t, zeta_central, i_layer, r_central);
856 f[0] = r_central[0] +
858 f[1] = r_central[1] +
860 f[2] = r_central[2] +
871 const unsigned& i_layer,
887 zeta_central[0] =
zeta[1];
888 zeta_central[1] = 1.0;
889 r_centr_R(
t, zeta_central, i_layer, r_central);
893 f[0] = r_central[0] +
895 f[1] = r_central[1] +
897 f[2] = r_central[2] +
911 const unsigned& i_layer,
932 f[2] =
x[0] + rho * (r_top[2] -
x[0]);
943 const unsigned& i_layer,
948 zeta_br[0] =
zeta[0];
949 zeta_br[1] =
zeta[1];
960 const unsigned& i_layer,
973 const unsigned& i_layer,
996 const unsigned& i_layer,
1015 zeta_central[0] =
zeta[0];
1016 zeta_central[1] = -1.0;
1017 r_centr_U(
t, zeta_central, i_layer, r_central);
1020 f[0] = r_central[0] +
1022 f[1] = r_central[1] +
1024 f[2] = r_central[2] +
1035 const unsigned& i_layer,
1054 zeta_central[0] =
zeta[0];
1055 zeta_central[1] = 1.0;
1056 r_centr_U(
t, zeta_central, i_layer, r_central);
1059 f[0] = r_central[0] +
1061 f[1] = r_central[1] +
1063 f[2] = r_central[2] +
int i
Definition: BiCGSTAB_step_by_step.cpp:9
dominoes D
Definition: Domino.cpp:55
MatrixXd L
Definition: LLT_example.cpp:6
@ R
Definition: StatisticsVector.h:21
Vector< MacroElement * > Macro_element_pt
Vector of pointers to macro elements.
Definition: domain.h:301
Definition: geom_objects.h:101
virtual void position(const Vector< double > &zeta, Vector< double > &r) const =0
Parametrised position on object at current time: r(zeta).
Definition: matrices.h:74
Definition: oomph_definitions.h:222
Definition: oomph_definitions.h:267
Definition: macro_element.h:373
Definition: quarter_tube_domain.h:43
QuarterTubeDomain(const QuarterTubeDomain &)=delete
Broken copy constructor.
AxialSpacingFctPt & axial_spacing_fct_pt()
Definition: quarter_tube_domain.h:116
void r_top_left_D(const unsigned &t, const Vector< double > &zeta, const unsigned &i_layer, Vector< double > &f)
Definition: quarter_tube_domain.h:958
BLSquashFctPt & bl_squash_fct_pt()
Definition: quarter_tube_domain.h:94
void r_top_left_L(const unsigned &t, const Vector< double > &zeta, const unsigned &i_layer, Vector< double > &f)
Definition: quarter_tube_domain.h:909
~QuarterTubeDomain()
Destructor: empty; cleanup done in base class.
Definition: quarter_tube_domain.h:81
void r_top_left_R(const unsigned &t, const Vector< double > &zeta, const unsigned &i_layer, Vector< double > &f)
Definition: quarter_tube_domain.h:941
void r_bot_right_L(const unsigned &t, const Vector< double > &zeta, const unsigned &i_layer, Vector< double > &f)
Definition: quarter_tube_domain.h:725
BLSquashFctPt BL_squash_fct_pt
Definition: quarter_tube_domain.h:160
void r_centr_B(const unsigned &t, const Vector< double > &zeta, const unsigned &i_layer, Vector< double > &f)
Definition: quarter_tube_domain.h:642
double axial_spacing_fct(const double &xi)
Definition: quarter_tube_domain.h:123
double(* BLSquashFctPt)(const double &s)
Definition: quarter_tube_domain.h:87
static double default_BL_squash_fct(const double &s)
Definition: quarter_tube_domain.h:167
void r_centr_D(const unsigned &t, const Vector< double > &zeta, const unsigned &i_layer, Vector< double > &f)
Definition: quarter_tube_domain.h:567
QuarterTubeDomain(GeomObject *boundary_geom_object_pt, const Vector< double > &xi_lo, const double &fract_mid, const Vector< double > &xi_hi, const unsigned &nlayer)
Definition: quarter_tube_domain.h:48
Vector< double > Xi_lo
Lower limit for the coordinates along the wall.
Definition: quarter_tube_domain.h:141
unsigned Nlayer
Number of layers.
Definition: quarter_tube_domain.h:150
double s_squashed(const double &s)
Definition: quarter_tube_domain.h:103
void r_bot_right_F(const unsigned &t, const Vector< double > &zeta, const unsigned &i_layer, Vector< double > &f)
Definition: quarter_tube_domain.h:869
void r_bot_right_D(const unsigned &t, const Vector< double > &zeta, const unsigned &i_layer, Vector< double > &f)
Definition: quarter_tube_domain.h:760
void r_bot_right_U(const unsigned &t, const Vector< double > &zeta, const unsigned &i_layer, Vector< double > &f)
Definition: quarter_tube_domain.h:792
Vector< double > Xi_hi
Upper limit for the coordinates along the wall.
Definition: quarter_tube_domain.h:147
void r_top_left_B(const unsigned &t, const Vector< double > &zeta, const unsigned &i_layer, Vector< double > &f)
Definition: quarter_tube_domain.h:994
void r_top_left_U(const unsigned &t, const Vector< double > &zeta, const unsigned &i_layer, Vector< double > &f)
Definition: quarter_tube_domain.h:971
void r_bot_right_R(const unsigned &t, const Vector< double > &zeta, const unsigned &i_layer, Vector< double > &f)
Definition: quarter_tube_domain.h:738
void r_centr_F(const unsigned &t, const Vector< double > &zeta, const unsigned &i_layer, Vector< double > &f)
Definition: quarter_tube_domain.h:682
AxialSpacingFctPt Axial_spacing_fct_pt
Definition: quarter_tube_domain.h:175
void r_centr_L(const unsigned &t, const Vector< double > &zeta, const unsigned &i_layer, Vector< double > &f)
Definition: quarter_tube_domain.h:489
void operator=(const QuarterTubeDomain &)=delete
Broken assignment operator.
double(* AxialSpacingFctPt)(const double &xi)
Definition: quarter_tube_domain.h:111
static double default_axial_spacing_fct(const double &xi)
Definition: quarter_tube_domain.h:180
void r_centr_R(const unsigned &t, const Vector< double > &zeta, const unsigned &i_layer, Vector< double > &f)
Definition: quarter_tube_domain.h:521
double Fract_mid
Fraction along wall where outer ring is to be divided.
Definition: quarter_tube_domain.h:144
void r_top_left_F(const unsigned &t, const Vector< double > &zeta, const unsigned &i_layer, Vector< double > &f)
Definition: quarter_tube_domain.h:1033
void r_bot_right_B(const unsigned &t, const Vector< double > &zeta, const unsigned &i_layer, Vector< double > &f)
Definition: quarter_tube_domain.h:832
GeomObject * Wall_pt
Pointer to geometric object that represents the curved wall.
Definition: quarter_tube_domain.h:153
void macro_element_boundary(const unsigned &t, const unsigned &i_macro, const unsigned &i_direct, const Vector< double > &s, Vector< double > &f)
Definition: quarter_tube_domain.h:326
void r_centr_U(const unsigned &t, const Vector< double > &zeta, const unsigned &i_layer, Vector< double > &f)
Definition: quarter_tube_domain.h:599
static int f(const TensorMap< Tensor< int, 3 > > &tensor)
Definition: cxx11_tensor_map.cpp:237
RealScalar s
Definition: level1_cplx_impl.h:130
EIGEN_STRONG_INLINE const Eigen::CwiseBinaryOp< Eigen::internal::scalar_zeta_op< typename DerivedX::Scalar >, const DerivedX, const DerivedQ > zeta(const Eigen::ArrayBase< DerivedX > &x, const Eigen::ArrayBase< DerivedQ > &q)
Definition: SpecialFunctionsArrayAPI.h:152
double U
Swimming speed.
Definition: two_d_variable_diff_adapt.cc:53
@ F
Definition: octree.h:74
DRAIG: Change all instances of (SPATIAL_DIM) to (DIM-1).
Definition: AnisotropicHookean.h:10
list x
Definition: plotDoE.py:28
t
Definition: plotPSD.py:36
#define OOMPH_EXCEPTION_LOCATION
Definition: oomph_definitions.h:61
#define OOMPH_CURRENT_FUNCTION
Definition: oomph_definitions.h:86