EclDefaultMaterial: use inconsistent saturations for the hysteresis update
with this, I got slightly better performance than the opm-core master version if flow is tasked on simulating the full Norne deck. Be aware that from the physical POV, this is wrong.
This commit is contained in:
parent
83de8aceb1
commit
893538c9f3
@ -327,18 +327,21 @@ public:
|
||||
{
|
||||
typedef MathToolbox<typename FluidState::Scalar> FsToolbox;
|
||||
|
||||
Scalar Swco = params.Swl();
|
||||
|
||||
Scalar Sw = FsToolbox::value(fluidState.saturation(waterPhaseIdx));
|
||||
Scalar So = FsToolbox::value(fluidState.saturation(oilPhaseIdx));
|
||||
Scalar Sg = FsToolbox::value(fluidState.saturation(gasPhaseIdx));
|
||||
Sw = std::min(1.0, std::max(Swco, Sw));
|
||||
Sg = std::min(1.0, std::max(0.0, Sg));
|
||||
|
||||
Scalar Sw_ow = Sg + Sw;
|
||||
Scalar So_go = 1 - Sw_ow + Swco;
|
||||
|
||||
params.oilWaterParams().update(/*pcSw=*/Sw, /*krwSw=*/1 - Sg, /*krnSw=*/Sw_ow);
|
||||
params.gasOilParams().update(/*pcSw=*/1 - Sg, /*krwSw=*/So_go, /*krnSw=*/1 - Sg);
|
||||
// FIXME: the saturations which are passed to update the hysteresis curves are
|
||||
// inconsistent with the ones used to calculate the relative permabilities. We do
|
||||
// it like this anyway because (a) the saturation functions of opm-core do it
|
||||
// this way (b) the simulations seem to converge better (which is not too much
|
||||
// surprising actually, because the time step does not start on a kink in the
|
||||
// solution) and (c) the Eclipse 100 simulator may do the same.
|
||||
//
|
||||
// Though be aware that from a physical perspective this is definitively
|
||||
// incorrect!
|
||||
params.oilWaterParams().update(/*pcSw=*/1 - So, /*krwSw=*/1 - So, /*krn_Sw=*/1 - So);
|
||||
params.gasOilParams().update(/*pcSw=*/1 - Sg, /*krwSw=*/1 - Sg, /*krn_Sw=*/1 - Sg);
|
||||
}
|
||||
};
|
||||
} // namespace Opm
|
||||
|
Loading…
Reference in New Issue
Block a user