From 15c91d88c6931af707c0059260705929992fa734 Mon Sep 17 00:00:00 2001 From: Tor Harald Sandve Date: Thu, 4 Jan 2024 13:17:29 +0100 Subject: [PATCH] use arithmetic averaged compaction transmissibility multipliers --- opm/models/blackoil/blackoillocalresidualtpfa.hh | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/opm/models/blackoil/blackoillocalresidualtpfa.hh b/opm/models/blackoil/blackoillocalresidualtpfa.hh index e15e455a0..8caf78279 100644 --- a/opm/models/blackoil/blackoillocalresidualtpfa.hh +++ b/opm/models/blackoil/blackoillocalresidualtpfa.hh @@ -356,7 +356,8 @@ public: const IntensiveQuantities& up = (upIdx == interiorDofIdx) ? intQuantsIn : intQuantsEx; unsigned globalUpIndex = (upIdx == interiorDofIdx) ? globalIndexIn : globalIndexEx; - const Evaluation& transMult = up.rockCompTransMultiplier(); + // Use arithmetic average (more accurate with harmonic, but that requires recomputing the transmissbility) + const Evaluation transMult = (intQuantsIn.rockCompTransMultiplier() + Toolbox::value(intQuantsEx.rockCompTransMultiplier()))/2; Evaluation darcyFlux; if (pressureDifference == 0) { darcyFlux = 0.0; // NB maybe we could drop calculations @@ -365,7 +366,7 @@ public: darcyFlux = pressureDifference * up.mobility(phaseIdx, facedir) * transMult * (-trans / faceArea); else darcyFlux = pressureDifference * - (Toolbox::value(up.mobility(phaseIdx, facedir)) * Toolbox::value(transMult) * (-trans / faceArea)); + (Toolbox::value(up.mobility(phaseIdx, facedir)) * transMult * (-trans / faceArea)); } unsigned activeCompIdx = Indices::canonicalToActiveComponentIndex(FluidSystem::solventComponentIndex(phaseIdx)); darcy[conti0EqIdx + activeCompIdx] = darcyFlux.value() * faceArea; // NB! For the FLORES fluxes without derivatives