23 #ifndef OPM_BLACKOILWELLMODEL_CONSTRAINTS_HEADER_INCLUDED 24 #define OPM_BLACKOILWELLMODEL_CONSTRAINTS_HEADER_INCLUDED 26 #include <opm/input/eclipse/Schedule/Group/Group.hpp> 32 template<
typename Scalar,
typename IndexTraits>
class BlackoilWellModelGeneric;
36 template<
typename Scalar,
typename IndexTraits>
class WellState;
40 template<
typename Scalar,
typename IndexTraits>
44 constexpr
static int waterPhaseIdx = IndexTraits::waterPhaseIdx;
45 constexpr
static int oilPhaseIdx = IndexTraits::oilPhaseIdx;
46 constexpr
static int gasPhaseIdx = IndexTraits::gasPhaseIdx;
52 : wellModel_(wellModel)
57 const Group::InjectionCMode& newControl,
58 const Phase& controlPhase,
64 const Group::GroupLimitAction group_limit_action,
65 const Group::ProductionCMode& newControl,
66 std::optional<std::string>& worst_offending_well,
72 const int reportStepIdx,
73 const int max_number_of_group_switch,
74 const bool update_group_switching_log,
75 std::map<std::string, std::array<std::vector<Group::InjectionCMode>, 3>>& switched_inj,
76 std::map<std::string, std::vector<Group::ProductionCMode>>& switched_prod,
77 std::map<std::string, std::pair<std::string, std::string>>& closed_offending_wells,
84 std::pair<Group::InjectionCMode, Scalar>
85 checkGroupInjectionConstraints(
const Group& group,
86 const int reportStepIdx,
87 const Phase& phase)
const;
90 std::pair<Group::ProductionCMode, Scalar>
91 checkGroupProductionConstraints(
const Group& group)
const;
94 bool updateInjectionGroupControl(
const Group& group,
95 const int reportStepIdx,
96 const int max_number_of_group_switch,
97 const bool update_group_switching_log,
98 std::map<std::string, std::array<std::vector<Group::InjectionCMode>, 3>>& switched_inj,
104 bool updateProductionGroupControl(
const Group& group,
105 const int max_number_of_group_switch,
106 const bool update_group_switching_log,
107 std::map<std::string, std::vector<Group::ProductionCMode>>& switched_prod,
108 std::map<std::string, std::pair<std::string, std::string>>& closed_offending_wells,
113 const GroupStateHelperType& groupStateHelper()
const {
return wellModel_.groupStateHelper(); }
114 const BlackoilWellModelGeneric<Scalar, IndexTraits>& wellModel_;
Definition: BlackoilWellModelConstraints.hpp:34
Class for handling constraints for the blackoil well model.
Definition: BlackoilWellModelConstraints.hpp:41
Structs needed for tpfalinearizer and its gpuparams struct extracted to be defined in one place that ...
Definition: blackoilbioeffectsmodules.hh:45
Definition: BlackoilWellModelConstraints.hpp:37
Definition: DeferredLogger.hpp:56
BlackoilWellModelConstraints(const BlackoilWellModelGeneric< Scalar, IndexTraits > &wellModel)
Constructor initializes reference to the well model.
Definition: BlackoilWellModelConstraints.hpp:51
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.
Definition: BlackoilWellModelConstraints.cpp:258
bool updateGroupIndividualControl(const Group &group, const int reportStepIdx, const int max_number_of_group_switch, const bool update_group_switching_log, std::map< std::string, std::array< std::vector< Group::InjectionCMode >, 3 >> &switched_inj, std::map< std::string, std::vector< Group::ProductionCMode >> &switched_prod, std::map< std::string, std::pair< std::string, std::string >> &closed_offending_wells, GroupState< Scalar > &group_state, WellState< Scalar, IndexTraits > &well_state, DeferredLogger &deferred_logger) const
Update the individual controls for wells in a group. Return true if a group control is changed...
Definition: BlackoilWellModelConstraints.cpp:514
The state of a set of wells, tailored for use by the fully implicit blackoil simulator.
Definition: TemperatureModel.hpp:65