Test problem for the staggered grid. More...
#include <test/freeflow/navierstokes/sincos/problem.hh>
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... | |
using Dumux::SincosTestProblem< TypeTag >::Indices = typename GetPropType<TypeTag, Properties::ModelTraits>::Indices |
using Dumux::SincosTestProblem< TypeTag >::ModelTraits = GetPropType<TypeTag, Properties::ModelTraits> |
|
inline |
|
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.
|
inline |
Returns the analytical solution of the problem at a given position.
globalPos | The global position |
time | The current simulation time |
|
inlineinherited |
Applys the initial face solution (velocities on the faces). Specialization for staggered grid discretization.
|
inlineinherited |
helper function to evaluate the slip velocity on the boundary when the Beavers-Joseph condition is used
|
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.
|
inlineinherited |
helper function to evaluate the slip velocity on the boundary when the Beavers-Joseph-Saffman condition is used
|
inline |
Specifies which kind of boundary condition should be used for which equation on a given boundary control volume.
globalPos | The position of the center of the finite volume |
|
inline |
Returns Dirichlet boundary values at a given position.
globalPos | The global position |
|
inlineinherited |
Returns whether interia terms should be considered.
|
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
|
inline |
Evaluates the initial value for a control volume.
globalPos | The global position |
|
inline |
Returns whether a fixed Dirichlet value shall be used at a given cell.
element | The finite element |
fvGeometry | The finite-volume geometry |
scv | The sub control volume |
pvIdx | The primary variable index in the solution vector |
|
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.
|
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].
|
inlineinherited |
Convenience function for staggered grid implementation.
|
inline |
Return the sources within the domain.
globalPos | The global position |
|
inline |
Returns the temperature within the domain in [K].
This problem assumes a temperature of 10 degrees Celsius.
|
inlineinherited |
Returns the temperature \mathrm{[K]} at a given global position.
This is not specific to the discretization. By default it just calls temperature().
globalPos | The position in global coordinates where the temperature should be specified. |
|
inline |
Updates the time.
|
inline |
Updates the time step size.
|
inlineinherited |
Returns the velocity in the porous medium (which is 0 by default according to Saffmann).