From 38b469b3a3aec5a071a777cdcc845d2aea3e1eae Mon Sep 17 00:00:00 2001 From: yue <tkdxwb@gmail.com> Date: Tue, 20 Oct 2020 12:55:58 +0200 Subject: [PATCH] [test][2p] new material law --- .../2p/implicit/adaptive/params.input | 10 +++++++ .../2p/implicit/cornerpoint/params.input | 6 +++++ .../2p/implicit/cornerpoint/spatialparams.hh | 21 ++++++--------- .../2p/implicit/fracture/params.input | 6 +++++ .../2p/implicit/fracture/spatialparams.hh | 27 +++++-------------- .../2p/implicit/nonisothermal/params.input | 10 +++++++ .../2p/implicit/rotationsymmetry/params.input | 6 +++++ .../rotationsymmetry/spatialparams.hh | 23 +++++----------- .../tracer/2ptracer/params.input | 14 ++++++++-- 9 files changed, 72 insertions(+), 51 deletions(-) diff --git a/test/porousmediumflow/2p/implicit/adaptive/params.input b/test/porousmediumflow/2p/implicit/adaptive/params.input index a650f89187..3f474517c3 100644 --- a/test/porousmediumflow/2p/implicit/adaptive/params.input +++ b/test/porousmediumflow/2p/implicit/adaptive/params.input @@ -13,6 +13,16 @@ ClosureType = Green LensLowerLeft = 1.0 2.0 # [m] coordinates of the lower left lens corner LensUpperRight = 4.0 3.0 # [m] coordinates of the upper right lens corner +[SpatialParams.Lens] +Swr = 0.18 +VanGenuchtenAlpha = 0.00045 +VanGenuchtenN = 7.3 + +[SpatialParams.Outer] +Swr = 0.05 +VanGenuchtenAlpha = 0.0037 +VanGenuchtenN = 4.7 + [Problem] Name = 2padaptive # name passed to the output routines diff --git a/test/porousmediumflow/2p/implicit/cornerpoint/params.input b/test/porousmediumflow/2p/implicit/cornerpoint/params.input index b4e0ef3e37..b9ecbd3a17 100644 --- a/test/porousmediumflow/2p/implicit/cornerpoint/params.input +++ b/test/porousmediumflow/2p/implicit/cornerpoint/params.input @@ -10,3 +10,9 @@ Name = cc2pcornerpoint # name passed to the output routines Homogeneous = 0 # use a homogeneous permeablity/porosity distribution InjectionElement = 0 # index of the element where injection should take place InjectionRate = 0.1 # injection rate in kg/s + +[SpatialParams] +Swr = 0.0 +Snr = 0.0 +VanGenuchtenAlpha = 0.00045 +VanGenuchtenN = 7.3; diff --git a/test/porousmediumflow/2p/implicit/cornerpoint/spatialparams.hh b/test/porousmediumflow/2p/implicit/cornerpoint/spatialparams.hh index 22d56066ea..f036ee2534 100644 --- a/test/porousmediumflow/2p/implicit/cornerpoint/spatialparams.hh +++ b/test/porousmediumflow/2p/implicit/cornerpoint/spatialparams.hh @@ -29,8 +29,7 @@ #include <opm/parser/eclipse/Deck/Deck.hpp> #include <dumux/material/spatialparams/fv.hh> -#include <dumux/material/fluidmatrixinteractions/2p/regularizedvangenuchten.hh> -#include <dumux/material/fluidmatrixinteractions/2p/efftoabslaw.hh> +#include <dumux/material/fluidmatrixinteractions/2p/vangenuchten.hh> namespace Dumux { @@ -52,19 +51,18 @@ class TwoPCornerPointTestSpatialParams static constexpr int dimWorld = GridView::dimensionworld; using GlobalPosition = typename Element::Geometry::GlobalCoordinate; - using EffectiveLaw = RegularizedVanGenuchten<Scalar>; + using PcKrSwCurve = FluidMatrix::VanGenuchtenDefault<Scalar>; using DimWorldMatrix = Dune::FieldMatrix<Scalar, dimWorld, dimWorld>; public: - using MaterialLaw = EffToAbsLaw<EffectiveLaw>; - using MaterialLawParams = typename MaterialLaw::Params; using PermeabilityType = DimWorldMatrix; TwoPCornerPointTestSpatialParams(std::shared_ptr<const GridGeometry> gridGeometry, std::shared_ptr<const Opm::Deck> deck) : ParentType(gridGeometry) , deck_(deck) + , pcCurve_("SpatialParams") { homogeneous_ = getParam<bool>("Problem.Homogeneous"); @@ -115,9 +113,6 @@ public: permZ_ = permX_; } - // parameters for the Van Genuchten law - materialParams_.setVgAlpha(0.00045); - materialParams_.setVgn(7.3); } /*! @@ -170,11 +165,11 @@ public: * \return The material parameters object */ template<class ElementSolution> - const MaterialLawParams& materialLawParams(const Element& element, - const SubControlVolume& scv, - const ElementSolution& elemSol) const + auto fluidMatrixInteraction(const Element& element, + const SubControlVolume& scv, + const ElementSolution& elemSol) const { - return materialParams_; + return makeFluidMatrixInteraction(pcCurve_); } /*! @@ -197,7 +192,7 @@ public: private: std::shared_ptr<const Opm::Deck> deck_; //!< the eclipse deck - MaterialLawParams materialParams_; + PcKrSwCurve pcCurve_; std::vector<Scalar> porosity_; std::vector<Scalar> permX_; std::vector<Scalar> permZ_; diff --git a/test/porousmediumflow/2p/implicit/fracture/params.input b/test/porousmediumflow/2p/implicit/fracture/params.input index 666a5013f6..fa2fb1f686 100644 --- a/test/porousmediumflow/2p/implicit/fracture/params.input +++ b/test/porousmediumflow/2p/implicit/fracture/params.input @@ -15,3 +15,9 @@ ResidualReduction = 1e-16 [Newton] MaxRelativeShift = 1e-10 + +[SpatialParams] +Swr = 0.05 +Snr = 0.0 +VanGenuchtenN = 4.7 +VanGenuchtenAlpha = 0.0037 diff --git a/test/porousmediumflow/2p/implicit/fracture/spatialparams.hh b/test/porousmediumflow/2p/implicit/fracture/spatialparams.hh index d9d13cedc8..66adff4cd3 100644 --- a/test/porousmediumflow/2p/implicit/fracture/spatialparams.hh +++ b/test/porousmediumflow/2p/implicit/fracture/spatialparams.hh @@ -27,9 +27,7 @@ #define DUMUX_TWOP_FRACTURE_TEST_SPATIALPARAMS_HH #include <dumux/material/spatialparams/fv.hh> -#include <dumux/material/fluidmatrixinteractions/2p/regularizedvangenuchten.hh> -#include <dumux/material/fluidmatrixinteractions/2p/linearmaterial.hh> -#include <dumux/material/fluidmatrixinteractions/2p/efftoabslaw.hh> +#include <dumux/material/fluidmatrixinteractions/2p/vangenuchten.hh> #include <dumux/porousmediumflow/2p/model.hh> @@ -54,27 +52,16 @@ class FractureSpatialParams using GlobalPosition = typename Element::Geometry::GlobalCoordinate; - using EffectiveLaw = RegularizedVanGenuchten<Scalar>; + using PcKrSwCurve = FluidMatrix::VanGenuchtenDefault<Scalar>; public: //! export permeability type using PermeabilityType = Scalar; - //! export the type used for the material law - using MaterialLaw = EffToAbsLaw<EffectiveLaw>; - using MaterialLawParams = typename MaterialLaw::Params; FractureSpatialParams(std::shared_ptr<const GridGeometry> gridGeometry) : ParentType(gridGeometry) - { - // residual saturations - materialParams_.setSwr(0.05); - materialParams_.setSnr(0.0); - - // parameters for the Van Genuchten law - // alpha and n - materialParams_.setVgAlpha(0.0037); - materialParams_.setVgn(4.7); - } + , pcKrSwCurve_("SpatialParams") + {} /*! * \brief Returns the scalar intrinsic permeability \f$[m^2]\f$ @@ -97,8 +84,8 @@ public: * * \param globalPos The position at which we evaluate */ - 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. @@ -111,7 +98,7 @@ public: { return FluidSystem::phase0Idx; } private: - MaterialLawParams materialParams_; + PcKrSwCurve pcKrSwCurve_; }; } // end namespace Dumux diff --git a/test/porousmediumflow/2p/implicit/nonisothermal/params.input b/test/porousmediumflow/2p/implicit/nonisothermal/params.input index e30e238016..246559beea 100644 --- a/test/porousmediumflow/2p/implicit/nonisothermal/params.input +++ b/test/porousmediumflow/2p/implicit/nonisothermal/params.input @@ -17,3 +17,13 @@ WriteConvergence = 1 # write convergence behaviour to disk? SolidDensity = 2700 SolidThermalConductivity = 2.8 SolidHeatCapacity = 790 + +[SpatialParams] +FineMaterial.Swr = 0.2 +FineMaterial.Snr = 0.0 +FineMaterial.BrooksCoreyPcEntry = 1e4 +FineMaterial.BrooksCoreyLambda = 2.0 +CoarseMaterial.Swr = 0.2 +CoarseMaterial.Snr = 0.0 +CoarseMaterial.BrooksCoreyPcEntry = 1e4 +CoarseMaterial.BrooksCoreyLambda = 2.0 diff --git a/test/porousmediumflow/2p/implicit/rotationsymmetry/params.input b/test/porousmediumflow/2p/implicit/rotationsymmetry/params.input index efe4baef16..49bd7c80bb 100644 --- a/test/porousmediumflow/2p/implicit/rotationsymmetry/params.input +++ b/test/porousmediumflow/2p/implicit/rotationsymmetry/params.input @@ -12,3 +12,9 @@ EnableGravity = true [Vtk] OutputInterval = 50 + +[SpatialParams] +Swr = 0.0 +Snr = 0.0 +BrooksCoreyPcEntry = 0.0 +BrooksCoreyLambda = 2.0 diff --git a/test/porousmediumflow/2p/implicit/rotationsymmetry/spatialparams.hh b/test/porousmediumflow/2p/implicit/rotationsymmetry/spatialparams.hh index da0361a7f8..fb0346fb2c 100644 --- a/test/porousmediumflow/2p/implicit/rotationsymmetry/spatialparams.hh +++ b/test/porousmediumflow/2p/implicit/rotationsymmetry/spatialparams.hh @@ -24,8 +24,7 @@ #define DUMUX_TEST_TWOP_ROTATIONALSYMMETRY_SPATIAL_PARAMS_HH #include <dumux/material/spatialparams/fv.hh> -#include <dumux/material/fluidmatrixinteractions/2p/regularizedbrookscorey.hh> -#include <dumux/material/fluidmatrixinteractions/2p/efftoabslaw.hh> +#include <dumux/material/fluidmatrixinteractions/2p/brookscorey.hh> namespace Dumux { @@ -38,22 +37,14 @@ class TwoPRotationalSymmetrySpatialParams using Element = typename GridGeometry::GridView::template Codim<0>::Entity; using GlobalPosition = typename Element::Geometry::GlobalCoordinate; + using PcKrSwCurve = FluidMatrix::BrooksCoreyDefault<Scalar>; public: - using MaterialLaw = EffToAbsLaw<RegularizedBrooksCorey<Scalar>>; - using MaterialLawParams = typename MaterialLaw::Params; using PermeabilityType = Scalar; TwoPRotationalSymmetrySpatialParams(std::shared_ptr<const GridGeometry> gridGeometry) : ParentType(gridGeometry) - { - // residual saturations - materialLawParams_.setSwr(0.0); - materialLawParams_.setSnr(0.0); - - // parameters for the material law - materialLawParams_.setPe(0.0); - materialLawParams_.setLambda(2.0); - } + ,pcKrSwCurve_("SpatialParams") + {} PermeabilityType permeabilityAtPos(const GlobalPosition& globalPos) const { return 1e-11; } @@ -61,15 +52,15 @@ public: Scalar porosityAtPos(const GlobalPosition& globalPos) const { return 0.4; } - const MaterialLawParams& materialLawParamsAtPos(const GlobalPosition& globalPos) const - { return materialLawParams_; } + auto fluidMatrixInteractionAtPos(const GlobalPosition& globalPos) const + { return makeFluidMatrixInteraction(pcKrSwCurve_); } template<class FluidSystem> int wettingPhaseAtPos(const GlobalPosition& globalPos) const { return FluidSystem::phase0Idx; } private: - MaterialLawParams materialLawParams_; + const PcKrSwCurve pcKrSwCurve_; }; } // end namespace Dumux diff --git a/test/porousmediumflow/tracer/2ptracer/params.input b/test/porousmediumflow/tracer/2ptracer/params.input index bf62610a95..ea81574f6b 100644 --- a/test/porousmediumflow/tracer/2ptracer/params.input +++ b/test/porousmediumflow/tracer/2ptracer/params.input @@ -10,8 +10,18 @@ Cells = 48 32 [SpatialParams] LensLowerLeft = 1.0 2.0 # [m] coordinates of the lower left lens corner LensUpperRight = 4.0 3.0 # [m] coordinates of the upper right lens corner -outerK = 1e-09 # [m^2] -lensK = 1e-12 # [m^2] + +[SpatialParams.Lens] +Swr = 0.18 +VanGenuchtenAlpha = 0.00045 +VanGenuchtenN = 7.3 +Permeability = 1e-12 # [m^2] + +[SpatialParams.Outer] +Swr = 0.05 +VanGenuchtenAlpha = 0.0037 +VanGenuchtenN = 4.7 +Permeability = 1e-09 # [m^2] [Problem] Name = test_2ptracer_lens_tpfa -- GitLab