27 #ifndef OOMPH_COLLAPSIBLE_CHANNEL_DOMAIN_HEADER
28 #define OOMPH_COLLAPSIBLE_CHANNEL_DOMAIN_HEADER
31 #include "../generic/quadtree.h"
32 #include "../generic/domain.h"
33 #include "../generic/geom_objects.h"
49 const unsigned&
ndown,
52 const double& lcollapsible,
75 for (
unsigned i = 0;
i < nmacro;
i++)
207 const unsigned& imacro,
208 const unsigned& idirect,
231 const unsigned& imacro,
232 const unsigned& part);
238 const unsigned& imacro,
239 const unsigned& part);
245 const unsigned& imacro,
246 const unsigned& part);
252 const unsigned& imacro,
253 const unsigned& part);
260 const unsigned& imacro);
267 const unsigned& imacro);
274 const unsigned& imacro);
281 const unsigned& imacro);
347 const unsigned& imacro,
348 const unsigned& idirect,
352 using namespace QuadTreeNames;
354 #ifdef WARN_ABOUT_SUBTLY_CHANGED_OOMPH_INTERFACES
357 "Order of function arguments has changed between versions 0.8 and 0.85",
358 "CollapsibleChannelDomain::macro_element_boundary(...)",
369 if ((imacro % n_x) <
Nup)
385 std::ostringstream error_stream;
386 error_stream <<
"Never get here! imacro, idirect: " << imacro <<
" "
387 << idirect << std::endl;
393 else if (idirect ==
S)
396 if ((imacro % n_x) <
Nup)
412 std::ostringstream error_stream;
413 error_stream <<
"Never get here! imacro, idirect: " << imacro <<
" "
414 << idirect << std::endl;
420 else if (idirect ==
E)
423 if ((imacro % n_x) <
Nup)
439 std::ostringstream error_stream;
440 error_stream <<
"Never get here! imacro, idirect: " << imacro <<
" "
441 << idirect << std::endl;
448 else if (idirect ==
W)
451 if ((imacro % n_x) <
Nup)
467 std::ostringstream error_stream;
468 error_stream <<
"Never get here! imacro, idirect: " << imacro <<
" "
469 << idirect << std::endl;
494 const unsigned& imacro,
495 const unsigned& part)
530 std::ostringstream error_stream;
531 error_stream <<
"Never get here! part=" << part << std::endl;
546 const unsigned& imacro,
547 const unsigned& part)
583 std::ostringstream error_stream;
584 error_stream <<
"Never get here! part=" << part << std::endl;
598 const unsigned& imacro,
599 const unsigned& part)
638 std::ostringstream error_stream;
639 error_stream <<
"Never get here! part=" << part << std::endl;
654 const unsigned& imacro,
655 const unsigned& part)
693 std::ostringstream error_stream;
694 error_stream <<
"Never get here! part=" << part << std::endl;
709 const unsigned& imacro)
724 double fract = (
double(
y) + (0.5 * (1.0 +
zeta[0]))) /
double(
Ny);
731 r[0] =
Lup + xi[0] + (r_wall[0] - (xi[0] +
Lup)) * fract;
734 r[1] = r_wall[1] * fract;
745 const unsigned& imacro)
760 double fract = (
double(
y) + (0.5 * (1.0 +
zeta[0]))) /
double(
Ny);
767 r[0] =
Lup + xi[0] + (r_wall[0] - (xi[0] +
Lup)) * fract;
770 r[1] = r_wall[1] * fract;
781 const unsigned& imacro)
797 double fract = (
double(
y) + 1.0) /
double(
Ny);
804 r[0] =
Lup + xi[0] + (r_wall[0] - (xi[0] +
Lup)) * fract;
807 r[1] = r_wall[1] * fract;
818 const unsigned& imacro)
841 r[0] =
Lup + xi[0] + (r_wall[0] - (xi[0] +
Lup)) * fract;
844 r[1] = r_wall[1] * fract;
int i
Definition: BiCGSTAB_step_by_step.cpp:9
Collapsible channel domain.
Definition: collapsible_channel_domain.h:41
void r_N_collapsible(const unsigned &t, const Vector< double > &zeta, Vector< double > &r, const unsigned &imacro)
Definition: collapsible_channel_domain.h:778
GeomObject *& wall_pt()
Definition: collapsible_channel_domain.h:136
double l_collapsible()
Length of collapsible segment.
Definition: collapsible_channel_domain.h:117
unsigned ndown()
Number of vertical columns of macro elements in the downstream section.
Definition: collapsible_channel_domain.h:99
void r_S_straight(const Vector< double > &zeta, Vector< double > &r, const unsigned &imacro, const unsigned &part)
Definition: collapsible_channel_domain.h:652
unsigned Ny
Number of macro elements across channel.
Definition: collapsible_channel_domain.h:310
unsigned Nup
Number of vertical element columns in upstream section.
Definition: collapsible_channel_domain.h:301
AxialSpacingFctPt & axial_spacing_fct_pt()
Definition: collapsible_channel_domain.h:186
double Lup
x-length in the upstream part of the channel
Definition: collapsible_channel_domain.h:313
void r_S_collapsible(const unsigned &t, const Vector< double > &zeta, Vector< double > &r, const unsigned &imacro)
Definition: collapsible_channel_domain.h:815
void r_E_straight(const Vector< double > &zeta, Vector< double > &r, const unsigned &imacro, const unsigned &part)
Definition: collapsible_channel_domain.h:544
unsigned Ndown
Number of vertical element columns in downstream section.
Definition: collapsible_channel_domain.h:307
~CollapsibleChannelDomain()
Destructor: emtpy; cleanup done in base class.
Definition: collapsible_channel_domain.h:83
double(* BLSquashFctPt)(const double &s)
Definition: collapsible_channel_domain.h:152
void macro_element_boundary(const unsigned &t, const unsigned &imacro, const unsigned &idirect, const Vector< double > &zeta, Vector< double > &r)
Definition: collapsible_channel_domain.h:345
bool Rotate_domain
Rotate domain (for axisymmetric problems, say)
Definition: collapsible_channel_domain.h:328
double(* AxialSpacingFctPt)(const double &xi)
Definition: collapsible_channel_domain.h:182
double l_up()
Length of upstream section.
Definition: collapsible_channel_domain.h:111
static double default_axial_spacing_fct(const double &xi)
Definition: collapsible_channel_domain.h:294
BLSquashFctPt BL_squash_fct_pt
Definition: collapsible_channel_domain.h:286
static double default_BL_squash_fct(const double &s)
Definition: collapsible_channel_domain.h:157
GeomObject * wall_pt() const
Definition: collapsible_channel_domain.h:144
unsigned ncollapsible()
Number of vertical clumns of macro elements in the "collapsible" segment.
Definition: collapsible_channel_domain.h:93
unsigned Ncollapsible
Number of vertical element columns in "collapsible" section.
Definition: collapsible_channel_domain.h:304
unsigned ny()
Number of macro-elements across the channel.
Definition: collapsible_channel_domain.h:105
double s_squash(const double &s)
Definition: collapsible_channel_domain.h:175
void disable_rotate_domain()
Undo rotation of the domain (for axisymmetric problems)
Definition: collapsible_channel_domain.h:220
GeomObject * Wall_pt
Pointer to the geometric object that parametrises the collapsible wall.
Definition: collapsible_channel_domain.h:325
AxialSpacingFctPt Axial_spacing_fct_pt
Definition: collapsible_channel_domain.h:290
unsigned nup()
Number of vertical columns of macro elements the upstream section.
Definition: collapsible_channel_domain.h:87
CollapsibleChannelDomain(const unsigned &nup, const unsigned &ncollapsible, const unsigned &ndown, const unsigned &ny, const double &lup, const double &lcollapsible, const double &ldown, const double &ly, GeomObject *wall_pt)
Definition: collapsible_channel_domain.h:47
void enable_rotate_domain()
Rotate the domain (for axisymmetric problems)
Definition: collapsible_channel_domain.h:214
double l_down()
Length of downstream section.
Definition: collapsible_channel_domain.h:123
void r_W_straight(const Vector< double > &zeta, Vector< double > &r, const unsigned &imacro, const unsigned &part)
Definition: collapsible_channel_domain.h:492
BLSquashFctPt & bl_squash_fct_pt()
Definition: collapsible_channel_domain.h:165
double Lcollapsible
x-length in the "collapsible" part of the channel
Definition: collapsible_channel_domain.h:316
void r_W_collapsible(const unsigned &t, const Vector< double > &zeta, Vector< double > &r, const unsigned &imacro)
Definition: collapsible_channel_domain.h:706
double l_y()
Width of channel.
Definition: collapsible_channel_domain.h:129
double axial_spacing_fct(const double &xi)
Definition: collapsible_channel_domain.h:193
double Ly
Width.
Definition: collapsible_channel_domain.h:322
double Ldown
x-length in the downstream part of the channel
Definition: collapsible_channel_domain.h:319
void r_N_straight(const Vector< double > &zeta, Vector< double > &r, const unsigned &imacro, const unsigned &part)
Definition: collapsible_channel_domain.h:596
void r_E_collapsible(const unsigned &t, const Vector< double > &zeta, Vector< double > &r, const unsigned &imacro)
Definition: collapsible_channel_domain.h:742
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:279
@ N
Definition: constructor.cpp:22
Scalar * y
Definition: level1_cplx_impl.h:128
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 E
Elastic modulus.
Definition: TwenteMeshGluing.cpp:68
const double ly
Definition: ConstraintElementsUnitTest.cpp:34
@ S
Definition: quadtree.h:62
@ W
Definition: quadtree.h:63
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