27 #ifndef OOMPH_COLLAPSIBLE_CHANNEL_MESH_HEADER
28 #define OOMPH_COLLAPSIBLE_CHANNEL_MESH_HEADER
31 #include "../generic/refineable_quad_mesh.h"
32 #include "../generic/macro_element.h"
33 #include "../generic/domain.h"
34 #include "../generic/quad_mesh.h"
41 #include "../generic/macro_element_node_update_element.h"
45 #include "../generic/algebraic_elements.h"
63 template<
class ELEMENT>
74 const unsigned& ncollapsible,
75 const unsigned& ndown,
78 const double& lcollapsible,
182 template<
class ELEMENT>
192 const unsigned& ncollapsible,
193 const unsigned& ndown,
196 const double& lcollapsible,
237 template<
class ELEMENT>
249 const unsigned& ncollapsible,
250 const unsigned& ndown,
253 const double& lcollapsible,
270 ELEMENT* el_pt =
new ELEMENT;
273 std::ostringstream error_message;
274 error_message <<
"Base class for ELEMENT in "
275 <<
"MacroElementNodeUpdateCollapsibleChannelMesh needs"
276 <<
"to be of type MacroElementNodeUpdateElement!\n";
277 error_message <<
"Whereas it is: typeid(el_pt).name()"
278 <<
typeid(el_pt).
name() << std::endl;
281 "MacroElementNodeUpdateCollapsibleChannelMesh::\n";
282 function_name +=
"MacroElementNodeUpdateCollapsibleChannelMesh()";
294 unsigned n_element = this->
nelement();
295 for (
unsigned i = 0;
i < n_element;
i++)
298 ELEMENT* el_pt =
dynamic_cast<ELEMENT*
>(this->
element_pt(
i));
306 std::ostringstream error_message;
308 <<
"Failed to upcast to MacroElementNodeUpdateElementBase\n";
309 error_message <<
"Element must be derived from "
310 "MacroElementNodeUpdateElementBase\n";
311 error_message <<
"but it is of type " <<
typeid(el_pt).
name();
314 "MacroElementNodeUpdateCollapsibleChannelMesh::\n";
315 function_name +=
"MacroElementNodeUpdateCollapsibleChannelMesh()";
325 geom_object_pt[0] = this->
Wall_pt;
329 el_pt->set_node_update_info(geom_object_pt);
334 geom_object_pt[0] = this->
Wall_pt;
365 template<
class ELEMENT>
377 const unsigned& ncollapsible,
378 const unsigned& ndown,
381 const double& lcollapsible,
425 template<
class ELEMENT>
438 const unsigned& ncollapsible,
439 const unsigned& ndown,
442 const double& lcollapsible,
476 const unsigned& ncollapsible,
477 const unsigned& ndown,
480 const double& lcollapsible,
519 std::ostringstream error_message;
521 <<
"It does not make sense to set the bl_squash_fct_pt \n"
522 <<
"outside the constructor as it's only used to set up the \n"
523 <<
"algebraic remesh data when the algebraic mesh is first built. \n";
525 "AlgebraicCollapsibleChannelMesh::bl_squash_fct_pt()\n";
544 std::ostringstream error_message;
546 <<
"It does not make sense to set the axial_spacing_fct_pt \n"
547 <<
"outside the constructor as it's only used to set up the \n"
548 <<
"algebraic remesh data when the algebraic mesh is first built. \n";
550 "AlgebraicCollapsibleChannelMesh::axial_spacing_fct_pt()\n";
587 template<
class ELEMENT>
600 const unsigned& ncollapsible,
601 const unsigned& ndown,
604 const double& lcollapsible,
642 const unsigned& ncollapsible,
643 const unsigned& ndown,
646 const double& lcollapsible,
671 bl_squash_function_pt,
int i
Definition: BiCGSTAB_step_by_step.cpp:9
Collapsible channel mesh with algebraic node update.
Definition: collapsible_channel_mesh.template.h:429
AlgebraicCollapsibleChannelMesh(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, CollapsibleChannelDomain::BLSquashFctPt bl_squash_function_pt, TimeStepper *time_stepper_pt=&Mesh::Default_TimeStepper)
Definition: collapsible_channel_mesh.template.h:474
void setup_algebraic_node_update()
Function to setup the algebraic node update.
Definition: collapsible_channel_mesh.template.cc:324
CollapsibleChannelDomain::BLSquashFctPt Dummy_fct_pt
Dummy function pointer.
Definition: collapsible_channel_mesh.template.h:574
virtual ~AlgebraicCollapsibleChannelMesh()
Destructor: empty.
Definition: collapsible_channel_mesh.template.h:466
void update_node_update(AlgebraicNode *&node_pt)
Definition: collapsible_channel_mesh.template.h:567
CollapsibleChannelDomain::BLSquashFctPt & bl_squash_fct_pt()
Definition: collapsible_channel_mesh.template.h:517
AlgebraicCollapsibleChannelMesh(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, TimeStepper *time_stepper_pt=&Mesh::Default_TimeStepper)
Definition: collapsible_channel_mesh.template.h:436
void algebraic_node_update(const unsigned &t, AlgebraicNode *&node_pt)
Definition: collapsible_channel_mesh.template.cc:242
CollapsibleChannelDomain::BLSquashFctPt & axial_spacing_fct_pt()
Definition: collapsible_channel_mesh.template.h:542
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
Collapsible channel domain.
Definition: collapsible_channel_domain.h:41
AxialSpacingFctPt & axial_spacing_fct_pt()
Definition: collapsible_channel_domain.h:186
double(* BLSquashFctPt)(const double &s)
Definition: collapsible_channel_domain.h:152
double(* AxialSpacingFctPt)(const double &xi)
Definition: collapsible_channel_domain.h:182
BLSquashFctPt & bl_squash_fct_pt()
Definition: collapsible_channel_domain.h:165
Definition: collapsible_channel_mesh.template.h:65
GeomObject *& wall_pt()
Access function to GeomObject representing wall.
Definition: collapsible_channel_mesh.template.h:91
~CollapsibleChannelMesh()
destructor
Definition: collapsible_channel_mesh.template.h:85
GeomObject * Wall_pt
Pointer to geometric object that represents the moving wall.
Definition: collapsible_channel_mesh.template.h:162
CollapsibleChannelDomain * domain_pt()
Access function to domain.
Definition: collapsible_channel_mesh.template.h:97
CollapsibleChannelMesh(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, TimeStepper *time_stepper_pt=&Mesh::Default_TimeStepper)
Definition: collapsible_channel_mesh.template.cc:43
CollapsibleChannelDomain::BLSquashFctPt bl_squash_fct_pt() const
Definition: collapsible_channel_mesh.template.h:119
virtual CollapsibleChannelDomain::AxialSpacingFctPt & axial_spacing_fct_pt() const
Definition: collapsible_channel_mesh.template.h:138
unsigned Ncollapsible
Number of element columns in collapsible part.
Definition: collapsible_channel_mesh.template.h:153
virtual CollapsibleChannelDomain::BLSquashFctPt & bl_squash_fct_pt()
Definition: collapsible_channel_mesh.template.h:109
unsigned Nup
Number of element columns in upstream part.
Definition: collapsible_channel_mesh.template.h:150
virtual CollapsibleChannelDomain::AxialSpacingFctPt & axial_spacing_fct_pt()
Definition: collapsible_channel_mesh.template.h:130
unsigned Ndown
Number of element columns in downstream part.
Definition: collapsible_channel_mesh.template.h:156
CollapsibleChannelDomain * Domain_pt
Pointer to domain.
Definition: collapsible_channel_mesh.template.h:147
unsigned Ny
Number of element rows across channel.
Definition: collapsible_channel_mesh.template.h:159
Definition: geom_objects.h:101
Definition: collapsible_channel_mesh.template.h:241
virtual ~MacroElementNodeUpdateCollapsibleChannelMesh()
Destructor: empty.
Definition: collapsible_channel_mesh.template.h:344
MacroElementNodeUpdateCollapsibleChannelMesh(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, TimeStepper *time_stepper_pt=&Mesh::Default_TimeStepper)
Definition: collapsible_channel_mesh.template.h:247
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
Definition: collapsible_channel_mesh.template.h:369
virtual ~MacroElementNodeUpdateRefineableCollapsibleChannelMesh()
Destructor: empty.
Definition: collapsible_channel_mesh.template.h:412
MacroElementNodeUpdateRefineableCollapsibleChannelMesh(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, TimeStepper *time_stepper_pt=&Mesh::Default_TimeStepper)
Definition: collapsible_channel_mesh.template.h:375
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
Definition: collapsible_channel_mesh.template.h:591
void update_node_update(AlgebraicNode *&node_pt)
Definition: collapsible_channel_mesh.template.cc:437
RefineableAlgebraicCollapsibleChannelMesh(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, TimeStepper *time_stepper_pt=&Mesh::Default_TimeStepper)
Definition: collapsible_channel_mesh.template.h:598
RefineableAlgebraicCollapsibleChannelMesh(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, CollapsibleChannelDomain::BLSquashFctPt bl_squash_function_pt, TimeStepper *time_stepper_pt=&Mesh::Default_TimeStepper)
Definition: collapsible_channel_mesh.template.h:640
Definition: collapsible_channel_mesh.template.h:186
RefineableCollapsibleChannelMesh(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, TimeStepper *time_stepper_pt=&Mesh::Default_TimeStepper)
Definition: collapsible_channel_mesh.template.h:190
~RefineableCollapsibleChannelMesh()
Destructor(empty)
Definition: collapsible_channel_mesh.template.h:218
Definition: refineable_quad_mesh.h:53
void setup_quadtree_forest()
Definition: refineable_quad_mesh.h:88
Definition: simple_rectangular_quadmesh.template.h:58
const unsigned & ny() const
Access function for number of elements in y directions.
Definition: simple_rectangular_quadmesh.template.h:77
Definition: timesteppers.h:231
const double ly
Definition: ConstraintElementsUnitTest.cpp:34
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