20 #ifndef OPM_GUIDERATE_HANDLER_HPP 21 #define OPM_GUIDERATE_HANDLER_HPP 23 #include <opm/simulators/wells/rescoup/RescoupProxy.hpp> 24 #include <opm/input/eclipse/Schedule/Group/GuideRate.hpp> 25 #include <opm/output/data/Groups.hpp> 26 #include <opm/output/data/GuideRateValue.hpp> 27 #include <opm/simulators/utils/DeferredLogger.hpp> 28 #include <opm/simulators/wells/BlackoilWellModelGeneric.hpp> 29 #include <opm/simulators/wells/BlackoilWellModelGuideRates.hpp> 30 #include <opm/simulators/wells/GroupState.hpp> 31 #include <opm/simulators/wells/WellState.hpp> 45 template<
typename Scalar,
typename IndexTraits>
49 #ifdef RESERVOIR_COUPLING_ENABLED 65 DeferredLogger &deferredLogger() {
return this->parent_.deferredLogger(); }
71 void dumpGuideRatesRecursive_(
const Group& group,
int level);
72 void getGroupGuideRatesInjection_(
74 const data::GroupGuideRates& group_guide_rate,
75 std::vector<std::string>& msg_items
77 void getGroupGuideRatesProduction_(
79 const data::GroupGuideRates& group_guide_rate,
80 std::vector<std::string>& msg_items
88 void printGroupGuideRates_(
const Group& group,
int level);
91 void printWellGuideRates_(
const Well& well,
int level);
94 const int report_step_idx_;
95 const double sim_time_;
97 const Schedule& schedule_;
98 const Parallel::Communication& comm_;
99 std::unordered_map<std::string, data::GuideRateValue> well_guide_rates_;
100 std::unordered_map<std::string, data::GroupGuideRates> group_guide_rates_;
114 const int report_step_idx,
115 const double sim_time,
121 bool isReservoirCouplingMaster()
const {
return this->parent_.isReservoirCouplingMaster(); }
123 return this->parent_.reservoirCouplingMaster();
125 const Parallel::Communication &comm()
const {
return this->parent_.comm_; }
126 DeferredLogger &deferredLogger() {
return this->parent_.deferredLogger(); }
127 GuideRate &guideRate() {
return this->parent_.guide_rate_; }
129 const SummaryState &summaryState()
const {
return this->parent_.summary_state_; }
130 const Schedule &schedule()
const {
return this->parent_.schedule_; }
137 #ifdef RESERVOIR_COUPLING_ENABLED 138 bool isMasterGroup_(
const Group& group);
140 void updateGuideRatesForInjectionGroups_(
const Group& group);
147 void updateGuideRatesForProductionGroups_(
const Group& group, std::vector<Scalar>& pot);
148 void updateGuideRatesForWells_();
149 #ifdef RESERVOIR_COUPLING_ENABLED 150 void updateProductionGroupPotentialFromSlaveGroup_(
151 const Group& group, std::vector<Scalar>& pot);
153 void updateProductionGroupPotentialFromSubGroups(
154 const Group& group, std::vector<Scalar>& pot);
157 const int report_step_idx_;
158 const double sim_time_;
161 const int num_phases_;
162 const UnitSystem& unit_system_;
167 const Schedule& schedule,
168 const SummaryState& summary_state,
169 const Parallel::Communication& comm
178 bool isReservoirCouplingMaster()
const {
return rescoup_.isMaster(); }
179 bool isReservoirCouplingSlave()
const {
return rescoup_.isSlave(); }
181 ReservoirCouplingMaster<Scalar>& reservoirCouplingMaster() {
return rescoup_.master(); }
182 ReservoirCouplingSlave<Scalar>& reservoirCouplingSlave() {
return rescoup_.slave(); }
184 #ifdef RESERVOIR_COUPLING_ENABLED 185 void sendSlaveGroupPotentialsToMaster(
const GroupState<Scalar>& group_state);
186 void setReservoirCouplingMaster(ReservoirCouplingMaster<Scalar>* master) {
187 rescoup_.setMaster(master);
189 void setReservoirCouplingSlave(ReservoirCouplingSlave<Scalar>* slave) {
190 rescoup_.setSlave(slave);
193 DeferredLogger& deferredLogger()
const {
return this->well_model_.groupStateHelper().deferredLogger(); }
203 const Parallel::Communication& getComm()
const {
return comm_; }
204 const GuideRate& guideRate() {
return guide_rate_; }
205 const PhaseUsageInfo<IndexTraits>& phaseUsage()
const {
return well_model_.phaseUsage(); }
206 const Schedule& schedule()
const {
return schedule_; }
207 const SummaryState& summaryState()
const {
return summary_state_; }
217 const double sim_time,
218 const WellState<Scalar, IndexTraits>& well_state,
219 GroupState<Scalar>& group_state);
221 const BlackoilWellModelGeneric<Scalar, IndexTraits>& wellModel()
const {
return well_model_; }
222 BlackoilWellModelGeneric<Scalar, IndexTraits>& wellModel() {
return well_model_; }
224 void debugDumpGuideRatesRecursive_(
const Group& group)
const;
225 BlackoilWellModelGeneric<Scalar, IndexTraits>& well_model_;
226 const Schedule& schedule_;
227 const SummaryState& summary_state_;
228 const Parallel::Communication& comm_;
229 GuideRate& guide_rate_;
230 ReservoirCoupling::Proxy<Scalar> rescoup_{};
235 #endif // OPM_GUIDERATE_HANDLER_HPP Class for handling the blackoil well model.
Definition: ActionHandler.hpp:39
void update()
Triggers the guide rate update process for the current simulation step.
Definition: GuideRateHandler.cpp:433
ReservoirCoupling::Proxy< Scalar > & rescoup()
Get the reservoir coupling proxy.
Definition: GuideRateHandler.hpp:175
Definition: BlackoilWellModelConstraints.hpp:34
Responsible for formatting and printing guide rate information to logs.
Definition: GuideRateHandler.hpp:59
This file contains a set of helper functions used by VFPProd / VFPInj.
Definition: blackoilbioeffectsmodules.hh:45
Definition: ReservoirCoupling.hpp:187
Definition: DeferredLogger.hpp:56
Handles computation and reporting of guide rates for wells and groups.
Definition: GuideRateHandler.hpp:46
Computes and updates guide rate values for wells and groups.
Definition: GuideRateHandler.hpp:110
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:123
Definition: GasLiftGroupInfo.hpp:38
Definition: ReservoirCouplingMaster.hpp:38
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:111
Thin proxy for reservoir coupling master/slave pointers.
Definition: RescoupProxy.hpp:54
The state of a set of wells, tailored for use by the fully implicit blackoil simulator.
Definition: TemperatureModel.hpp:61
void dumpGuideRates()
Dumps guide rates for all wells and groups in a hierarchical structure.
Definition: GuideRateHandler.cpp:164