Commit 68f6c5ed authored by Kilian Weishaupt's avatar Kilian Weishaupt
Browse files

[remediationscenario] Adapt to new material law

parent 86f57025
......@@ -45,6 +45,32 @@ AirFlux = -0.02
ContaminantFlux = -0.0000001
HeatFlux = -5555.0
[SpatialParams.Fine]
Permeability = 6.28e-12
Porosity = 0.42
Swr = 0.12
Snr = 0.07
Sgr = 0.01
ParkerVanGenuchtenAlpha = 0.0005
ParkerVanGenuchtenN = 4.0
ParkerVanGenuchtenRegardSnrForKrn = true
ParkerVanGenuchtenBetaNw = 1.83
ParkerVanGenuchtenBetaGn = 2.2
ParkerVanGenuchtenBetaGw = 1.0
[SpatialParams.Coarse]
Permeability = 9.14e-10
Porosity = 0.42
Swr = 0.12
Snr = 0.07
Sgr = 0.01
ParkerVanGenuchtenAlpha = 0.0015
ParkerVanGenuchtenN = 4.0
ParkerVanGenuchtenRegardSnrForKrn = true
ParkerVanGenuchtenBetaNw = 1.83
ParkerVanGenuchtenBetaGn = 2.2
ParkerVanGenuchtenBetaGw = 1.0
[Newton]
MaxRelativeShift = 1e-4
TargetSteps = 4
......
......@@ -23,16 +23,11 @@
#ifndef DUMUX_KUEVETTE3P3CNI_SPATIAL_PARAMS_HH
#define DUMUX_KUEVETTE3P3CNI_SPATIAL_PARAMS_HH
//TODO Do we need this #include <dumux/porousmediumflow/3p3c/indices.hh>
#include <dune/common/float_cmp.hh>
#include <dumux/porousmediumflow/properties.hh>
#include <dumux/material/spatialparams/fv.hh>
#include <dumux/material/fluidmatrixinteractions/3p/regularizedparkervangen3p.hh>
#include <dumux/material/fluidmatrixinteractions/3p/regularizedparkervangen3pparams.hh>
#include <dumux/material/fluidmatrixinteractions/3p/efftoabslaw.hh>
#include <dumux/material/fluidmatrixinteractions/3p/parkervangenuchten.hh>
namespace Dumux {
......@@ -52,11 +47,9 @@ class KuevetteSpatialParams
using GlobalPosition = typename SubControlVolume::GlobalPosition;
using ParentType = FVSpatialParams<FVGridGeometry, Scalar, KuevetteSpatialParams<TypeTag>>;
using EffectiveLaw = RegularizedParkerVanGen3P<Scalar>;
using ThreePhasePcKrSw = FluidMatrix::ParkerVanGenuchten3PDefault<Scalar>;
public:
using MaterialLaw = EffToAbsLaw<EffectiveLaw>;
using MaterialLawParams = typename MaterialLaw::Params;
using PermeabilityType = Scalar;
/*!
......@@ -66,46 +59,16 @@ public:
*/
KuevetteSpatialParams(std::shared_ptr<const FVGridGeometry> fvGridGeometry)
: ParentType(fvGridGeometry)
, pcKrSwCurveFine_("SpatialParams.Fine")
, pcKrSwCurveCoarse_("SpatialParams.Coarse")
{
// intrinsic permeabilities
fineK_ = 6.28e-12;
coarseK_ = 9.14e-10;
fineK_ = getParam<Scalar>("SpatialParams.Fine.Permeability");
coarseK_ = getParam<Scalar>("SpatialParams.Coarse.Permeability");
// porosities
finePorosity_ = 0.42;
coarsePorosity_ = 0.42;
// residual saturations
fineMaterialParams_.setSwr(0.12);
fineMaterialParams_.setSnr(0.07);
fineMaterialParams_.setSgr(0.01);
coarseMaterialParams_.setSwr(0.12);
coarseMaterialParams_.setSnr(0.07);
coarseMaterialParams_.setSgr(0.01);
// parameters for the scaling of capillary pressure (GW = 1);
fineMaterialParams_.setBetaNw(1.83);
fineMaterialParams_.setBetaGn(2.2);
fineMaterialParams_.setBetaGw(1.0);
coarseMaterialParams_.setBetaNw(1.83);
coarseMaterialParams_.setBetaGn(2.2);
coarseMaterialParams_.setBetaGw(1.0);
// parameters for the 3phase van Genuchten law
fineMaterialParams_.setVgAlpha(0.0005);
coarseMaterialParams_.setVgAlpha(0.0015);
fineMaterialParams_.setVgn(4.0);
coarseMaterialParams_.setVgn(4.0);
coarseMaterialParams_.setKrRegardsSnr(true);
fineMaterialParams_.setKrRegardsSnr(true);
// parameters for adsorption
coarseMaterialParams_.setKdNAPL(0.);
coarseMaterialParams_.setRhoBulk(1500.);
fineMaterialParams_.setKdNAPL(0.);
fineMaterialParams_.setRhoBulk(1500.);
finePorosity_ = getParam<Scalar>("SpatialParams.Fine.Porosity");
coarsePorosity_ = getParam<Scalar>("SpatialParams.Coarse.Porosity");
}
/*!
......@@ -156,49 +119,30 @@ public:
}
}
/*
Scalar porosityAtPos(const GlobalPosition& globalPos) const
{
if (isFineMaterial_(globalPos))
return finePorosity_;
else
return coarsePorosity_;
}
*/
/*!
* \brief Function for defining the parameters needed by constitutive relationships (kr-sw, pc-sw, etc.).
* \brief Returns the fluid-matrix interaction law (kr-sw, pc-sw, etc.).
*
* \param element The current element
* \param scv The sub-control volume inside the element.
* \param elemSol The solution at the dofs connected to the element.
* \return the material parameters object
*/
template<class ElementSolution>
const MaterialLawParams& materialLawParams(const Element& element,
auto fluidMatrixInteraction(const Element& element,
const SubControlVolume& scv,
const ElementSolution& elemSol) const
{
const auto& globalPos = scv.dofPosition();
if (isFineMaterial_(globalPos))
return fineMaterialParams_;
return makeFluidMatrixInteraction(pcKrSwCurveFine_);
else
return coarseMaterialParams_;
return makeFluidMatrixInteraction(pcKrSwCurveCoarse_);
}
private:
bool isFineMaterial_(const GlobalPosition &globalPos) const
{
if (0.13 < globalPos[0] + eps_ && 1.20 > globalPos[0] - eps_ &&
0.32 < globalPos[1] + eps_ && globalPos[1] < 0.57 - eps_)
{
return true;
}
else
{
return false;
}
return (0.13 < globalPos[0] + eps_ && 1.20 > globalPos[0] - eps_ &&
0.32 < globalPos[1] + eps_ && globalPos[1] < 0.57 - eps_);
}
Scalar fineK_;
......@@ -207,8 +151,8 @@ private:
Scalar finePorosity_;
Scalar coarsePorosity_;
MaterialLawParams fineMaterialParams_;
MaterialLawParams coarseMaterialParams_;
const ThreePhasePcKrSw pcKrSwCurveFine_;
const ThreePhasePcKrSw pcKrSwCurveCoarse_;
static constexpr Scalar eps_ = 1.5e-7;
};
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment