From a5cfafe4de10bbcef4409be0f953780f2405b282 Mon Sep 17 00:00:00 2001 From: OPMUSER Date: Mon, 11 Jul 2022 14:05:34 +0800 Subject: [PATCH 1/3] Support MINPORV Add support for MINPORV, which is an alias for MINPV. Also added additional checks, such that only one of MINPV, MINPORV and MINPVFIL can be active in the deck --- .../input/eclipse/EclipseState/Grid/EclipseGrid.cpp | 11 ++++++++++- .../eclipse/share/keywords/000_Eclipse100/M/MINPORV | 4 ++-- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/src/opm/input/eclipse/EclipseState/Grid/EclipseGrid.cpp b/src/opm/input/eclipse/EclipseState/Grid/EclipseGrid.cpp index 5ac6fe76b..1b7b67f88 100644 --- a/src/opm/input/eclipse/EclipseState/Grid/EclipseGrid.cpp +++ b/src/opm/input/eclipse/EclipseState/Grid/EclipseGrid.cpp @@ -345,7 +345,11 @@ EclipseGrid::EclipseGrid(const Deck& deck, const int * actnum) } if (deck.hasKeyword() && deck.hasKeyword()) { - throw std::invalid_argument("Can not have both MINPV and MINPVFIL in deck."); + throw std::invalid_argument("Can not have both MINPV and MINPVFIL in the deck."); + } else if(deck.hasKeyword() && deck.hasKeyword()) { + throw std::invalid_argument("Can not have both MINPV and MINPORV in the deck."); + } else if(deck.hasKeyword() && deck.hasKeyword()) { + throw std::invalid_argument("Can not have both MINPORV and MINPVFIL in the deck."); } m_minpvVector.resize(getCartesianSize(), 0.0); @@ -354,6 +358,11 @@ EclipseGrid::EclipseGrid(const Deck& deck, const int * actnum) const auto& item = record.getItem( ); std::fill(m_minpvVector.begin(), m_minpvVector.end(), item.getSIDouble(0)); m_minpvMode = MinpvMode::ModeEnum::EclSTD; + } else if (deck.hasKeyword()) { + const auto& record = deck.get( ).back().getRecord(0); + const auto& item = record.getItem( ); + std::fill(m_minpvVector.begin(), m_minpvVector.end(), item.getSIDouble(0)); + m_minpvMode = MinpvMode::ModeEnum::EclSTD; } else if(deck.hasKeyword()) { // We should use the grid properties to support BOX, but then we need the eclipseState const auto& record = deck.get( ).back().getRecord(0); diff --git a/src/opm/input/eclipse/share/keywords/000_Eclipse100/M/MINPORV b/src/opm/input/eclipse/share/keywords/000_Eclipse100/M/MINPORV index 4f8f6ea12..ab679d585 100644 --- a/src/opm/input/eclipse/share/keywords/000_Eclipse100/M/MINPORV +++ b/src/opm/input/eclipse/share/keywords/000_Eclipse100/M/MINPORV @@ -6,8 +6,8 @@ "size": 1, "items": [ { - "name": "MIN_PORE_VOL", - "value_type": "DOUBLE", + "name": "VALUE", + "value_type": "DOUBLE", "dimension": "ReservoirVolume", "default": 1e-06 } From 4fe559ba3ca0c8d8b0fb5ead13499fa8b5002828 Mon Sep 17 00:00:00 2001 From: OPMUSER Date: Mon, 11 Jul 2022 15:02:10 +0800 Subject: [PATCH 2/3] Remove C++ Code and Place Conditions in JSON Files Remove the C++ code checks and instead place the logic in the keyword JSON files. This is a cleaner approach. Note we force that only one of the keywords is allowed in the deck to avoid confusion on what cut-off is actually being applied. --- src/opm/input/eclipse/EclipseState/Grid/EclipseGrid.cpp | 8 -------- .../input/eclipse/share/keywords/000_Eclipse100/M/MINPORV | 1 + .../input/eclipse/share/keywords/000_Eclipse100/M/MINPV | 1 + src/opm/input/eclipse/share/keywords/900_OPM/M/MINPVFIL | 1 + 4 files changed, 3 insertions(+), 8 deletions(-) diff --git a/src/opm/input/eclipse/EclipseState/Grid/EclipseGrid.cpp b/src/opm/input/eclipse/EclipseState/Grid/EclipseGrid.cpp index 1b7b67f88..6d976b03d 100644 --- a/src/opm/input/eclipse/EclipseState/Grid/EclipseGrid.cpp +++ b/src/opm/input/eclipse/EclipseState/Grid/EclipseGrid.cpp @@ -344,14 +344,6 @@ EclipseGrid::EclipseGrid(const Deck& deck, const int * actnum) m_pinchGapMode = PinchMode::PinchModeFromString(pinchGapString); } - if (deck.hasKeyword() && deck.hasKeyword()) { - throw std::invalid_argument("Can not have both MINPV and MINPVFIL in the deck."); - } else if(deck.hasKeyword() && deck.hasKeyword()) { - throw std::invalid_argument("Can not have both MINPV and MINPORV in the deck."); - } else if(deck.hasKeyword() && deck.hasKeyword()) { - throw std::invalid_argument("Can not have both MINPORV and MINPVFIL in the deck."); - } - m_minpvVector.resize(getCartesianSize(), 0.0); if (deck.hasKeyword()) { const auto& record = deck.get( ).back().getRecord(0); diff --git a/src/opm/input/eclipse/share/keywords/000_Eclipse100/M/MINPORV b/src/opm/input/eclipse/share/keywords/000_Eclipse100/M/MINPORV index ab679d585..f8cd0bd2f 100644 --- a/src/opm/input/eclipse/share/keywords/000_Eclipse100/M/MINPORV +++ b/src/opm/input/eclipse/share/keywords/000_Eclipse100/M/MINPORV @@ -3,6 +3,7 @@ "sections": [ "GRID" ], + "prohibits" : ["MINPV", "MINPVFIL"], "size": 1, "items": [ { diff --git a/src/opm/input/eclipse/share/keywords/000_Eclipse100/M/MINPV b/src/opm/input/eclipse/share/keywords/000_Eclipse100/M/MINPV index 8787949fb..228fe7576 100644 --- a/src/opm/input/eclipse/share/keywords/000_Eclipse100/M/MINPV +++ b/src/opm/input/eclipse/share/keywords/000_Eclipse100/M/MINPV @@ -3,6 +3,7 @@ "sections": [ "GRID" ], + "prohibits" : ["MINPORV", "MINPVFIL"], "size": 1, "items": [ { diff --git a/src/opm/input/eclipse/share/keywords/900_OPM/M/MINPVFIL b/src/opm/input/eclipse/share/keywords/900_OPM/M/MINPVFIL index 7ff5854f9..e5b39a225 100644 --- a/src/opm/input/eclipse/share/keywords/900_OPM/M/MINPVFIL +++ b/src/opm/input/eclipse/share/keywords/900_OPM/M/MINPVFIL @@ -3,6 +3,7 @@ "sections": [ "GRID" ], + "prohibits" : ["MINPV", "MINPORV"], "size": 1, "items": [ { From a8a1d140d5ac9f5f1d9de8b4cb15f60b52e600a9 Mon Sep 17 00:00:00 2001 From: OPMUSER Date: Tue, 12 Jul 2022 11:07:10 +0800 Subject: [PATCH 3/3] Update EclipseGrid and JSON Definitions Update EclipseGrid with checks for MINPVFIL. For JSON definitions: remove MINPVFIL check in MINPV and MINPORV, and all checks from MINPVFIL. --- src/opm/input/eclipse/EclipseState/Grid/EclipseGrid.cpp | 6 ++++++ .../input/eclipse/share/keywords/000_Eclipse100/M/MINPORV | 2 +- src/opm/input/eclipse/share/keywords/000_Eclipse100/M/MINPV | 2 +- src/opm/input/eclipse/share/keywords/900_OPM/M/MINPVFIL | 1 - 4 files changed, 8 insertions(+), 3 deletions(-) diff --git a/src/opm/input/eclipse/EclipseState/Grid/EclipseGrid.cpp b/src/opm/input/eclipse/EclipseState/Grid/EclipseGrid.cpp index 6d976b03d..7c1f07398 100644 --- a/src/opm/input/eclipse/EclipseState/Grid/EclipseGrid.cpp +++ b/src/opm/input/eclipse/EclipseState/Grid/EclipseGrid.cpp @@ -344,6 +344,12 @@ EclipseGrid::EclipseGrid(const Deck& deck, const int * actnum) m_pinchGapMode = PinchMode::PinchModeFromString(pinchGapString); } + if (deck.hasKeyword() && deck.hasKeyword()) { + throw std::invalid_argument("Can not have both MINPV and MINPVFIL in the deck."); + } else if(deck.hasKeyword() && deck.hasKeyword()) { + throw std::invalid_argument("Can not have both MINPORV and MINPVFIL in the deck."); + } + m_minpvVector.resize(getCartesianSize(), 0.0); if (deck.hasKeyword()) { const auto& record = deck.get( ).back().getRecord(0); diff --git a/src/opm/input/eclipse/share/keywords/000_Eclipse100/M/MINPORV b/src/opm/input/eclipse/share/keywords/000_Eclipse100/M/MINPORV index f8cd0bd2f..e6b133319 100644 --- a/src/opm/input/eclipse/share/keywords/000_Eclipse100/M/MINPORV +++ b/src/opm/input/eclipse/share/keywords/000_Eclipse100/M/MINPORV @@ -3,7 +3,7 @@ "sections": [ "GRID" ], - "prohibits" : ["MINPV", "MINPVFIL"], + "prohibits" : ["MINPV"], "size": 1, "items": [ { diff --git a/src/opm/input/eclipse/share/keywords/000_Eclipse100/M/MINPV b/src/opm/input/eclipse/share/keywords/000_Eclipse100/M/MINPV index 228fe7576..d5e0c4b54 100644 --- a/src/opm/input/eclipse/share/keywords/000_Eclipse100/M/MINPV +++ b/src/opm/input/eclipse/share/keywords/000_Eclipse100/M/MINPV @@ -3,7 +3,7 @@ "sections": [ "GRID" ], - "prohibits" : ["MINPORV", "MINPVFIL"], + "prohibits" : ["MINPORV"], "size": 1, "items": [ { diff --git a/src/opm/input/eclipse/share/keywords/900_OPM/M/MINPVFIL b/src/opm/input/eclipse/share/keywords/900_OPM/M/MINPVFIL index e5b39a225..7ff5854f9 100644 --- a/src/opm/input/eclipse/share/keywords/900_OPM/M/MINPVFIL +++ b/src/opm/input/eclipse/share/keywords/900_OPM/M/MINPVFIL @@ -3,7 +3,6 @@ "sections": [ "GRID" ], - "prohibits" : ["MINPV", "MINPORV"], "size": 1, "items": [ {