From da29e292b5c883f5c0f4bc1d8104bb204b2d32a4 Mon Sep 17 00:00:00 2001 From: Tor Harald Sandve Date: Tue, 13 Sep 2016 12:38:27 +0200 Subject: [PATCH 1/2] Bugfix: Let NTMISC determine number of MISC tables Number of misc tables is given by NTMISC (MISCNUM) and not NTSFUN (SATNUM) --- opm/core/props/satfunc/RelpermDiagnostics.cpp | 22 +++++++++++++------ opm/core/props/satfunc/RelpermDiagnostics.hpp | 2 +- 2 files changed, 16 insertions(+), 8 deletions(-) diff --git a/opm/core/props/satfunc/RelpermDiagnostics.cpp b/opm/core/props/satfunc/RelpermDiagnostics.cpp index 1a6a5307..bb9e10a2 100644 --- a/opm/core/props/satfunc/RelpermDiagnostics.cpp +++ b/opm/core/props/satfunc/RelpermDiagnostics.cpp @@ -160,13 +160,21 @@ namespace Opm{ if (deck->hasKeyword("SSFN")) { ssfnTableCheck_(ssfnTables.getTable(satnumIdx), satnumIdx+1); } - if (deck->hasKeyword("MISC")) { - miscTableCheck_(miscTables.getTable(satnumIdx), satnumIdx+1); - } if (deck->hasKeyword("MSFN")) { msfnTableCheck_(msfnTables.getTable(satnumIdx), satnumIdx+1); } } + + + if (deck->hasKeyword("MISCIBLE")) { + const int numMiscNumIdx = deck->getKeyword("MISCIBLE").getRecord(0).getItem("NTMISC").get< int >(0); + const std::string msg = "Number of misc regions: " + std::to_string(numMiscNumIdx) + "\n"; + OpmLog::info(msg); + for (int miscNumIdx = 0; miscNumIdx < numMiscNumIdx; ++miscNumIdx) { + miscTableCheck_(miscTables.getTable(miscNumIdx), miscNumIdx+1); + } + } + } @@ -522,21 +530,21 @@ namespace Opm{ void RelpermDiagnostics::miscTableCheck_(const Opm::MiscTable& miscTables, - const int satnumIdx) + const int miscnumIdx) { const auto& frac = miscTables.getSolventFractionColumn(); const auto& misc = miscTables.getMiscibilityColumn(); - const std::string regionIdx = std::to_string(satnumIdx); + const std::string regionIdx = std::to_string(miscnumIdx); //Check phase fraction column. if (frac.front() < 0.0 || frac.back() > 1.0) { - const std::string msg = "In MISC table SATNUM = " + regionIdx + ", phase fraction should be in range [0,1]."; + const std::string msg = "In MISC table MISCNUM = " + regionIdx + ", phase fraction should be in range [0,1]."; OpmLog::error(msg); } //Check miscibility column. if (misc.front() < 0.0 || misc.back() > 1.0) { - const std::string msg = "In MISC table SATNUM = " + regionIdx + ", miscibility should be in range [0,1]."; + const std::string msg = "In MISC table MISCNUM = " + regionIdx + ", miscibility should be in range [0,1]."; OpmLog::error(msg); } } diff --git a/opm/core/props/satfunc/RelpermDiagnostics.hpp b/opm/core/props/satfunc/RelpermDiagnostics.hpp index cb5cf138..e8db76ad 100644 --- a/opm/core/props/satfunc/RelpermDiagnostics.hpp +++ b/opm/core/props/satfunc/RelpermDiagnostics.hpp @@ -129,7 +129,7 @@ namespace Opm { void ssfnTableCheck_(const Opm::SsfnTable& ssfnTables, const int satnumIdx); void miscTableCheck_(const Opm::MiscTable& miscTables, - const int satnumIdx); + const int miscnumIdx); void msfnTableCheck_(const Opm::MsfnTable& msfnTables, const int satnumIdx); }; From a1058d45eaa8e52e3ac9db22dc213229bc5b526f Mon Sep 17 00:00:00 2001 From: Tor Harald Sandve Date: Fri, 16 Sep 2016 10:31:19 +0200 Subject: [PATCH 2/2] use table.size() instead of read from deck. --- opm/core/props/satfunc/RelpermDiagnostics.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/opm/core/props/satfunc/RelpermDiagnostics.cpp b/opm/core/props/satfunc/RelpermDiagnostics.cpp index bb9e10a2..8567d19d 100644 --- a/opm/core/props/satfunc/RelpermDiagnostics.cpp +++ b/opm/core/props/satfunc/RelpermDiagnostics.cpp @@ -167,7 +167,7 @@ namespace Opm{ if (deck->hasKeyword("MISCIBLE")) { - const int numMiscNumIdx = deck->getKeyword("MISCIBLE").getRecord(0).getItem("NTMISC").get< int >(0); + const int numMiscNumIdx = miscTables.size(); const std::string msg = "Number of misc regions: " + std::to_string(numMiscNumIdx) + "\n"; OpmLog::info(msg); for (int miscNumIdx = 0; miscNumIdx < numMiscNumIdx; ++miscNumIdx) {