From 6d97ca97a16bc84704d5efdf47bab904aba048e9 Mon Sep 17 00:00:00 2001 From: Arne Morten Kvarving Date: Wed, 18 Jan 2023 09:58:45 +0100 Subject: [PATCH 01/10] add missing Well.hpp includes --- ebos/eclactionhandler.cc | 1 + ebos/eclgenericoutputblackoilmodule.cc | 1 + ebos/eclgenericvanguard.cc | 1 + opm/simulators/utils/ParallelSerialization.cpp | 5 +++-- opm/simulators/wells/BlackoilWellModelRestart.cpp | 1 + opm/simulators/wells/GasLiftGroupInfo.cpp | 1 + opm/simulators/wells/GlobalWellInfo.cpp | 8 ++++---- opm/simulators/wells/WellConnectionAuxiliaryModule.cpp | 1 + opm/simulators/wells/WellGroupHelpers.cpp | 1 + opm/simulators/wells/WellState.cpp | 1 + tests/test_stoppedwells.cpp | 1 + tests/test_wellstate.cpp | 1 + 12 files changed, 17 insertions(+), 6 deletions(-) diff --git a/ebos/eclactionhandler.cc b/ebos/eclactionhandler.cc index 12431b559..24c140ff2 100644 --- a/ebos/eclactionhandler.cc +++ b/ebos/eclactionhandler.cc @@ -36,6 +36,7 @@ #include #include #include +#include #include #include diff --git a/ebos/eclgenericoutputblackoilmodule.cc b/ebos/eclgenericoutputblackoilmodule.cc index 18a818fb2..4a659e0eb 100644 --- a/ebos/eclgenericoutputblackoilmodule.cc +++ b/ebos/eclgenericoutputblackoilmodule.cc @@ -34,6 +34,7 @@ #include #include #include +#include #include #include diff --git a/ebos/eclgenericvanguard.cc b/ebos/eclgenericvanguard.cc index 677d97c50..88e441b9e 100644 --- a/ebos/eclgenericvanguard.cc +++ b/ebos/eclgenericvanguard.cc @@ -32,6 +32,7 @@ #include #include #include +#include #include #include #include diff --git a/opm/simulators/utils/ParallelSerialization.cpp b/opm/simulators/utils/ParallelSerialization.cpp index 93257281d..ff47eedc2 100644 --- a/opm/simulators/utils/ParallelSerialization.cpp +++ b/opm/simulators/utils/ParallelSerialization.cpp @@ -46,8 +46,7 @@ #include #include #include -#include -#include +#include #include #include #include @@ -56,6 +55,8 @@ #include #include #include +#include +#include #include #include diff --git a/opm/simulators/wells/BlackoilWellModelRestart.cpp b/opm/simulators/wells/BlackoilWellModelRestart.cpp index e6a3cc45a..05a6d89b6 100644 --- a/opm/simulators/wells/BlackoilWellModelRestart.cpp +++ b/opm/simulators/wells/BlackoilWellModelRestart.cpp @@ -25,6 +25,7 @@ #include #include +#include #include diff --git a/opm/simulators/wells/GasLiftGroupInfo.cpp b/opm/simulators/wells/GasLiftGroupInfo.cpp index 82e2fd31d..be507e43f 100644 --- a/opm/simulators/wells/GasLiftGroupInfo.cpp +++ b/opm/simulators/wells/GasLiftGroupInfo.cpp @@ -21,6 +21,7 @@ #include #include +#include namespace Opm { diff --git a/opm/simulators/wells/GlobalWellInfo.cpp b/opm/simulators/wells/GlobalWellInfo.cpp index 456c556e0..539426fd5 100644 --- a/opm/simulators/wells/GlobalWellInfo.cpp +++ b/opm/simulators/wells/GlobalWellInfo.cpp @@ -20,13 +20,13 @@ #if HAVE_CONFIG_H #include "config.h" #endif // HAVE_CONFIG_H +#include + +#include +#include #include -#include -#include - - namespace Opm { diff --git a/opm/simulators/wells/WellConnectionAuxiliaryModule.cpp b/opm/simulators/wells/WellConnectionAuxiliaryModule.cpp index f5dd0af1d..dd65295ea 100644 --- a/opm/simulators/wells/WellConnectionAuxiliaryModule.cpp +++ b/opm/simulators/wells/WellConnectionAuxiliaryModule.cpp @@ -24,6 +24,7 @@ #include #include +#include #include #include diff --git a/opm/simulators/wells/WellGroupHelpers.cpp b/opm/simulators/wells/WellGroupHelpers.cpp index c14144922..718673db5 100644 --- a/opm/simulators/wells/WellGroupHelpers.cpp +++ b/opm/simulators/wells/WellGroupHelpers.cpp @@ -27,6 +27,7 @@ #include #include #include +#include #include diff --git a/opm/simulators/wells/WellState.cpp b/opm/simulators/wells/WellState.cpp index 7180e482e..76fc92f8c 100644 --- a/opm/simulators/wells/WellState.cpp +++ b/opm/simulators/wells/WellState.cpp @@ -25,6 +25,7 @@ #include #include #include +#include #include #include diff --git a/tests/test_stoppedwells.cpp b/tests/test_stoppedwells.cpp index 9603dd85b..3859397a0 100644 --- a/tests/test_stoppedwells.cpp +++ b/tests/test_stoppedwells.cpp @@ -29,6 +29,7 @@ #include #include #include +#include using namespace Opm; diff --git a/tests/test_wellstate.cpp b/tests/test_wellstate.cpp index 3c6718a15..fbc88dc00 100644 --- a/tests/test_wellstate.cpp +++ b/tests/test_wellstate.cpp @@ -44,6 +44,7 @@ #include #include #include +#include #include #include #include From 7b2b18045ebc55ee6342f543fd4606e014c151af Mon Sep 17 00:00:00 2001 From: Arne Morten Kvarving Date: Wed, 18 Jan 2023 09:58:57 +0100 Subject: [PATCH 02/10] adjust to upstream enum changes --- opm/simulators/wells/GasLiftSingleWellGeneric.cpp | 2 +- opm/simulators/wells/WellConstraints.cpp | 4 ++-- opm/simulators/wells/WellInterfaceGeneric.cpp | 4 ++-- opm/simulators/wells/WellInterface_impl.hpp | 12 ++++++------ 4 files changed, 11 insertions(+), 11 deletions(-) diff --git a/opm/simulators/wells/GasLiftSingleWellGeneric.cpp b/opm/simulators/wells/GasLiftSingleWellGeneric.cpp index a7b37ea98..93d147e38 100644 --- a/opm/simulators/wells/GasLiftSingleWellGeneric.cpp +++ b/opm/simulators/wells/GasLiftSingleWellGeneric.cpp @@ -455,7 +455,7 @@ GasLiftSingleWellGeneric::debugShowProducerControlMode() const { const int well_index = this->well_state_.index(this->well_name_).value(); const Well::ProducerCMode& control_mode = this->well_state_.well(well_index).production_cmode; - const std::string msg = fmt::format("Current control mode is: {}", Well::ProducerCMode2String(control_mode)); + const std::string msg = fmt::format("Current control mode is: {}", WellProducerCMode2String(control_mode)); displayDebugMessage_(msg); } diff --git a/opm/simulators/wells/WellConstraints.cpp b/opm/simulators/wells/WellConstraints.cpp index 313b4692e..335f3e872 100644 --- a/opm/simulators/wells/WellConstraints.cpp +++ b/opm/simulators/wells/WellConstraints.cpp @@ -150,7 +150,7 @@ activeInjectionConstraint(const SingleWellState& ws, "The THP limit is violated for injector " + well_.name() + ". But the rate will increase if switched to THP. " + - "The well is therefore kept at " + Well::InjectorCMode2String(currentControl)); + "The well is therefore kept at " + WellInjectorCMode2String(currentControl)); } } } @@ -274,7 +274,7 @@ activeProductionConstraint(const SingleWellState& ws, "The THP limit is violated for producer " + well_.name() + ". But the rate will increase if switched to THP. " + - "The well is therefore kept at " + Well::ProducerCMode2String(currentControl)); + "The well is therefore kept at " + WellProducerCMode2String(currentControl)); } } } diff --git a/opm/simulators/wells/WellInterfaceGeneric.cpp b/opm/simulators/wells/WellInterfaceGeneric.cpp index 3b3eb1a52..ecac25286 100644 --- a/opm/simulators/wells/WellInterfaceGeneric.cpp +++ b/opm/simulators/wells/WellInterfaceGeneric.cpp @@ -419,9 +419,9 @@ void WellInterfaceGeneric::reportWellSwitching(const SingleWellState& ws, Deferr std::string from = well_control_log_[0]; std::string to; if (isInjector()) { - to = Well::InjectorCMode2String(ws.injection_cmode); + to = WellInjectorCMode2String(ws.injection_cmode); } else { - to = Well::ProducerCMode2String(ws.production_cmode); + to = WellProducerCMode2String(ws.production_cmode); } // only report the final switching if (from != to) { diff --git a/opm/simulators/wells/WellInterface_impl.hpp b/opm/simulators/wells/WellInterface_impl.hpp index 5419b2322..7fc9967fb 100644 --- a/opm/simulators/wells/WellInterface_impl.hpp +++ b/opm/simulators/wells/WellInterface_impl.hpp @@ -193,9 +193,9 @@ namespace Opm auto& ws = well_state.well(this->index_of_well_); std::string from; if (well.isInjector()) { - from = Well::InjectorCMode2String(ws.injection_cmode); + from = WellInjectorCMode2String(ws.injection_cmode); } else { - from = Well::ProducerCMode2String(ws.production_cmode); + from = WellProducerCMode2String(ws.production_cmode); } bool oscillating = std::count(this->well_control_log_.begin(), this->well_control_log_.end(), from) >= param_.max_number_of_well_switches_; @@ -229,9 +229,9 @@ namespace Opm if (changed) { std::string to; if (well.isInjector()) { - to = Well::InjectorCMode2String(ws.injection_cmode); + to = WellInjectorCMode2String(ws.injection_cmode); } else { - to = Well::ProducerCMode2String(ws.production_cmode); + to = WellProducerCMode2String(ws.production_cmode); } std::ostringstream ss; ss << " Switching control mode for well " << this->name() @@ -427,13 +427,13 @@ namespace Opm thp_control = ws.injection_cmode == Well::InjectorCMode::THP; if (thp_control) { ws.injection_cmode = Well::InjectorCMode::BHP; - this->well_control_log_.push_back(Well::InjectorCMode2String(Well::InjectorCMode::THP)); + this->well_control_log_.push_back(WellInjectorCMode2String(Well::InjectorCMode::THP)); } } else { thp_control = ws.production_cmode == Well::ProducerCMode::THP; if (thp_control) { ws.production_cmode = Well::ProducerCMode::BHP; - this->well_control_log_.push_back(Well::ProducerCMode2String(Well::ProducerCMode::THP)); + this->well_control_log_.push_back(WellProducerCMode2String(Well::ProducerCMode::THP)); } } if (thp_control) { From df181f220036b20a5c853941e8e4bbd3464004db Mon Sep 17 00:00:00 2001 From: Arne Morten Kvarving Date: Wed, 18 Jan 2023 11:08:53 +0100 Subject: [PATCH 03/10] WellState.hpp: remove unnecessary Well.hpp include forward WellStatus --- opm/simulators/wells/WellState.cpp | 2 +- opm/simulators/wells/WellState.hpp | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/opm/simulators/wells/WellState.cpp b/opm/simulators/wells/WellState.cpp index 76fc92f8c..cd93cb2de 100644 --- a/opm/simulators/wells/WellState.cpp +++ b/opm/simulators/wells/WellState.cpp @@ -774,7 +774,7 @@ void WellState::shutWell(int well_index) ws.shut(); } -void WellState::updateStatus(int well_index, Well::Status status) +void WellState::updateStatus(int well_index, WellStatus status) { auto& ws = this->well(well_index); ws.updateStatus(status); diff --git a/opm/simulators/wells/WellState.hpp b/opm/simulators/wells/WellState.hpp index 685b9e7b9..e119ff719 100644 --- a/opm/simulators/wells/WellState.hpp +++ b/opm/simulators/wells/WellState.hpp @@ -34,7 +34,6 @@ #include #include -#include #include #include @@ -51,6 +50,7 @@ namespace Opm class ParallelWellInfo; class Schedule; +enum class WellStatus; /// The state of a set of wells, tailored for use by the fully /// implicit blackoil simulator. @@ -211,7 +211,7 @@ public: bool wellIsOwned(const std::string& wellName) const; - void updateStatus(int well_index, Well::Status status); + void updateStatus(int well_index, WellStatus status); void openWell(int well_index); void shutWell(int well_index); From f3fae9d23b4ab041f08afd2ecf2f810fde3eae98 Mon Sep 17 00:00:00 2001 From: Arne Morten Kvarving Date: Wed, 18 Jan 2023 11:11:05 +0100 Subject: [PATCH 04/10] WellConstraints.hpp: remove unnecessary Well.hpp include forward WellInjectorCMode, WellProducerCMode and SummaryState --- opm/simulators/wells/WellConstraints.hpp | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/opm/simulators/wells/WellConstraints.hpp b/opm/simulators/wells/WellConstraints.hpp index ce29284ab..391dea845 100644 --- a/opm/simulators/wells/WellConstraints.hpp +++ b/opm/simulators/wells/WellConstraints.hpp @@ -24,8 +24,6 @@ #ifndef OPM_WELL_CONSTRAINTS_HEADER_INCLUDED #define OPM_WELL_CONSTRAINTS_HEADER_INCLUDED -#include - #include #include #include @@ -37,7 +35,10 @@ class DeferredLogger; using RegionId = int; class Rates; class SingleWellState; +class SummaryState; class WellInterfaceGeneric; +enum class WellInjectorCMode; +enum class WellProducerCMode; //! \brief Class for computing well group constraints. class WellConstraints { @@ -57,13 +58,13 @@ public: DeferredLogger& deferred_logger) const; private: - Well::InjectorCMode + WellInjectorCMode activeInjectionConstraint(const SingleWellState& ws, const SummaryState& summaryState, bool& thp_limit_violated_but_not_switched, DeferredLogger& deferred_logger) const; - Well::ProducerCMode + WellProducerCMode activeProductionConstraint(const SingleWellState& ws, const SummaryState& summaryState, const RateConvFunc& calcReservoirVoidageRates, From 2a6b2b495753d0adef6afdd98b45810aabe17c12 Mon Sep 17 00:00:00 2001 From: Arne Morten Kvarving Date: Wed, 18 Jan 2023 11:15:07 +0100 Subject: [PATCH 05/10] MultisegmentWellEval.hpp: remove unnecessary Well.hpp include --- opm/simulators/wells/MultisegmentWellEval.hpp | 2 -- 1 file changed, 2 deletions(-) diff --git a/opm/simulators/wells/MultisegmentWellEval.hpp b/opm/simulators/wells/MultisegmentWellEval.hpp index 8fd1a6b21..d71401a59 100644 --- a/opm/simulators/wells/MultisegmentWellEval.hpp +++ b/opm/simulators/wells/MultisegmentWellEval.hpp @@ -29,8 +29,6 @@ #include -#include - #include #include #include From f109718242e69aa866c5f80fe476fae828aab6f1 Mon Sep 17 00:00:00 2001 From: Arne Morten Kvarving Date: Wed, 18 Jan 2023 11:19:22 +0100 Subject: [PATCH 06/10] SingleWellState.hpp: include WellEnums.hpp instead of Well.hpp --- opm/simulators/wells/SingleWellState.cpp | 2 ++ opm/simulators/wells/SingleWellState.hpp | 13 ++++++++----- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/opm/simulators/wells/SingleWellState.cpp b/opm/simulators/wells/SingleWellState.cpp index c998fdf00..23bbbcf0d 100644 --- a/opm/simulators/wells/SingleWellState.cpp +++ b/opm/simulators/wells/SingleWellState.cpp @@ -20,6 +20,8 @@ #include #include +#include + #include #include diff --git a/opm/simulators/wells/SingleWellState.hpp b/opm/simulators/wells/SingleWellState.hpp index 9caccb3d8..69adfbb59 100644 --- a/opm/simulators/wells/SingleWellState.hpp +++ b/opm/simulators/wells/SingleWellState.hpp @@ -23,7 +23,7 @@ #include #include -#include +#include #include #include @@ -34,6 +34,8 @@ namespace Opm { struct PerforationData; +class SummaryState; +class Well; class SingleWellState { public: @@ -48,7 +50,7 @@ public: std::string name; std::reference_wrapper parallel_info; - Well::Status status{Well::Status::OPEN}; + WellStatus status{WellStatus::OPEN}; bool producer; PhaseUsage pu; double bhp{0}; @@ -66,8 +68,8 @@ public: bool trivial_target; SegmentState segments; Events events; - Well::InjectorCMode injection_cmode{Well::InjectorCMode::CMODE_UNDEFINED}; - Well::ProducerCMode production_cmode{Well::ProducerCMode::CMODE_UNDEFINED}; + WellInjectorCMode injection_cmode{WellInjectorCMode::CMODE_UNDEFINED}; + WellProducerCMode production_cmode{WellProducerCMode::CMODE_UNDEFINED}; /// Special purpose method to support dynamically rescaling a well's @@ -80,7 +82,7 @@ public: void update_producer_targets(const Well& ecl_well, const SummaryState& st); void update_injector_targets(const Well& ecl_well, const SummaryState& st); void update_targets(const Well& ecl_well, const SummaryState& st); - void updateStatus(Well::Status status); + void updateStatus(WellStatus status); void init_timestep(const SingleWellState& other); void shut(); void stop(); @@ -92,6 +94,7 @@ public: double sum_solvent_rates() const; double sum_polymer_rates() const; double sum_brine_rates() const; + private: double sum_connection_rates(const std::vector& connection_rates) const; }; From d091858f466a669b55b735552c258d78e4e500ee Mon Sep 17 00:00:00 2001 From: Arne Morten Kvarving Date: Wed, 18 Jan 2023 11:24:02 +0100 Subject: [PATCH 07/10] GlobalWellInfo.hpp: remove unnecessary Well.hpp include --- opm/simulators/wells/GlobalWellInfo.hpp | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/opm/simulators/wells/GlobalWellInfo.hpp b/opm/simulators/wells/GlobalWellInfo.hpp index 57ed14052..3015065a1 100644 --- a/opm/simulators/wells/GlobalWellInfo.hpp +++ b/opm/simulators/wells/GlobalWellInfo.hpp @@ -25,12 +25,13 @@ #include #include -#include - namespace Opm { class Schedule; class Well; +enum class WellInjectorCMode; +enum class WellProducerCMode; +enum class WellStatus; /* @@ -71,8 +72,8 @@ public: bool in_injecting_group(const std::string& wname) const; std::size_t well_index(const std::string& wname) const; const std::string& well_name(std::size_t well_index) const; - void update_injector(std::size_t well_index, Well::Status well_status, Well::InjectorCMode injection_cmode); - void update_producer(std::size_t well_index, Well::Status well_status, Well::ProducerCMode production_cmode); + void update_injector(std::size_t well_index, WellStatus well_status, WellInjectorCMode injection_cmode); + void update_producer(std::size_t well_index, WellStatus well_status, WellProducerCMode production_cmode); void clear(); private: From 998e5d8e643ace3fbe9d6ad2df17d8af51ea63c2 Mon Sep 17 00:00:00 2001 From: Arne Morten Kvarving Date: Wed, 18 Jan 2023 11:48:03 +0100 Subject: [PATCH 08/10] WellAssemble.hpp: remove unnecessary Well.hpp include --- opm/simulators/wells/WellAssemble.hpp | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/opm/simulators/wells/WellAssemble.hpp b/opm/simulators/wells/WellAssemble.hpp index d83393d3b..ee584eb63 100644 --- a/opm/simulators/wells/WellAssemble.hpp +++ b/opm/simulators/wells/WellAssemble.hpp @@ -27,7 +27,6 @@ #include #include -#include #include @@ -41,6 +40,8 @@ class Schedule; class SummaryState; template class WellInterfaceFluidSystem; class WellState; +class WellInjectionControls; +class WellProductionControls; template class WellAssemble { @@ -56,7 +57,7 @@ public: const GroupState& group_state, const Schedule& schedule, const SummaryState& summaryState, - const Well::ProductionControls& controls, + const WellProductionControls& controls, const EvalWell& bhp, const std::vector& rates, // Always 3 canonical rates. const std::function& bhp_from_thp, @@ -68,7 +69,7 @@ public: const GroupState& group_state, const Schedule& schedule, const SummaryState& summaryState, - const Well::InjectionControls& controls, + const WellInjectionControls& controls, const EvalWell& bhp, const EvalWell& injection_rate, const std::function& bhp_from_thp, From 93b3e8151eeade5b242edf957f7280e15bb84a1d Mon Sep 17 00:00:00 2001 From: Arne Morten Kvarving Date: Wed, 18 Jan 2023 11:53:15 +0100 Subject: [PATCH 09/10] WellInterface.hpp: remove unnecessary Well.hpp include --- opm/simulators/wells/WellInterface.hpp | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/opm/simulators/wells/WellInterface.hpp b/opm/simulators/wells/WellInterface.hpp index 9a0151158..341cb52a8 100644 --- a/opm/simulators/wells/WellInterface.hpp +++ b/opm/simulators/wells/WellInterface.hpp @@ -28,7 +28,6 @@ #include #include -#include #include #include @@ -65,6 +64,9 @@ namespace Opm { namespace Opm { +class WellInjectionProperties; +class WellProductionProperties; + template class WellInterface : public WellInterfaceIndices, GetPropType, @@ -327,8 +329,8 @@ protected: virtual void assembleWellEqWithoutIteration(const Simulator& ebosSimulator, const double dt, - const Well::InjectionControls& inj_controls, - const Well::ProductionControls& prod_controls, + const WellInjectionControls& inj_controls, + const WellProductionControls& prod_controls, WellState& well_state, const GroupState& group_state, DeferredLogger& deferred_logger) = 0; @@ -336,8 +338,8 @@ protected: // iterate well equations with the specified control until converged virtual bool iterateWellEqWithControl(const Simulator& ebosSimulator, const double dt, - const Well::InjectionControls& inj_controls, - const Well::ProductionControls& prod_controls, + const WellInjectionControls& inj_controls, + const WellProductionControls& prod_controls, WellState& well_state, const GroupState& group_state, DeferredLogger& deferred_logger) = 0; From aee8a764e215adabc6942ba0b1977dc503654707 Mon Sep 17 00:00:00 2001 From: Arne Morten Kvarving Date: Wed, 18 Jan 2023 11:56:21 +0100 Subject: [PATCH 10/10] GasLiftSingleWellGeneric.hpp: include WellProductionControls.hpp instead of Well.hpp --- opm/simulators/wells/GasLiftSingleWellGeneric.cpp | 2 +- opm/simulators/wells/GasLiftSingleWellGeneric.hpp | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/opm/simulators/wells/GasLiftSingleWellGeneric.cpp b/opm/simulators/wells/GasLiftSingleWellGeneric.cpp index 93d147e38..1a1f9de89 100644 --- a/opm/simulators/wells/GasLiftSingleWellGeneric.cpp +++ b/opm/simulators/wells/GasLiftSingleWellGeneric.cpp @@ -22,13 +22,13 @@ #include #include +#include #include #include #include #include - #include #include diff --git a/opm/simulators/wells/GasLiftSingleWellGeneric.hpp b/opm/simulators/wells/GasLiftSingleWellGeneric.hpp index fb837d86f..c15a0d66d 100644 --- a/opm/simulators/wells/GasLiftSingleWellGeneric.hpp +++ b/opm/simulators/wells/GasLiftSingleWellGeneric.hpp @@ -25,7 +25,7 @@ #include -#include +#include #include #include #include @@ -337,7 +337,7 @@ protected: GasLiftGroupInfo& group_info_; const PhaseUsage& phase_usage_; GLiftSyncGroups& sync_groups_; - const Well::ProductionControls controls_; + const WellProductionControls controls_; double increment_; double max_alq_;