diff --git a/opm/io/eclipse/SummaryNode.hpp b/opm/io/eclipse/SummaryNode.hpp index aa5c7aa3c..192049537 100644 --- a/opm/io/eclipse/SummaryNode.hpp +++ b/opm/io/eclipse/SummaryNode.hpp @@ -81,6 +81,8 @@ struct SummaryNode { static std::string normalise_keyword(const Category category, const std::string& keyword); + static std::string normalise_region_keyword(const std::string& keyword); + static inline std::string normalise_keyword(const std::string& keyword) { return normalise_keyword(category_from_keyword(keyword), keyword); diff --git a/src/opm/input/eclipse/EclipseState/SummaryConfig/SummaryConfig.cpp b/src/opm/input/eclipse/EclipseState/SummaryConfig/SummaryConfig.cpp index 7853e32f4..3b991602c 100644 --- a/src/opm/input/eclipse/EclipseState/SummaryConfig/SummaryConfig.cpp +++ b/src/opm/input/eclipse/EclipseState/SummaryConfig/SummaryConfig.cpp @@ -1067,7 +1067,7 @@ inline void keywordR(SummaryConfig::keyword_list& list, auto param = SummaryConfigNode { keyword, SummaryConfigNode::Category::Region, deck_keyword.location() } - .parameterType(parseKeywordType(keyword)) + .parameterType(parseKeywordType(EclIO::SummaryNode::normalise_region_keyword(keyword))) .fip_region( region_name.value() ) .isUserDefined( is_udq(keyword) ); diff --git a/src/opm/io/eclipse/SummaryNode.cpp b/src/opm/io/eclipse/SummaryNode.cpp index cf71ea0bc..f94fba545 100644 --- a/src/opm/io/eclipse/SummaryNode.cpp +++ b/src/opm/io/eclipse/SummaryNode.cpp @@ -243,6 +243,21 @@ Opm::EclIO::SummaryNode::normalise_keyword(const Opm::EclIO::SummaryNode::Catego : keyword; } +std::string +Opm::EclIO::SummaryNode::normalise_region_keyword(const std::string& keyword) +{ + static const auto region_kw = std::regex { + R"((R[A-Z]{2,4})(_{0,2}[A-Z]{3})?)" + }; + + auto keywordPieces = std::smatch {}; + if (std::regex_match(keyword, keywordPieces, region_kw)) { + return keywordPieces[1].str(); + } + + return keyword; +} + std::optional Opm::EclIO::SummaryNode::display_name() const { if (use_name(category)) { return wgname; diff --git a/src/opm/output/eclipse/Summary.cpp b/src/opm/output/eclipse/Summary.cpp index eb18771ab..d79a4e422 100644 --- a/src/opm/output/eclipse/Summary.cpp +++ b/src/opm/output/eclipse/Summary.cpp @@ -3677,8 +3677,9 @@ namespace Evaluator { bool Factory::isFunctionRelation() { - const auto normKw = Opm::EclIO::SummaryNode:: - normalise_keyword(this->node_->category, this->node_->keyword); + const auto normKw = (this->node_->category == Opm::EclIO::SummaryNode::Category::Region) + ? Opm::EclIO::SummaryNode::normalise_region_keyword(this->node_->keyword) + : Opm::EclIO::SummaryNode::normalise_keyword(this->node_->category, this->node_->keyword); auto pos = funs.find(normKw); if (pos != funs.end()) {