diff --git a/test/porousmediumflow/2pncmin/implicit/isothermal/params.input b/test/porousmediumflow/2pncmin/implicit/isothermal/params.input index 0fd2372265fbdf8e1a9d062ca49c134a604bacd2..94578dd96b84662c9571dd0fddedb4a25b97a65d 100644 --- a/test/porousmediumflow/2pncmin/implicit/isothermal/params.input +++ b/test/porousmediumflow/2pncmin/implicit/isothermal/params.input @@ -37,10 +37,10 @@ InitPrecipitatedSaltBlock = 0.05 # [-] initial precipitated salt in the b SolubilityLimit = 0.26 # [-] solubility limit of salt in brine referencePorosity = 0.11 # [-] initial porosity referencePermeability = 2.23e-14 -IrreducibleLiqSat = 0.2 # [-] irreducible liquid saturation -IrreducibleGasSat = 0.001 # [-] irreducible gas saturation -Pentry1 = 500 # [Pa] -BCLambda1 = 2 # [-] +Swr = 0.2 # [-] irreducible liquid saturation +Snr = 0.001 # [-] irreducible gas saturation +BrooksCoreyPcEntry = 500 # [Pa] +BrooksCoreyLambda = 2 # [-] [Vtk] AddVelocity = 1 # Add extra information diff --git a/test/porousmediumflow/2pncmin/implicit/isothermal/spatialparams.hh b/test/porousmediumflow/2pncmin/implicit/isothermal/spatialparams.hh index bcdb15a870c63a5ec9de6ff55b0733d063eac1b2..c0a59da7daa0a2fd8e7a9b9abbdfb63c2d4d5ef9 100644 --- a/test/porousmediumflow/2pncmin/implicit/isothermal/spatialparams.hh +++ b/test/porousmediumflow/2pncmin/implicit/isothermal/spatialparams.hh @@ -27,9 +27,7 @@ #define DUMUX_INJECTION_SPATIAL_PARAMETERS_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/efftoabslaw.hh> +#include <dumux/material/fluidmatrixinteractions/2p/brookscorey.hh> #include <dumux/material/fluidmatrixinteractions/porosityprecipitation.hh> #include <dumux/material/fluidmatrixinteractions/permeabilitykozenycarman.hh> @@ -53,35 +51,21 @@ class DissolutionSpatialParams using ParentType = FVSpatialParams<GridGeometry, Scalar, DissolutionSpatialParams<GridGeometry, Scalar>>; - using EffectiveLaw = RegularizedBrooksCorey<Scalar>; + using PcKrSwCurve = FluidMatrix::BrooksCoreyDefault<Scalar>; using GlobalPosition = typename SubControlVolume::GlobalPosition; public: // type used for the permeability (i.e. tensor or scalar) using PermeabilityType = Scalar; - //! Export the material law type used - using MaterialLaw = EffToAbsLaw<EffectiveLaw>; - using MaterialLawParams = typename MaterialLaw::Params; DissolutionSpatialParams(std::shared_ptr<const GridGeometry> gridGeometry) : ParentType(gridGeometry) + , pcKrSwCurve_("SpatialParams") { solubilityLimit_ = getParam<Scalar>("SpatialParams.SolubilityLimit", 0.26); referencePorosity_ = getParam<Scalar>("SpatialParams.referencePorosity", 0.11); referencePermeability_ = getParam<Scalar>("SpatialParams.referencePermeability", 2.23e-14); - irreducibleLiqSat_ = getParam<Scalar>("SpatialParams.IrreducibleLiqSat", 0.2); - irreducibleGasSat_ = getParam<Scalar>("SpatialParams.IrreducibleGasSat", 1e-3); - pEntry1_ = getParam<Scalar>("SpatialParams.Pentry1", 500); - bcLambda1_ = getParam<Scalar>("SpatialParams.BCLambda1", 2); - - // residual saturations - materialParams_.setSwr(irreducibleLiqSat_); - materialParams_.setSnr(irreducibleGasSat_); - - // parameters of Brooks & Corey Law - materialParams_.setPe(pEntry1_); - materialParams_.setLambda(bcLambda1_); } /*! @@ -144,9 +128,14 @@ public: Scalar theta(const SubControlVolume &scv) const { return 10.0; } - // return the brooks-corey context depending on the position - const MaterialLawParams& materialLawParamsAtPos(const GlobalPosition& globalPos) const - { return materialParams_; } + /*! + * \brief Returns the parameters for the material law at a given location + * \param globalPos A global coordinate vector + */ + auto fluidMatrixInteractionAtPos(const GlobalPosition &globalPos) const + { + return makeFluidMatrixInteraction(pcKrSwCurve_); + } // define which phase is to be considered as the wetting phase template<class FluidSystem> @@ -155,17 +144,12 @@ public: private: - MaterialLawParams materialParams_; - PermeabilityKozenyCarman<PermeabilityType> permLaw_; Scalar solubilityLimit_; Scalar referencePorosity_; PermeabilityType referencePermeability_ = 0.0; - Scalar irreducibleLiqSat_; - Scalar irreducibleGasSat_; - Scalar pEntry1_; - Scalar bcLambda1_; + const PcKrSwCurve pcKrSwCurve_; }; } // end namespace Dumux diff --git a/test/porousmediumflow/2pncmin/implicit/nonisothermal/params.input b/test/porousmediumflow/2pncmin/implicit/nonisothermal/params.input index b8eecf0438621629fd80733786dd9ebe4d13e718..51d63dc04c19a8e8b6aa9943a93fcd2bbfacde34 100644 --- a/test/porousmediumflow/2pncmin/implicit/nonisothermal/params.input +++ b/test/porousmediumflow/2pncmin/implicit/nonisothermal/params.input @@ -40,10 +40,10 @@ RefTemperature = 299 # [K] temperature in the air abo SolubilityLimit = 0.26 # [-] solubility limit of NaCl in brine referencePorosity = 0.4 # [-] initial porosity referencePermeability = 1e-13 # [m²] initial permeability -VGAlpha = 0.00015 # Van Genuchten parameter -VGn = 14.0 # Van Genuchten parameter -IrreducibleLiqSat = 0.25 # [-] irreducible liquid saturation -IrreducibleGasSat = 0.025 # [-] irreducible gas saturation +VanGenuchtenAlpha = 0.00015 # Van Genuchten parameter +VanGenuchtenN = 14.0 # Van Genuchten parameter +Swr = 0.25 # [-] irreducible liquid saturation +Snr = 0.025 # [-] irreducible gas saturation [Vtk] AddVelocity = 1 # Add extra information diff --git a/test/porousmediumflow/2pncmin/implicit/nonisothermal/spatialparams.hh b/test/porousmediumflow/2pncmin/implicit/nonisothermal/spatialparams.hh index 276f8764c317fabd9498a1dae56fab78925f9555..201941ae5bec103357c447cddacd3967e46a3598 100644 --- a/test/porousmediumflow/2pncmin/implicit/nonisothermal/spatialparams.hh +++ b/test/porousmediumflow/2pncmin/implicit/nonisothermal/spatialparams.hh @@ -29,9 +29,7 @@ #include <dumux/io/gnuplotinterface.hh> #include <dumux/io/plotmateriallaw.hh> #include <dumux/material/spatialparams/fv.hh> -#include <dumux/material/fluidmatrixinteractions/2p/linearmaterial.hh> -#include <dumux/material/fluidmatrixinteractions/2p/regularizedvangenuchten.hh> -#include <dumux/material/fluidmatrixinteractions/2p/efftoabslaw.hh> +#include <dumux/material/fluidmatrixinteractions/2p/vangenuchten.hh> #include <dumux/material/fluidmatrixinteractions/porosityprecipitation.hh> #include <dumux/material/fluidmatrixinteractions/permeabilitykozenycarman.hh> @@ -55,38 +53,23 @@ class SalinizationSpatialParams using ParentType = FVSpatialParams<GridGeometry, Scalar, SalinizationSpatialParams<GridGeometry, Scalar>>; - using EffectiveLaw = RegularizedVanGenuchten<Scalar>; + using PcKrSwCurve = FluidMatrix::VanGenuchtenDefault<Scalar>; using GlobalPosition = typename SubControlVolume::GlobalPosition; public: // type used for the permeability (i.e. tensor or scalar) using PermeabilityType = Scalar; - //! Export the material law type used - using MaterialLaw = EffToAbsLaw<EffectiveLaw>; - using MaterialLawParams = typename MaterialLaw::Params; SalinizationSpatialParams(std::shared_ptr<const GridGeometry> gridGeometry) : ParentType(gridGeometry) + , pcKrSwCurve_("SpatialParams") { solubilityLimit_ = getParam<Scalar>("SpatialParams.SolubilityLimit", 0.26); referencePorosity_ = getParam<Scalar>("SpatialParams.referencePorosity", 0.11); referencePermeability_ = getParam<Scalar>("SpatialParams.referencePermeability", 2.23e-14); - irreducibleLiqSat_ = getParam<Scalar>("SpatialParams.IrreducibleLiqSat", 0.2); - irreducibleGasSat_ = getParam<Scalar>("SpatialParams.IrreducibleGasSat", 1e-3); - vgAlpha_ = getParam<Scalar>("SpatialParams.VGAlpha", 1.5); - vgn_ = getParam<Scalar>("SpatialParams.VGn", 4.0); plotFluidMatrixInteractions_ = getParam<bool>("Output.PlotFluidMatrixInteractions"); - - //Van Genuchen parameters - // residual saturations - materialParams_.setSwr(irreducibleLiqSat_); - materialParams_.setSnr(irreducibleGasSat_); - - //Van Genuchen parameters - materialParams_.setVgAlpha(vgAlpha_ ); - materialParams_.setVgn(vgn_); } /*! @@ -150,9 +133,14 @@ public: Scalar theta(const SubControlVolume &scv) const { return 10.0; } - // return the brooks-corey context depending on the position - const MaterialLawParams& materialLawParamsAtPos(const GlobalPosition& globalPos) const - { return materialParams_; } + /*! + * \brief Returns the parameters for the material law at a given location + * \param globalPos A global coordinate vector + */ + auto fluidMatrixInteractionAtPos(const GlobalPosition &globalPos) const + { + return makeFluidMatrixInteraction(pcKrSwCurve_); + } // define which phase is to be considered as the wetting phase template<class FluidSystem> @@ -161,17 +149,14 @@ public: private: - MaterialLawParams materialParams_; + const PcKrSwCurve pcKrSwCurve_; PermeabilityKozenyCarman<PermeabilityType> permLaw_; Scalar solubilityLimit_; Scalar referencePorosity_; PermeabilityType referencePermeability_ = 0.0; - Scalar irreducibleLiqSat_; - Scalar irreducibleGasSat_; - Scalar vgAlpha_; - Scalar vgn_ ; + bool plotFluidMatrixInteractions_; };