From d3a6db698a43d306b5a03121f57b93384ccf09ad Mon Sep 17 00:00:00 2001 From: Katharina Heck <katharina.heck@iws.uni-stuttgart.de> Date: Mon, 19 Oct 2020 15:23:47 +0200 Subject: [PATCH] [test][2pnc] update spatialparams according to changes in materiallaw --- .../2pnc/implicit/diffusion/params.input | 6 +++ .../2pnc/implicit/diffusion/spatialparams.hh | 41 ++++++----------- .../2pnc/implicit/fuelcell/params.input | 6 +++ .../2pnc/implicit/fuelcell/spatialparams.hh | 46 ++++++------------- 4 files changed, 39 insertions(+), 60 deletions(-) diff --git a/test/porousmediumflow/2pnc/implicit/diffusion/params.input b/test/porousmediumflow/2pnc/implicit/diffusion/params.input index b658cedc13..49248e5f84 100644 --- a/test/porousmediumflow/2pnc/implicit/diffusion/params.input +++ b/test/porousmediumflow/2pnc/implicit/diffusion/params.input @@ -9,3 +9,9 @@ Cells = 50 5 [Problem] Name = 2pnc_diffusion EnableGravity = false + +[SpatialParams] +BrooksCoreyPcEntry = 1e2 +BrooksCoreyLambda = 1.3 +Swr = 0.02 +Snr = 0.0 diff --git a/test/porousmediumflow/2pnc/implicit/diffusion/spatialparams.hh b/test/porousmediumflow/2pnc/implicit/diffusion/spatialparams.hh index dcbcfce6cf..d2bfb0e874 100644 --- a/test/porousmediumflow/2pnc/implicit/diffusion/spatialparams.hh +++ b/test/porousmediumflow/2pnc/implicit/diffusion/spatialparams.hh @@ -28,10 +28,7 @@ #include <dumux/porousmediumflow/properties.hh> #include <dumux/material/spatialparams/fv.hh> -#include <dumux/material/fluidmatrixinteractions/2p/linearmaterial.hh> -#include <dumux/material/fluidmatrixinteractions/2p/regularizedbrookscorey.hh> -#include <dumux/material/fluidmatrixinteractions/2p/regularizedvangenuchten.hh> -#include <dumux/material/fluidmatrixinteractions/2p/efftoabslaw.hh> +#include <dumux/material/fluidmatrixinteractions/2p/brookscorey.hh> namespace Dumux { /*! @@ -55,33 +52,22 @@ class TwoPNCDiffusionSpatialParams using DimWorldMatrix = Dune::FieldMatrix<Scalar, dimWorld, dimWorld>; - using EffectiveLaw = RegularizedBrooksCorey<Scalar>; + using PcKrSwCurve = FluidMatrix::BrooksCoreyDefault<Scalar>; public: using PermeabilityType = DimWorldMatrix; - using MaterialLaw = EffToAbsLaw<EffectiveLaw>; - using MaterialLawParams = typename MaterialLaw::Params; - TwoPNCDiffusionSpatialParams(std::shared_ptr<const GridGeometry> gridGeometry) - : ParentType(gridGeometry), K_(0) + : ParentType(gridGeometry) + , K_(0) + , pcKrSwCurve_("SpatialParams") { // intrinsic permeabilities K_[0][0] = 5e-11; K_[1][1] = 5e-11; - - // porosities - porosity_ = 0.2; - - // residual saturations - materialParams_.setSwr(0.02); - materialParams_.setSnr(0.0); - - // parameters for the vanGenuchten law - materialParams_.setPe(1e2); // alpha = 1/pcb - materialParams_.setLambda(1.3); } + /*! * \brief Returns the hydraulic conductivity \f$[m^2]\f$ * @@ -99,13 +85,15 @@ public: { return 0.2; } /*! - * \brief Returns the parameter object for the Brooks-Corey material law - * which depends on the position. + * \brief Returns the parameters for the material law at a given location * - * \param globalPos The global position + * This method is not actually required by the Richards model, but provided + * for the convenience of the RichardsLensProblem + * + * \param globalPos The global coordinates for the given location */ - const MaterialLawParams& materialLawParamsAtPos(const GlobalPosition& globalPos) const - { return materialParams_; } + auto fluidMatrixInteractionAtPos(const GlobalPosition& globalPos) const + { return makeFluidMatrixInteraction(pcKrSwCurve_); } /*! * \brief Function for defining which phase is to be considered as the wetting phase. @@ -119,9 +107,8 @@ public: private: DimWorldMatrix K_; - Scalar porosity_; static constexpr Scalar eps_ = 1e-6; - MaterialLawParams materialParams_; + const PcKrSwCurve pcKrSwCurve_; }; } // end namespace Dumux diff --git a/test/porousmediumflow/2pnc/implicit/fuelcell/params.input b/test/porousmediumflow/2pnc/implicit/fuelcell/params.input index 39d050f5a1..e26db822b1 100644 --- a/test/porousmediumflow/2pnc/implicit/fuelcell/params.input +++ b/test/porousmediumflow/2pnc/implicit/fuelcell/params.input @@ -42,3 +42,9 @@ SurfaceIncreasingFactor = 60 TransportNumberH20 = 0.2327 # [-] account for osmotic H20 transport term from membrane, value Lena Walter pO2Inlet = 0.3e5 # [Pa] partial pressure of oxygen at gas channel inlet MaxIterations = 300 # [-] Maximum number for iterations for solving electrochemical system + +[SpatialParams] +VanGenuchtenN = 3.652 +VanGenuchtenAlpha = 6.66e-5 +Swr = 0.12 +Snr = 0.0 diff --git a/test/porousmediumflow/2pnc/implicit/fuelcell/spatialparams.hh b/test/porousmediumflow/2pnc/implicit/fuelcell/spatialparams.hh index 33c29ca340..6efbf239cb 100644 --- a/test/porousmediumflow/2pnc/implicit/fuelcell/spatialparams.hh +++ b/test/porousmediumflow/2pnc/implicit/fuelcell/spatialparams.hh @@ -28,10 +28,7 @@ #include <dumux/porousmediumflow/properties.hh> #include <dumux/material/spatialparams/fv.hh> -#include <dumux/material/fluidmatrixinteractions/2p/linearmaterial.hh> -#include <dumux/material/fluidmatrixinteractions/2p/regularizedbrookscorey.hh> -#include <dumux/material/fluidmatrixinteractions/2p/regularizedvangenuchten.hh> -#include <dumux/material/fluidmatrixinteractions/2p/efftoabslaw.hh> +#include <dumux/material/fluidmatrixinteractions/2p/vangenuchten.hh> namespace Dumux { /*! @@ -55,30 +52,19 @@ class FuelCellSpatialParams using DimWorldMatrix = Dune::FieldMatrix<Scalar, dimWorld, dimWorld>; - using EffectiveLaw = RegularizedVanGenuchten<Scalar>; + using PcKrSwCurve = FluidMatrix::VanGenuchtenDefault<Scalar>; public: - using MaterialLaw = EffToAbsLaw<EffectiveLaw>; - using MaterialLawParams = typename MaterialLaw::Params; using PermeabilityType = DimWorldMatrix; FuelCellSpatialParams(std::shared_ptr<const GridGeometry> gridGeometry) - : ParentType(gridGeometry), K_(0) + : ParentType(gridGeometry) + , K_(0) + , pcKrSwCurve_("SpatialParams") { // intrinsic permeabilities K_[0][0] = 5e-11; K_[1][1] = 5e-11; - - // porosities - porosity_ = 0.2; - - // residual saturations - materialParams_.setSwr(0.12); // air is wetting phase - materialParams_.setSnr(0.0); // water is nonwetting - - //parameters for the vanGenuchten law - materialParams_.setVgAlpha(6.66e-5); // alpha = 1/pcb - materialParams_.setVgn(3.652); } /*! @@ -95,21 +81,16 @@ public: * \param globalPos The global position */ Scalar porosityAtPos(const GlobalPosition& globalPos) const - { - if (globalPos[1] < eps_) - return porosity_; - else - return 0.2; - } + { return 0.2; } /*! - * \brief Returns the parameter object for the Brooks-Corey material law - * which depends on the position. - * - * \param globalPos The global position + * \brief Returns the parameters for the material law at a given location + * \param globalPos A global coordinate vector */ - const MaterialLawParams& materialLawParamsAtPos(const GlobalPosition& globalPos) const - { return materialParams_; } + auto fluidMatrixInteractionAtPos(const GlobalPosition &globalPos) const + { + return makeFluidMatrixInteraction(pcKrSwCurve_); + } /*! * \brief Function for defining which phase is to be considered as the wetting phase. @@ -124,9 +105,8 @@ public: private: DimWorldMatrix K_; - Scalar porosity_; static constexpr Scalar eps_ = 1e-6; - MaterialLawParams materialParams_; + const PcKrSwCurve pcKrSwCurve_; }; } // end namespace Dumux -- GitLab