Collapsible channel domain. More...
#include <collapsible_channel_domain.h>
Public Types | |
typedef double(* | BLSquashFctPt) (const double &s) |
Typedef for function pointer for function that squashes the macro elements near the wall to help resolution of any wall boundary layers. More... | |
typedef double(* | AxialSpacingFctPt) (const double &xi) |
Typedef for function pointer for function that implements axial spacing of macro elements. More... | |
Public Member Functions | |
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) | |
Constructor: Pass the number of (macro-)elements, the domain lengths in the x- and y-direction and the pointer to the geometric object that specifies the shape of the "collapsible" segment. More... | |
~CollapsibleChannelDomain () | |
Destructor: emtpy; cleanup done in base class. More... | |
unsigned | nup () |
Number of vertical columns of macro elements the upstream section. More... | |
unsigned | ncollapsible () |
Number of vertical clumns of macro elements in the "collapsible" segment. More... | |
unsigned | ndown () |
Number of vertical columns of macro elements in the downstream section. More... | |
unsigned | ny () |
Number of macro-elements across the channel. More... | |
double | l_up () |
Length of upstream section. More... | |
double | l_collapsible () |
Length of collapsible segment. More... | |
double | l_down () |
Length of downstream section. More... | |
double | l_y () |
Width of channel. More... | |
GeomObject *& | wall_pt () |
Access to pointer to the geometric object that parametrises the collapsible wall. More... | |
GeomObject * | wall_pt () const |
Access to pointer to the geometric object that parametrises the collapsible wall (const version) More... | |
BLSquashFctPt & | bl_squash_fct_pt () |
Function pointer for function that squashes the macro elements near wall. Default mapping (identity) leaves the y-coordinate of the nodal points unchanged. More... | |
double | s_squash (const double &s) |
Function that squashes the macro elements near the wall. Input argument should vary between 0 and 1; function should return stretched/squashed coordinate in the same range. Default implementation is the identity; can be overloaded by specifying a different function pointer with bl_squash_fct_pt(). More... | |
AxialSpacingFctPt & | axial_spacing_fct_pt () |
Function pointer for function that implements axial spacing of macro elements. More... | |
double | axial_spacing_fct (const double &xi) |
Function that implements axial spacing of macro elements. More... | |
void | macro_element_boundary (const unsigned &t, const unsigned &imacro, const unsigned &idirect, const Vector< double > &zeta, Vector< double > &r) |
Vector representation of the imacro-th macro element boundary idirect (N/S/W/E) at time level t (t=0: present; t>0: previous): Note that the local coordinate zeta is a 1D Vector rather than a scalar – this is unavoidable because this function implements the pure virtual function in the Domain base class. More... | |
void | enable_rotate_domain () |
Rotate the domain (for axisymmetric problems) More... | |
void | disable_rotate_domain () |
Undo rotation of the domain (for axisymmetric problems) More... | |
Public Member Functions inherited from oomph::Domain | |
Domain () | |
Constructor. More... | |
Domain (const Domain &)=delete | |
Broken copy constructor. More... | |
void | operator= (const Domain &)=delete |
Broken assignment operator. More... | |
virtual | ~Domain () |
Destructor: Strictly speaking, whoever creates an object dynamically should be responsible for the cleanup of said object but it makes sense here for the Domain to generically kill any MacroElements left over in the MacroElement container (if it hasn't already been done in the derived class) to avoid memory leaks. More... | |
MacroElement * | macro_element_pt (const unsigned &i) |
Access to i-th macro element. More... | |
unsigned | nmacro_element () |
Number of macro elements in domain. More... | |
void | output (const std::string &filename, const unsigned &nplot) |
Output macro elements. More... | |
void | output (std::ostream &outfile, const unsigned &nplot) |
Output macro elements. More... | |
virtual void | macro_element_boundary (const double &t, const unsigned &i_macro, const unsigned &i_direct, const Vector< double > &s, Vector< double > &f) |
Vector representation of the i_macro-th macro element boundary i_direct (e.g. N/S/W/E in 2D) at continuous time, t. More... | |
void | macro_element_boundary (const unsigned &i_macro, const unsigned &i_direct, const Vector< double > &s, Vector< double > &f) |
Vector representation of the i_macro-th macro element boundary i_direct (e.g. N/S/W/E in 2D) at current time: f(s). More... | |
void | output_macro_element_boundaries (const std::string &filename, const unsigned &nplot) |
Output all macro element boundaries as tecplot zones. More... | |
void | output_macro_element_boundaries (std::ostream &outfile, const unsigned &nplot) |
Output all macro element boundaries as tecplot zones. More... | |
virtual void | dmacro_element_boundary (const unsigned &t, const unsigned &i_macro, const unsigned &i_direct, const Vector< double > &s, Vector< double > &f) |
Vector representation of the i_macro-th macro element boundary derivatives i_direct (e.g. N/S/W/E in 2D) at time level t (t=0: present; t>0: previous): f(s). Broken virtual. More... | |
virtual void | dmacro_element_boundary (const double &t, const unsigned &i_macro, const unsigned &i_direct, const Vector< double > &s, Vector< double > &f) |
Vector representation of the i_macro-th macro element boundary derivatives i_direct (e.g. N/S/W/E in 2D) at continuous time level t. Broken virtual. More... | |
void | dmacro_element_boundary (const unsigned &i_macro, const unsigned &i_direct, const Vector< double > &s, Vector< double > &f) |
Vector representation of the i_macro-th macro element boundary derivatives i_direct (e.g. N/S/W/E in 2D) at current time: f(s). More... | |
virtual void | d2macro_element_boundary (const unsigned &t, const unsigned &i_macro, const unsigned &i_direct, const Vector< double > &s, Vector< double > &f) |
Vector representation of the i_macro-th macro element boundary second derivatives i_direct (e.g. N/S/W/E in 2D) at time level t (t=0: present; t>0: previous): f(s). Broken virtual. More... | |
virtual void | d2macro_element_boundary (const double &t, const unsigned &i_macro, const unsigned &i_direct, const Vector< double > &s, Vector< double > &f) |
Vector representation of the i_macro-th macro element boundary seocond derivatives i_direct (e.g. N/S/W/E in 2D) at continuous time level t. Broken virtual. More... | |
void | d2macro_element_boundary (const unsigned &i_macro, const unsigned &i_direct, const Vector< double > &s, Vector< double > &f) |
Vector representation of the i_macro-th macro element boundary second derivatives i_direct (e.g. N/S/W/E in 2D) at current time: f(s). More... | |
Static Public Member Functions | |
static double | default_BL_squash_fct (const double &s) |
Default for function that squashes the macro elements near the walls. Identity. More... | |
Private Member Functions | |
void | r_N_straight (const Vector< double > &zeta, Vector< double > &r, const unsigned &imacro, const unsigned &part) |
Northern boundary of the macro element imacro in the upstream (part=0) or downstream (part=1) sections. More... | |
void | r_W_straight (const Vector< double > &zeta, Vector< double > &r, const unsigned &imacro, const unsigned &part) |
Western boundary of the macro element imacro in the upstream (part=0) or downstream (part=1) sections. More... | |
void | r_S_straight (const Vector< double > &zeta, Vector< double > &r, const unsigned &imacro, const unsigned &part) |
Southern boundary of the macro element imacro in the upstream (part=0) or downstream (part=1) sections. More... | |
void | r_E_straight (const Vector< double > &zeta, Vector< double > &r, const unsigned &imacro, const unsigned &part) |
Eastern boundary of the macro element imacro in the upstream (part=0) or downstream (part=1) sections. More... | |
void | r_N_collapsible (const unsigned &t, const Vector< double > &zeta, Vector< double > &r, const unsigned &imacro) |
Northern boundary of the macro element imacro in the collapsible section. More... | |
void | r_W_collapsible (const unsigned &t, const Vector< double > &zeta, Vector< double > &r, const unsigned &imacro) |
Western boundary of the macro element imacro in the collapsible section. More... | |
void | r_S_collapsible (const unsigned &t, const Vector< double > &zeta, Vector< double > &r, const unsigned &imacro) |
Southern boundary of the macro element imacro in the collapsible section. More... | |
void | r_E_collapsible (const unsigned &t, const Vector< double > &zeta, Vector< double > &r, const unsigned &imacro) |
Eastern boundary of the macro element imacro in the collapsible section. More... | |
Static Private Member Functions | |
static double | default_axial_spacing_fct (const double &xi) |
Default for function that implements axial spacing of macro elements. More... | |
Private Attributes | |
BLSquashFctPt | BL_squash_fct_pt |
Function pointer for function that squashes the macro elements near the walls. More... | |
AxialSpacingFctPt | Axial_spacing_fct_pt |
Function pointer for function that implements axial spacing of macro elements. More... | |
unsigned | Nup |
Number of vertical element columns in upstream section. More... | |
unsigned | Ncollapsible |
Number of vertical element columns in "collapsible" section. More... | |
unsigned | Ndown |
Number of vertical element columns in downstream section. More... | |
unsigned | Ny |
Number of macro elements across channel. More... | |
double | Lup |
x-length in the upstream part of the channel More... | |
double | Lcollapsible |
x-length in the "collapsible" part of the channel More... | |
double | Ldown |
x-length in the downstream part of the channel More... | |
double | Ly |
Width. More... | |
GeomObject * | Wall_pt |
Pointer to the geometric object that parametrises the collapsible wall. More... | |
bool | Rotate_domain |
Rotate domain (for axisymmetric problems, say) More... | |
Additional Inherited Members | |
Protected Attributes inherited from oomph::Domain | |
Vector< MacroElement * > | Macro_element_pt |
Vector of pointers to macro elements. More... | |
Collapsible channel domain.
Definition at line 40 of file collapsible_channel_domain.h.
typedef double(* oomph::CollapsibleChannelDomain::AxialSpacingFctPt) (const double &xi) |
Typedef for function pointer for function that implements axial spacing of macro elements.
Definition at line 182 of file collapsible_channel_domain.h.
typedef double(* oomph::CollapsibleChannelDomain::BLSquashFctPt) (const double &s) |
Typedef for function pointer for function that squashes the macro elements near the wall to help resolution of any wall boundary layers.
Definition at line 152 of file collapsible_channel_domain.h.
|
inline |
Constructor: Pass the number of (macro-)elements, the domain lengths in the x- and y-direction and the pointer to the geometric object that specifies the shape of the "collapsible" segment.
Definition at line 47 of file collapsible_channel_domain.h.
References i, Lcollapsible, Ldown, Lup, Ly, oomph::Domain::Macro_element_pt, ncollapsible(), Ncollapsible, ndown(), Ndown, nup(), Nup, ny(), Ny, wall_pt(), and Wall_pt.
|
inline |
Destructor: emtpy; cleanup done in base class.
Definition at line 83 of file collapsible_channel_domain.h.
|
inline |
Function that implements axial spacing of macro elements.
Definition at line 193 of file collapsible_channel_domain.h.
References Axial_spacing_fct_pt.
Referenced by r_E_straight(), r_N_straight(), r_S_straight(), and r_W_straight().
|
inline |
Function pointer for function that implements axial spacing of macro elements.
Definition at line 186 of file collapsible_channel_domain.h.
References Axial_spacing_fct_pt.
Referenced by oomph::CollapsibleChannelMesh< ELEMENT >::axial_spacing_fct_pt().
|
inline |
Function pointer for function that squashes the macro elements near wall. Default mapping (identity) leaves the y-coordinate of the nodal points unchanged.
Definition at line 165 of file collapsible_channel_domain.h.
References BL_squash_fct_pt.
Referenced by oomph::AlgebraicCollapsibleChannelMesh< ELEMENT >::AlgebraicCollapsibleChannelMesh(), and oomph::CollapsibleChannelMesh< ELEMENT >::bl_squash_fct_pt().
|
inlinestaticprivate |
Default for function that implements axial spacing of macro elements.
Definition at line 294 of file collapsible_channel_domain.h.
|
inlinestatic |
Default for function that squashes the macro elements near the walls. Identity.
Definition at line 157 of file collapsible_channel_domain.h.
References s.
|
inline |
Undo rotation of the domain (for axisymmetric problems)
Definition at line 220 of file collapsible_channel_domain.h.
References Rotate_domain.
|
inline |
Rotate the domain (for axisymmetric problems)
Definition at line 214 of file collapsible_channel_domain.h.
References Rotate_domain.
|
inline |
Length of collapsible segment.
Definition at line 117 of file collapsible_channel_domain.h.
References Lcollapsible.
|
inline |
Length of downstream section.
Definition at line 123 of file collapsible_channel_domain.h.
References Ldown.
|
inline |
Length of upstream section.
Definition at line 111 of file collapsible_channel_domain.h.
References Lup.
|
inline |
|
virtual |
Vector representation of the imacro-th macro element boundary idirect (N/S/W/E) at time level t (t=0: present; t>0: previous): Note that the local coordinate zeta is a 1D Vector rather than a scalar – this is unavoidable because this function implements the pure virtual function in the Domain base class.
////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////
Vector representation of the imacro-th macro element boundary idirect (N/S/W/E) at time level t (t=0: present; t>0: previous): Note that the local coordinate zeta is a 1D Vector rather than a scalar – this is unavoidable because this function implements the pure virtual function in the Domain base class.
Implements oomph::Domain.
Definition at line 345 of file collapsible_channel_domain.h.
References oomph::QuadTreeNames::E, oomph::QuadTreeNames::N, Ncollapsible, Ndown, Nup, r_E_collapsible(), r_E_straight(), r_N_collapsible(), r_N_straight(), r_S_collapsible(), r_S_straight(), r_W_collapsible(), r_W_straight(), Rotate_domain, oomph::QuadTreeNames::S, t, and oomph::QuadTreeNames::W.
|
inline |
Number of vertical clumns of macro elements in the "collapsible" segment.
Definition at line 93 of file collapsible_channel_domain.h.
References Ncollapsible.
Referenced by CollapsibleChannelDomain().
|
inline |
Number of vertical columns of macro elements in the downstream section.
Definition at line 99 of file collapsible_channel_domain.h.
References Ndown.
Referenced by CollapsibleChannelDomain().
|
inline |
Number of vertical columns of macro elements the upstream section.
Definition at line 87 of file collapsible_channel_domain.h.
References Nup.
Referenced by CollapsibleChannelDomain().
|
inline |
Number of macro-elements across the channel.
Definition at line 105 of file collapsible_channel_domain.h.
References Ny.
Referenced by CollapsibleChannelDomain().
|
private |
Eastern boundary of the macro element imacro in the collapsible section.
Eastern edge of the macro element in the collapsible part of the channel; .
Definition at line 742 of file collapsible_channel_domain.h.
References Lcollapsible, Lup, Ncollapsible, Ndown, Nup, Ny, oomph::GeomObject::position(), s_squash(), t, and Wall_pt.
Referenced by macro_element_boundary().
|
private |
Eastern boundary of the macro element imacro in the upstream (part=0) or downstream (part=1) sections.
Eastern edge of the macro element in the straight parts of the channel; part=0 in the upstream part, part=1 in the downstream part.
Definition at line 544 of file collapsible_channel_domain.h.
References axial_spacing_fct(), Lcollapsible, Ldown, Lup, Ly, Ncollapsible, Ndown, Nup, Ny, and s_squash().
Referenced by macro_element_boundary().
|
private |
Northern boundary of the macro element imacro in the collapsible section.
Northern edge of the macro element in the collapsible part of the channel; .
Definition at line 778 of file collapsible_channel_domain.h.
References Lcollapsible, Lup, Ncollapsible, Ndown, Nup, Ny, oomph::GeomObject::position(), s_squash(), t, and Wall_pt.
Referenced by macro_element_boundary().
|
private |
Northern boundary of the macro element imacro in the upstream (part=0) or downstream (part=1) sections.
Northern edge of the macro element in the straight parts of the channel; part=0 in the left part, part=1 in the right part.
Definition at line 596 of file collapsible_channel_domain.h.
References axial_spacing_fct(), Lcollapsible, Ldown, Lup, Ly, Ncollapsible, Ndown, Nup, Ny, and s_squash().
Referenced by macro_element_boundary().
|
private |
Southern boundary of the macro element imacro in the collapsible section.
Southern edge of the macro element in the collapsible part of the channel; .
Definition at line 815 of file collapsible_channel_domain.h.
References Lcollapsible, Lup, Ncollapsible, Ndown, Nup, Ny, oomph::GeomObject::position(), s_squash(), t, and Wall_pt.
Referenced by macro_element_boundary().
|
private |
Southern boundary of the macro element imacro in the upstream (part=0) or downstream (part=1) sections.
Southern edge of the macro element in the straight parts of the channel; part=0 in the left part, part=1 in the right part.
Definition at line 652 of file collapsible_channel_domain.h.
References axial_spacing_fct(), Lcollapsible, Ldown, Lup, Ly, Ncollapsible, Ndown, Nup, Ny, and s_squash().
Referenced by macro_element_boundary().
|
private |
Western boundary of the macro element imacro in the collapsible section.
Western edge of the macro element in the collapsible part of the channel; .
Definition at line 706 of file collapsible_channel_domain.h.
References Lcollapsible, Lup, Ncollapsible, Ndown, Nup, Ny, oomph::GeomObject::position(), s_squash(), t, and Wall_pt.
Referenced by macro_element_boundary().
|
private |
Western boundary of the macro element imacro in the upstream (part=0) or downstream (part=1) sections.
Western edge of the macro element in the upstream (part=0) or downstream (part=1) parts of the channel; .
Definition at line 492 of file collapsible_channel_domain.h.
References axial_spacing_fct(), Lcollapsible, Ldown, Lup, Ly, Ncollapsible, Ndown, Nup, Ny, and s_squash().
Referenced by macro_element_boundary().
|
inline |
Function that squashes the macro elements near the wall. Input argument should vary between 0 and 1; function should return stretched/squashed coordinate in the same range. Default implementation is the identity; can be overloaded by specifying a different function pointer with bl_squash_fct_pt().
Definition at line 175 of file collapsible_channel_domain.h.
References BL_squash_fct_pt, and s.
Referenced by r_E_collapsible(), r_E_straight(), r_N_collapsible(), r_N_straight(), r_S_collapsible(), r_S_straight(), r_W_collapsible(), and r_W_straight().
|
inline |
Access to pointer to the geometric object that parametrises the collapsible wall.
Definition at line 136 of file collapsible_channel_domain.h.
References Wall_pt.
Referenced by CollapsibleChannelDomain().
|
inline |
Access to pointer to the geometric object that parametrises the collapsible wall (const version)
Definition at line 144 of file collapsible_channel_domain.h.
References Wall_pt.
|
private |
Function pointer for function that implements axial spacing of macro elements.
Definition at line 290 of file collapsible_channel_domain.h.
Referenced by axial_spacing_fct(), and axial_spacing_fct_pt().
|
private |
Function pointer for function that squashes the macro elements near the walls.
Definition at line 286 of file collapsible_channel_domain.h.
Referenced by bl_squash_fct_pt(), and s_squash().
|
private |
x-length in the "collapsible" part of the channel
Definition at line 316 of file collapsible_channel_domain.h.
Referenced by CollapsibleChannelDomain(), l_collapsible(), r_E_collapsible(), r_E_straight(), r_N_collapsible(), r_N_straight(), r_S_collapsible(), r_S_straight(), r_W_collapsible(), and r_W_straight().
|
private |
x-length in the downstream part of the channel
Definition at line 319 of file collapsible_channel_domain.h.
Referenced by CollapsibleChannelDomain(), l_down(), r_E_straight(), r_N_straight(), r_S_straight(), and r_W_straight().
|
private |
x-length in the upstream part of the channel
Definition at line 313 of file collapsible_channel_domain.h.
Referenced by CollapsibleChannelDomain(), l_up(), r_E_collapsible(), r_E_straight(), r_N_collapsible(), r_N_straight(), r_S_collapsible(), r_S_straight(), r_W_collapsible(), and r_W_straight().
|
private |
Width.
Definition at line 322 of file collapsible_channel_domain.h.
Referenced by CollapsibleChannelDomain(), l_y(), r_E_straight(), r_N_straight(), r_S_straight(), and r_W_straight().
|
private |
Number of vertical element columns in "collapsible" section.
Definition at line 304 of file collapsible_channel_domain.h.
Referenced by CollapsibleChannelDomain(), macro_element_boundary(), ncollapsible(), r_E_collapsible(), r_E_straight(), r_N_collapsible(), r_N_straight(), r_S_collapsible(), r_S_straight(), r_W_collapsible(), and r_W_straight().
|
private |
Number of vertical element columns in downstream section.
Definition at line 307 of file collapsible_channel_domain.h.
Referenced by CollapsibleChannelDomain(), macro_element_boundary(), ndown(), r_E_collapsible(), r_E_straight(), r_N_collapsible(), r_N_straight(), r_S_collapsible(), r_S_straight(), r_W_collapsible(), and r_W_straight().
|
private |
Number of vertical element columns in upstream section.
Definition at line 301 of file collapsible_channel_domain.h.
Referenced by CollapsibleChannelDomain(), macro_element_boundary(), nup(), r_E_collapsible(), r_E_straight(), r_N_collapsible(), r_N_straight(), r_S_collapsible(), r_S_straight(), r_W_collapsible(), and r_W_straight().
|
private |
Number of macro elements across channel.
Definition at line 310 of file collapsible_channel_domain.h.
Referenced by CollapsibleChannelDomain(), ny(), r_E_collapsible(), r_E_straight(), r_N_collapsible(), r_N_straight(), r_S_collapsible(), r_S_straight(), r_W_collapsible(), and r_W_straight().
|
private |
Rotate domain (for axisymmetric problems, say)
Definition at line 328 of file collapsible_channel_domain.h.
Referenced by disable_rotate_domain(), enable_rotate_domain(), and macro_element_boundary().
|
private |
Pointer to the geometric object that parametrises the collapsible wall.
Definition at line 325 of file collapsible_channel_domain.h.
Referenced by CollapsibleChannelDomain(), r_E_collapsible(), r_N_collapsible(), r_S_collapsible(), r_W_collapsible(), and wall_pt().