27 #ifndef OOMPH_TUBE_DOMAIN_HEADER
28 #define OOMPH_TUBE_DOMAIN_HEADER
31 #include "../generic/quadtree.h"
32 #include "../generic/domain.h"
33 #include "../generic/geom_objects.h"
83 const unsigned& nlayer)
91 const unsigned n_macro = 5 * nlayer;
95 for (
unsigned i = 0;
i < n_macro;
i++)
115 const unsigned& i_macro,
116 const unsigned& i_direct,
149 for (
unsigned i = 0;
i < 3;
i++)
151 f[
i] = low[
i] + (high[
i] - low[
i]) * 0.5 * (
s + 1.0);
168 const unsigned& imacro,
169 const unsigned& idirect,
173 using namespace OcTreeNames;
175 #ifdef WARN_ABOUT_SUBTLY_CHANGED_OOMPH_INTERFACES
178 "Order of function arguments has changed between versions 0.8 and 0.85",
179 "TubeDomain::macro_element_boundary(...)",
184 unsigned ilayer =
unsigned(imacro / 5);
196 for (
unsigned i = 0;
i < 2;
i++)
208 zeta[0] = zeta_centre[
i];
211 for (
unsigned j = 0;
j < 4;
j++)
243 zeta[0] = zeta_centre[0] +
244 (zeta_centre[1] - zeta_centre[0]) * 0.5 * (
s[1] + 1.0);
262 zeta[0] = zeta_centre[0] +
263 (zeta_centre[1] - zeta_centre[0]) * 0.5 * (
s[1] + 1.0);
281 zeta[0] = zeta_centre[0] +
282 (zeta_centre[1] - zeta_centre[0]) * 0.5 * (
s[1] + 1.0);
299 zeta[0] = zeta_centre[0] +
300 (zeta_centre[1] - zeta_centre[0]) * 0.5 * (
s[1] + 1.0);
336 std::ostringstream error_stream;
337 error_stream <<
"idirect is " << idirect
338 <<
" not one of L, R, D, U, B, F" << std::endl;
357 zeta[0] = zeta_centre[0] +
358 (zeta_centre[1] - zeta_centre[0]) * 0.5 * (
s[1] + 1.0);
373 zeta[0] = zeta_centre[0] +
374 (zeta_centre[1] - zeta_centre[0]) * 0.5 * (
s[1] + 1.0);
389 zeta[0] = zeta_centre[0] +
390 (zeta_centre[1] - zeta_centre[0]) * 0.5 * (
s[1] + 1.0);
401 zeta[0] = zeta_centre[0] +
402 (zeta_centre[1] - zeta_centre[0]) * 0.5 * (
s[1] + 1.0);
418 zeta[0] = zeta_centre[0];
434 zeta[0] = zeta_centre[1];
451 std::ostringstream error_stream;
452 error_stream <<
"idirect is " << idirect
453 <<
" not one of L, R, D, U, B, F" << std::endl;
473 zeta[0] = zeta_centre[0] +
474 (zeta_centre[1] - zeta_centre[0]) * 0.5 * (
s[1] + 1.0);
490 zeta[0] = zeta_centre[0] +
491 (zeta_centre[1] - zeta_centre[0]) * 0.5 * (
s[1] + 1.0);
501 zeta[0] = zeta_centre[0] +
502 (zeta_centre[1] - zeta_centre[0]) * 0.5 * (
s[1] + 1.0);
517 zeta[0] = zeta_centre[0] +
518 (zeta_centre[1] - zeta_centre[0]) * 0.5 * (
s[1] + 1.0);
533 zeta[0] = zeta_centre[0];
549 zeta[0] = zeta_centre[1];
565 std::ostringstream error_stream;
566 error_stream <<
"idirect is " << idirect
567 <<
" not one of L, R, D, U, B, F" << std::endl;
584 zeta[0] = zeta_centre[0] +
585 (zeta_centre[1] - zeta_centre[0]) * 0.5 * (
s[1] + 1.0);
601 zeta[0] = zeta_centre[0] +
602 (zeta_centre[1] - zeta_centre[0]) * 0.5 * (
s[1] + 1.0);
620 zeta[0] = zeta_centre[0] +
621 (zeta_centre[1] - zeta_centre[0]) * 0.5 * (
s[1] + 1.0);
638 zeta[0] = zeta_centre[0] +
639 (zeta_centre[1] - zeta_centre[0]) * 0.5 * (
s[1] + 1.0);
649 zeta[0] = zeta_centre[0];
665 zeta[0] = zeta_centre[1];
681 std::ostringstream error_stream;
682 error_stream <<
"idirect is " << idirect
683 <<
" not one of L, R, D, U, B, F" << std::endl;
703 zeta[0] = zeta_centre[0] +
704 (zeta_centre[1] - zeta_centre[0]) * 0.5 * (
s[1] + 1.0);
716 zeta[0] = zeta_centre[0] +
717 (zeta_centre[1] - zeta_centre[0]) * 0.5 * (
s[1] + 1.0);
734 zeta[0] = zeta_centre[0] +
735 (zeta_centre[1] - zeta_centre[0]) * 0.5 * (
s[1] + 1.0);
752 zeta[0] = zeta_centre[0] +
753 (zeta_centre[1] - zeta_centre[0]) * 0.5 * (
s[1] + 1.0);
769 zeta[0] = zeta_centre[0];
787 zeta[0] = zeta_centre[1];
803 std::ostringstream error_stream;
804 error_stream <<
"idirect is " << idirect
805 <<
" not one of L, R, D, U, B, F" << std::endl;
816 std::ostringstream error_stream;
817 error_stream <<
"Wrong imacro " << imacro << std::endl;
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
Matrix< SCALARB, Dynamic, Dynamic, opt_B > B
Definition: bench_gemm.cpp:48
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: oomph_definitions.h:222
Definition: oomph_definitions.h:267
Definition: macro_element.h:373
Definition: tube_domain.h:70
TubeDomain(GeomObject *volume_geom_object_pt, const Vector< double > ¢reline_limits, const Vector< double > &theta_positions, const Vector< double > &radius_box, const unsigned &nlayer)
Definition: tube_domain.h:79
void macro_element_boundary(const unsigned &t, const unsigned &i_macro, const unsigned &i_direct, const Vector< double > &s, Vector< double > &f)
Definition: tube_domain.h:167
TubeDomain(const TubeDomain &)=delete
Broken copy constructor.
Vector< double > Centreline_limits
Storage for the limits of the centreline coordinate.
Definition: tube_domain.h:122
void operator=(const TubeDomain &)=delete
Broken assignment operator.
void lin_interpolate(const Vector< double > &low, const Vector< double > &high, const double &s, Vector< double > &f)
Definition: tube_domain.h:143
GeomObject * Volume_pt
Pointer to geometric object that represents the domain.
Definition: tube_domain.h:137
unsigned Nlayer
Number of axial layers.
Definition: tube_domain.h:134
Vector< double > Theta_positions
Definition: tube_domain.h:127
Vector< double > Radius_box
Definition: tube_domain.h:131
~TubeDomain()
Destructor: Empty; cleanup done in base class.
Definition: tube_domain.h:108
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
const Mdouble pi
Definition: ExtendedMath.h:23
const double Pi
50 digits from maple
Definition: oomph_utilities.h:157
@ F
Definition: octree.h:74
DRAIG: Change all instances of (SPATIAL_DIM) to (DIM-1).
Definition: AnisotropicHookean.h:10
t
Definition: plotPSD.py:36
#define OOMPH_EXCEPTION_LOCATION
Definition: oomph_definitions.h:61
#define OOMPH_CURRENT_FUNCTION
Definition: oomph_definitions.h:86
std::ptrdiff_t j
Definition: tut_arithmetic_redux_minmax.cpp:2