Test problem for the staggered grid (Kovasznay 1948, [38]) More...
#include <test/freeflow/navierstokes/kovasznay/problem.hh>
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. 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 | |
bool | shouldWriteRestartFile () const |
void | printL2Error (const SolutionVector &curSol) const |
Scalar | temperature () const |
Returns the temperature within the domain in [K]. More... | |
NumEqVector | sourceAtPos (const GlobalPosition &globalPos) const |
Returns the sources within the domain. 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 |
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... | |
auto & | getAnalyticalPressureSolution () const |
Returns the analytical solution for the pressure. More... | |
auto & | getAnalyticalVelocitySolution () const |
Returns the analytical solution for the velocity. More... | |
auto & | getAnalyticalVelocitySolutionOnFace () const |
Returns the analytical solution for the velocity at the faces. More... | |
|
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 |
|
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.
|
inline |
Returns the analytical solution for the pressure.
|
inline |
Returns the analytical solution for the velocity.
|
inline |
Returns the analytical solution for the velocity at the faces.
|
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.
|
inline |
|
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 |
|
inline |
Returns 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. |
|
inlineinherited |
Returns the velocity in the porous medium (which is 0 by default according to Saffmann).