From b32f3f7546dbce91f99407aa476f0beabc8d9276 Mon Sep 17 00:00:00 2001 From: Joakim Hove Date: Tue, 12 Jan 2021 18:29:59 +0100 Subject: [PATCH] Manage GConSale and GConSump with ScheduleState object --- opm/simulators/wells/BlackoilWellModel_impl.hpp | 8 ++++---- opm/simulators/wells/WellGroupHelpers.cpp | 10 ++++++---- opm/simulators/wells/WellInterface_impl.hpp | 2 +- 3 files changed, 11 insertions(+), 9 deletions(-) diff --git a/opm/simulators/wells/BlackoilWellModel_impl.hpp b/opm/simulators/wells/BlackoilWellModel_impl.hpp index 98a4cd8ef..0251421ca 100644 --- a/opm/simulators/wells/BlackoilWellModel_impl.hpp +++ b/opm/simulators/wells/BlackoilWellModel_impl.hpp @@ -2291,7 +2291,7 @@ namespace Opm { } // check if gconsale is used for this group - if (!schedule().gConSale(reportStepIdx).has(group.name())) + if (!schedule()[reportStepIdx].gconsale().has(group.name())) return; std::ostringstream ss; @@ -2299,7 +2299,7 @@ namespace Opm { const auto& summaryState = ebosSimulator_.vanguard().summaryState(); const auto& comm = ebosSimulator_.vanguard().grid().comm(); - const auto& gconsale = schedule().gConSale(reportStepIdx).get(group.name(), summaryState); + const auto& gconsale = schedule()[reportStepIdx].gconsale().get(group.name(), summaryState); const Group::ProductionCMode& oldProductionControl = well_state.currentProductionGroupControl(group.name()); @@ -2315,8 +2315,8 @@ namespace Opm { double production_target = gconsale.sales_target + injection_rate; // add import rate and substract consumption rate for group for gas - if (schedule().gConSump(reportStepIdx).has(group.name())) { - const auto& gconsump = schedule().gConSump(reportStepIdx).get(group.name(), summaryState); + if (schedule()[reportStepIdx].gconsump().has(group.name())) { + const auto& gconsump = schedule()[reportStepIdx].gconsump().get(group.name(), summaryState); if (phase_usage_.phase_used[BlackoilPhases::Vapour]) { sales_rate += gconsump.import_rate; sales_rate -= gconsump.consumption_rate; diff --git a/opm/simulators/wells/WellGroupHelpers.cpp b/opm/simulators/wells/WellGroupHelpers.cpp index 417abb4e5..3b2bf23c5 100644 --- a/opm/simulators/wells/WellGroupHelpers.cpp +++ b/opm/simulators/wells/WellGroupHelpers.cpp @@ -21,6 +21,8 @@ #include #include #include +#include +#include #include #include @@ -98,7 +100,7 @@ namespace WellGroupHelpers wellState.setCurrentProductionGroupControl(group.name(), controls.cmode); } - if (schedule.gConSale(reportStepIdx).has(group.name())) { + if (schedule[reportStepIdx].gconsale().has(group.name())) { wellState.setCurrentInjectionGroupControl(Phase::GAS, group.name(), Group::InjectionCMode::SALE); } } @@ -600,8 +602,8 @@ namespace WellGroupHelpers } // add import rate and substract consumption rate for group for gas - if (schedule.gConSump(reportStepIdx).has(group.name())) { - const auto& gconsump = schedule.gConSump(reportStepIdx).get(group.name(), st); + if (schedule[reportStepIdx].gconsump().has(group.name())) { + const auto& gconsump = schedule[reportStepIdx].gconsump().get(group.name(), st); if (pu.phase_used[BlackoilPhases::Vapour]) { rein[pu.phase_pos[BlackoilPhases::Vapour]] += gconsump.import_rate; rein[pu.phase_pos[BlackoilPhases::Vapour]] -= gconsump.consumption_rate; @@ -1158,7 +1160,7 @@ namespace WellGroupHelpers // Gas injection rate = Total gas production rate + gas import rate - gas consumption rate - sales rate; // Gas import and consumption is already included in the REIN rates double inj_rate = wellState.currentInjectionREINRates(group.name())[phasePos]; - const auto& gconsale = schedule.gConSale(reportStepIdx).get(group.name(), summaryState); + const auto& gconsale = schedule[reportStepIdx].gconsale().get(group.name(), summaryState); inj_rate -= gconsale.sales_target; const double current_rate = rates[phasePos]; diff --git a/opm/simulators/wells/WellInterface_impl.hpp b/opm/simulators/wells/WellInterface_impl.hpp index a9a1aee80..ab69be61a 100644 --- a/opm/simulators/wells/WellInterface_impl.hpp +++ b/opm/simulators/wells/WellInterface_impl.hpp @@ -2288,7 +2288,7 @@ namespace Opm // Gas injection rate = Total gas production rate + gas import rate - gas consumption rate - sales rate; // The import and consumption is already included in the REIN rates. double inj_rate = well_state.currentInjectionREINRates(group.name())[phasePos]; - const auto& gconsale = schedule.gConSale(current_step_).get(group.name(), summaryState); + const auto& gconsale = schedule[current_step_].gconsale().get(group.name(), summaryState); inj_rate -= gconsale.sales_target; double target = std::max(0.0, (inj_rate - groupTargetReduction)) / efficiencyFactor;