From 76b51aca761784a7ce41ce9ed7233a99df33d654 Mon Sep 17 00:00:00 2001 From: Antonella Ritorto Date: Tue, 19 Dec 2023 13:12:30 +0100 Subject: [PATCH] Throw applyAllZMultipliers_ for LGRs --- ebos/ecltransmissibility_impl.hh | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/ebos/ecltransmissibility_impl.hh b/ebos/ecltransmissibility_impl.hh index fa00d36e6..5412c71c9 100644 --- a/ebos/ecltransmissibility_impl.hh +++ b/ebos/ecltransmissibility_impl.hh @@ -730,10 +730,20 @@ applyAllZMultipliers_(Scalar& trans, const std::array& cartDims, bool pinchTop) { + if(grid_.maxLevel()> 0) { + OPM_THROW(std::invalid_argument, "MULTZ not support with LGRS, yet."); + } if (insideFaceIdx > 3) { // top or or bottom assert(insideFaceIdx==5); // as insideCartElemIdx < outsideCartElemIdx holds for the Z column - assert(outsideCartElemIdx > insideCartElemIdx); - auto lastCartElemIdx = outsideCartElemIdx - cartDims[0]*cartDims[1]; + // For CpGrid with LGRs, insideCartElemIdx == outsideCartElemIdx when cells on the leaf have the same parent cell on level zero. + assert(outsideCartElemIdx >= insideCartElemIdx); + unsigned lastCartElemIdx; + if (outsideCartElemIdx == insideCartElemIdx) { + lastCartElemIdx = outsideCartElemIdx; + } + else { + lastCartElemIdx = outsideCartElemIdx - cartDims[0]*cartDims[1]; + } // Last multiplier using (Z+)*(Z-) Scalar mult = transMult.getMultiplier(lastCartElemIdx , FaceDir::ZPlus) * transMult.getMultiplier(outsideCartElemIdx , FaceDir::ZMinus);