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;
57 virtual Dune::FieldVector<Scalar, 2>
shearStress(
const VolumeVariables& volVar)
const = 0;
88 Scalar
limitRoughH(
const Scalar roughnessHeight,
const Scalar waterDepth)
const
93 Scalar mobilityMax = 1.0;
95 Scalar minUpperH = roughnessHeight * 2.0;
96 Scalar sw = min(waterDepth * (1.0/minUpperH),1.0);
98 auto mobility = mobilityMax /(1 + (1.0-sw)*(1.0-sw));
99 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 &volVar) const =0
Compute the shear stress.
Scalar limitRoughH(const Scalar roughnessHeight, const Scalar waterDepth) const
Limit the friction for small water depth.
Definition: frictionlaw.hh:88
virtual ~FrictionLaw()
Definition: frictionlaw.hh:102