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

Test problem for the staggered grid. More...

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

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

Description

template<class TypeTag>
class Dumux::SincosTestProblem< TypeTag >

Test problem for the staggered grid.

The 2D, incompressible Navier-Stokes equations for zero gravity and a Newtonian flow is solved and compared to an analytical solution (sums/products of trigonometric functions). For the instationary case, the velocities and pressures are periodical in time. The Dirichlet boundary conditions are consistent with the analytical solution and in the instationary case time-dependent.

Public Types

using ModelTraits = GetPropType< TypeTag, Properties::ModelTraits >
 
using Indices = typename GetPropType< TypeTag, Properties::ModelTraits >::Indices
 

Public Member Functions

 SincosTestProblem (std::shared_ptr< const GridGeometry > gridGeometry)
 
Scalar temperature () const
 Returns the temperature within the domain in [K]. More...
 
NumEqVector sourceAtPos (const GlobalPosition &globalPos) const
 Return the sources within the domain. More...
 
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...
 
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...
 
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. More...
 
PrimaryVariables dirichletAtPos (const GlobalPosition &globalPos) const
 Returns Dirichlet boundary values at a given position. More...
 
PrimaryVariables analyticalSolution (const GlobalPosition &globalPos, const Scalar time) const
 Returns the analytical solution of the problem at a given position. More...
 

Volume terms

PrimaryVariables initialAtPos (const GlobalPosition &globalPos) const
 Evaluates the initial value for a control volume. More...
 
void updateTime (const Scalar time)
 Updates the time. More...
 
void updateTimeStepSize (const Scalar timeStepSize)
 Updates the time step size. More...
 

Member Typedef Documentation

◆ Indices

template<class TypeTag >
using Dumux::SincosTestProblem< TypeTag >::Indices = typename GetPropType<TypeTag, Properties::ModelTraits>::Indices

◆ ModelTraits

template<class TypeTag >
using Dumux::SincosTestProblem< TypeTag >::ModelTraits = GetPropType<TypeTag, Properties::ModelTraits>

Constructor & Destructor Documentation

◆ SincosTestProblem()

template<class TypeTag >
Dumux::SincosTestProblem< TypeTag >::SincosTestProblem ( 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::SincosTestProblem< TypeTag >::analyticalSolution ( const GlobalPosition &  globalPos,
const Scalar  time 
) const
inline

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

Parameters
globalPosThe global position
timeThe current simulation time

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

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

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

◆ sourceAtPos()

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

Return the sources within the domain.

Parameters
globalPosThe global position

◆ temperature()

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

◆ updateTime()

template<class TypeTag >
void Dumux::SincosTestProblem< TypeTag >::updateTime ( const Scalar  time)
inline

Updates the time.

◆ updateTimeStepSize()

template<class TypeTag >
void Dumux::SincosTestProblem< TypeTag >::updateTimeStepSize ( const Scalar  timeStepSize)
inline

Updates the time step size.

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