mirror of
https://github.com/OPM/opm-simulators.git
synced 2025-02-11 09:55:34 -06:00
Use struct for collecting group limit actions
This commit is contained in:
parent
1796b3343b
commit
ae553787ba
@ -402,10 +402,7 @@ actionOnBrokenConstraints(const Group& group,
|
|||||||
|
|
||||||
void BlackoilWellModelConstraints::
|
void BlackoilWellModelConstraints::
|
||||||
actionOnBrokenConstraints(const Group& group,
|
actionOnBrokenConstraints(const Group& group,
|
||||||
const Group::ExceedAction& exceed_action,
|
const Group::GroupLimitAction group_limit_action,
|
||||||
const Group::ExceedAction& water_exceed_action,
|
|
||||||
const Group::ExceedAction& gas_exceed_action,
|
|
||||||
const Group::ExceedAction& liquid_exceed_action,
|
|
||||||
const Group::ProductionCMode& newControl,
|
const Group::ProductionCMode& newControl,
|
||||||
GroupState& group_state,
|
GroupState& group_state,
|
||||||
DeferredLogger& deferred_logger) const
|
DeferredLogger& deferred_logger) const
|
||||||
@ -413,12 +410,12 @@ actionOnBrokenConstraints(const Group& group,
|
|||||||
const Group::ProductionCMode oldControl = wellModel_.groupState().production_control(group.name());
|
const Group::ProductionCMode oldControl = wellModel_.groupState().production_control(group.name());
|
||||||
|
|
||||||
std::string ss;
|
std::string ss;
|
||||||
switch(exceed_action) {
|
switch(group_limit_action.allRates) {
|
||||||
case Group::ExceedAction::NONE: {
|
case Group::ExceedAction::NONE: {
|
||||||
if (oldControl != newControl && oldControl != Group::ProductionCMode::NONE) {
|
if (oldControl != newControl && oldControl != Group::ProductionCMode::NONE) {
|
||||||
if ((water_exceed_action == Group::ExceedAction::RATE && newControl == Group::ProductionCMode::WRAT) ||
|
if ((group_limit_action.water == Group::ExceedAction::RATE && newControl == Group::ProductionCMode::WRAT) ||
|
||||||
(gas_exceed_action == Group::ExceedAction::RATE && newControl == Group::ProductionCMode::GRAT) ||
|
(group_limit_action.gas == Group::ExceedAction::RATE && newControl == Group::ProductionCMode::GRAT) ||
|
||||||
(liquid_exceed_action == Group::ExceedAction::RATE && newControl == Group::ProductionCMode::LRAT)) {
|
(group_limit_action.liquid == Group::ExceedAction::RATE && newControl == Group::ProductionCMode::LRAT)) {
|
||||||
group_state.production_control(group.name(), newControl);
|
group_state.production_control(group.name(), newControl);
|
||||||
ss = fmt::format("Switching production control mode for group {} from {} to {}",
|
ss = fmt::format("Switching production control mode for group {} from {} to {}",
|
||||||
group.name(),
|
group.name(),
|
||||||
@ -515,10 +512,7 @@ updateGroupIndividualControl(const Group& group,
|
|||||||
Group::ProductionCMode2String(changed_this.first));
|
Group::ProductionCMode2String(changed_this.first));
|
||||||
|
|
||||||
this->actionOnBrokenConstraints(group,
|
this->actionOnBrokenConstraints(group,
|
||||||
controls.exceed_action,
|
controls.group_limit_action,
|
||||||
controls.water_exceed_action,
|
|
||||||
controls.gas_exceed_action,
|
|
||||||
controls.liquid_exceed_action,
|
|
||||||
changed_this.first,
|
changed_this.first,
|
||||||
group_state, deferred_logger);
|
group_state, deferred_logger);
|
||||||
WellGroupHelpers::updateWellRatesFromGroupTargetScale(changed_this.second,
|
WellGroupHelpers::updateWellRatesFromGroupTargetScale(changed_this.second,
|
||||||
|
@ -61,10 +61,7 @@ public:
|
|||||||
|
|
||||||
//! \brief Execute action on broken constraint for a production well group.
|
//! \brief Execute action on broken constraint for a production well group.
|
||||||
void actionOnBrokenConstraints(const Group& group,
|
void actionOnBrokenConstraints(const Group& group,
|
||||||
const Group::ExceedAction& exceed_action,
|
const Group::GroupLimitAction group_limit_action,
|
||||||
const Group::ExceedAction& water_exceed_action,
|
|
||||||
const Group::ExceedAction& gas_exceed_action,
|
|
||||||
const Group::ExceedAction& liquid_exceed_action,
|
|
||||||
const Group::ProductionCMode& newControl,
|
const Group::ProductionCMode& newControl,
|
||||||
GroupState& group_state,
|
GroupState& group_state,
|
||||||
DeferredLogger& deferred_logger) const;
|
DeferredLogger& deferred_logger) const;
|
||||||
|
@ -572,12 +572,9 @@ checkGroupHigherConstraints(const Group& group,
|
|||||||
deferred_logger);
|
deferred_logger);
|
||||||
if (is_changed) {
|
if (is_changed) {
|
||||||
switched_prod_groups_.insert_or_assign(group.name(), Group::ProductionCMode2String(Group::ProductionCMode::FLD));
|
switched_prod_groups_.insert_or_assign(group.name(), Group::ProductionCMode2String(Group::ProductionCMode::FLD));
|
||||||
const auto exceed_action = group.productionControls(summaryState_).exceed_action;
|
const auto group_limit_action = group.productionControls(summaryState_).group_limit_action;
|
||||||
const auto water_exceed_action = group.productionControls(summaryState_).water_exceed_action;
|
|
||||||
const auto gas_exceed_action = group.productionControls(summaryState_).gas_exceed_action;
|
|
||||||
const auto liquid_exceed_action = group.productionControls(summaryState_).liquid_exceed_action;
|
|
||||||
BlackoilWellModelConstraints(*this).
|
BlackoilWellModelConstraints(*this).
|
||||||
actionOnBrokenConstraints(group, exceed_action, water_exceed_action, gas_exceed_action, liquid_exceed_action,
|
actionOnBrokenConstraints(group, group_limit_action,
|
||||||
Group::ProductionCMode::FLD,
|
Group::ProductionCMode::FLD,
|
||||||
this->groupState(),
|
this->groupState(),
|
||||||
deferred_logger);
|
deferred_logger);
|
||||||
|
Loading…
Reference in New Issue
Block a user