initialize all injectors with a rate to avoid singularities

This commit is contained in:
Tor Harald Sandve 2023-08-22 08:52:49 +02:00
parent 392573289f
commit 79e0b7256a

View File

@ -256,31 +256,28 @@ void SingleWellState::update_injector_targets(const Well& ecl_well, const Summar
return; return;
} }
// we initialize all open wells with a rate to avoid singularities
if (inj_controls.cmode == Well::InjectorCMode::GRUP) { double inj_surf_rate = 10.0 * Opm::unit::cubic(Opm::unit::meter) / Opm::unit::day;
this->bhp = this->perf_data.pressure_first_connection * bhp_safety_factor; if (inj_controls.cmode == Well::InjectorCMode::RATE) {
return; inj_surf_rate = inj_controls.surface_rate;
} }
if (inj_controls.cmode == Well::InjectorCMode::RATE) { switch (inj_controls.injector_type) {
auto inj_surf_rate = inj_controls.surface_rate; case InjectorType::WATER:
switch (inj_controls.injector_type) { assert(pu.phase_used[BlackoilPhases::Aqua]);
case InjectorType::WATER: this->surface_rates[pu.phase_pos[BlackoilPhases::Aqua]] = inj_surf_rate;
assert(pu.phase_used[BlackoilPhases::Aqua]); break;
this->surface_rates[pu.phase_pos[BlackoilPhases::Aqua]] = inj_surf_rate; case InjectorType::GAS:
break; assert(pu.phase_used[BlackoilPhases::Vapour]);
case InjectorType::GAS: this->surface_rates[pu.phase_pos[BlackoilPhases::Vapour]] = inj_surf_rate;
assert(pu.phase_used[BlackoilPhases::Vapour]); break;
this->surface_rates[pu.phase_pos[BlackoilPhases::Vapour]] = inj_surf_rate; case InjectorType::OIL:
break; assert(pu.phase_used[BlackoilPhases::Liquid]);
case InjectorType::OIL: this->surface_rates[pu.phase_pos[BlackoilPhases::Liquid]] = inj_surf_rate;
assert(pu.phase_used[BlackoilPhases::Liquid]); break;
this->surface_rates[pu.phase_pos[BlackoilPhases::Liquid]] = inj_surf_rate; case InjectorType::MULTI:
break; // Not currently handled, keep zero init.
case InjectorType::MULTI: break;
// Not currently handled, keep zero init.
break;
}
} }
if (cmode_is_bhp) if (cmode_is_bhp)