diff --git a/opm/simulators/wells/BlackoilWellModel.hpp b/opm/simulators/wells/BlackoilWellModel.hpp index e198b8f2a..be42a6516 100644 --- a/opm/simulators/wells/BlackoilWellModel.hpp +++ b/opm/simulators/wells/BlackoilWellModel.hpp @@ -108,9 +108,8 @@ namespace Opm { typedef typename BaseAuxiliaryModule::NeighborSet NeighborSet; using GasLiftSingleWell = ::Opm::GasLiftSingleWell; using GasLiftStage2 = ::Opm::GasLiftStage2; - using GLiftWellState = GasLiftWellState; using GLiftWellStateMap = - std::map>; + std::map>; using GLiftOptWells = std::map>; using GLiftProdWells = diff --git a/opm/simulators/wells/BlackoilWellModel_impl.hpp b/opm/simulators/wells/BlackoilWellModel_impl.hpp index 6043805f6..7806ea5ac 100644 --- a/opm/simulators/wells/BlackoilWellModel_impl.hpp +++ b/opm/simulators/wells/BlackoilWellModel_impl.hpp @@ -1108,7 +1108,7 @@ namespace Opm { GLiftWellStateMap &glift_well_state_map) { - GasLiftStage2 glift {*this, ebosSimulator_, deferred_logger, this->wellState(), + GasLiftStage2 glift {this->phaseUsage(), ebosSimulator_, deferred_logger, this->wellState(), prod_wells, glift_wells, glift_well_state_map}; glift.runOptimize(); } diff --git a/opm/simulators/wells/GasLiftStage2.hpp b/opm/simulators/wells/GasLiftStage2.hpp index e05ad948d..351a7ed94 100644 --- a/opm/simulators/wells/GasLiftStage2.hpp +++ b/opm/simulators/wells/GasLiftStage2.hpp @@ -34,12 +34,6 @@ #include #include #include -// NOTE: BlackoilWellModel.hpp includes ourself (GasLiftStage2.hpp), so we need -// to forward declare BlackoilWellModel for it to be defined in this file. -namespace Opm { - template class BlackoilWellModel; -} -#include #include #include @@ -58,12 +52,10 @@ namespace Opm template class GasLiftStage2 { using Simulator = GetPropType; - using BlackoilWellModel = ::Opm::BlackoilWellModel; using GasLiftSingleWell = ::Opm::GasLiftSingleWell; - using GLiftWellState = GasLiftWellState; - using GLiftOptWells = typename BlackoilWellModel::GLiftOptWells; - using GLiftProdWells = typename BlackoilWellModel::GLiftProdWells; - using GLiftWellStateMap = typename BlackoilWellModel::GLiftWellStateMap; + using GLiftOptWells = std::map>; + using GLiftProdWells = std::map *>; + using GLiftWellStateMap = std::map>; using GradPair = std::pair; using GradPairItr = std::vector::iterator; using GradInfo = typename GasLiftSingleWell::GradInfo; @@ -79,7 +71,7 @@ namespace Opm static const int Gas = BlackoilPhases::Vapour; public: GasLiftStage2( - const BlackoilWellModel &well_model, + const PhaseUsage& phase_usage, const Simulator &ebos_simulator, DeferredLogger &deferred_logger, WellState &well_state, @@ -93,7 +85,7 @@ namespace Opm GradMap &grad_map, const std::string well_name, bool add); std::optional calcIncOrDecGrad_( const std::string name, const GasLiftSingleWell &gs_well, bool increase); - bool checkRateAlreadyLimited_(GLiftWellState &state, bool increase); + bool checkRateAlreadyLimited_(GasLiftWellState &state, bool increase); GradInfo deleteDecGradItem_(const std::string &name); GradInfo deleteIncGradItem_(const std::string &name); GradInfo deleteGrad_(const std::string &name, bool increase); @@ -140,7 +132,6 @@ namespace Opm DeferredLogger &deferred_logger_; const Simulator &ebos_simulator_; - const BlackoilWellModel &well_model_; WellState &well_state_; GLiftProdWells &prod_wells_; GLiftOptWells &stage1_wells_; diff --git a/opm/simulators/wells/GasLiftStage2_impl.hpp b/opm/simulators/wells/GasLiftStage2_impl.hpp index 83acf94f2..bcd398985 100644 --- a/opm/simulators/wells/GasLiftStage2_impl.hpp +++ b/opm/simulators/wells/GasLiftStage2_impl.hpp @@ -36,7 +36,7 @@ namespace Opm { template GasLiftStage2:: GasLiftStage2( - const BlackoilWellModel &well_model, + const PhaseUsage& phase_usage, const Simulator &ebos_simulator, DeferredLogger &deferred_logger, WellState &well_state, @@ -46,7 +46,6 @@ GasLiftStage2( ) : deferred_logger_{deferred_logger}, ebos_simulator_{ebos_simulator}, - well_model_{well_model}, well_state_{well_state}, prod_wells_{prod_wells}, stage1_wells_{glift_wells}, @@ -54,7 +53,7 @@ GasLiftStage2( report_step_idx_{ebos_simulator_.episodeIndex()}, summary_state_{ebos_simulator_.vanguard().summaryState()}, schedule_{ebos_simulator.vanguard().schedule()}, - phase_usage_{well_model_.phaseUsage()}, + phase_usage_{phase_usage}, glo_{schedule_.glo(report_step_idx_)}, comm_{ebos_simulator.vanguard().grid().comm()}, debug_{false} @@ -108,7 +107,7 @@ addOrRemoveALQincrement_(GradMap &grad_map, const std::string well_name, bool ad if (it == this->well_state_map_.end()) return; - GLiftWellState &state = *(it->second.get()); + GasLiftWellState &state = *(it->second.get()); const GradInfo &gi = grad_map.at(well_name); if (this->debug_) { auto new_alq = gi.alq; @@ -135,7 +134,7 @@ calcIncOrDecGrad_( if(this->well_state_map_.count(well_name) == 0) return std::nullopt; - GLiftWellState &state = *(this->well_state_map_.at(well_name).get()); + GasLiftWellState &state = *(this->well_state_map_.at(well_name).get()); if (checkRateAlreadyLimited_(state, increase)) { /* const std::string msg = fmt::format( @@ -167,7 +166,7 @@ calcIncOrDecGrad_( template bool GasLiftStage2:: -checkRateAlreadyLimited_(GLiftWellState &state, bool increase) +checkRateAlreadyLimited_(GasLiftWellState &state, bool increase) { auto current_increase = state.increase(); bool do_check = false; @@ -354,7 +353,7 @@ getCurrentWellRates_(const std::string &well_name, const std::string &group_name GasLiftSingleWell &gs_well = *(this->stage1_wells_.at(well_name).get()); const WellInterface &well = gs_well.getStdWell(); well_ptr = &well; - GLiftWellState &state = *(this->well_state_map_.at(well_name).get()); + GasLiftWellState &state = *(this->well_state_map_.at(well_name).get()); std::tie(oil_rate, gas_rate) = state.getRates(); success = true; if ( this->debug_) debug_info = "(A)"; @@ -1135,7 +1134,7 @@ updateRates(const std::string &well_name) // compute the delta on wells on own rank if (this->parent.well_state_map_.count(well_name) > 0) { const GradInfo &gi = this->parent.dec_grads_.at(well_name); - GLiftWellState &state = *(this->parent.well_state_map_.at(well_name).get()); + GasLiftWellState &state = *(this->parent.well_state_map_.at(well_name).get()); GasLiftSingleWell &gs_well = *(this->parent.stage1_wells_.at(well_name).get()); const WellInterface &well = gs_well.getStdWell(); // only get deltas for wells owned by this rank