From a540ac54b851298f6b3d768c5429fe71487c0c40 Mon Sep 17 00:00:00 2001 From: Arne Morten Kvarving Date: Tue, 17 Jan 2023 21:12:09 +0100 Subject: [PATCH] move printing of WellInjectorCMode to WellEnums.cpp --- opm/input/eclipse/Schedule/Well/Well.hpp | 3 -- opm/input/eclipse/Schedule/Well/WellEnums.hpp | 4 ++ opm/output/data/Wells.hpp | 2 +- src/opm/input/eclipse/Schedule/Well/Well.cpp | 40 +---------------- .../input/eclipse/Schedule/Well/WellEnums.cpp | 44 ++++++++++++++++++- .../Schedule/Well/WellInjectionProperties.cpp | 6 +-- tests/parser/ScheduleTests.cpp | 42 +++++++++--------- 7 files changed, 73 insertions(+), 68 deletions(-) diff --git a/opm/input/eclipse/Schedule/Well/Well.hpp b/opm/input/eclipse/Schedule/Well/Well.hpp index 1a197d2bb..bf8cb44b9 100644 --- a/opm/input/eclipse/Schedule/Well/Well.hpp +++ b/opm/input/eclipse/Schedule/Well/Well.hpp @@ -79,8 +79,6 @@ public: be intact. */ using InjectorCMode = WellInjectorCMode; - static const std::string InjectorCMode2String(InjectorCMode enumValue); - static InjectorCMode InjectorCModeFromString(const std::string& stringValue); /* The properties are initialized with the CMODE_UNDEFINED @@ -664,7 +662,6 @@ 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); -std::ostream& operator<<(std::ostream& os, const Well::InjectorCMode& cm); } #endif diff --git a/opm/input/eclipse/Schedule/Well/WellEnums.hpp b/opm/input/eclipse/Schedule/Well/WellEnums.hpp index 4fbde543b..288b3b071 100644 --- a/opm/input/eclipse/Schedule/Well/WellEnums.hpp +++ b/opm/input/eclipse/Schedule/Well/WellEnums.hpp @@ -106,6 +106,10 @@ std::string WellStatus2String(WellStatus enumValue); WellStatus WellStatusFromString(const std::string& stringValue); std::ostream& operator<<(std::ostream& os, const WellStatus& st); +std::string WellInjectorCMode2String(WellInjectorCMode enumValue); +WellInjectorCMode WellInjectorCModeFromString(const std::string& stringValue); +std::ostream& operator<<(std::ostream& os, const WellInjectorCMode& cm); + } #endif diff --git a/opm/output/data/Wells.hpp b/opm/output/data/Wells.hpp index 92d69ebe2..dc3fdb97a 100644 --- a/opm/output/data/Wells.hpp +++ b/opm/output/data/Wells.hpp @@ -518,7 +518,7 @@ namespace Opm { if (this->inj == ::Opm::Well::InjectorCMode::CMODE_UNDEFINED) json_data.add_item("inj", "CMODE_UNDEFINED"); else - json_data.add_item("inj", ::Opm::Well::InjectorCMode2String(this->inj)); + json_data.add_item("inj", ::Opm::WellInjectorCMode2String(this->inj)); if (this->prod == ::Opm::Well::ProducerCMode::CMODE_UNDEFINED) json_data.add_item("prod", "CMODE_UNDEFINED"); diff --git a/src/opm/input/eclipse/Schedule/Well/Well.cpp b/src/opm/input/eclipse/Schedule/Well/Well.cpp index 654ffd33c..f55db9770 100644 --- a/src/opm/input/eclipse/Schedule/Well/Well.cpp +++ b/src/opm/input/eclipse/Schedule/Well/Well.cpp @@ -404,7 +404,7 @@ Well::Well(const RestartIO::RstWell& rst_well, throw std::invalid_argument { fmt::format("Unsupported control mode '{}' for " "history controlled injection well '{}'", - Well::InjectorCMode2String(active_control), this->name()) + WellInjectorCMode2String(active_control), this->name()) }; } } @@ -1557,44 +1557,6 @@ void Well::setWellTemperature(const double temp) { this->well_temperature = temp; } -const std::string Well::InjectorCMode2String( InjectorCMode enumValue ) { - switch( enumValue ) { - case InjectorCMode::RESV: - return "RESV"; - case InjectorCMode::RATE: - return "RATE"; - case InjectorCMode::BHP: - return "BHP"; - case InjectorCMode::THP: - return "THP"; - case InjectorCMode::GRUP: - return "GRUP"; - default: - throw std::invalid_argument("Unhandled enum value: " + std::to_string(static_cast(enumValue)) + " in InjectorCMode2String"); - } -} - - -Well::InjectorCMode Well::InjectorCModeFromString(const std::string &stringValue) { - if (stringValue == "RATE") - return InjectorCMode::RATE; - else if (stringValue == "RESV") - return InjectorCMode::RESV; - else if (stringValue == "BHP") - return InjectorCMode::BHP; - else if (stringValue == "THP") - return InjectorCMode::THP; - else if (stringValue == "GRUP") - return InjectorCMode::GRUP; - else - throw std::invalid_argument("Unknown control mode string: " + stringValue); -} - -std::ostream& operator<<(std::ostream& os, const Well::InjectorCMode& cm) { - os << Well::InjectorCMode2String(cm); - return os; -} - Well::WELTARGCMode Well::WELTARGCModeFromString(const std::string& string_value) { if (string_value == "ORAT") return WELTARGCMode::ORAT; diff --git a/src/opm/input/eclipse/Schedule/Well/WellEnums.cpp b/src/opm/input/eclipse/Schedule/Well/WellEnums.cpp index a5b1850e7..3cb25e079 100644 --- a/src/opm/input/eclipse/Schedule/Well/WellEnums.cpp +++ b/src/opm/input/eclipse/Schedule/Well/WellEnums.cpp @@ -27,7 +27,7 @@ namespace Opm { std::string WellStatus2String(WellStatus enumValue) { - switch(enumValue) { + switch (enumValue) { case WellStatus::OPEN: return "OPEN"; case WellStatus::SHUT: @@ -61,4 +61,46 @@ std::ostream& operator<<(std::ostream& os, const WellStatus& st) return os; } +std::string WellInjectorCMode2String(WellInjectorCMode enumValue) +{ + switch (enumValue) { + case WellInjectorCMode::RESV: + return "RESV"; + case WellInjectorCMode::RATE: + return "RATE"; + case WellInjectorCMode::BHP: + return "BHP"; + case WellInjectorCMode::THP: + return "THP"; + case WellInjectorCMode::GRUP: + return "GRUP"; + default: + throw std::invalid_argument("Unhandled enum value: " + + std::to_string(static_cast(enumValue)) + + " in WellInjectorCMode2String"); + } +} + +WellInjectorCMode WellInjectorCModeFromString(const std::string &stringValue) +{ + if (stringValue == "RATE") + return WellInjectorCMode::RATE; + else if (stringValue == "RESV") + return WellInjectorCMode::RESV; + else if (stringValue == "BHP") + return WellInjectorCMode::BHP; + else if (stringValue == "THP") + return WellInjectorCMode::THP; + else if (stringValue == "GRUP") + return WellInjectorCMode::GRUP; + else + throw std::invalid_argument("Unknown control mode string: " + stringValue); +} + +std::ostream& operator<<(std::ostream& os, const WellInjectorCMode& cm) +{ + os << WellInjectorCMode2String(cm); + return os; +} + } diff --git a/src/opm/input/eclipse/Schedule/Well/WellInjectionProperties.cpp b/src/opm/input/eclipse/Schedule/Well/WellInjectionProperties.cpp index f172cc645..e24fb4bda 100644 --- a/src/opm/input/eclipse/Schedule/Well/WellInjectionProperties.cpp +++ b/src/opm/input/eclipse/Schedule/Well/WellInjectionProperties.cpp @@ -124,7 +124,7 @@ namespace Opm { this->dropInjectionControl(InjectorCMode::GRUP); { const std::string& cmodeString = record.getItem("CMODE").getTrimmedString(0); - InjectorCMode controlModeArg = InjectorCModeFromString( cmodeString ); + InjectorCMode controlModeArg = WellInjectorCModeFromString(cmodeString); if (this->hasInjectionControl( controlModeArg)) this->controlMode = controlModeArg; else { @@ -196,7 +196,7 @@ namespace Opm { this->THPH = record.getItem("THP").getSIDouble(0); const std::string& cmodeString = record.getItem("CMODE").getTrimmedString(0); - const InjectorCMode newControlMode = InjectorCModeFromString( cmodeString ); + const InjectorCMode newControlMode = WellInjectorCModeFromString(cmodeString); if ( !(newControlMode == InjectorCMode::RATE || newControlMode == InjectorCMode::BHP) ) { const std::string msg = "Only RATE and BHP control are allowed for WCONINJH for well " + well_name; @@ -287,7 +287,7 @@ namespace Opm { << "prediction mode: " << wp.predictionMode << ", " << "injection ctrl: " << wp.injectionControls << ", " << "injector type: " << InjectorType2String(wp.injectorType) << ", " - << "control mode: " << Well::InjectorCMode2String(wp.controlMode) << " , " + << "control mode: " << WellInjectorCMode2String(wp.controlMode) << " , " << "rs/rv concentration: " << wp.rsRvInj << " }"; } diff --git a/tests/parser/ScheduleTests.cpp b/tests/parser/ScheduleTests.cpp index 137a44e99..6d0994444 100644 --- a/tests/parser/ScheduleTests.cpp +++ b/tests/parser/ScheduleTests.cpp @@ -2930,37 +2930,37 @@ BOOST_AUTO_TEST_CASE(TestInjectorEnumLoop) { /*****************************************************************/ BOOST_AUTO_TEST_CASE(InjectorCOntrolMopdeEnum2String) { - BOOST_CHECK_EQUAL( "RATE" , Well::InjectorCMode2String(Well::InjectorCMode::RATE)); - BOOST_CHECK_EQUAL( "RESV" , Well::InjectorCMode2String(Well::InjectorCMode::RESV)); - BOOST_CHECK_EQUAL( "BHP" , Well::InjectorCMode2String(Well::InjectorCMode::BHP)); - BOOST_CHECK_EQUAL( "THP" , Well::InjectorCMode2String(Well::InjectorCMode::THP)); - BOOST_CHECK_EQUAL( "GRUP" , Well::InjectorCMode2String(Well::InjectorCMode::GRUP)); + BOOST_CHECK_EQUAL( "RATE" , Opm::WellInjectorCMode2String(Well::InjectorCMode::RATE)); + BOOST_CHECK_EQUAL( "RESV" , Opm::WellInjectorCMode2String(Well::InjectorCMode::RESV)); + BOOST_CHECK_EQUAL( "BHP" , Opm::WellInjectorCMode2String(Well::InjectorCMode::BHP)); + BOOST_CHECK_EQUAL( "THP" , Opm::WellInjectorCMode2String(Well::InjectorCMode::THP)); + BOOST_CHECK_EQUAL( "GRUP" , Opm::WellInjectorCMode2String(Well::InjectorCMode::GRUP)); } BOOST_AUTO_TEST_CASE(InjectorControlModeEnumFromString) { - BOOST_CHECK_THROW( Well::InjectorCModeFromString("XXX") , std::invalid_argument ); - BOOST_CHECK( Well::InjectorCMode::RATE == Well::InjectorCModeFromString("RATE")); - BOOST_CHECK( Well::InjectorCMode::BHP == Well::InjectorCModeFromString("BHP")); - BOOST_CHECK( Well::InjectorCMode::RESV == Well::InjectorCModeFromString("RESV")); - BOOST_CHECK( Well::InjectorCMode::THP == Well::InjectorCModeFromString("THP")); - BOOST_CHECK( Well::InjectorCMode::GRUP == Well::InjectorCModeFromString("GRUP")); + BOOST_CHECK_THROW( Opm::WellInjectorCModeFromString("XXX") , std::invalid_argument ); + BOOST_CHECK( Well::InjectorCMode::RATE == Opm::WellInjectorCModeFromString("RATE")); + BOOST_CHECK( Well::InjectorCMode::BHP == Opm::WellInjectorCModeFromString("BHP")); + BOOST_CHECK( Well::InjectorCMode::RESV == Opm::WellInjectorCModeFromString("RESV")); + BOOST_CHECK( Well::InjectorCMode::THP == Opm::WellInjectorCModeFromString("THP")); + BOOST_CHECK( Well::InjectorCMode::GRUP == Opm::WellInjectorCModeFromString("GRUP")); } BOOST_AUTO_TEST_CASE(InjectorControlModeEnumLoop) { - BOOST_CHECK( Well::InjectorCMode::RATE == Well::InjectorCModeFromString( Well::InjectorCMode2String( Well::InjectorCMode::RATE ) )); - BOOST_CHECK( Well::InjectorCMode::BHP == Well::InjectorCModeFromString( Well::InjectorCMode2String( Well::InjectorCMode::BHP ) )); - BOOST_CHECK( Well::InjectorCMode::RESV == Well::InjectorCModeFromString( Well::InjectorCMode2String( Well::InjectorCMode::RESV ) )); - BOOST_CHECK( Well::InjectorCMode::THP == Well::InjectorCModeFromString( Well::InjectorCMode2String( Well::InjectorCMode::THP ) )); - BOOST_CHECK( Well::InjectorCMode::GRUP == Well::InjectorCModeFromString( Well::InjectorCMode2String( Well::InjectorCMode::GRUP ) )); + BOOST_CHECK( Well::InjectorCMode::RATE == Opm::WellInjectorCModeFromString( Opm::WellInjectorCMode2String( Well::InjectorCMode::RATE ) )); + BOOST_CHECK( Well::InjectorCMode::BHP == Opm::WellInjectorCModeFromString( Opm::WellInjectorCMode2String( Well::InjectorCMode::BHP ) )); + BOOST_CHECK( Well::InjectorCMode::RESV == Opm::WellInjectorCModeFromString( Opm::WellInjectorCMode2String( Well::InjectorCMode::RESV ) )); + BOOST_CHECK( Well::InjectorCMode::THP == Opm::WellInjectorCModeFromString( Opm::WellInjectorCMode2String( Well::InjectorCMode::THP ) )); + BOOST_CHECK( Well::InjectorCMode::GRUP == Opm::WellInjectorCModeFromString( Opm::WellInjectorCMode2String( Well::InjectorCMode::GRUP ) )); - BOOST_CHECK_EQUAL( "THP" , Well::InjectorCMode2String(Well::InjectorCModeFromString( "THP" ) )); - BOOST_CHECK_EQUAL( "RATE" , Well::InjectorCMode2String(Well::InjectorCModeFromString( "RATE" ) )); - BOOST_CHECK_EQUAL( "RESV" , Well::InjectorCMode2String(Well::InjectorCModeFromString( "RESV" ) )); - BOOST_CHECK_EQUAL( "BHP" , Well::InjectorCMode2String(Well::InjectorCModeFromString( "BHP" ) )); - BOOST_CHECK_EQUAL( "GRUP" , Well::InjectorCMode2String(Well::InjectorCModeFromString( "GRUP" ) )); + BOOST_CHECK_EQUAL( "THP" , Opm::WellInjectorCMode2String(Opm::WellInjectorCModeFromString( "THP" ) )); + BOOST_CHECK_EQUAL( "RATE" , Opm::WellInjectorCMode2String(Opm::WellInjectorCModeFromString( "RATE" ) )); + BOOST_CHECK_EQUAL( "RESV" , Opm::WellInjectorCMode2String(Opm::WellInjectorCModeFromString( "RESV" ) )); + BOOST_CHECK_EQUAL( "BHP" , Opm::WellInjectorCMode2String(Opm::WellInjectorCModeFromString( "BHP" ) )); + BOOST_CHECK_EQUAL( "GRUP" , Opm::WellInjectorCMode2String(Opm::WellInjectorCModeFromString( "GRUP" ) )); }