From df3973965c00f70a7f5c96a852b20787b1f3f30a Mon Sep 17 00:00:00 2001 From: Tor Harald Sandve Date: Fri, 26 Nov 2021 12:13:52 +0000 Subject: [PATCH] Fix oil water case SOF2 + SWFN --- .../EclMaterialLawManager.hpp | 26 +++++++++++++------ 1 file changed, 18 insertions(+), 8 deletions(-) diff --git a/opm/material/fluidmatrixinteractions/EclMaterialLawManager.hpp b/opm/material/fluidmatrixinteractions/EclMaterialLawManager.hpp index 742094f4b..01a8bbf3f 100644 --- a/opm/material/fluidmatrixinteractions/EclMaterialLawManager.hpp +++ b/opm/material/fluidmatrixinteractions/EclMaterialLawManager.hpp @@ -927,17 +927,27 @@ private: case SatFuncControls::KeywordFamily::Family_II: { const auto& swfnTable = tableManager.getSwfnTables().getTable(satRegionIdx); - const auto& sof3Table = tableManager.getSof3Tables().getTable(satRegionIdx); const std::vector SwColumn = swfnTable.getColumn("SW").vectorCopy(); - - // convert the saturations of the SOF3 keyword from oil to water saturations - std::vector SwSamples(sof3Table.numRows()); - for (size_t sampleIdx = 0; sampleIdx < sof3Table.numRows(); ++ sampleIdx) - SwSamples[sampleIdx] = 1 - sof3Table.get("SO", sampleIdx); - effParams.setKrwSamples(SwColumn, normalizeKrValues_(tolcrit, swfnTable.getColumn("KRW"))); - effParams.setKrnSamples(SwSamples, normalizeKrValues_(tolcrit, sof3Table.getColumn("KROW"))); effParams.setPcnwSamples(SwColumn, swfnTable.getColumn("PCOW").vectorCopy()); + + if (!hasGas) { + const auto& sof2Table = tableManager.getSof2Tables().getTable(satRegionIdx); + // convert the saturations of the SOF2 keyword from oil to water saturations + std::vector SwSamples(sof2Table.numRows()); + for (size_t sampleIdx = 0; sampleIdx < sof2Table.numRows(); ++ sampleIdx) + SwSamples[sampleIdx] = 1 - sof2Table.get("SO", sampleIdx); + + effParams.setKrnSamples(SwSamples, normalizeKrValues_(tolcrit, sof2Table.getColumn("KRO"))); + } else { + const auto& sof3Table = tableManager.getSof3Tables().getTable(satRegionIdx); + // convert the saturations of the SOF3 keyword from oil to water saturations + std::vector SwSamples(sof3Table.numRows()); + for (size_t sampleIdx = 0; sampleIdx < sof3Table.numRows(); ++ sampleIdx) + SwSamples[sampleIdx] = 1 - sof3Table.get("SO", sampleIdx); + + effParams.setKrnSamples(SwSamples, normalizeKrValues_(tolcrit, sof3Table.getColumn("KROW"))); + } effParams.finalize(); break; }