When loading from restart: set wells active control also for SHUT

This commit is contained in:
Joakim Hove 2020-10-20 08:36:35 +02:00
parent 5c6fa9cc51
commit 67f24bd3a7

View File

@ -188,43 +188,42 @@ Well::Well(const RestartIO::RstWell& rst_well,
p->addProductionControl( Well::ProducerCMode::THP ); p->addProductionControl( Well::ProducerCMode::THP );
} }
if (this->status == Well::Status::OPEN) { switch (rst_well.active_control) {
switch (rst_well.active_control) { case CModeVal::Group:
case CModeVal::Group: p->controlMode = Well::ProducerCMode::GRUP;
p->controlMode = Well::ProducerCMode::GRUP; p->addProductionControl(Well::ProducerCMode::GRUP);
p->addProductionControl(Well::ProducerCMode::GRUP);
break; break;
case CModeVal::OilRate: case CModeVal::OilRate:
p->controlMode = Well::ProducerCMode::ORAT; p->controlMode = Well::ProducerCMode::ORAT;
break; p->addProductionControl(Well::ProducerCMode::ORAT);
case CModeVal::WatRate: break;
p->controlMode = Well::ProducerCMode::WRAT; case CModeVal::WatRate:
p->addProductionControl(Well::ProducerCMode::WRAT); p->controlMode = Well::ProducerCMode::WRAT;
break; p->addProductionControl(Well::ProducerCMode::WRAT);
case CModeVal::GasRate: break;
p->controlMode = Well::ProducerCMode::GRAT; case CModeVal::GasRate:
p->addProductionControl(Well::ProducerCMode::GRAT); p->controlMode = Well::ProducerCMode::GRAT;
break; p->addProductionControl(Well::ProducerCMode::GRAT);
case CModeVal::LiqRate: break;
p->controlMode = Well::ProducerCMode::LRAT; case CModeVal::LiqRate:
p->addProductionControl(Well::ProducerCMode::LRAT); p->controlMode = Well::ProducerCMode::LRAT;
break; p->addProductionControl(Well::ProducerCMode::LRAT);
case CModeVal::ResVRate: break;
p->controlMode = Well::ProducerCMode::RESV; case CModeVal::ResVRate:
p->addProductionControl(Well::ProducerCMode::RESV); p->controlMode = Well::ProducerCMode::RESV;
break; p->addProductionControl(Well::ProducerCMode::RESV);
case CModeVal::THP: break;
p->controlMode = Well::ProducerCMode::THP; case CModeVal::THP:
p->addProductionControl(Well::ProducerCMode::THP); p->controlMode = Well::ProducerCMode::THP;
break; p->addProductionControl(Well::ProducerCMode::THP);
case CModeVal::BHP: break;
p->controlMode = Well::ProducerCMode::BHP; case CModeVal::BHP:
p->addProductionControl(Well::ProducerCMode::BHP); p->controlMode = Well::ProducerCMode::BHP;
break; p->addProductionControl(Well::ProducerCMode::BHP);
default: break;
throw std::invalid_argument("Can not convert integer value: " + std::to_string(rst_well.active_control) default:
+ " to control type"); throw std::invalid_argument(fmt::format("Can not convert integer value:{} to control type", rst_well.active_control));
}
} }
p->addProductionControl(Well::ProducerCMode::BHP); p->addProductionControl(Well::ProducerCMode::BHP);
@ -236,33 +235,33 @@ Well::Well(const RestartIO::RstWell& rst_well,
i->VFPTableNumber = rst_well.vfp_table; i->VFPTableNumber = rst_well.vfp_table;
i->predictionMode = this->prediction_mode; i->predictionMode = this->prediction_mode;
if (this->status == Well::Status::OPEN) { switch (rst_well.active_control) {
switch (rst_well.active_control) { case CModeVal::Group:
case CModeVal::Group: i->controlMode = Well::InjectorCMode::GRUP;
i->controlMode = Well::InjectorCMode::GRUP; break;
break; case CModeVal::OilRate:
case CModeVal::OilRate: [[fallthrough]]; [[fallthrough]];
case CModeVal::WatRate: [[fallthrough]]; case CModeVal::WatRate:
case CModeVal::GasRate: [[fallthrough]]; [[fallthrough]];
case CModeVal::LiqRate: case CModeVal::GasRate:
i->controlMode = Well::InjectorCMode::RATE; [[fallthrough]];
i->addInjectionControl(Well::InjectorCMode::RATE); case CModeVal::LiqRate:
break; i->controlMode = Well::InjectorCMode::RATE;
case CModeVal::ResVRate: i->addInjectionControl(Well::InjectorCMode::RATE);
i->controlMode = Well::InjectorCMode::RESV; break;
i->addInjectionControl(Well::InjectorCMode::RESV); case CModeVal::ResVRate:
break; i->controlMode = Well::InjectorCMode::RESV;
case CModeVal::THP: i->addInjectionControl(Well::InjectorCMode::RESV);
i->controlMode = Well::InjectorCMode::THP; break;
i->addInjectionControl(Well::InjectorCMode::THP); case CModeVal::THP:
break; i->controlMode = Well::InjectorCMode::THP;
case CModeVal::BHP: i->addInjectionControl(Well::InjectorCMode::THP);
i->controlMode = Well::InjectorCMode::BHP; break;
break; case CModeVal::BHP:
default: i->controlMode = Well::InjectorCMode::BHP;
throw std::invalid_argument( break;
"Could not convert integer value: " + std::to_string(rst_well.active_control) + " to control type"); default:
} throw std::invalid_argument(fmt::format("Can not convert integer value:{} to control type", rst_well.active_control));
} }
i->injectorType = rst_well.wtype.injector_type(); i->injectorType = rst_well.wtype.injector_type();