Commit cdbfcec5 authored by Ned Coltman's avatar Ned Coltman
Browse files

[mm][columnxylene] adapt to new material laws

parent 61c7d025
......@@ -9,9 +9,32 @@ File = ./grids/column.dgf
[SpatialParams]
Permeability = 1.4e-11
PermeabilityExtDomain = 1.e-8
BetaNw = 1.83
BetaGn = 2.2
BetaGw = 1.0
ThreePNAPLAdsorptionRhoBulk = 1500.0
ThreePNAPLAdsorptionKdNAPL = 0.0
[SpatialParams.FineMaterial]
Swr = 0.12
Snr = 0.10
Sgr = 0.01
ParkerVanGenuchtenAlpha = 0.0005
ParkerVanGenuchtenN = 4.0
ParkerVanGenuchtenRegardSnrForKrn = true
ParkerVanGenuchtenBetaNw = 1.83
ParkerVanGenuchtenBetaGn = 2.2
ParkerVanGenuchtenBetaGw = 1.0
VanGenuchtenConstantRegularization = true
[SpatialParams.CoarseMaterial]
Swr = 0.12
Snr = 0.10
Sgr = 0.01
ParkerVanGenuchtenAlpha = 0.5
ParkerVanGenuchtenN = 4.0
ParkerVanGenuchtenRegardSnrForKrn = false
ParkerVanGenuchtenBetaNw = 1.83
ParkerVanGenuchtenBetaGn = 2.2
ParkerVanGenuchtenBetaGw = 1.0
VanGenuchtenConstantRegularization = true
[Problem]
Name = columnxylol
......
......@@ -27,9 +27,8 @@
#include <dumux/porousmediumflow/3p3c/indices.hh>
#include <dumux/common/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>
#include <dumux/material/fluidmatrixinteractions/3p/napladsorption.hh>
namespace Dumux {
......@@ -50,11 +49,10 @@ class ColumnSpatialParams
ColumnSpatialParams<FVGridGeometry, Scalar>>;
using GlobalPosition = typename SubControlVolume::GlobalPosition;
using EffectiveLaw = RegularizedParkerVanGen3P<Scalar>;
using ThreePhasePcKrSw = FluidMatrix::ParkerVanGenuchten3PDefault<Scalar>;
using AdsorptionModel = FluidMatrix::ThreePNAPLAdsorption<Scalar>;
public:
using MaterialLaw = EffToAbsLaw<EffectiveLaw>;
using MaterialLawParams = typename MaterialLaw::Params;
using PermeabilityType = Scalar;
/*!
......@@ -62,6 +60,9 @@ public:
*/
ColumnSpatialParams(std::shared_ptr<const FVGridGeometry> fvGridGeometry)
: ParentType(fvGridGeometry)
, fineThreePhasePcKrSw_("SpatialParams.FineMaterial")
, coarseThreePhasePcKrSw_("SpatialParams.CoarseMaterial")
, adsorption_("SpatialParams")
{
// intrinsic permeabilities
fineK_ = getParam<Scalar>("SpatialParams.Permeability");
......@@ -70,41 +71,6 @@ public:
// porosities
finePorosity_ = 0.46;
coarsePorosity_ = 0.46;
// residual saturations
fineMaterialParams_.setSwr(0.12);
fineMaterialParams_.setSnr(0.10);
fineMaterialParams_.setSgr(0.01);
coarseMaterialParams_.setSwr(0.12);
coarseMaterialParams_.setSnr(0.10);
coarseMaterialParams_.setSgr(0.01);
// parameters for the 3phase van Genuchten law
fineMaterialParams_.setVgAlpha(0.0005);
coarseMaterialParams_.setVgAlpha(0.5);
fineMaterialParams_.setVgn(4.0);
coarseMaterialParams_.setVgn(4.0);
coarseMaterialParams_.setKrRegardsSnr(false);
fineMaterialParams_.setKrRegardsSnr(true);
// parameters for the scaling of capillary pressure (GW = 1);
fineMaterialParams_.setBetaNw(getParam<Scalar>("SpatialParams.BetaNw"));
fineMaterialParams_.setBetaGn(getParam<Scalar>("SpatialParams.BetaGn"));
fineMaterialParams_.setBetaGw(getParam<Scalar>("SpatialParams.BetaGw"));
coarseMaterialParams_.setBetaNw(getParam<Scalar>("SpatialParams.BetaNw"));
coarseMaterialParams_.setBetaGn(getParam<Scalar>("SpatialParams.BetaGn"));
coarseMaterialParams_.setBetaGw(getParam<Scalar>("SpatialParams.BetaGw"));
// parameters for adsorption
coarseMaterialParams_.setKdNAPL(0.);
coarseMaterialParams_.setRhoBulk(1500.);
fineMaterialParams_.setKdNAPL(0.);
fineMaterialParams_.setRhoBulk(1500.);
// use capping as regularization
coarseMaterialParams_.useConstRegularization(true);
fineMaterialParams_.useConstRegularization(true);
}
/*!
......@@ -168,19 +134,16 @@ public:
* \param elemSol The solution at the dofs connected to the element
*/
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
{
const auto& globalPos = scv.dofPosition();
if (isFineMaterial_(globalPos))
return fineMaterialParams_;
else
return coarseMaterialParams_;
return makeFluidMatrixInteraction(fineThreePhasePcKrSw_, adsorption_);
return makeFluidMatrixInteraction(coarseThreePhasePcKrSw_, adsorption_);
}
private:
bool isFineMaterial_(const GlobalPosition &pos) const
{
......@@ -200,8 +163,9 @@ private:
Scalar fineHeatCap_;
Scalar coarseHeatCap_;
MaterialLawParams fineMaterialParams_;
MaterialLawParams coarseMaterialParams_;
const ThreePhasePcKrSw fineThreePhasePcKrSw_;
const ThreePhasePcKrSw coarseThreePhasePcKrSw_;
const AdsorptionModel adsorption_;
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