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

Test problem for the staggered grid (Kovasznay 1948, [38]). More...

#include <test/freeflow/navierstokes/kovasznay/problem.hh>

Inheritance diagram for Dumux::KovasznayTestProblem< TypeTag >:
Inheritance graph

Description

template<class TypeTag>
class Dumux::KovasznayTestProblem< TypeTag >

Test problem for the staggered grid (Kovasznay 1948, [38]).

A two-dimensional Navier-Stokes flow with a periodicity in one direction is considered. The set-up represents a wake behind a two-dimensional grid and is chosen in a way such that an exact solution is available.

Public Member Functions

 KovasznayTestProblem (std::shared_ptr< const GridGeometry > gridGeometry)
Scalar temperatureAtPos (const GlobalPosition &globalPos) const
 Returns the temperature \(\mathrm{[K]}\) at a given global position.
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 alpha value required as input parameter for the Beavers-Joseph-Saffman boundary condition.
Scalar velocityPorousMedium (const Element &element, const SubControlVolumeFace &scvf) const
 Returns the velocity in the porous medium (which is 0 by default according to Saffmann).
const Scalar bjsVelocity (const Element &element, const SubControlVolume &scv, const SubControlVolumeFace &faceOnPorousBoundary, const Scalar velocitySelf) const
 helper function to evaluate the slip velocity on the boundary when the Beavers-Joseph-Saffman condition is used
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
Problem parameters
bool shouldWriteRestartFile () const
void printL2Error (const SolutionVector &curSol) const
Scalar temperature () const
 Returns the temperature within the domain in [K].
NumEqVector sourceAtPos (const GlobalPosition &globalPos) const
 Returns the sources within the domain.
Boundary conditions
BoundaryTypes boundaryTypesAtPos (const GlobalPosition &globalPos) const
 Specifies which kind of boundary condition should be used for which equation on a given boundary control volume.
bool isDirichletCell (const Element &element, const FVElementGeometry &fvGeometry, const SubControlVolume &scv, int pvIdx) const
 Returns whether a fixed Dirichlet value shall be used at a given cell.
PrimaryVariables dirichletAtPos (const GlobalPosition &globalPos) const
 Returns Dirichlet boundary values at a given position.
PrimaryVariables analyticalSolution (const GlobalPosition &globalPos) const
 Returns the analytical solution of the problem at a given position.

Volume terms

PrimaryVariables initialAtPos (const GlobalPosition &globalPos) const
 Evaluates the initial value for a control volume.
auto & getAnalyticalPressureSolution () const
 Returns the analytical solution for the pressure.
auto & getAnalyticalVelocitySolution () const
 Returns the analytical solution for the velocity.
auto & getAnalyticalVelocitySolutionOnFace () const
 Returns the analytical solution for the velocity at the faces.

Constructor & Destructor Documentation

◆ KovasznayTestProblem()

template<class TypeTag>
Dumux::KovasznayTestProblem< TypeTag >::KovasznayTestProblem ( std::shared_ptr< const GridGeometry > gridGeometry)
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.

◆ analyticalSolution()

template<class TypeTag>
PrimaryVariables Dumux::KovasznayTestProblem< TypeTag >::analyticalSolution ( const GlobalPosition & globalPos) const
inline

Returns the analytical solution of the problem at a given position.

Parameters
globalPosThe global position

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

◆ bjsVelocity()

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

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

Deprecated
"Use beaversJosephVelocity(element, scv, faceOnPorousBoundary, velocitySelf, tangentialVelocityGradient) instead"

◆ boundaryTypesAtPos()

template<class TypeTag>
BoundaryTypes Dumux::KovasznayTestProblem< TypeTag >::boundaryTypesAtPos ( const GlobalPosition & globalPos) const
inline

Specifies which kind of boundary condition should be used for which equation on a given boundary control volume.

Parameters
globalPosThe position of the center of the finite volume

◆ dirichletAtPos()

template<class TypeTag>
PrimaryVariables Dumux::KovasznayTestProblem< TypeTag >::dirichletAtPos ( const GlobalPosition & globalPos) const
inline

Returns Dirichlet boundary values at a given position.

Parameters
globalPosThe global position

◆ enableInertiaTerms()

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

Returns whether interia terms should be considered.

◆ getAnalyticalPressureSolution()

template<class TypeTag>
auto & Dumux::KovasznayTestProblem< TypeTag >::getAnalyticalPressureSolution ( ) const
inline

Returns the analytical solution for the pressure.

◆ getAnalyticalVelocitySolution()

template<class TypeTag>
auto & Dumux::KovasznayTestProblem< TypeTag >::getAnalyticalVelocitySolution ( ) const
inline

Returns the analytical solution for the velocity.

◆ getAnalyticalVelocitySolutionOnFace()

template<class TypeTag>
auto & Dumux::KovasznayTestProblem< TypeTag >::getAnalyticalVelocitySolutionOnFace ( ) const
inline

Returns the analytical solution for the velocity at the faces.

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

◆ initialAtPos()

template<class TypeTag>
PrimaryVariables Dumux::KovasznayTestProblem< TypeTag >::initialAtPos ( const GlobalPosition & globalPos) const
inline

Evaluates the initial value for a control volume.

Parameters
globalPosThe global position

◆ isDirichletCell()

template<class TypeTag>
bool Dumux::KovasznayTestProblem< TypeTag >::isDirichletCell ( const Element & element,
const FVElementGeometry & fvGeometry,
const SubControlVolume & scv,
int pvIdx ) const
inline

Returns whether a fixed Dirichlet value shall be used at a given cell.

Parameters
elementThe finite element
fvGeometryThe finite-volume geometry
scvThe sub control volume
pvIdxThe primary variable index in the solution vector

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

◆ printL2Error()

template<class TypeTag>
void Dumux::KovasznayTestProblem< TypeTag >::printL2Error ( const SolutionVector & curSol) const
inline

◆ 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) [25]
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) [74].

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

◆ shouldWriteRestartFile()

template<class TypeTag>
bool Dumux::KovasznayTestProblem< TypeTag >::shouldWriteRestartFile ( ) const
inline

◆ sourceAtPos()

template<class TypeTag>
NumEqVector Dumux::KovasznayTestProblem< TypeTag >::sourceAtPos ( const GlobalPosition & globalPos) const
inline

Returns the sources within the domain.

Parameters
globalPosThe global position

◆ temperature()

template<class TypeTag>
Scalar Dumux::KovasznayTestProblem< TypeTag >::temperature ( ) const
inline

Returns the temperature within the domain in [K].

This problem assumes a temperature of 10 degrees Celsius.

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

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


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