BlackoilWellModelConstraints.hpp
Go to the documentation of this file.
1/*
2 Copyright 2016 SINTEF ICT, Applied Mathematics.
3 Copyright 2016 - 2017 Statoil ASA.
4 Copyright 2017 Dr. Blatt - HPC-Simulation-Software & Services
5 Copyright 2016 - 2018 IRIS AS
6
7 This file is part of the Open Porous Media project (OPM).
8
9 OPM is free software: you can redistribute it and/or modify
10 it under the terms of the GNU General Public License as published by
11 the Free Software Foundation, either version 3 of the License, or
12 (at your option) any later version.
13
14 OPM is distributed in the hope that it will be useful,
15 but WITHOUT ANY WARRANTY; without even the implied warranty of
16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 GNU General Public License for more details.
18
19 You should have received a copy of the GNU General Public License
20 along with OPM. If not, see <http://www.gnu.org/licenses/>.
21*/
22
23#ifndef OPM_BLACKOILWELLMODEL_CONSTRAINTS_HEADER_INCLUDED
24#define OPM_BLACKOILWELLMODEL_CONSTRAINTS_HEADER_INCLUDED
25
26#include <opm/input/eclipse/Schedule/Group/Group.hpp>
27#include <optional>
28#include <utility>
29
30namespace Opm {
31
32template<class Scalar> class BlackoilWellModelGeneric;
33class DeferredLogger;
34template<class Scalar> class GroupState;
35class SummaryState;
36template<class Scalar> class WellState;
37
39template<class Scalar>
41{
42public:
45 : wellModel_(wellModel)
46 {}
47
49 bool hasTHPConstraints() const;
50
52 bool checkGroupConstraints(const Group& group,
53 const int reportStepIdx,
54 DeferredLogger& deferred_logger) const;
55
57 void actionOnBrokenConstraints(const Group& group,
58 const Group::InjectionCMode& newControl,
59 const Phase& controlPhase,
60 GroupState<Scalar>& group_state,
61 DeferredLogger& deferred_logger) const;
62
64 bool actionOnBrokenConstraints(const Group& group,
65 const int reportStepIdx,
66 const Group::GroupLimitAction group_limit_action,
67 const Group::ProductionCMode& newControl,
68 const WellState<Scalar>& well_state,
69 std::optional<std::string>& worst_offending_well,
70 GroupState<Scalar>& group_state,
71 DeferredLogger& deferred_logger) const;
72
74 bool updateGroupIndividualControl(const Group& group,
75 const int reportStepIdx,
76 std::map<std::pair<std::string,Phase>,std::string>& switched_inj,
77 std::map<std::string, std::string>& switched_prod,
78 std::map<std::string, std::pair<std::string, std::string>>& closed_offending_wells,
79 GroupState<Scalar>& group_state,
80 WellState<Scalar>& well_state,
81 DeferredLogger& deferred_logger) const;
82
83private:
85 std::pair<Group::InjectionCMode, Scalar>
86 checkGroupInjectionConstraints(const Group& group,
87 const int reportStepIdx,
88 const Phase& phase) const;
89
91 std::pair<Group::ProductionCMode, Scalar>
92 checkGroupProductionConstraints(const Group& group,
93 const int reportStepIdx,
94 DeferredLogger& deferred_logger) const;
95
96 const BlackoilWellModelGeneric<Scalar>& wellModel_;
97};
98
99} // namespace Opm
100
101#endif
Class for handling constraints for the blackoil well model.
Definition: BlackoilWellModelConstraints.hpp:41
bool checkGroupConstraints(const Group &group, const int reportStepIdx, DeferredLogger &deferred_logger) const
Check the constraints of a well group.
bool updateGroupIndividualControl(const Group &group, const int reportStepIdx, std::map< std::pair< std::string, Phase >, std::string > &switched_inj, std::map< std::string, std::string > &switched_prod, std::map< std::string, std::pair< std::string, std::string > > &closed_offending_wells, GroupState< Scalar > &group_state, WellState< Scalar > &well_state, DeferredLogger &deferred_logger) const
Update the individual controls for wells in a group. Return true if a group control is changed.
bool hasTHPConstraints() const
Return true if any well has a THP constraint.
void actionOnBrokenConstraints(const Group &group, const Group::InjectionCMode &newControl, const Phase &controlPhase, GroupState< Scalar > &group_state, DeferredLogger &deferred_logger) const
Execute action for broken constraint for an injection well group.
bool actionOnBrokenConstraints(const Group &group, const int reportStepIdx, const Group::GroupLimitAction group_limit_action, const Group::ProductionCMode &newControl, const WellState< Scalar > &well_state, std::optional< std::string > &worst_offending_well, GroupState< Scalar > &group_state, DeferredLogger &deferred_logger) const
Execute action on broken constraint for a production well group. Return true if a group control is ch...
BlackoilWellModelConstraints(const BlackoilWellModelGeneric< Scalar > &wellModel)
Constructor initializes reference to the well model.
Definition: BlackoilWellModelConstraints.hpp:44
Class for handling the blackoil well model.
Definition: BlackoilWellModelGeneric.hpp:83
Definition: DeferredLogger.hpp:57
Definition: GroupState.hpp:35
Definition: WellState.hpp:62
Definition: BlackoilPhases.hpp:27