3.2-git
DUNE for Multi-{Phase, Component, Scale, Physics, ...} flow and transport in porous media
Loading...
Searching...
No Matches
Dumux::RANSProblemImpl< TypeTag, TurbulenceModel::komega > Class Template Reference

K-Omega turbulence model problem base class. More...

#include <dumux/freeflow/rans/twoeq/komega/problem.hh>

Inheritance diagram for Dumux::RANSProblemImpl< TypeTag, TurbulenceModel::komega >:
Inheritance graph

Description

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

K-Omega turbulence model problem base class.

This implements the 2-equation k-omega turbulence model developed in Wilcox08 and Wilcox88

Public Member Functions

 RANSProblemImpl (std::shared_ptr< const GridGeometry > gridGeometry, const std::string &paramGroup="")
void updateStaticWallProperties ()
 Correct size of the static (solution independent) wall variables.
void updateDynamicWallProperties (const SolutionVector &curSol)
 Update the dynamic (solution dependent) relations to the walls.
const Scalar betaOmega () const
 Returns the \( \beta_{\omega} \) constant.
bool useWallFunction (const Element &element, const SubControlVolumeFace &scvf, const int &eqIdx) const
 Returns whether a wall function should be used at a given face.
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.
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.
bool isOnWall (const SubControlVolumeFace &scvf) const
 Returns whether a given sub control volume face is on a wall.
bool isOnWallAtPos (const GlobalPosition &globalPos) const
 Returns whether a given point is on a wall.
Scalar sandGrainRoughnessAtPos (const GlobalPosition &globalPos) const
 Returns the sand-grain roughness \(\mathrm{[m]}\) at a given position.
const Scalar karmanConstant () const
 Returns the Karman constant.
Scalar turbulentPrandtlNumber () const
 Return the turbulent Prandtl number \( [-] \) which is used to convert the eddy viscosity to an eddy thermal conductivity.
Scalar turbulentSchmidtNumber () const
 Return the turbulent Schmidt number \( [-] \) which is used to convert the eddy viscosity to an eddy diffusivity.
Scalar temperatureAtPos (const GlobalPosition &globalPos) const
 Returns the temperature \(\mathrm{[K]}\) at a given global position.
Scalar temperature () const
 Returns the temperature within the domain.
const GravityVector & gravity () const
 Returns the acceleration due to gravity.
bool enableInertiaTerms () const
 Returns whether interia terms should be considered.
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.
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:
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.
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.
Scalar alphaBJ (const SubControlVolumeFace &scvf) const
 Returns the alpha value required as input parameter for the Beavers-Joseph-Saffman boundary condition.
Scalar betaBJ (const Element &element, const SubControlVolumeFace &scvf) const
 Returns the beta value, or the alpha value divided by the square root of the intrinsic permeability.
Scalar velocityPorousMedium (const Element &element, const SubControlVolumeFace &scvf) const
 Returns the velocity in the porous medium (which is 0 by default according to Saffmann).
VelocityVector porousMediumVelocity (const Element &element, const SubControlVolumeFace &scvf) const
 Returns the velocity in the porous medium (which is 0 by default according to Saffmann).
const Scalar beaversJosephVelocity (const Element &element, const SubControlVolume &scv, const SubControlVolumeFace &faceOnPorousBoundary, const Scalar velocitySelf, const Scalar tangentialVelocityGradient) const
 helper function to evaluate the slip velocity on the boundary when the Beavers-Joseph condition is used
const Scalar beaversJosephVelocity (const Element &element, const SubControlVolume &scv, const SubControlVolumeFace &ownScvf, const SubControlVolumeFace &faceOnPorousBoundary, const Scalar velocitySelf, const Scalar tangentialVelocityGradient) const
 helper function to evaluate the slip velocity on the boundary when the Beavers-Joseph condition is used

Public Attributes

std::vector< Scalar > storedDynamicEddyViscosity_
std::vector< Scalar > storedDissipation_
std::vector< DimVector > storedDissipationGradient_
std::vector< Scalar > storedTurbulentKineticEnergy_
std::vector< DimVector > storedTurbulentKineticEnergyGradient_
bool useStoredEddyViscosity_
bool calledUpdateStaticWallProperties = false
std::vector< unsigned int > wallElementIdx_
std::vector< Scalar > wallDistance_
std::vector< std::array< std::array< unsigned int, 2 >, dim > > neighborIdx_
std::vector< GlobalPosition > cellCenter_
std::vector< DimVector > velocity_
std::vector< DimVector > velocityMaximum_
std::vector< DimVector > velocityMinimum_
std::vector< DimMatrix > velocityGradients_
std::vector< Scalar > stressTensorScalarProduct_
std::vector< Scalar > vorticityTensorScalarProduct_
std::vector< unsigned int > wallNormalAxis_
std::vector< unsigned int > flowNormalAxis_
std::vector< Scalar > kinematicViscosity_
std::vector< Scalar > sandGrainRoughness_

Constructor & Destructor Documentation

◆ RANSProblemImpl()

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

Member Function Documentation

◆ 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() [1/2]

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

helper function to evaluate the slip velocity on the boundary when the Beavers-Joseph condition is used

◆ beaversJosephVelocity() [2/2]

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

helper function to evaluate the slip velocity on the boundary when the Beavers-Joseph condition is used

◆ betaBJ()

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

Returns the beta value, or the alpha value divided by the square root of the intrinsic permeability.

◆ betaOmega()

template<class TypeTag>
const Scalar Dumux::RANSProblemImpl< TypeTag, TurbulenceModel::komega >::betaOmega ( ) const
inline

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

◆ enableInertiaTerms()

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

Returns whether interia terms should be considered.

◆ 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 \)

◆ 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.

◆ 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) [22]
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) [66].

◆ 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.

◆ sandGrainRoughnessAtPos()

template<class TypeTag>
Scalar Dumux::RANSProblemBase< TypeTag >::sandGrainRoughnessAtPos ( const GlobalPosition & globalPos) const
inlineinherited

Returns the sand-grain roughness \(\mathrm{[m]}\) at a given position.

Parameters
globalPosThe position in global coordinates.

◆ 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.

◆ updateDynamicWallProperties()

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

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

Parameters
curSolThe solution vector.

◆ updateStaticWallProperties()

template<class TypeTag>
void Dumux::RANSProblemImpl< TypeTag, TurbulenceModel::komega >::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.

◆ velocityPorousMedium()

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

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

◆ 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.

Member Data Documentation

◆ calledUpdateStaticWallProperties

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

◆ cellCenter_

template<class TypeTag>
std::vector<GlobalPosition> Dumux::RANSProblemBase< TypeTag >::cellCenter_
inherited

◆ flowNormalAxis_

template<class TypeTag>
std::vector<unsigned int> Dumux::RANSProblemBase< TypeTag >::flowNormalAxis_
inherited

◆ kinematicViscosity_

template<class TypeTag>
std::vector<Scalar> Dumux::RANSProblemBase< TypeTag >::kinematicViscosity_
inherited

◆ neighborIdx_

template<class TypeTag>
std::vector<std::array<std::array<unsigned int, 2>, dim> > Dumux::RANSProblemBase< TypeTag >::neighborIdx_
inherited

◆ sandGrainRoughness_

template<class TypeTag>
std::vector<Scalar> Dumux::RANSProblemBase< TypeTag >::sandGrainRoughness_
inherited

◆ storedDissipation_

template<class TypeTag>
std::vector<Scalar> Dumux::RANSProblemImpl< TypeTag, TurbulenceModel::komega >::storedDissipation_

◆ storedDissipationGradient_

template<class TypeTag>
std::vector<DimVector> Dumux::RANSProblemImpl< TypeTag, TurbulenceModel::komega >::storedDissipationGradient_

◆ storedDynamicEddyViscosity_

template<class TypeTag>
std::vector<Scalar> Dumux::RANSProblemImpl< TypeTag, TurbulenceModel::komega >::storedDynamicEddyViscosity_

◆ storedTurbulentKineticEnergy_

template<class TypeTag>
std::vector<Scalar> Dumux::RANSProblemImpl< TypeTag, TurbulenceModel::komega >::storedTurbulentKineticEnergy_

◆ storedTurbulentKineticEnergyGradient_

template<class TypeTag>
std::vector<DimVector> Dumux::RANSProblemImpl< TypeTag, TurbulenceModel::komega >::storedTurbulentKineticEnergyGradient_

◆ stressTensorScalarProduct_

template<class TypeTag>
std::vector<Scalar> Dumux::RANSProblemBase< TypeTag >::stressTensorScalarProduct_
inherited

◆ useStoredEddyViscosity_

template<class TypeTag>
bool Dumux::RANSProblemImpl< TypeTag, TurbulenceModel::komega >::useStoredEddyViscosity_

◆ velocity_

template<class TypeTag>
std::vector<DimVector> Dumux::RANSProblemBase< TypeTag >::velocity_
inherited

◆ velocityGradients_

template<class TypeTag>
std::vector<DimMatrix> Dumux::RANSProblemBase< TypeTag >::velocityGradients_
inherited

◆ velocityMaximum_

template<class TypeTag>
std::vector<DimVector> Dumux::RANSProblemBase< TypeTag >::velocityMaximum_
inherited

◆ velocityMinimum_

template<class TypeTag>
std::vector<DimVector> Dumux::RANSProblemBase< TypeTag >::velocityMinimum_
inherited

◆ vorticityTensorScalarProduct_

template<class TypeTag>
std::vector<Scalar> Dumux::RANSProblemBase< TypeTag >::vorticityTensorScalarProduct_
inherited

◆ wallDistance_

template<class TypeTag>
std::vector<Scalar> Dumux::RANSProblemBase< TypeTag >::wallDistance_
inherited

◆ wallElementIdx_

template<class TypeTag>
std::vector<unsigned int> Dumux::RANSProblemBase< TypeTag >::wallElementIdx_
inherited

◆ wallNormalAxis_

template<class TypeTag>
std::vector<unsigned int> Dumux::RANSProblemBase< TypeTag >::wallNormalAxis_
inherited

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