From cfbafc236af4d5410d64fccbf31328f19562b86c Mon Sep 17 00:00:00 2001 From: Joakim Hove Date: Fri, 13 Nov 2020 08:19:43 +0100 Subject: [PATCH 1/3] Allow deck_names in ParserKeyword to be interpreted as regexp --- src/opm/parser/eclipse/Parser/ParserKeyword.cpp | 13 +++++++++++-- .../share/keywords/000_Eclipse100/R/REGION_PROBE | 1 + tests/parser/SummaryConfigTests.cpp | 6 +++++- 3 files changed, 17 insertions(+), 3 deletions(-) diff --git a/src/opm/parser/eclipse/Parser/ParserKeyword.cpp b/src/opm/parser/eclipse/Parser/ParserKeyword.cpp index 5e4303fc0..b933253fb 100644 --- a/src/opm/parser/eclipse/Parser/ParserKeyword.cpp +++ b/src/opm/parser/eclipse/Parser/ParserKeyword.cpp @@ -707,9 +707,18 @@ void set_dimensions( ParserItem& item, else if( m_deckNames.count( std::string(name) ) ) return true; - else if (hasMatchRegex()) - return std::regex_match( name.begin(), name.end(), m_matchRegex); + else if (hasMatchRegex()) { + bool match = std::regex_match( name.begin(), name.end(), m_matchRegex); + if (match) + return true; + } + // Last desperate attempt - go through the deckNames list and + // interpret the elements as a regular expression. + for (const auto& deck_name : this->m_deckNames) { + if (std::regex_match(name.begin(), name.end(), std::regex(deck_name))) + return true; + } return false; } diff --git a/src/opm/parser/eclipse/share/keywords/000_Eclipse100/R/REGION_PROBE b/src/opm/parser/eclipse/share/keywords/000_Eclipse100/R/REGION_PROBE index 2488df51f..c80914ee2 100644 --- a/src/opm/parser/eclipse/share/keywords/000_Eclipse100/R/REGION_PROBE +++ b/src/opm/parser/eclipse/share/keywords/000_Eclipse100/R/REGION_PROBE @@ -5,6 +5,7 @@ ], "comment": "Tracer keywords where the 2nd letter is a 'T' should be compounded with the tracer name", "deck_names": [ + "RRPV_[0-9A-Z][0-9A-Z][0-9A-Z]", "ROSAT", "ROIP", "ROIPL", diff --git a/tests/parser/SummaryConfigTests.cpp b/tests/parser/SummaryConfigTests.cpp index 7e99d724b..54bea2da8 100644 --- a/tests/parser/SummaryConfigTests.cpp +++ b/tests/parser/SummaryConfigTests.cpp @@ -1178,11 +1178,15 @@ RPR__REG ROPT_REG / + +RRPV_REG +/ )"; const auto& summary_config = createSummary(deck_string); - BOOST_CHECK_EQUAL(summary_config.size(), 6U); + BOOST_CHECK_EQUAL(summary_config.size(), 9U); BOOST_CHECK(summary_config.hasKeyword("RPR__REG")); BOOST_CHECK(summary_config.hasKeyword("ROPT_REG")); + BOOST_CHECK(summary_config.hasKeyword("RRPV_REG")); BOOST_CHECK(!summary_config.hasKeyword("RPR")); BOOST_CHECK(!summary_config.match("BPR*")); BOOST_CHECK(summary_config.match("RPR*")); From c3b6da7bc3cdeb3c7fad46552fa3553bb0e718c6 Mon Sep 17 00:00:00 2001 From: Joakim Hove Date: Fri, 13 Nov 2020 08:20:28 +0100 Subject: [PATCH 2/3] Add RRPV as summary variable --- src/opm/output/eclipse/Summary.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/opm/output/eclipse/Summary.cpp b/src/opm/output/eclipse/Summary.cpp index e8a931081..fe2ed0db7 100644 --- a/src/opm/output/eclipse/Summary.cpp +++ b/src/opm/output/eclipse/Summary.cpp @@ -1600,7 +1600,8 @@ static const std::unordered_map< std::string, Opm::UnitSystem::measure> region_u {"RGIP" , Opm::UnitSystem::measure::gas_surface_volume }, {"RGIPL" , Opm::UnitSystem::measure::gas_surface_volume }, {"RGIPG" , Opm::UnitSystem::measure::gas_surface_volume }, - {"RWIP" , Opm::UnitSystem::measure::liquid_surface_volume } + {"RWIP" , Opm::UnitSystem::measure::liquid_surface_volume }, + {"RRPV" , Opm::UnitSystem::measure::geometric_volume } }; static const std::unordered_map< std::string, Opm::UnitSystem::measure> block_units = { From ed5ed62203faf9d06f03b63ed8407719b70ae6f4 Mon Sep 17 00:00:00 2001 From: Joakim Hove Date: Mon, 16 Nov 2020 07:12:59 +0100 Subject: [PATCH 3/3] Parse summary keyword ROEW_xxx --- .../eclipse/share/keywords/000_Eclipse100/R/REGION_PROBE | 1 + tests/parser/SummaryConfigTests.cpp | 6 +++++- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/src/opm/parser/eclipse/share/keywords/000_Eclipse100/R/REGION_PROBE b/src/opm/parser/eclipse/share/keywords/000_Eclipse100/R/REGION_PROBE index c80914ee2..a52f990b9 100644 --- a/src/opm/parser/eclipse/share/keywords/000_Eclipse100/R/REGION_PROBE +++ b/src/opm/parser/eclipse/share/keywords/000_Eclipse100/R/REGION_PROBE @@ -6,6 +6,7 @@ "comment": "Tracer keywords where the 2nd letter is a 'T' should be compounded with the tracer name", "deck_names": [ "RRPV_[0-9A-Z][0-9A-Z][0-9A-Z]", + "ROEW_[0-9A-Z][0-9A-Z][0-9A-Z]", "ROSAT", "ROIP", "ROIPL", diff --git a/tests/parser/SummaryConfigTests.cpp b/tests/parser/SummaryConfigTests.cpp index 54bea2da8..e682beb65 100644 --- a/tests/parser/SummaryConfigTests.cpp +++ b/tests/parser/SummaryConfigTests.cpp @@ -1181,12 +1181,16 @@ ROPT_REG RRPV_REG / + +ROEW_REG +/ )"; const auto& summary_config = createSummary(deck_string); - BOOST_CHECK_EQUAL(summary_config.size(), 9U); + BOOST_CHECK_EQUAL(summary_config.size(), 12U); BOOST_CHECK(summary_config.hasKeyword("RPR__REG")); BOOST_CHECK(summary_config.hasKeyword("ROPT_REG")); BOOST_CHECK(summary_config.hasKeyword("RRPV_REG")); + BOOST_CHECK(summary_config.hasKeyword("ROEW_REG")); BOOST_CHECK(!summary_config.hasKeyword("RPR")); BOOST_CHECK(!summary_config.match("BPR*")); BOOST_CHECK(summary_config.match("RPR*"));