diff --git a/opm/input/eclipse/Schedule/Well/Well.hpp b/opm/input/eclipse/Schedule/Well/Well.hpp index bf8cb44b9..c4b7b95aa 100644 --- a/opm/input/eclipse/Schedule/Well/Well.hpp +++ b/opm/input/eclipse/Schedule/Well/Well.hpp @@ -86,8 +86,6 @@ public: that; and it is not part of the string conversion routines. */ using ProducerCMode = WellProducerCMode; - static const std::string ProducerCMode2String(ProducerCMode enumValue); - static ProducerCMode ProducerCModeFromString(const std::string& stringValue); using WELTARGCMode = WellWELTARGCMode; static WELTARGCMode WELTARGCModeFromString(const std::string& stringValue); @@ -661,7 +659,5 @@ private: std::ostream& operator<<( std::ostream&, const Well::WellInjectionProperties& ); std::ostream& operator<<( std::ostream&, const Well::WellProductionProperties& ); -std::ostream& operator<<(std::ostream& os, const Well::ProducerCMode& cm); - } #endif diff --git a/opm/input/eclipse/Schedule/Well/WellEnums.hpp b/opm/input/eclipse/Schedule/Well/WellEnums.hpp index 288b3b071..f12a710a7 100644 --- a/opm/input/eclipse/Schedule/Well/WellEnums.hpp +++ b/opm/input/eclipse/Schedule/Well/WellEnums.hpp @@ -110,6 +110,10 @@ std::string WellInjectorCMode2String(WellInjectorCMode enumValue); WellInjectorCMode WellInjectorCModeFromString(const std::string& stringValue); std::ostream& operator<<(std::ostream& os, const WellInjectorCMode& cm); +std::string WellProducerCMode2String(WellProducerCMode enumValue); +WellProducerCMode WellProducerCModeFromString(const std::string& stringValue); +std::ostream& operator<<(std::ostream& os, const WellProducerCMode& cm); + } #endif diff --git a/opm/output/data/Wells.hpp b/opm/output/data/Wells.hpp index dc3fdb97a..5492fb98c 100644 --- a/opm/output/data/Wells.hpp +++ b/opm/output/data/Wells.hpp @@ -523,7 +523,7 @@ namespace Opm { if (this->prod == ::Opm::Well::ProducerCMode::CMODE_UNDEFINED) json_data.add_item("prod", "CMODE_UNDEFINED"); else - json_data.add_item("prod", ::Opm::Well::ProducerCMode2String(this->prod)); + json_data.add_item("prod", ::Opm::WellProducerCMode2String(this->prod)); } template diff --git a/src/opm/input/eclipse/Schedule/KeywordHandlers.cpp b/src/opm/input/eclipse/Schedule/KeywordHandlers.cpp index 7a3907d50..42ca8e6d6 100644 --- a/src/opm/input/eclipse/Schedule/KeywordHandlers.cpp +++ b/src/opm/input/eclipse/Schedule/KeywordHandlers.cpp @@ -1624,7 +1624,7 @@ Well{0} entered with disallowed 'FIELD' parent group: void Schedule::handleWHISTCTL(HandlerContext& handlerContext) { const auto& record = handlerContext.keyword.getRecord(0); const std::string& cmodeString = record.getItem("CMODE").getTrimmedString(0); - const auto controlMode = Well::ProducerCModeFromString( cmodeString ); + const auto controlMode = WellProducerCModeFromString(cmodeString); if (controlMode != Well::ProducerCMode::NONE) { if (!Well::WellProductionProperties::effectiveHistoryProductionControl(controlMode) ) { diff --git a/src/opm/input/eclipse/Schedule/Well/Well.cpp b/src/opm/input/eclipse/Schedule/Well/Well.cpp index f55db9770..044d4455d 100644 --- a/src/opm/input/eclipse/Schedule/Well/Well.cpp +++ b/src/opm/input/eclipse/Schedule/Well/Well.cpp @@ -1594,66 +1594,6 @@ Well::WELTARGCMode Well::WELTARGCModeFromString(const std::string& string_value) throw std::invalid_argument("WELTARG control mode: " + string_value + " not recognized."); } - -std::ostream& operator<<(std::ostream& os, const Well::ProducerCMode& cm) { - if (cm == Well::ProducerCMode::CMODE_UNDEFINED) - os << "UNDEFINED"; - else - os << Well::ProducerCMode2String(cm); - return os; -} - -const std::string Well::ProducerCMode2String( ProducerCMode enumValue ) { - switch( enumValue ) { - case ProducerCMode::ORAT: - return "ORAT"; - case ProducerCMode::WRAT: - return "WRAT"; - case ProducerCMode::GRAT: - return "GRAT"; - case ProducerCMode::LRAT: - return "LRAT"; - case ProducerCMode::CRAT: - return "CRAT"; - case ProducerCMode::RESV: - return "RESV"; - case ProducerCMode::BHP: - return "BHP"; - case ProducerCMode::THP: - return "THP"; - case ProducerCMode::GRUP: - return "GRUP"; - default: - throw std::invalid_argument("Unhandled enum value: " + std::to_string(static_cast(enumValue)) + " in ProducerCMode2String"); - } -} - -Well::ProducerCMode Well::ProducerCModeFromString( const std::string& stringValue ) { - if (stringValue == "ORAT") - return ProducerCMode::ORAT; - else if (stringValue == "WRAT") - return ProducerCMode::WRAT; - else if (stringValue == "GRAT") - return ProducerCMode::GRAT; - else if (stringValue == "LRAT") - return ProducerCMode::LRAT; - else if (stringValue == "CRAT") - return ProducerCMode::CRAT; - else if (stringValue == "RESV") - return ProducerCMode::RESV; - else if (stringValue == "BHP") - return ProducerCMode::BHP; - else if (stringValue == "THP") - return ProducerCMode::THP; - else if (stringValue == "GRUP") - return ProducerCMode::GRUP; - else if (stringValue == "NONE") - return ProducerCMode::NONE; - else - throw std::invalid_argument("Unknown enum state string: " + stringValue ); -} - - const std::string Well::GuideRateTarget2String( GuideRateTarget enumValue ) { switch( enumValue ) { case GuideRateTarget::OIL: diff --git a/src/opm/input/eclipse/Schedule/Well/WellEnums.cpp b/src/opm/input/eclipse/Schedule/Well/WellEnums.cpp index 3cb25e079..9dbcde27d 100644 --- a/src/opm/input/eclipse/Schedule/Well/WellEnums.cpp +++ b/src/opm/input/eclipse/Schedule/Well/WellEnums.cpp @@ -76,8 +76,8 @@ std::string WellInjectorCMode2String(WellInjectorCMode enumValue) return "GRUP"; default: throw std::invalid_argument("Unhandled enum value: " + - std::to_string(static_cast(enumValue)) - + " in WellInjectorCMode2String"); + std::to_string(static_cast(enumValue)) + + " in WellInjectorCMode2String"); } } @@ -103,4 +103,67 @@ std::ostream& operator<<(std::ostream& os, const WellInjectorCMode& cm) return os; } +std::string WellProducerCMode2String(WellProducerCMode enumValue) +{ + switch (enumValue) { + case WellProducerCMode::ORAT: + return "ORAT"; + case WellProducerCMode::WRAT: + return "WRAT"; + case WellProducerCMode::GRAT: + return "GRAT"; + case WellProducerCMode::LRAT: + return "LRAT"; + case WellProducerCMode::CRAT: + return "CRAT"; + case WellProducerCMode::RESV: + return "RESV"; + case WellProducerCMode::BHP: + return "BHP"; + case WellProducerCMode::THP: + return "THP"; + case WellProducerCMode::GRUP: + return "GRUP"; + default: + throw std::invalid_argument("Unhandled enum value: " + + std::to_string(static_cast(enumValue)) + + " in ProducerCMode2String"); + } +} + +WellProducerCMode WellProducerCModeFromString(const std::string& stringValue) +{ + if (stringValue == "ORAT") + return WellProducerCMode::ORAT; + else if (stringValue == "WRAT") + return WellProducerCMode::WRAT; + else if (stringValue == "GRAT") + return WellProducerCMode::GRAT; + else if (stringValue == "LRAT") + return WellProducerCMode::LRAT; + else if (stringValue == "CRAT") + return WellProducerCMode::CRAT; + else if (stringValue == "RESV") + return WellProducerCMode::RESV; + else if (stringValue == "BHP") + return WellProducerCMode::BHP; + else if (stringValue == "THP") + return WellProducerCMode::THP; + else if (stringValue == "GRUP") + return WellProducerCMode::GRUP; + else if (stringValue == "NONE") + return WellProducerCMode::NONE; + else + throw std::invalid_argument("Unknown enum state string: " + stringValue); +} + +std::ostream& operator<<(std::ostream& os, const WellProducerCMode& cm) +{ + if (cm == WellProducerCMode::CMODE_UNDEFINED) + os << "UNDEFINED"; + else + os << WellProducerCMode2String(cm); + return os; +} + } diff --git a/src/opm/input/eclipse/Schedule/Well/WellProductionProperties.cpp b/src/opm/input/eclipse/Schedule/Well/WellProductionProperties.cpp index 5a947ea32..35c780f70 100644 --- a/src/opm/input/eclipse/Schedule/Well/WellProductionProperties.cpp +++ b/src/opm/input/eclipse/Schedule/Well/WellProductionProperties.cpp @@ -133,7 +133,7 @@ namespace Opm { if (effectiveHistoryProductionControl(this->whistctl_cmode) ) cmode = this->whistctl_cmode; else - cmode = ProducerCModeFromString( cmodeItem.getTrimmedString( 0 ) ); + cmode = WellProducerCModeFromString(cmodeItem.getTrimmedString(0)); // clearing the existing targets/limits clearControls(); @@ -159,7 +159,7 @@ namespace Opm { -void Well::WellProductionProperties::handleWCONPROD(const std::optional& alq_type, const UnitSystem& unit_system_arg, const std::string& /* well */, const DeckRecord& record) + void Well::WellProductionProperties::handleWCONPROD(const std::optional& alq_type, const UnitSystem& unit_system_arg, const std::string& /* well */, const DeckRecord& record) { this->predictionMode = true; this->init_vfp(alq_type, unit_system_arg, record); @@ -193,7 +193,7 @@ void Well::WellProductionProperties::handleWCONPROD(const std::optionalhasProductionControl( cmode )) this->controlMode = cmode; @@ -345,7 +345,7 @@ void Well::WellProductionProperties::handleWCONHIST(const std::optional