26 #ifndef OOMPH_CHANNEL_WITH_LEAFLET_DOMAIN_HEADER
27 #define OOMPH_CHANNEL_WITH_LEAFLET_DOMAIN_HEADER
31 #include "../generic/geom_objects.h"
32 #include "../generic/domain.h"
33 #include "../generic/macro_element.h"
57 const unsigned& nleft,
58 const unsigned& nright,
85 for (
unsigned i = 0;
i < nmacro;
i++)
126 const unsigned& imacro,
127 const unsigned& idirect,
287 const unsigned& imacro,
288 const unsigned& idirect,
292 #ifdef WARN_ABOUT_SUBTLY_CHANGED_OOMPH_INTERFACES
295 "Order of function arguments has changed between versions 0.8 and 0.85",
296 "ChannelWithLeafletDomain::macro_element_boundary(...)",
300 using namespace QuadTreeNames;
312 if ((iline <
Ny1) && (icol <
Nleft))
335 else if ((iline <
Ny1) && (icol >=
Nleft))
358 else if ((iline >=
Ny1) && (icol <
Nleft))
381 else if ((iline >=
Ny1) && (icol >=
Nleft))
429 xi_wall[0] = xi0 + (1.0 +
zeta[0]) / 2.0 * (xi1 - xi0);
444 r_vert[1] = y0 + (1.0 +
zeta[0]) / 2.0 * (y1 - y0);
450 r[0] = r_vert[0] +
s * (r_wall[0] - r_vert[0]);
451 r[1] = r_vert[1] +
s * (r_wall[1] - r_vert[1]);
472 xi_wall[0] = xi0 + (1.0 +
zeta[0]) / 2.0 * (xi1 - xi0);
487 r_vert[1] = y0 + (1.0 +
zeta[0]) / 2.0 * (y1 - y0);
493 r[0] = r_vert[0] +
s * (r_wall[0] - r_vert[0]);
494 r[1] = r_vert[1] +
s * (r_wall[1] - r_vert[1]);
516 r[0] = r_left[0] + (1.0 +
zeta[0]) / 2.0 * (r_right[0] - r_left[0]);
517 r[1] = r_left[1] + (1.0 +
zeta[0]) / 2.0 * (r_right[1] - r_left[1]);
539 r[0] = r_left[0] + (1.0 +
zeta[0]) / 2.0 * (r_right[0] - r_left[0]);
540 r[1] = r_left[1] + (1.0 +
zeta[0]) / 2.0 * (r_right[1] - r_left[1]);
569 xi_wall[0] = xi0 + (1.0 +
zeta[0]) / 2.0 * (xi1 - xi0);
584 r_vert[1] = y0 + (1.0 +
zeta[0]) / 2.0 * (y1 - y0);
590 r[0] = r_vert[0] +
s * (r_wall[0] - r_vert[0]);
591 r[1] = r_vert[1] +
s * (r_wall[1] - r_vert[1]);
614 xi_wall[0] = xi0 + (1.0 +
zeta[0]) / 2.0 * (xi1 - xi0);
629 r_vert[1] = y0 + (1.0 +
zeta[0]) / 2.0 * (y1 - y0);
635 r[0] = r_vert[0] +
s * (r_wall[0] - r_vert[0]);
636 r[1] = r_vert[1] +
s * (r_wall[1] - r_vert[1]);
658 r[0] = r_left[0] + (1.0 +
zeta[0]) / 2.0 * (r_right[0] - r_left[0]);
659 r[1] = r_left[1] + (1.0 +
zeta[0]) / 2.0 * (r_right[1] - r_left[1]);
681 r[0] = r_left[0] + (1.0 +
zeta[0]) / 2.0 * (r_right[0] - r_left[0]);
682 r[1] = r_left[1] + (1.0 +
zeta[0]) / 2.0 * (r_right[1] - r_left[1]);
710 r[0] = r_join[0] +
zeta[0] * (
X_0 - r_join[0]);
711 r[1] = r_join[1] +
zeta[0] * (
Htot - r_join[1]);
733 xi_line[0] = xi0 + (1.0 +
zeta[0]) / 2.0 * (xi1 - xi0);
749 r_vert[1] = y0 + (1.0 +
zeta[0]) / 2.0 * (y1 - y0);
755 r[0] = r_vert[0] +
s * (r_line[0] - r_vert[0]);
756 r[1] = r_vert[1] +
s * (r_line[1] - r_vert[1]);
778 xi_line[0] = xi0 + (1.0 +
zeta[0]) / 2.0 * (xi1 - xi0);
794 r_vert[1] = y0 + (1.0 +
zeta[0]) / 2.0 * (y1 - y0);
800 r[0] = r_vert[0] +
s * (r_line[0] - r_vert[0]);
801 r[1] = r_vert[1] +
s * (r_line[1] - r_vert[1]);
823 r[0] = r_left[0] + (1.0 +
zeta[0]) / 2.0 * (r_right[0] - r_left[0]);
824 r[1] = r_left[1] + (1.0 +
zeta[0]) / 2.0 * (r_right[1] - r_left[1]);
846 r[0] = r_left[0] + (1.0 +
zeta[0]) / 2.0 * (r_right[0] - r_left[0]);
847 r[1] = r_left[1] + (1.0 +
zeta[0]) / 2.0 * (r_right[1] - r_left[1]);
876 xi_line[0] = xi0 + (1.0 +
zeta[0]) / 2.0 * (xi1 - xi0);
892 r_vert[1] = y0 + (1.0 +
zeta[0]) / 2.0 * (y1 - y0);
898 r[0] = r_vert[0] +
s * (r_line[0] - r_vert[0]);
899 r[1] = r_vert[1] +
s * (r_line[1] - r_vert[1]);
921 xi_line[0] = xi0 + (1.0 +
zeta[0]) / 2.0 * (xi1 - xi0);
937 r_vert[1] = y0 + (1.0 +
zeta[0]) / 2.0 * (y1 - y0);
943 r[0] = r_vert[0] +
s * (r_line[0] - r_vert[0]);
944 r[1] = r_vert[1] +
s * (r_line[1] - r_vert[1]);
966 r[0] = r_left[0] + (1.0 +
zeta[0]) / 2.0 * (r_right[0] - r_left[0]);
967 r[1] = r_left[1] + (1.0 +
zeta[0]) / 2.0 * (r_right[1] - r_left[1]);
989 r[0] = r_left[0] + (1.0 +
zeta[0]) / 2.0 * (r_right[0] - r_left[0]);
990 r[1] = r_left[1] + (1.0 +
zeta[0]) / 2.0 * (r_right[1] - r_left[1]);
int i
Definition: BiCGSTAB_step_by_step.cpp:9
Definition: channel_with_leaflet_domain.h:42
void macro_bound_IV_S(const unsigned &t, const Vector< double > &zeta, Vector< double > &r, const unsigned &i, const unsigned &j)
Helper function.
Definition: channel_with_leaflet_domain.h:974
void macro_bound_III_W(const unsigned &t, const Vector< double > &zeta, Vector< double > &r, const unsigned &i, const unsigned &j)
Helper function.
Definition: channel_with_leaflet_domain.h:763
GeomObject * Leaflet_pt
Pointer to leaflet.
Definition: channel_with_leaflet_domain.h:278
void macro_bound_I_N(const unsigned &t, const Vector< double > &zeta, Vector< double > &r, const unsigned &i, const unsigned &j)
Helper function.
Definition: channel_with_leaflet_domain.h:501
double Lleft
Length of the domain to the left of the leaflet.
Definition: channel_with_leaflet_domain.h:253
unsigned Nright
Number of macro element columnns to the right of the leaflet.
Definition: channel_with_leaflet_domain.h:262
void macro_bound_II_N(const unsigned &t, const Vector< double > &zeta, Vector< double > &r, const unsigned &i, const unsigned &j)
Helper function.
Definition: channel_with_leaflet_domain.h:643
unsigned Ny2
Number of macro element rows above the leaflet.
Definition: channel_with_leaflet_domain.h:271
void macro_bound_I_W(const unsigned &t, const Vector< double > &zeta, Vector< double > &r, const unsigned &i, const unsigned &j)
Helper function.
Definition: channel_with_leaflet_domain.h:458
double X_0
Definition: channel_with_leaflet_domain.h:275
void macro_bound_IV_E(const unsigned &t, const Vector< double > &zeta, Vector< double > &r, const unsigned &i, const unsigned &j)
Helper function.
Definition: channel_with_leaflet_domain.h:861
void macro_bound_I_S(const unsigned &t, const Vector< double > &zeta, Vector< double > &r, const unsigned &i, const unsigned &j)
Helper function.
Definition: channel_with_leaflet_domain.h:524
unsigned Ny1
Number of macro element rows up to the end of the leaflet.
Definition: channel_with_leaflet_domain.h:268
double lleft()
Length of domain to the left of leaflet.
Definition: channel_with_leaflet_domain.h:107
void macro_bound_II_S(const unsigned &t, const Vector< double > &zeta, Vector< double > &r, const unsigned &i, const unsigned &j)
Helper function.
Definition: channel_with_leaflet_domain.h:666
double Lright
Length of the domain to the right of the leaflet.
Definition: channel_with_leaflet_domain.h:250
ChannelWithLeafletDomain(GeomObject *leaflet_pt, const double &lleft, const double &lright, const double &hleaflet, const double &htot, const unsigned &nleft, const unsigned &nright, const unsigned &ny1, const unsigned &ny2)
Definition: channel_with_leaflet_domain.h:52
double Hleaflet
Lagrangian coordinate at end of leaflet.
Definition: channel_with_leaflet_domain.h:256
~ChannelWithLeafletDomain()
Destructor: Empty; cleanup done in base class.
Definition: channel_with_leaflet_domain.h:92
void macro_bound_III_N(const unsigned &t, const Vector< double > &zeta, Vector< double > &r, const unsigned &i, const unsigned &j)
Helper function.
Definition: channel_with_leaflet_domain.h:808
void macro_bound_II_E(const unsigned &t, const Vector< double > &zeta, Vector< double > &r, const unsigned &i, const unsigned &j)
Helper function.
Definition: channel_with_leaflet_domain.h:554
GeomObject *& leaflet_pt()
Pointer to the wall.
Definition: channel_with_leaflet_domain.h:119
void slanted_bound_up(const unsigned &t, const Vector< double > &zeta, Vector< double > &r)
Helper function.
Definition: channel_with_leaflet_domain.h:697
void macro_bound_III_S(const unsigned &t, const Vector< double > &zeta, Vector< double > &r, const unsigned &i, const unsigned &j)
Helper function.
Definition: channel_with_leaflet_domain.h:831
double htot()
Total height of domain (width of channel)
Definition: channel_with_leaflet_domain.h:95
void macro_bound_IV_W(const unsigned &t, const Vector< double > &zeta, Vector< double > &r, const unsigned &i, const unsigned &j)
Helper function.
Definition: channel_with_leaflet_domain.h:906
void macro_bound_I_E(const unsigned &t, const Vector< double > &zeta, Vector< double > &r, const unsigned &i, const unsigned &j)
Helper function.
Definition: channel_with_leaflet_domain.h:415
unsigned Nleft
Number of macro element columns to the left of the leaflet.
Definition: channel_with_leaflet_domain.h:265
double Htot
Total width of the channel.
Definition: channel_with_leaflet_domain.h:259
void macro_element_boundary(const unsigned &t, const unsigned &imacro, const unsigned &idirect, const Vector< double > &zeta, Vector< double > &r)
Parametrisation of macro element boundaries.
Definition: channel_with_leaflet_domain.h:285
void macro_bound_IV_N(const unsigned &t, const Vector< double > &zeta, Vector< double > &r, const unsigned &i, const unsigned &j)
Helper function.
Definition: channel_with_leaflet_domain.h:951
double lright()
Length of domain to the right of leaflet.
Definition: channel_with_leaflet_domain.h:113
void macro_bound_III_E(const unsigned &t, const Vector< double > &zeta, Vector< double > &r, const unsigned &i, const unsigned &j)
Helper function.
Definition: channel_with_leaflet_domain.h:718
double hleaflet()
Height of leaflet.
Definition: channel_with_leaflet_domain.h:101
void macro_bound_II_W(const unsigned &t, const Vector< double > &zeta, Vector< double > &r, const unsigned &i, const unsigned &j)
Helper function.
Definition: channel_with_leaflet_domain.h:598
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:267
Definition: macro_element.h:279
@ N
Definition: constructor.cpp:22
RealScalar s
Definition: level1_cplx_impl.h:130
EIGEN_STRONG_INLINE EIGEN_DEVICE_FUNC bfloat16 floor(const bfloat16 &a)
Definition: BFloat16.h:643
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
@ S
Definition: quadtree.h:62
@ W
Definition: quadtree.h:63
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
std::ptrdiff_t j
Definition: tut_arithmetic_redux_minmax.cpp:2