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

Test problem for the one-phase (Navier-) Stokes model in a 3D or pseudo 3D channel. More...

#include <test/freeflow/navierstokes/channel/3d/problem.hh>

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

Description

template<class TypeTag>
class Dumux::ThreeDChannelTestProblem< TypeTag >

Test problem for the one-phase (Navier-) Stokes model in a 3D or pseudo 3D channel.

Flow from left to right in a three-dimensional channel is considered. At the inlet (left) and outlet (right) fixed values for pressure are set. The channel is confined by solid walls at all other sides of the domain which corresponds to no-slip/no-flow conditions. The value of an analytical solution for the given flow configuration is furthermore provided. For sake of efficiency, the 3D problem can be reduced to a two-dimensional one by including an additional wall friction term to the momentum balance (Flekkoy et al., 1995 [25]).

Public Member Functions

 ThreeDChannelTestProblem (std::shared_ptr< const GridGeometry > gridGeometry)
 
Scalar temperatureAtPos (const GlobalPosition &globalPos) const
 Returns the temperature \(\mathrm{[K]}\) at a given global position. 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
 Returns the alpha value required as input parameter for the Beavers-Joseph-Saffman boundary condition. More...
 
Scalar velocityPorousMedium (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 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 More...
 
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 More...
 
Problem parameters
Scalar temperature () const
 Returns the temperature within the domain in [K]. More...
 
template<class ElementVolumeVariables , class ElementFaceVariables >
NumEqVector source (const Element &element, const FVElementGeometry &fvGeometry, const ElementVolumeVariables &elemVolVars, const ElementFaceVariables &elemFaceVars, const SubControlVolumeFace &scvf) const
 
Scalar extrusionFactorAtPos (const GlobalPosition &pos) const
 

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. More...
 
PrimaryVariables dirichletAtPos (const GlobalPosition &globalPos) const
 Evaluates the boundary conditions for a Dirichlet control volume. More...
 
PrimaryVariables initialAtPos (const GlobalPosition &globalPos) const
 Evaluates the initial value for a control volume. More...
 
Scalar analyticalFlux () const
 Returns the analytical solution for the flux through the rectangular channel. More...
 

Constructor & Destructor Documentation

◆ ThreeDChannelTestProblem()

template<class TypeTag >
Dumux::ThreeDChannelTestProblem< TypeTag >::ThreeDChannelTestProblem ( 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.

◆ analyticalFlux()

template<class TypeTag >
Scalar Dumux::ThreeDChannelTestProblem< TypeTag >::analyticalFlux ( ) const
inline

Returns the analytical solution for the flux through the rectangular channel.

◆ 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::ThreeDChannelTestProblem< 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::ThreeDChannelTestProblem< TypeTag >::dirichletAtPos ( const GlobalPosition &  globalPos) const
inline

Evaluates the boundary conditions for a Dirichlet control volume.

Parameters
globalPosThe center of the finite volume which ought to be set.

◆ enableInertiaTerms()

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

Returns whether interia terms should be considered.

◆ extrusionFactorAtPos()

template<class TypeTag >
Scalar Dumux::ThreeDChannelTestProblem< TypeTag >::extrusionFactorAtPos ( const GlobalPosition &  pos) const
inline

◆ 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::ThreeDChannelTestProblem< TypeTag >::initialAtPos ( const GlobalPosition &  globalPos) const
inline

Evaluates the initial value for a control volume.

Parameters
globalPosThe global position

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

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

◆ source()

template<class TypeTag >
template<class ElementVolumeVariables , class ElementFaceVariables >
NumEqVector Dumux::ThreeDChannelTestProblem< TypeTag >::source ( const Element &  element,
const FVElementGeometry &  fvGeometry,
const ElementVolumeVariables &  elemVolVars,
const ElementFaceVariables &  elemFaceVars,
const SubControlVolumeFace &  scvf 
) const
inline

◆ temperature()

template<class TypeTag >
Scalar Dumux::ThreeDChannelTestProblem< 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: