26#ifndef OOMPH_MY_ALGEBRAIC_COLLAPSIBLE_CHANNEL_MESH
27#define OOMPH_MY_ALGEBRAIC_COLLAPSIBLE_CHANNEL_MESH
30#include "meshes/collapsible_channel_mesh.h"
47template<
class ELEMENT>
50 public virtual CollapsibleChannelMesh<ELEMENT>
62 const unsigned&
ndown,
70 &Mesh::Default_TimeStepper) :
91 const unsigned&
ndown,
100 &Mesh::Default_TimeStepper) :
110 CollapsibleChannelMesh<ELEMENT>::node_update();
130 <<
"It does not make sense to set the bl_squash_fct_pt \n"
131 <<
"outside the constructor as it's only used to set up the \n"
132 <<
"algebraic remesh data when the algebraic mesh is first built. \n";
134 "MyAlgebraicCollapsibleChannelMesh::bl_squash_fct_pt()\n";
179template<
class ELEMENT>
181 public RefineableQuadMesh<ELEMENT>,
196 const unsigned&
ndown,
204 &Mesh::Default_TimeStepper) :
230 const unsigned&
ndown,
239 &Mesh::Default_TimeStepper) :
267template<
class ELEMENT>
301 if ((std::abs(
r_wall[0]-
x)>1.0e-15)&&(std::abs(
r_wall[1]-
y)>1.0e-15))
305 <<
"Wall must be in its undeformed position when\n"
306 <<
"algebraic node update information is set up!\n "
307 <<
"x-discrepancy: " << std::abs(
r_wall[0]-
x) << std::endl
308 <<
"y-discrepancy: " << std::abs(
r_wall[1]-
y) << std::endl;
339 nod_pt->add_node_update_info(
354template<
class ELEMENT>
Collapsible channel mesh with algebraic node update.
MyAlgebraicCollapsibleChannelMesh(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)
Constructor: Pass number of elements in upstream/collapsible/ downstream segment and across the chann...
void algebraic_node_update(const unsigned &t, AlgebraicNode *&node_pt)
Update nodal position at time level t (t=0: present; t>0: previous)
MyAlgebraicCollapsibleChannelMesh(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)
Constructor: Pass number of elements in upstream/collapsible/ downstream segment and across the chann...
CollapsibleChannelDomain::BLSquashFctPt & bl_squash_fct_pt()
Function pointer for function that squashes the mesh near the walls. Default trivial mapping (the ide...
virtual ~MyAlgebraicCollapsibleChannelMesh()
Destructor: empty.
void setup_algebraic_node_update()
Function to setup the algebraic node update.
CollapsibleChannelDomain::BLSquashFctPt Dummy_fct_pt
Dummy function pointer.
void update_node_update(AlgebraicNode *&node_pt)
Update the geometric references that are used to update node after mesh adaptation....
//////////////////////////////////////////////////////////////////////// ////////////////////////////...
MyRefineableAlgebraicCollapsibleChannelMesh(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)
Constructor: Pass number of elements in upstream/collapsible/ downstream segment and across the chann...
MyRefineableAlgebraicCollapsibleChannelMesh(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)
Constructor: Pass number of elements in upstream/collapsible/ downstream segment and across the chann...
///////////////////////////////////////////////////////////////// ///////////////////////////////////...