20#ifndef OPM_GUIDERATE_HANDLER_HPP
21#define OPM_GUIDERATE_HANDLER_HPP
24#define RESERVOIR_COUPLING_ENABLED
26#ifdef RESERVOIR_COUPLING_ENABLED
27#include <opm/simulators/flow/ReservoirCoupling.hpp>
28#include <opm/simulators/flow/ReservoirCouplingMaster.hpp>
29#include <opm/simulators/flow/ReservoirCouplingSlave.hpp>
31#include <opm/input/eclipse/Schedule/Group/GuideRate.hpp>
32#include <opm/output/data/Groups.hpp>
33#include <opm/output/data/GuideRateValue.hpp>
34#include <opm/simulators/utils/DeferredLogger.hpp>
35#include <opm/simulators/wells/BlackoilWellModelGeneric.hpp>
36#include <opm/simulators/wells/BlackoilWellModelGuideRates.hpp>
37#include <opm/simulators/wells/GroupState.hpp>
38#include <opm/simulators/wells/WellState.hpp>
52template<
typename Scalar,
typename IndexTraits>
56#ifdef RESERVOIR_COUPLING_ENABLED
72 DeferredLogger &deferredLogger() {
return this->parent_.deferredLogger(); }
78 void dumpGuideRatesRecursive_(
const Group& group,
int level);
79 void getGroupGuideRatesInjection_(
84 void getGroupGuideRatesProduction_(
95 void printGroupGuideRates_(
const Group& group,
int level);
98 void printWellGuideRates_(
const Well& well,
int level);
101 const int report_step_idx_;
102 const double sim_time_;
105 const Parallel::Communication& comm_;
106 std::unordered_map<std::string, data::GuideRateValue> well_guide_rates_;
107 std::unordered_map<std::string, data::GroupGuideRates> group_guide_rates_;
128#ifdef RESERVOIR_COUPLING_ENABLED
131 return this->parent_.reservoirCouplingMaster();
134 const Parallel::Communication &comm()
const {
return this->parent_.comm_; }
135 DeferredLogger &deferredLogger() {
return this->parent_.deferredLogger(); }
136 GuideRate &guideRate() {
return this->parent_.guide_rate_; }
138 const SummaryState &summaryState()
const {
return this->parent_.summary_state_; }
139 const Schedule &schedule()
const {
return this->parent_.schedule_; }
146#ifdef RESERVOIR_COUPLING_ENABLED
149 void updateGuideRatesForInjectionGroups_(
const Group& group);
156 void updateGuideRatesForProductionGroups_(
const Group& group, std::vector<Scalar>&
pot);
157 void updateGuideRatesForWells_();
158#ifdef RESERVOIR_COUPLING_ENABLED
160 const Group& group, std::vector<Scalar>&
pot);
162 void updateProductionGroupPotentialFromSubGroups(
163 const Group& group, std::vector<Scalar>&
pot);
166 const int report_step_idx_;
167 const double sim_time_;
170 const int num_phases_;
178 const Parallel::Communication& comm
181#ifdef RESERVOIR_COUPLING_ENABLED
199 DeferredLogger& deferredLogger();
209 const Parallel::Communication& getComm()
const {
return comm_; }
211 const Schedule& schedule()
const {
return schedule_; }
227 void debugDumpGuideRatesRecursive_(
const Group& group)
const;
231 const Parallel::Communication& comm_;
233 DeferredLogger *deferred_logger_ =
nullptr;
234#ifdef RESERVOIR_COUPLING_ENABLED
Class for handling the blackoil well model.
Definition BlackoilWellModelGeneric.hpp:95
Definition DeferredLogger.hpp:57
Definition GroupState.hpp:41
Responsible for formatting and printing guide rate information to logs.
Definition GuideRateHandler.hpp:66
void dumpGuideRates()
Dumps guide rates for all wells and groups in a hierarchical structure.
Definition GuideRateHandler.cpp:213
Computes and updates guide rate values for wells and groups.
Definition GuideRateHandler.hpp:117
void update()
Triggers the guide rate update process for the current simulation step.
Definition GuideRateHandler.cpp:482
Handles computation and reporting of guide rates for wells and groups.
Definition GuideRateHandler.hpp:53
void debugDumpGuideRates(const int report_step_idx, const double sim_time)
Dumps guide rate information to the logger in a readable format.
Definition GuideRateHandler.cpp:101
void updateGuideRates(const int report_step_idx, const double sim_time, const WellState< Scalar, IndexTraits > &well_state, GroupState< Scalar > &group_state)
Updates guide rates for the current simulation step.
Definition GuideRateHandler.cpp:172
Definition GasLiftGroupInfo.hpp:37
Definition ReservoirCouplingMaster.hpp:35
The state of a set of wells, tailored for use by the fully implicit blackoil simulator.
Definition WellState.hpp:66
This file contains a set of helper functions used by VFPProd / VFPInj.
Definition blackoilbioeffectsmodules.hh:43
constexpr auto getPropValue()
get the value data member of a property
Definition propertysystem.hh:240
Definition ReservoirCoupling.hpp:63