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. 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): ![]() | |
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... | |
Collapsible channel domain.
Definition at line 45 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 187 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 157 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 54 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.
Definition at line 89 of file collapsible_channel_domain.h.
References Ncollapsible, Ndown, Nup, and Ny.
|
inline |
Function that implements axial spacing of macro elements.
Definition at line 198 of file collapsible_channel_domain.h.
References Axial_spacing_fct_pt, macro_element_boundary(), 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().
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 191 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 170 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 287 of file collapsible_channel_domain.h.
|
inlinestatic |
Default for function that squashes the macro elements near the walls. Identity.
Definition at line 162 of file collapsible_channel_domain.h.
|
inline |
Length of collapsible segment.
Definition at line 128 of file collapsible_channel_domain.h.
References Lcollapsible.
Referenced by oomph::AlgebraicCollapsibleChannelMesh< ELEMENT >::setup_algebraic_node_update().
|
inline |
Length of downstream section.
Definition at line 134 of file collapsible_channel_domain.h.
References Ldown.
|
inline |
Length of upstream section.
Definition at line 122 of file collapsible_channel_domain.h.
References Lup.
Referenced by oomph::AlgebraicCollapsibleChannelMesh< ELEMENT >::setup_algebraic_node_update().
|
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 335 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(), and r_W_straight().
Referenced by axial_spacing_fct().
|
inline |
Number of vertical clumns of macro elements in the "collapsible" segment.
Definition at line 104 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 110 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 98 of file collapsible_channel_domain.h.
References Nup.
Referenced by CollapsibleChannelDomain().
|
inline |
Number of macro-elements across the channel.
Definition at line 116 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 749 of file collapsible_channel_domain.h.
References Lcollapsible, Lup, Ncollapsible, Ndown, Nup, Ny, s_squash(), and Wall_pt.
Referenced by axial_spacing_fct(), and 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 538 of file collapsible_channel_domain.h.
References axial_spacing_fct(), Lcollapsible, Ldown, Lup, Ly, Ncollapsible, Ndown, Nup, Ny, and s_squash().
Referenced by axial_spacing_fct(), and 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 787 of file collapsible_channel_domain.h.
References Lcollapsible, Lup, Ncollapsible, Ndown, Nup, Ny, s_squash(), and Wall_pt.
Referenced by axial_spacing_fct(), and 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 592 of file collapsible_channel_domain.h.
References axial_spacing_fct(), Lcollapsible, Ldown, Lup, Ly, Ncollapsible, Ndown, Nup, Ny, and s_squash().
Referenced by axial_spacing_fct(), and 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 825 of file collapsible_channel_domain.h.
References Lcollapsible, Lup, Ncollapsible, Ndown, Nup, Ny, s_squash(), and Wall_pt.
Referenced by axial_spacing_fct(), and 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 649 of file collapsible_channel_domain.h.
References axial_spacing_fct(), Lcollapsible, Ldown, Lup, Ly, Ncollapsible, Ndown, Nup, Ny, and s_squash().
Referenced by axial_spacing_fct(), and 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 709 of file collapsible_channel_domain.h.
References Lcollapsible, Lup, Ncollapsible, Ndown, Nup, Ny, s_squash(), and Wall_pt.
Referenced by axial_spacing_fct(), and 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 483 of file collapsible_channel_domain.h.
References axial_spacing_fct(), Lcollapsible, Ldown, Lup, Ly, Ncollapsible, Ndown, Nup, Ny, and s_squash().
Referenced by axial_spacing_fct(), and 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 180 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 147 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 152 of file collapsible_channel_domain.h.
References Wall_pt.
|
private |
Function pointer for function that implements axial spacing of macro elements.
Definition at line 283 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 279 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 309 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 312 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 306 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 315 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 297 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(), r_W_straight(), and ~CollapsibleChannelDomain().
|
private |
Number of vertical element columns in downstream section.
Definition at line 300 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(), r_W_straight(), and ~CollapsibleChannelDomain().
|
private |
Number of vertical element columns in upstream section.
Definition at line 294 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(), r_W_straight(), and ~CollapsibleChannelDomain().
|
private |
Number of macro elements across channel.
Definition at line 303 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(), r_W_straight(), and ~CollapsibleChannelDomain().
|
private |
Pointer to the geometric object that parametrises the collapsible wall.
Definition at line 318 of file collapsible_channel_domain.h.
Referenced by CollapsibleChannelDomain(), r_E_collapsible(), r_N_collapsible(), r_S_collapsible(), r_W_collapsible(), and wall_pt().