26 #ifndef OOMPH_CHANNEL_WITH_LEAFLET_MESH_HEADER
27 #define OOMPH_CHANNEL_WITH_LEAFLET_MESH_HEADER
30 #include "../generic/refineable_quad_mesh.h"
31 #include "../generic/macro_element.h"
32 #include "../generic/domain.h"
33 #include "../generic/quad_mesh.h"
40 #include "../generic/macro_element_node_update_element.h"
43 #include "../generic/algebraic_elements.h"
53 template<
class ELEMENT>
70 const double& hleaflet,
72 const unsigned& nleft,
73 const unsigned& nright,
104 template<
class ELEMENT>
122 const double& lright,
123 const double& hleaflet,
125 const unsigned& nleft,
126 const unsigned& nright,
165 template<
class ELEMENT>
183 const double& lright,
184 const double& hleaflet,
186 const unsigned& nleft,
187 const unsigned& nright,
203 ELEMENT* el_pt =
new ELEMENT;
206 std::ostringstream error_message;
207 error_message <<
"Base class for ELEMENT in "
208 <<
"MacroElementNodeUpdateChannelWithLeafletMesh needs"
209 <<
"to be of type MacroElementNodeUpdateElement!\n";
210 error_message <<
"Whereas it is: typeid(el_pt).name()"
211 <<
typeid(el_pt).
name() << std::endl;
214 "MacroElementNodeUpdateChannelWithLeafletMesh::\n";
215 function_name +=
"MacroElementNodeUpdateChannelWithLeafletMesh()";
227 unsigned n_element = this->
nelement();
228 for (
unsigned i = 0;
i < n_element;
i++)
231 ELEMENT* el_pt =
dynamic_cast<ELEMENT*
>(this->
element_pt(
i));
239 std::ostringstream error_message;
241 <<
"Failed to upcast to MacroElementNodeUpdateElementBase\n";
242 error_message <<
"Element must be derived from "
243 "MacroElementNodeUpdateElementBase\n";
244 error_message <<
"but it is of type " <<
typeid(el_pt).
name();
247 "MacroElementNodeUpdateChannelWithLeafletMesh::\n";
248 function_name +=
"MacroElementNodeUpdateChannelWithLeafletMesh()";
262 el_pt->set_node_update_info(geom_object_pt);
291 template<
class ELEMENT>
309 const double& lright,
310 const double& hleaflet,
312 const unsigned& nleft,
313 const unsigned& nright,
359 template<
class ELEMENT>
377 const double& lright,
378 const double& hleaflet,
380 const unsigned& nleft,
381 const unsigned& nright,
468 template<
class ELEMENT>
486 const double& lright,
487 const double& hleaflet,
489 const unsigned& nleft,
490 const unsigned& nright,
533 template<
class ELEMENT>
550 const double& lright,
551 const double& hleaflet,
553 const unsigned& nleft,
554 const unsigned& nright,
571 bool update_all_solid_nodes =
true;
int i
Definition: BiCGSTAB_step_by_step.cpp:9
Definition: channel_with_leaflet_mesh.template.h:363
void setup_algebraic_node_update()
Function to setup the algebraic node update.
Definition: channel_with_leaflet_mesh.template.cc:242
double X_0
Definition: channel_with_leaflet_mesh.template.h:452
AlgebraicChannelWithLeafletMesh(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, TimeStepper *time_stepper_pt=&Mesh::Default_TimeStepper)
Definition: channel_with_leaflet_mesh.template.h:374
double Hleaflet
Definition: channel_with_leaflet_mesh.template.h:457
void algebraic_node_update(const unsigned &t, AlgebraicNode *&node_pt)
Perform algebraic node update.
Definition: channel_with_leaflet_mesh.template.cc:412
void node_update_I(const unsigned &t, AlgebraicNode *&node_pt)
Update function for nodes in lower left region (I)
Definition: channel_with_leaflet_mesh.template.cc:455
void node_update_III(const unsigned &t, AlgebraicNode *&node_pt)
Update function for nodes in upper left region (III)
Definition: channel_with_leaflet_mesh.template.cc:564
virtual ~AlgebraicChannelWithLeafletMesh()
Destructor: empty.
Definition: channel_with_leaflet_mesh.template.h:416
void node_update_II(const unsigned &t, AlgebraicNode *&node_pt)
Update function for nodes in lower right region (II)
Definition: channel_with_leaflet_mesh.template.cc:500
void slanted_bound_up(const unsigned &t, const Vector< double > &zeta, Vector< double > &r)
Helper function.
Definition: channel_with_leaflet_mesh.template.cc:542
void node_update_IV(const unsigned &t, AlgebraicNode *&node_pt)
Update function for nodes in upper right region (IV)
Definition: channel_with_leaflet_mesh.template.cc:598
void update_node_update(AlgebraicNode *&node_pt)
Definition: channel_with_leaflet_mesh.template.h:422
Definition: algebraic_elements.h:599
void add_geom_object_list_pt(GeomObject *geom_object_pt)
Definition: algebraic_elements.h:823
AlgebraicNode * node_pt(const unsigned long &n)
Return a pointer to the n-th global AlgebraicNode.
Definition: algebraic_elements.h:620
Definition: algebraic_elements.h:55
Definition: channel_with_leaflet_domain.h:42
Channel with leaflet mesh.
Definition: channel_with_leaflet_mesh.template.h:55
ChannelWithLeafletDomain * Domain_pt
Pointer to domain.
Definition: channel_with_leaflet_mesh.template.h:89
ChannelWithLeafletDomain * domain_pt()
Access function to domain.
Definition: channel_with_leaflet_mesh.template.h:82
GeomObject * Leaflet_pt
Pointer to GeomObject that represents the leaflet.
Definition: channel_with_leaflet_mesh.template.h:92
ChannelWithLeafletMesh(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, TimeStepper *time_stepper_pt=&Mesh::Default_TimeStepper)
Definition: channel_with_leaflet_mesh.template.cc:48
virtual ~ChannelWithLeafletMesh()
Destructor : empty.
Definition: channel_with_leaflet_mesh.template.h:79
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: channel_with_leaflet_mesh.template.h:169
virtual ~MacroElementNodeUpdateChannelWithLeafletMesh()
Destructor: empty.
Definition: channel_with_leaflet_mesh.template.h:277
MacroElementNodeUpdateChannelWithLeafletMesh(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, TimeStepper *time_stepper_pt=&Mesh::Default_TimeStepper)
Definition: channel_with_leaflet_mesh.template.h:180
Base class for elements that allow MacroElement-based node update.
Definition: macro_element_node_update_element.h:197
Definition: macro_element_node_update_element.h:360
void set_geom_object_vector_pt(Vector< GeomObject * > geom_object_vector_pt)
Definition: macro_element_node_update_element.h:510
Domain *& macro_domain_pt()
Broken assignment operator.
Definition: macro_element_node_update_element.h:376
Refineable mesh with MacroElement-based node update.
Definition: channel_with_leaflet_mesh.template.h:295
MacroElementNodeUpdateRefineableChannelWithLeafletMesh(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, TimeStepper *time_stepper_pt=&Mesh::Default_TimeStepper)
Definition: channel_with_leaflet_mesh.template.h:306
virtual ~MacroElementNodeUpdateRefineableChannelWithLeafletMesh()
Destructor: empty.
Definition: channel_with_leaflet_mesh.template.h:344
static Steady< 0 > Default_TimeStepper
The Steady Timestepper.
Definition: mesh.h:75
virtual void node_update(const bool &update_all_solid_nodes=false)
Definition: mesh.cc:287
const Vector< GeneralisedElement * > & element_pt() const
Return reference to the Vector of elements.
Definition: mesh.h:460
unsigned long nelement() const
Return number of elements in the mesh.
Definition: mesh.h:590
Definition: oomph_definitions.h:222
Channel with leaflet mesh upgraded to (pseudo-)solid mesh.
Definition: channel_with_leaflet_mesh.template.h:537
PseudoElasticChannelWithLeafletMesh(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, TimeStepper *time_stepper_pt=&Mesh::Default_TimeStepper)
Definition: channel_with_leaflet_mesh.template.h:547
virtual ~PseudoElasticChannelWithLeafletMesh()
Destructor : empty.
Definition: channel_with_leaflet_mesh.template.h:581
Refineable version of algebraic ChannelWithLeafletMesh.
Definition: channel_with_leaflet_mesh.template.h:472
RefineableAlgebraicChannelWithLeafletMesh(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, TimeStepper *time_stepper_pt=&Mesh::Default_TimeStepper)
Definition: channel_with_leaflet_mesh.template.h:483
void update_node_update(AlgebraicNode *&node_pt)
Update the node update functions.
Definition: channel_with_leaflet_mesh.template.cc:639
Refineable version of ChannelWithLeafletMesh.
Definition: channel_with_leaflet_mesh.template.h:108
RefineableChannelWithLeafletMesh(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, TimeStepper *time_stepper_pt=&Mesh::Default_TimeStepper)
Definition: channel_with_leaflet_mesh.template.h:119
virtual ~RefineableChannelWithLeafletMesh()
Destructor (empty)
Definition: channel_with_leaflet_mesh.template.h:146
Definition: refineable_quad_mesh.h:53
void setup_quadtree_forest()
Definition: refineable_quad_mesh.h:88
Definition: simple_rectangular_quadmesh.template.h:58
void set_lagrangian_nodal_coordinates()
Definition: mesh.cc:9564
Definition: timesteppers.h:231
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
std::string string(const unsigned &i)
Definition: oomph_definitions.cc:286
DRAIG: Change all instances of (SPATIAL_DIM) to (DIM-1).
Definition: AnisotropicHookean.h:10
string name
Definition: plotDoE.py:33
t
Definition: plotPSD.py:36
#define OOMPH_EXCEPTION_LOCATION
Definition: oomph_definitions.h:61
#define OOMPH_CURRENT_FUNCTION
Definition: oomph_definitions.h:86