24#ifndef DUMUX_MATERIAL_FLUIDMATRIX_FRICTIONLAW_HH
25#define DUMUX_MATERIAL_FLUIDMATRIX_FRICTIONLAW_HH
30#include <dune/common/fvector.hh>
40template <
typename VolumeVariables >
43 using Scalar =
typename VolumeVariables::PrimaryVariables::value_type;
56 virtual Dune::FieldVector<Scalar, 2>
bottomShearStress(
const VolumeVariables& volVars)
const = 0;
58 [[deprecated(
"Use bottomShearStress. Note that the unit and sign of the return value is different. Will be removed after release 3.5")]]
59 virtual Dune::FieldVector<Scalar, 2>
shearStress(
const VolumeVariables& volVars)
const
91 Scalar
limitRoughH(
const Scalar roughnessHeight,
const Scalar waterDepth)
const
95 const Scalar mobilityMax = 1.0;
97 const Scalar minUpperH = roughnessHeight * 2.0;
98 const Scalar sw = clamp(waterDepth * (1.0/minUpperH), 0.0, 1.0);
99 const Scalar
mobility = mobilityMax /(1.0 + (1.0-sw)*(1.0-sw));
100 return roughnessHeight * (1.0 -
mobility);
std::string mobility(int phaseIdx) noexcept
I/O name of mobility for multiphase systems.
Definition: name.hh:101
Implementation of the abstract base class for friction laws.
Definition: frictionlaw.hh:42
virtual Dune::FieldVector< Scalar, 2 > shearStress(const VolumeVariables &volVars) const
Definition: frictionlaw.hh:59
virtual ~FrictionLaw()=default
Scalar limitRoughH(const Scalar roughnessHeight, const Scalar waterDepth) const
Limit the friction for small water depth.
Definition: frictionlaw.hh:91
virtual Dune::FieldVector< Scalar, 2 > bottomShearStress(const VolumeVariables &volVars) const =0
Compute the bottom shear stress.