3.3.0
DUNE for Multi-{Phase, Component, Scale, Physics, ...} flow and transport in porous media
Public Member Functions | Public Attributes | List of all members
Dumux::RANSProblemImpl< TypeTag, TurbulenceModel::zeroeq > Class Template Reference

Zero-equation turbulence problem base class. More...

#include <dumux/freeflow/rans/zeroeq/problem.hh>

Inheritance diagram for Dumux::RANSProblemImpl< TypeTag, TurbulenceModel::zeroeq >:

Description

template<class TypeTag>
class Dumux::RANSProblemImpl< TypeTag, TurbulenceModel::zeroeq >

Zero-equation turbulence problem base class.

This implements some base functionality for zero-equation models and a routine for the determining the eddy viscosity of the Baldwin-Lomax model.

Public Member Functions

 RANSProblemImpl (std::shared_ptr< const GridGeometry > gridGeometry, const std::string &paramGroup="")
 The constructor. More...
 
void updateStaticWallProperties ()
 Correct size of the static (solution independent) wall variables. More...
 
void updateDynamicWallProperties (const SolutionVector &curSol)
 Update the dynamic (solution dependent) relations to the walls. More...
 
void updateBaldwinLomaxProperties ()
 Update the relations and coefficients for the Baldwin-Lomax turbulence model. More...
 
std::string eddyViscosityModel () const
 
int additionalRoughnessLength (const int elementIdx) const
 
Scalar kinematicEddyViscosity (const int elementIdx) const
 
bool useWallFunction (const Element &element, const SubControlVolumeFace &scvf, const int &eqIdx) const
 Returns whether a wall function should be used at a given face. More...
 
template<class ElementVolumeVariables , class ElementFaceVariables >
FacePrimaryVariables wallFunction (const Element &element, const FVElementGeometry &fvGeometry, const ElementVolumeVariables &elemVolVars, const ElementFaceVariables &elemFaceVars, const SubControlVolumeFace &scvf, const SubControlVolumeFace &lateralBoundaryFace) const
 Returns an additional wall function momentum flux. More...
 
template<class ElementVolumeVariables , class ElementFaceVariables >
CellCenterPrimaryVariables wallFunction (const Element &element, const FVElementGeometry &fvGeometry, const ElementVolumeVariables &elemVolVars, const ElementFaceVariables &elemFaceVars, const SubControlVolumeFace &scvf) const
 Returns an additional wall function flux for cell-centered quantities. More...
 
bool isOnWall (const SubControlVolumeFace &scvf) const
 Returns whether a given sub control volume face is on a wall. More...
 
bool isOnWallAtPos (const GlobalPosition &globalPos) const
 Returns whether a given point is on a wall. More...
 
bool isFlatWallBounded () const
 
const Scalar karmanConstant () const
 Returns the Karman constant. More...
 
const Scalar betaOmega () const
 Returns the \( \beta_{\omega} \) constant. More...
 
Scalar turbulentPrandtlNumber () const
 Return the turbulent Prandtl number \( [-] \) which is used to convert the eddy viscosity to an eddy thermal conductivity. More...
 
Scalar turbulentSchmidtNumber () const
 Return the turbulent Schmidt number \( [-] \) which is used to convert the eddy viscosity to an eddy diffusivity. More...
 
int wallNormalAxis (const int elementIdx) const
 
int flowDirectionAxis (const int elementIdx) const
 
unsigned int wallElementIndex (const int elementIdx) const
 
Scalar wallDistance (const int elementIdx) const
 
GlobalPosition cellCenter (const int elementIdx) const
 
unsigned int neighborIndex (const int elementIdx, const int dimIdx, const int sideIdx) const
 
DimVector ccVelocityVector (const int elementIdx) const
 
Scalar ccVelocity (const int elementIdx, const int dimIdx) const
 
DimVector velocityMaximum (const int elementIdx) const
 
DimVector velocityMinimum (const int elementIdx) const
 
DimMatrix velocityGradientTensor (const int elementIdx) const
 
Scalar velocityGradient (const int elementIdx, const int dimIdx, const int velIdx) const
 
Scalar stressTensorScalarProduct (const int elementIdx) const
 
Scalar vorticityTensorScalarProduct (const int elementIdx) const
 
Scalar storedViscosity (const int elementIdx) const
 
Scalar storedDensity (const int elementIdx) const
 
Scalar kinematicViscosity (const int elementIdx) const
 
Scalar temperatureAtPos (const GlobalPosition &globalPos) const
 Returns the temperature \(\mathrm{[K]}\) at a given global position. More...
 
Scalar temperature () const
 Returns the temperature within the domain. More...
 
const GravityVector & gravity () const
 Returns the acceleration due to gravity. More...
 
bool enableInertiaTerms () const
 Returns whether interia terms should be considered. More...
 
template<class SolutionVector , class G = GridGeometry>
std::enable_if< G::discMethod==DiscretizationMethod::staggered, void >::type applyInitialFaceSolution (SolutionVector &sol, const SubControlVolumeFace &scvf, const PrimaryVariables &initSol) const
 Applys the initial face solution (velocities on the faces). Specialization for staggered grid discretization. More...
 
Scalar pseudo3DWallFriction (const Scalar velocity, const Scalar viscosity, const Scalar height, const Scalar factor=8.0) const
 An additional drag term can be included as source term for the momentum balance to mimic 3D flow behavior in 2D: More...
 
template<class ElementVolumeVariables , class ElementFaceVariables , class G = GridGeometry>
std::enable_if< G::discMethod==DiscretizationMethod::staggered, Scalar >::type pseudo3DWallFriction (const SubControlVolumeFace &scvf, const ElementVolumeVariables &elemVolVars, const ElementFaceVariables &elemFaceVars, const Scalar height, const Scalar factor=8.0) const
 Convenience function for staggered grid implementation. More...
 
Scalar permeability (const Element &element, const SubControlVolumeFace &scvf) const
 Returns the intrinsic permeability of required as input parameter for the Beavers-Joseph-Saffman boundary condition. More...
 
Scalar alphaBJ (const SubControlVolumeFace &scvf) const
 Returns the alpha value required as input parameter for the Beavers-Joseph-Saffman boundary condition. More...
 
Scalar betaBJ (const Element &element, const SubControlVolumeFace &scvf, const GlobalPosition &tangentialVector) const
 Returns the beta value which is the alpha value divided by the square root of the (scalar-valued) interface permeability. More...
 
Scalar betaBJ (const Element &element, const SubControlVolumeFace &scvf) const
 Returns the beta value which is the alpha value divided by the square root of the (scalar-valued) interface permeability. More...
 
VelocityVector porousMediumVelocity (const Element &element, const SubControlVolumeFace &scvf) const
 Returns the velocity in the porous medium (which is 0 by default according to Saffmann). More...
 
const Scalar beaversJosephVelocity (const Element &element, const SubControlVolume &scv, const SubControlVolumeFace &ownScvf, const SubControlVolumeFace &faceOnPorousBoundary, const Scalar velocitySelf, const Scalar tangentialVelocityGradient) const
 Returns the slip velocity at a porous boundary based on the Beavers-Joseph(-Saffman) condition. More...
 

Public Attributes

bool calledUpdateStaticWallProperties = false
 

Constructor & Destructor Documentation

◆ RANSProblemImpl()

template<class TypeTag >
Dumux::RANSProblemImpl< TypeTag, TurbulenceModel::zeroeq >::RANSProblemImpl ( std::shared_ptr< const GridGeometry >  gridGeometry,
const std::string &  paramGroup = "" 
)
inline

The constructor.

Parameters
gridGeometryThe finite volume grid geometry
paramGroupThe parameter group in which to look for runtime parameters first (default is "")

Member Function Documentation

◆ additionalRoughnessLength()

template<class TypeTag >
int Dumux::RANSProblemImpl< TypeTag, TurbulenceModel::zeroeq >::additionalRoughnessLength ( const int  elementIdx) const
inline

◆ alphaBJ()

template<class TypeTag >
Scalar Dumux::NavierStokesProblem< TypeTag >::alphaBJ ( const SubControlVolumeFace &  scvf) const
inlineinherited

Returns the alpha value required as input parameter for the Beavers-Joseph-Saffman boundary condition.

This member function must be overloaded in the problem implementation, if the BJS boundary condition is used.

◆ applyInitialFaceSolution()

template<class TypeTag >
template<class SolutionVector , class G = GridGeometry>
std::enable_if< G::discMethod==DiscretizationMethod::staggered, void >::type Dumux::NavierStokesProblem< TypeTag >::applyInitialFaceSolution ( SolutionVector &  sol,
const SubControlVolumeFace &  scvf,
const PrimaryVariables &  initSol 
) const
inlineinherited

Applys the initial face solution (velocities on the faces). Specialization for staggered grid discretization.

◆ beaversJosephVelocity()

template<class TypeTag >
const Scalar Dumux::NavierStokesProblem< TypeTag >::beaversJosephVelocity ( const Element &  element,
const SubControlVolume &  scv,
const SubControlVolumeFace &  ownScvf,
const SubControlVolumeFace &  faceOnPorousBoundary,
const Scalar  velocitySelf,
const Scalar  tangentialVelocityGradient 
) const
inlineinherited

Returns the slip velocity at a porous boundary based on the Beavers-Joseph(-Saffman) condition.

◆ betaBJ() [1/2]

template<class TypeTag >
Scalar Dumux::NavierStokesProblem< TypeTag >::betaBJ ( const Element &  element,
const SubControlVolumeFace &  scvf 
) const
inlineinherited

Returns the beta value which is the alpha value divided by the square root of the (scalar-valued) interface permeability.

◆ betaBJ() [2/2]

template<class TypeTag >
Scalar Dumux::NavierStokesProblem< TypeTag >::betaBJ ( const Element &  element,
const SubControlVolumeFace &  scvf,
const GlobalPosition &  tangentialVector 
) const
inlineinherited

Returns the beta value which is the alpha value divided by the square root of the (scalar-valued) interface permeability.

◆ betaOmega()

template<class TypeTag >
const Scalar Dumux::RANSProblemBase< TypeTag >::betaOmega ( ) const
inlineinherited

Returns the \( \beta_{\omega} \) constant.

◆ ccVelocity()

template<class TypeTag >
Scalar Dumux::RANSProblemBase< TypeTag >::ccVelocity ( const int  elementIdx,
const int  dimIdx 
) const
inlineinherited

◆ ccVelocityVector()

template<class TypeTag >
DimVector Dumux::RANSProblemBase< TypeTag >::ccVelocityVector ( const int  elementIdx) const
inlineinherited

◆ cellCenter()

template<class TypeTag >
GlobalPosition Dumux::RANSProblemBase< TypeTag >::cellCenter ( const int  elementIdx) const
inlineinherited

◆ eddyViscosityModel()

template<class TypeTag >
std::string Dumux::RANSProblemImpl< TypeTag, TurbulenceModel::zeroeq >::eddyViscosityModel ( ) const
inline

◆ enableInertiaTerms()

template<class TypeTag >
bool Dumux::NavierStokesProblem< TypeTag >::enableInertiaTerms ( ) const
inlineinherited

Returns whether interia terms should be considered.

◆ flowDirectionAxis()

template<class TypeTag >
int Dumux::RANSProblemBase< TypeTag >::flowDirectionAxis ( const int  elementIdx) const
inlineinherited

◆ gravity()

template<class TypeTag >
const GravityVector & Dumux::NavierStokesProblem< TypeTag >::gravity ( ) const
inlineinherited

Returns the acceleration due to gravity.

If the Problem.EnableGravity parameter is true, this means \(\boldsymbol{g} = ( 0,\dots,\ -9.81)^T \), else \(\boldsymbol{g} = ( 0,\dots, 0)^T \)

◆ isFlatWallBounded()

template<class TypeTag >
bool Dumux::RANSProblemBase< TypeTag >::isFlatWallBounded ( ) const
inlineinherited

◆ isOnWall()

template<class TypeTag >
bool Dumux::RANSProblemBase< TypeTag >::isOnWall ( const SubControlVolumeFace &  scvf) const
inlineinherited

Returns whether a given sub control volume face is on a wall.

Parameters
scvfThe sub control volume face.

◆ isOnWallAtPos()

template<class TypeTag >
bool Dumux::RANSProblemBase< TypeTag >::isOnWallAtPos ( const GlobalPosition &  globalPos) const
inlineinherited

Returns whether a given point is on a wall.

Parameters
globalPosThe position in global coordinates.

◆ karmanConstant()

template<class TypeTag >
const Scalar Dumux::RANSProblemBase< TypeTag >::karmanConstant ( ) const
inlineinherited

Returns the Karman constant.

◆ kinematicEddyViscosity()

template<class TypeTag >
Scalar Dumux::RANSProblemImpl< TypeTag, TurbulenceModel::zeroeq >::kinematicEddyViscosity ( const int  elementIdx) const
inline

◆ kinematicViscosity()

template<class TypeTag >
Scalar Dumux::RANSProblemBase< TypeTag >::kinematicViscosity ( const int  elementIdx) const
inlineinherited

◆ neighborIndex()

template<class TypeTag >
unsigned int Dumux::RANSProblemBase< TypeTag >::neighborIndex ( const int  elementIdx,
const int  dimIdx,
const int  sideIdx 
) const
inlineinherited

◆ permeability()

template<class TypeTag >
Scalar Dumux::NavierStokesProblem< TypeTag >::permeability ( const Element &  element,
const SubControlVolumeFace &  scvf 
) const
inlineinherited

Returns the intrinsic permeability of required as input parameter for the Beavers-Joseph-Saffman boundary condition.

This member function must be overloaded in the problem implementation, if the BJS boundary condition is used.

◆ porousMediumVelocity()

template<class TypeTag >
VelocityVector Dumux::NavierStokesProblem< TypeTag >::porousMediumVelocity ( const Element &  element,
const SubControlVolumeFace &  scvf 
) const
inlineinherited

Returns the velocity in the porous medium (which is 0 by default according to Saffmann).

◆ pseudo3DWallFriction() [1/2]

template<class TypeTag >
Scalar Dumux::NavierStokesProblem< TypeTag >::pseudo3DWallFriction ( const Scalar  velocity,
const Scalar  viscosity,
const Scalar  height,
const Scalar  factor = 8.0 
) const
inlineinherited

An additional drag term can be included as source term for the momentum balance to mimic 3D flow behavior in 2D:

\[ f_{drag} = -(8 \mu / h^2)v \]

Here, \(h\) corresponds to the extruded height that is bounded by the imaginary walls. See Flekkoy et al. (1995) [23]
A value of 8.0 is used as a default factor, corresponding to the velocity profile at the center plane of the virtual height (maximum velocity). Setting this value to 12.0 corresponds to an depth-averaged velocity (Venturoli and Boek, 2006) [69].

◆ pseudo3DWallFriction() [2/2]

template<class TypeTag >
template<class ElementVolumeVariables , class ElementFaceVariables , class G = GridGeometry>
std::enable_if< G::discMethod==DiscretizationMethod::staggered, Scalar >::type Dumux::NavierStokesProblem< TypeTag >::pseudo3DWallFriction ( const SubControlVolumeFace &  scvf,
const ElementVolumeVariables &  elemVolVars,
const ElementFaceVariables &  elemFaceVars,
const Scalar  height,
const Scalar  factor = 8.0 
) const
inlineinherited

Convenience function for staggered grid implementation.

◆ storedDensity()

template<class TypeTag >
Scalar Dumux::RANSProblemBase< TypeTag >::storedDensity ( const int  elementIdx) const
inlineinherited

◆ storedViscosity()

template<class TypeTag >
Scalar Dumux::RANSProblemBase< TypeTag >::storedViscosity ( const int  elementIdx) const
inlineinherited

◆ stressTensorScalarProduct()

template<class TypeTag >
Scalar Dumux::RANSProblemBase< TypeTag >::stressTensorScalarProduct ( const int  elementIdx) const
inlineinherited

◆ temperature()

template<class TypeTag >
Scalar Dumux::NavierStokesProblem< TypeTag >::temperature ( ) const
inlineinherited

Returns the temperature within the domain.

This method MUST be overwritten by the actual problem.

◆ temperatureAtPos()

template<class TypeTag >
Scalar Dumux::NavierStokesProblem< TypeTag >::temperatureAtPos ( const GlobalPosition &  globalPos) const
inlineinherited

Returns the temperature \(\mathrm{[K]}\) at a given global position.

This is not specific to the discretization. By default it just calls temperature().

Parameters
globalPosThe position in global coordinates where the temperature should be specified.

◆ turbulentPrandtlNumber()

template<class TypeTag >
Scalar Dumux::RANSProblemBase< TypeTag >::turbulentPrandtlNumber ( ) const
inlineinherited

Return the turbulent Prandtl number \( [-] \) which is used to convert the eddy viscosity to an eddy thermal conductivity.

◆ turbulentSchmidtNumber()

template<class TypeTag >
Scalar Dumux::RANSProblemBase< TypeTag >::turbulentSchmidtNumber ( ) const
inlineinherited

Return the turbulent Schmidt number \( [-] \) which is used to convert the eddy viscosity to an eddy diffusivity.

◆ updateBaldwinLomaxProperties()

template<class TypeTag >
void Dumux::RANSProblemImpl< TypeTag, TurbulenceModel::zeroeq >::updateBaldwinLomaxProperties ( )
inline

Update the relations and coefficients for the Baldwin-Lomax turbulence model.

◆ updateDynamicWallProperties()

template<class TypeTag >
void Dumux::RANSProblemImpl< TypeTag, TurbulenceModel::zeroeq >::updateDynamicWallProperties ( const SolutionVector &  curSol)
inline

Update the dynamic (solution dependent) relations to the walls.

This calculates the roughness related properties

Parameters
curSolThe solution vector.

◆ updateStaticWallProperties()

template<class TypeTag >
void Dumux::RANSProblemImpl< TypeTag, TurbulenceModel::zeroeq >::updateStaticWallProperties ( )
inline

Correct size of the static (solution independent) wall variables.

◆ useWallFunction()

template<class TypeTag >
bool Dumux::RANSProblemBase< TypeTag >::useWallFunction ( const Element &  element,
const SubControlVolumeFace &  scvf,
const int &  eqIdx 
) const
inlineinherited

Returns whether a wall function should be used at a given face.

Parameters
elementThe element.
scvfThe sub control volume face.
eqIdxThe equation index.

◆ velocityGradient()

template<class TypeTag >
Scalar Dumux::RANSProblemBase< TypeTag >::velocityGradient ( const int  elementIdx,
const int  dimIdx,
const int  velIdx 
) const
inlineinherited

◆ velocityGradientTensor()

template<class TypeTag >
DimMatrix Dumux::RANSProblemBase< TypeTag >::velocityGradientTensor ( const int  elementIdx) const
inlineinherited

◆ velocityMaximum()

template<class TypeTag >
DimVector Dumux::RANSProblemBase< TypeTag >::velocityMaximum ( const int  elementIdx) const
inlineinherited

◆ velocityMinimum()

template<class TypeTag >
DimVector Dumux::RANSProblemBase< TypeTag >::velocityMinimum ( const int  elementIdx) const
inlineinherited

◆ vorticityTensorScalarProduct()

template<class TypeTag >
Scalar Dumux::RANSProblemBase< TypeTag >::vorticityTensorScalarProduct ( const int  elementIdx) const
inlineinherited

◆ wallDistance()

template<class TypeTag >
Scalar Dumux::RANSProblemBase< TypeTag >::wallDistance ( const int  elementIdx) const
inlineinherited

◆ wallElementIndex()

template<class TypeTag >
unsigned int Dumux::RANSProblemBase< TypeTag >::wallElementIndex ( const int  elementIdx) const
inlineinherited

◆ wallFunction() [1/2]

template<class TypeTag >
template<class ElementVolumeVariables , class ElementFaceVariables >
CellCenterPrimaryVariables Dumux::RANSProblemBase< TypeTag >::wallFunction ( const Element &  element,
const FVElementGeometry &  fvGeometry,
const ElementVolumeVariables &  elemVolVars,
const ElementFaceVariables &  elemFaceVars,
const SubControlVolumeFace &  scvf 
) const
inlineinherited

Returns an additional wall function flux for cell-centered quantities.

◆ wallFunction() [2/2]

template<class TypeTag >
template<class ElementVolumeVariables , class ElementFaceVariables >
FacePrimaryVariables Dumux::RANSProblemBase< TypeTag >::wallFunction ( const Element &  element,
const FVElementGeometry &  fvGeometry,
const ElementVolumeVariables &  elemVolVars,
const ElementFaceVariables &  elemFaceVars,
const SubControlVolumeFace &  scvf,
const SubControlVolumeFace &  lateralBoundaryFace 
) const
inlineinherited

Returns an additional wall function momentum flux.

◆ wallNormalAxis()

template<class TypeTag >
int Dumux::RANSProblemBase< TypeTag >::wallNormalAxis ( const int  elementIdx) const
inlineinherited

Member Data Documentation

◆ calledUpdateStaticWallProperties

template<class TypeTag >
bool Dumux::RANSProblemBase< TypeTag >::calledUpdateStaticWallProperties = false
inherited

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