RescoupConstraintsCalculator.hpp
Go to the documentation of this file.
1/*
2 Copyright 2025 Equinor ASA
3
4 This file is part of the Open Porous Media project (OPM).
5
6 OPM is free software: you can redistribute it and/or modify
7 it under the terms of the GNU General Public License as published by
8 the Free Software Foundation, either version 3 of the License, or
9 (at your option) any later version.
10
11 OPM is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 GNU General Public License for more details.
15
16 You should have received a copy of the GNU General Public License
17 along with OPM. If not, see <http://www.gnu.org/licenses/>.
18*/
19
20#ifndef OPM_RESCOUP_CONSTRAINTS_CALCULATOR_HPP
21#define OPM_RESCOUP_CONSTRAINTS_CALCULATOR_HPP
22#include <opm/input/eclipse/Schedule/Group/GuideRate.hpp>
23#include <opm/material/fluidsystems/PhaseUsageInfo.hpp>
33
34namespace Opm {
35
51template<class Scalar, class IndexTraits>
53public:
56
66 GuideRateHandler<Scalar, IndexTraits>& guide_rate_handler,
68 );
69
82
119
120private:
138 std::tuple<std::vector<InjectionGroupTarget>, std::vector<ProductionGroupConstraints>>
139 calculateSlaveGroupConstraints_(std::size_t slave_idx, GroupConstraintCalculator<Scalar, IndexTraits>& calculator) const;
140
150 std::vector<InjectionGroupTarget>
151 calculateSlaveGroupInjectionTargets_(std::size_t slave_idx, GroupConstraintCalculator<Scalar, IndexTraits>& calculator) const;
152
168 void capAndRedistributeProductionTargets_(
170 std::vector<std::vector<ProductionGroupConstraints>>& all_production_constraints);
171
190 void capAndRedistributeInjectionTargets_(
192 std::vector<std::vector<InjectionGroupTarget>>& all_injection_targets);
193
201 void excludeInactiveSlaveMasterGroupsFromDistribution_();
202
209 void excludeInactiveSlaveMasterGroupsFromInjectionDistribution_();
210
221 Scalar potentialForProductionCmode_(
223 Group::ProductionCMode cmode) const;
224
231 Scalar potentialForInjectionPhase_(
233 ReservoirCoupling::Phase phase) const;
234
248 void sendSlaveGroupConstraintsToSlave_(
249 const ReservoirCouplingMaster<Scalar>& rescoup_master,
250 std::size_t slave_idx,
251 const std::vector<InjectionGroupTarget>& injection_targets,
252 const std::vector<ProductionGroupConstraints>& production_constraints
253 ) const;
254
265 void updateGCWAndTargetReductions_();
266
274 void updateInjectionGCWAndTargetReductions_();
275
276 GuideRateHandler<Scalar, IndexTraits>& guide_rate_handler_;
277 GroupStateHelper<Scalar, IndexTraits>& group_state_helper_;
278 const WellState<Scalar, IndexTraits>& well_state_;
279 const GroupState<Scalar>& group_state_;
280 const int report_step_idx_;
281 const Schedule& schedule_;
282 const SummaryState& summary_state_;
283 DeferredLogger& deferred_logger_;
284 ReservoirCouplingMaster<Scalar>& reservoir_coupling_master_;
286 const PhaseUsageInfo<IndexTraits>& phase_usage_;
287};
288
289} // namespace Opm
290#endif // OPM_RESCOUP_CONSTRAINTS_CALCULATOR_HPP
Definition: DeferredLogger.hpp:57
Definition: GroupConstraintCalculator.hpp:55
Definition: GroupStateHelper.hpp:56
Definition: GroupState.hpp:42
Handles computation and reporting of guide rates for wells and groups.
Definition: GuideRateHandler.hpp:46
Definition: GasLiftGroupInfo.hpp:38
Computes per-master-group production targets and per-rate-type limits for reservoir coupling,...
Definition: RescoupConstraintsCalculator.hpp:52
void calculateMasterGroupConstraintsAndSendToSlaves()
Run the full master-side target distribution and dispatch the resulting constraints to each activated...
void recalculateInjectionTargetsAndSendToSlaves()
Recompute only the injection targets and send them to each activated slave, replacing the ones sent e...
RescoupConstraintsCalculator(GuideRateHandler< Scalar, IndexTraits > &guide_rate_handler, GroupStateHelper< Scalar, IndexTraits > &group_state_helper)
Construct a calculator bound to the master's per-sync-step state.
Definition: ReservoirCouplingMaster.hpp:42
Definition: WellState.hpp:68
Phase
Phase indices for reservoir coupling, we currently only support black-oil phases (oil,...
Definition: ReservoirCoupling.hpp:183
Definition: blackoilbioeffectsmodules.hh:45
Definition: ReservoirCoupling.hpp:265
Definition: ReservoirCoupling.hpp:214
Definition: ReservoirCoupling.hpp:275