diff --git a/dumux/freeflow/stokes/localresidual.hh b/dumux/freeflow/stokes/localresidual.hh index 8793f46f6c7c9c8c37eae0a4bb82d01d9709c95e..2f58393c5cc2d3e394c70d4139c13e96009939b2 100644 --- a/dumux/freeflow/stokes/localresidual.hh +++ b/dumux/freeflow/stokes/localresidual.hh @@ -82,6 +82,7 @@ protected: static const bool enableUnsymmetrizedVelocityGradient = GET_PROP_VALUE(TypeTag, EnableUnsymmetrizedVelocityGradient); static const bool calculateNavierStokes = GET_PROP_VALUE(TypeTag, EnableNavierStokes); static const bool useMoles = GET_PROP_VALUE(TypeTag, UseMoles); + static const bool enablePseudo3dWallFriction = GET_PROP_VALUE(TypeTag, EnablePseudoThreeDWallFriction); public: /*! @@ -331,11 +332,14 @@ protected: source[momentumXIdx + dimIdx] -= pressureGradAtSCVCenter[dimIdx]; source[momentumXIdx + dimIdx] += volVars.density()*this->problem_().gravity()[dimIdx]; - // add a wall friction term to account for a dimensional reduction from 3d to 2d - const auto pos = this->element_().geometry().corner(scvIdx); - const Scalar height = this->problem_().extrusionFactorAtPos(pos); - const Scalar wallFriction = 12*volVars.velocity()[dimIdx]*volVars.dynamicViscosity()/(height*height); - source[momentumXIdx + dimIdx] -= wallFriction; + if(enablePseudo3dWallFriction) + { + // add a wall friction term to account for a dimensional reduction from 3d to 2d + const auto pos = this->element_().geometry().corner(scvIdx); + const Scalar height = this->problem_().extrusionFactorAtPos(pos); + const Scalar wallFriction = 12*volVars.velocity()[dimIdx]*volVars.dynamicViscosity()/(height*height); + source[momentumXIdx + dimIdx] -= wallFriction; + } } } diff --git a/dumux/freeflow/stokes/properties.hh b/dumux/freeflow/stokes/properties.hh index 14471f6608abcc25d30d55e521bf2f4ac9a67788..25829a8df5c11b63ea99338d56fadfa517de9205 100644 --- a/dumux/freeflow/stokes/properties.hh +++ b/dumux/freeflow/stokes/properties.hh @@ -57,6 +57,7 @@ NEW_PROP_TAG(StokesStabilizationAlpha); //!< The parameter for the stabilization NEW_PROP_TAG(StokesStabilizationBeta); //!< The parameter for the stabilization at boundaries NEW_PROP_TAG(EnableUnsymmetrizedVelocityGradient); //!< Returns whether unsymmetrized velocity gradient for viscous term is used NEW_PROP_TAG(EnableNavierStokes); //!< Returns whether Navier-Stokes should be solved instead of plain Stokes +NEW_PROP_TAG(EnablePseudoThreeDWallFriction); //!< Returns whether an additional wall friction term should be considered to mimic 3D behavior NEW_PROP_TAG(UseMoles); //!< Defines whether molar (true) or mass (false) density is used NEW_PROP_TAG(PhaseIdx); //!< A phase index in case that a two-phase fluidsystem is used diff --git a/dumux/freeflow/stokes/propertydefaults.hh b/dumux/freeflow/stokes/propertydefaults.hh index 10014fb585a0a54360330a9204e0b9a6429f6cae..0a39ccb5b570c8e165f4d16f7ac99870a22d3d16 100644 --- a/dumux/freeflow/stokes/propertydefaults.hh +++ b/dumux/freeflow/stokes/propertydefaults.hh @@ -135,6 +135,9 @@ SET_INT_PROP(BoxStokes, PhaseIdx, 0); //! Use symmetrizedVelocityGradient by default SET_BOOL_PROP(BoxStokes, EnableUnsymmetrizedVelocityGradient, false); +//! Disbale additional wall friction term by default +SET_BOOL_PROP(BoxStokes, EnablePseudoThreeDWallFriction, false); + //! Set calculation to Stokes, not Navier-Stokes SET_BOOL_PROP(BoxStokes, EnableNavierStokes, false);