mirror of
https://github.com/OPM/opm-simulators.git
synced 2024-11-28 20:13:49 -06:00
fix issue when GRUP is used in WCONPROD and WCONINJE and NONE group control
Use a bhp control when a well is controlled by a unvalied group control
This commit is contained in:
parent
c922bf3b30
commit
9e64896054
@ -1998,8 +1998,12 @@ namespace Opm
|
||||
return;
|
||||
}
|
||||
|
||||
if (!group.isInjectionGroup())
|
||||
if (!group.isInjectionGroup() || currentGroupControl == Group::InjectionCMode::NONE) {
|
||||
// use bhp as control eq and let the updateControl code find a vallied control
|
||||
const auto& controls = well.injectionControls(summaryState);
|
||||
control_eq = getSegmentPressure(0) - controls.bhp_limit;
|
||||
return;
|
||||
}
|
||||
|
||||
const auto& groupcontrols = group.injectionControls(summaryState);
|
||||
|
||||
@ -2045,7 +2049,8 @@ namespace Opm
|
||||
switch(currentGroupControl) {
|
||||
case Group::InjectionCMode::NONE:
|
||||
{
|
||||
OPM_DEFLOG_THROW(std::runtime_error, "NONE group control not implemented for injectors" , deferred_logger);
|
||||
// The NONE case is handled earlier
|
||||
assert(false);
|
||||
break;
|
||||
}
|
||||
case Group::InjectionCMode::RATE:
|
||||
@ -2119,8 +2124,12 @@ namespace Opm
|
||||
assembleGroupProductionControl(parent, well_state, schedule, summaryState, control_eq, efficiencyFactor, deferred_logger);
|
||||
return;
|
||||
}
|
||||
if (!group.isProductionGroup())
|
||||
if (!group.isProductionGroup() || currentGroupControl == Group::ProductionCMode::NONE) {
|
||||
// use bhp as control eq and let the updateControl code find a vallied control
|
||||
const auto& controls = well.productionControls(summaryState);
|
||||
control_eq = getSegmentPressure(0) - controls.bhp_limit;
|
||||
return;
|
||||
}
|
||||
|
||||
const auto& groupcontrols = group.productionControls(summaryState);
|
||||
const std::vector<double>& groupTargetReductions = well_state.currentProductionGroupReductionRates(group.name());
|
||||
@ -2128,7 +2137,8 @@ namespace Opm
|
||||
switch(currentGroupControl) {
|
||||
case Group::ProductionCMode::NONE:
|
||||
{
|
||||
OPM_DEFLOG_THROW(std::runtime_error, "NONE group control not implemented for producers" , deferred_logger);
|
||||
// The NONE case is handled earlier
|
||||
assert(false);
|
||||
break;
|
||||
}
|
||||
case Group::ProductionCMode::ORAT:
|
||||
|
@ -984,8 +984,13 @@ namespace Opm
|
||||
return;
|
||||
}
|
||||
|
||||
if (!group.isInjectionGroup())
|
||||
if (!group.isInjectionGroup() || currentGroupControl == Group::InjectionCMode::NONE) {
|
||||
// use bhp as control eq and let the updateControl code find a vallied control
|
||||
const auto& controls = well.injectionControls(summaryState);
|
||||
control_eq = getBhp() - controls.bhp_limit;
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
int phasePos;
|
||||
Well::GuideRateTarget wellTarget;
|
||||
@ -1025,7 +1030,8 @@ namespace Opm
|
||||
switch(currentGroupControl) {
|
||||
case Group::InjectionCMode::NONE:
|
||||
{
|
||||
OPM_DEFLOG_THROW(std::runtime_error, "NONE group control not implemented for injectors" , deferred_logger);
|
||||
// The NONE case is handled earlier
|
||||
assert(false);
|
||||
break;
|
||||
}
|
||||
case Group::InjectionCMode::RATE:
|
||||
@ -1113,8 +1119,12 @@ namespace Opm
|
||||
return;
|
||||
}
|
||||
|
||||
if (!group.isProductionGroup())
|
||||
if (!group.isProductionGroup() || currentGroupControl == Group::ProductionCMode::NONE) {
|
||||
// use bhp as control eq and let the updateControl code find a vallied control
|
||||
const auto& controls = well.productionControls(summaryState);
|
||||
control_eq = getBhp() - controls.bhp_limit;
|
||||
return;
|
||||
}
|
||||
|
||||
const auto& groupcontrols = group.productionControls(summaryState);
|
||||
|
||||
@ -1123,8 +1133,8 @@ namespace Opm
|
||||
switch(currentGroupControl) {
|
||||
case Group::ProductionCMode::NONE:
|
||||
{
|
||||
OPM_DEFLOG_THROW(std::runtime_error, "NONE group control not implemented for producers" , deferred_logger);
|
||||
break;
|
||||
// The NONE case is handled earlier
|
||||
assert(false);
|
||||
}
|
||||
case Group::ProductionCMode::ORAT:
|
||||
{
|
||||
|
Loading…
Reference in New Issue
Block a user