Public Types | Public Member Functions | Static Public Member Functions | Private Member Functions | Static Private Member Functions | Private Attributes | List of all members
oomph::CollapsibleChannelDomain Class Reference

Collapsible channel domain. More...

#include <collapsible_channel_domain.h>

Inheritance diagram for oomph::CollapsibleChannelDomain:

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...
 
BLSquashFctPtbl_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...
 
AxialSpacingFctPtaxial_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): $ {\bf r}({\bf zeta}) $ 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...
 

Detailed Description

Collapsible channel domain.

Definition at line 40 of file collapsible_channel_domain.h.

Member Typedef Documentation

◆ AxialSpacingFctPt

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.

◆ BLSquashFctPt

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.

Constructor & Destructor Documentation

◆ CollapsibleChannelDomain()

oomph::CollapsibleChannelDomain::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 
)
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.

◆ ~CollapsibleChannelDomain()

oomph::CollapsibleChannelDomain::~CollapsibleChannelDomain ( )
inline

Destructor: emtpy; cleanup done in base class.

Definition at line 83 of file collapsible_channel_domain.h.

Member Function Documentation

◆ axial_spacing_fct()

double oomph::CollapsibleChannelDomain::axial_spacing_fct ( const double &  xi)
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().

◆ axial_spacing_fct_pt()

AxialSpacingFctPt& oomph::CollapsibleChannelDomain::axial_spacing_fct_pt ( )
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().

◆ bl_squash_fct_pt()

BLSquashFctPt& oomph::CollapsibleChannelDomain::bl_squash_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().

◆ default_axial_spacing_fct()

static double oomph::CollapsibleChannelDomain::default_axial_spacing_fct ( const double &  xi)
inlinestaticprivate

Default for function that implements axial spacing of macro elements.

Definition at line 294 of file collapsible_channel_domain.h.

◆ default_BL_squash_fct()

static double oomph::CollapsibleChannelDomain::default_BL_squash_fct ( const double &  s)
inlinestatic

Default for function that squashes the macro elements near the walls. Identity.

Definition at line 157 of file collapsible_channel_domain.h.

◆ disable_rotate_domain()

void oomph::CollapsibleChannelDomain::disable_rotate_domain ( )
inline

Undo rotation of the domain (for axisymmetric problems)

Definition at line 220 of file collapsible_channel_domain.h.

References Rotate_domain.

◆ enable_rotate_domain()

void oomph::CollapsibleChannelDomain::enable_rotate_domain ( )
inline

Rotate the domain (for axisymmetric problems)

Definition at line 214 of file collapsible_channel_domain.h.

References Rotate_domain.

◆ l_collapsible()

double oomph::CollapsibleChannelDomain::l_collapsible ( )
inline

Length of collapsible segment.

Definition at line 117 of file collapsible_channel_domain.h.

References Lcollapsible.

◆ l_down()

double oomph::CollapsibleChannelDomain::l_down ( )
inline

Length of downstream section.

Definition at line 123 of file collapsible_channel_domain.h.

References Ldown.

◆ l_up()

double oomph::CollapsibleChannelDomain::l_up ( )
inline

Length of upstream section.

Definition at line 111 of file collapsible_channel_domain.h.

References Lup.

◆ l_y()

double oomph::CollapsibleChannelDomain::l_y ( )
inline

Width of channel.

Definition at line 129 of file collapsible_channel_domain.h.

References Ly.

◆ macro_element_boundary()

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): $ {\bf r}({\bf zeta}) $ 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): $ {\bf r}({\bf zeta}) $ 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.

◆ ncollapsible()

unsigned oomph::CollapsibleChannelDomain::ncollapsible ( )
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().

◆ ndown()

unsigned oomph::CollapsibleChannelDomain::ndown ( )
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().

◆ nup()

unsigned oomph::CollapsibleChannelDomain::nup ( )
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().

◆ ny()

unsigned oomph::CollapsibleChannelDomain::ny ( )
inline

Number of macro-elements across the channel.

Definition at line 105 of file collapsible_channel_domain.h.

References Ny.

Referenced by CollapsibleChannelDomain().

◆ r_E_collapsible()

void oomph::CollapsibleChannelDomain::r_E_collapsible ( const unsigned &  t,
const Vector< double > &  zeta,
Vector< double > &  r,
const unsigned &  imacro 
)
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; $ \zeta \in [-1,1] $.

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().

◆ r_E_straight()

void oomph::CollapsibleChannelDomain::r_E_straight ( const Vector< double > &  zeta,
Vector< double > &  r,
const unsigned &  imacro,
const unsigned &  part 
)
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; $ \zeta \in [-1,1] $ 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().

◆ r_N_collapsible()

void oomph::CollapsibleChannelDomain::r_N_collapsible ( const unsigned &  t,
const Vector< double > &  zeta,
Vector< double > &  r,
const unsigned &  imacro 
)
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; $ \zeta \in [-1,1] $.

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().

◆ r_N_straight()

void oomph::CollapsibleChannelDomain::r_N_straight ( const Vector< double > &  zeta,
Vector< double > &  r,
const unsigned &  imacro,
const unsigned &  part 
)
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; $ \zeta \in [-1,1] $ 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().

◆ r_S_collapsible()

void oomph::CollapsibleChannelDomain::r_S_collapsible ( const unsigned &  t,
const Vector< double > &  zeta,
Vector< double > &  r,
const unsigned &  imacro 
)
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; $ \zeta \in [-1,1] $.

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().

◆ r_S_straight()

void oomph::CollapsibleChannelDomain::r_S_straight ( const Vector< double > &  zeta,
Vector< double > &  r,
const unsigned &  imacro,
const unsigned &  part 
)
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; $ \zeta \in [-1,1] $ 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().

◆ r_W_collapsible()

void oomph::CollapsibleChannelDomain::r_W_collapsible ( const unsigned &  t,
const Vector< double > &  zeta,
Vector< double > &  r,
const unsigned &  imacro 
)
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; $ \zeta \in [-1,1] $.

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().

◆ r_W_straight()

void oomph::CollapsibleChannelDomain::r_W_straight ( const Vector< double > &  zeta,
Vector< double > &  r,
const unsigned &  imacro,
const unsigned &  part 
)
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; $ \zeta \in [-1,1] $.

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().

◆ s_squash()

double oomph::CollapsibleChannelDomain::s_squash ( const double &  s)
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().

◆ wall_pt() [1/2]

GeomObject*& oomph::CollapsibleChannelDomain::wall_pt ( )
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().

◆ wall_pt() [2/2]

GeomObject* oomph::CollapsibleChannelDomain::wall_pt ( ) const
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.

Member Data Documentation

◆ Axial_spacing_fct_pt

AxialSpacingFctPt oomph::CollapsibleChannelDomain::Axial_spacing_fct_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().

◆ BL_squash_fct_pt

BLSquashFctPt oomph::CollapsibleChannelDomain::BL_squash_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().

◆ Lcollapsible

double oomph::CollapsibleChannelDomain::Lcollapsible
private

◆ Ldown

double oomph::CollapsibleChannelDomain::Ldown
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().

◆ Lup

double oomph::CollapsibleChannelDomain::Lup
private

◆ Ly

double oomph::CollapsibleChannelDomain::Ly
private

◆ Ncollapsible

unsigned oomph::CollapsibleChannelDomain::Ncollapsible
private

◆ Ndown

unsigned oomph::CollapsibleChannelDomain::Ndown
private

◆ Nup

unsigned oomph::CollapsibleChannelDomain::Nup
private

◆ Ny

unsigned oomph::CollapsibleChannelDomain::Ny
private

◆ Rotate_domain

bool oomph::CollapsibleChannelDomain::Rotate_domain
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().

◆ Wall_pt

GeomObject* oomph::CollapsibleChannelDomain::Wall_pt
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().


The documentation for this class was generated from the following file: