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... | |
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... | |
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 Lcollapsible, Ldown, Lup, Ly, 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.
|
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 |
void oomph::CollapsibleChannelDomain::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.
////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////
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.
Definition at line 345 of file collapsible_channel_domain.h.
References 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(), and Rotate_domain.
|
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, s_squash(), 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, s_squash(), 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, s_squash(), 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, s_squash(), 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.
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().