diff --git a/test/freeflow/ransnc/problem.hh b/test/freeflow/ransnc/problem.hh index 10facf02990de049ab1e780b36222310a723895a..48021d7ff63e500da457e779b8236035f46ee413 100644 --- a/test/freeflow/ransnc/problem.hh +++ b/test/freeflow/ransnc/problem.hh @@ -29,7 +29,7 @@ #include <dumux/common/timeloop.hh> #include <dumux/common/numeqvector.hh> -#include <dumux/freeflow/navierstokes/boundarytypes.hh> +#include <dumux/freeflow/rans/boundarytypes.hh> #include <dumux/freeflow/turbulenceproperties.hh> #include <dumux/freeflow/rans/zeroeq/problem.hh> #include <dumux/freeflow/rans/oneeq/problem.hh> @@ -53,16 +53,17 @@ class FlatPlateNCTestProblem : public RANSProblem<TypeTag> { using ParentType = RANSProblem<TypeTag>; - using BoundaryTypes = Dumux::NavierStokesBoundaryTypes<GetPropType<TypeTag, Properties::ModelTraits>::numEq()>; using FluidSystem = GetPropType<TypeTag, Properties::FluidSystem>; using FluidState = GetPropType<TypeTag, Properties::FluidState>; using GridGeometry = GetPropType<TypeTag, Properties::GridGeometry>; - using Indices = typename GetPropType<TypeTag, Properties::ModelTraits>::Indices; using PrimaryVariables = GetPropType<TypeTag, Properties::PrimaryVariables>; using NumEqVector = Dumux::NumEqVector<PrimaryVariables>; using Scalar = GetPropType<TypeTag, Properties::Scalar>; + static constexpr auto dimWorld = GridGeometry::GridView::dimensionworld; using ModelTraits = GetPropType<TypeTag, Properties::ModelTraits>; + using Indices = typename GetPropType<TypeTag, Properties::ModelTraits>::Indices; + using BoundaryTypes = Dumux::RANSBoundaryTypes<ModelTraits, ModelTraits::numEq()>; using Element = typename GridGeometry::GridView::template Codim<0>::Entity; using GlobalPosition = typename Element::Geometry::GlobalCoordinate; using FVElementGeometry = typename GetPropType<TypeTag, Properties::GridGeometry>::LocalView; @@ -71,7 +72,6 @@ class FlatPlateNCTestProblem : public RANSProblem<TypeTag> using TimeLoopPtr = std::shared_ptr<CheckPointTimeLoop<Scalar>>; - static constexpr auto dimWorld = GridGeometry::GridView::dimensionworld; static constexpr auto transportEqIdx = Indices::conti0EqIdx + 1; static constexpr auto transportCompIdx = Indices::conti0EqIdx + 1; @@ -105,14 +105,6 @@ public: std::cout << std::endl; } - /*! - * \name Problem parameters - */ - // \{ - - bool isOnWallAtPos(const GlobalPosition& globalPos) const - { return globalPos[1] < eps_; } - /*! * \brief Returns the temperature within the domain in [K]. * @@ -157,10 +149,9 @@ public: values.setOutflow(Indices::energyEqIdx); #endif } - else if(isOnWallAtPos(globalPos)) + else if(isLowerWall_(globalPos)) { - values.setDirichlet(Indices::velocityXIdx); - values.setDirichlet(Indices::velocityYIdx); + values.setWall(); values.setNeumann(transportEqIdx); #if NONISOTHERMAL values.setDirichlet(Indices::temperatureIdx); @@ -205,11 +196,9 @@ public: { values[transportCompIdx] = (time() > 10.0) ? inletMoleFraction_ : 0.0; } + #if NONISOTHERMAL - if (time() > 10.0 && isOnWallAtPos(globalPos)) - { - values[Indices::temperatureIdx] = wallTemperature_; - } + values[Indices::temperatureIdx] = (isLowerWall_(globalPos) && time() > 10.0) ? wallTemperature_ : temperature(); #endif return values; @@ -250,7 +239,7 @@ public: #endif // block velocity profile values[Indices::velocityXIdx] = 0.0; - if (!isOnWallAtPos(globalPos)) + if (!isLowerWall_(globalPos)) values[Indices::velocityXIdx] = inletVelocity_; values[Indices::velocityYIdx] = 0.0; @@ -274,6 +263,9 @@ private: bool isOutlet_(const GlobalPosition& globalPos) const { return globalPos[0] > this->gridGeometry().bBoxMax()[0] - eps_; } + bool isLowerWall_(const GlobalPosition& globalPos) const + { return globalPos[1] < eps_; } + //! Initial conditions for the komega, kepsilon and lowrekepsilon turbulence models void setInitialAtPos_([[maybe_unused]] PrimaryVariables& values, [[maybe_unused]] const GlobalPosition &globalPos) const @@ -283,7 +275,7 @@ private: else if constexpr (numTurbulenceEq(ModelTraits::turbulenceModel()) == 1) // one equation models { values[Indices::viscosityTildeIdx] = viscosityTilde_; - if (isOnWallAtPos(globalPos)) + if (isLowerWall_(globalPos)) values[Indices::viscosityTildeIdx] = 0.0; } else // two equation models @@ -291,7 +283,7 @@ private: static_assert(numTurbulenceEq(ModelTraits::turbulenceModel()) == 2, "Only reached by 2eq models"); values[Indices::turbulentKineticEnergyIdx] = turbulentKineticEnergy_; values[Indices::dissipationIdx] = dissipation_; - if (isOnWallAtPos(globalPos)) + if (isLowerWall_(globalPos)) { values[Indices::turbulentKineticEnergyIdx] = 0.0; values[Indices::dissipationIdx] = 0.0; @@ -349,7 +341,7 @@ private: { // For the komega model we set a fixed dissipation (omega) for all cells at the wall for (const auto& scvf : scvfs(fvGeometry)) - if (isOnWallAtPos(scvf.center()) && pvIdx == Indices::dissipationIdx) + if (this->boundaryTypes(element, scvf).hasWall() && pvIdx == Indices::dissipationIdx) return true; return false; }