Load injection guide rates from restart file
This commit is contained in:
@@ -46,6 +46,8 @@ struct RstGroup {
|
||||
int ginj_cmode;
|
||||
int prod_guide_rate_def;
|
||||
int exceed_action;
|
||||
int inj_water_guide_rate_def;
|
||||
int inj_gas_guide_rate_def;
|
||||
|
||||
float oil_rate_limit;
|
||||
float water_rate_limit;
|
||||
@@ -62,6 +64,8 @@ struct RstGroup {
|
||||
float glift_max_supply;
|
||||
float glift_max_rate;
|
||||
float efficiency_factor;
|
||||
float inj_water_guide_rate;
|
||||
float inj_gas_guide_rate;
|
||||
|
||||
double oil_production_rate;
|
||||
double water_production_rate;
|
||||
|
||||
@@ -54,6 +54,8 @@ RstGroup::RstGroup(const ::Opm::UnitSystem& unit_system,
|
||||
ginj_cmode(igrp[header.nwgmax + VI::IGroup::GConInjeGInjCMode]),
|
||||
prod_guide_rate_def(igrp[header.nwgmax + VI::IGroup::GuideRateDef]),
|
||||
exceed_action(igrp[header.nwgmax + VI::IGroup::ExceedAction]),
|
||||
inj_water_guide_rate_def(igrp[header.nwgmax + VI::IGroup::GConInjeWaterGuideRateMode]),
|
||||
inj_gas_guide_rate_def(igrp[header.nwgmax + VI::IGroup::GConInjeGasGuideRateMode]),
|
||||
// The values oil_rate_limit -> gas_voidage_limit will be used in UDA
|
||||
// values. The UDA values are responsible for unit conversion and raw values
|
||||
// are internalized here.
|
||||
@@ -72,6 +74,8 @@ RstGroup::RstGroup(const ::Opm::UnitSystem& unit_system,
|
||||
glift_max_supply( unit_system.to_si(M::gas_surface_rate, sgrp[VI::SGroup::GLOMaxSupply])),
|
||||
glift_max_rate( unit_system.to_si(M::gas_surface_rate, sgrp[VI::SGroup::GLOMaxRate])),
|
||||
efficiency_factor( unit_system.to_si(M::identity, sgrp[VI::SGroup::EfficiencyFactor])),
|
||||
inj_water_guide_rate( sgrp_value(sgrp[VI::SGroup::waterGuideRate])),
|
||||
inj_gas_guide_rate( sgrp_value(sgrp[VI::SGroup::gasGuideRate])),
|
||||
oil_production_rate( unit_system.to_si(M::liquid_surface_rate, xgrp[VI::XGroup::OilPrRate])),
|
||||
water_production_rate( unit_system.to_si(M::liquid_surface_rate, xgrp[VI::XGroup::WatPrRate])),
|
||||
gas_production_rate( unit_system.to_si(M::gas_surface_rate, xgrp[VI::XGroup::GasPrRate])),
|
||||
|
||||
@@ -128,7 +128,7 @@ namespace {
|
||||
production.liquid_target.update(rst_group.liquid_rate_limit);
|
||||
production.cmode = Opm::Group::ProductionCModeFromInt(rst_group.prod_cmode);
|
||||
production.exceed_action = Opm::Group::ExceedActionFromInt(rst_group.exceed_action);
|
||||
production.guide_rate_def = Group::GuideRateProdTargetFromInt(rst_group.prod_guide_rate_def);
|
||||
production.guide_rate_def = Opm::Group::GuideRateProdTargetFromInt(rst_group.prod_guide_rate_def);
|
||||
|
||||
if ((production.cmode == Opm::Group::ProductionCMode::ORAT) ||
|
||||
(production.cmode == Opm::Group::ProductionCMode::WRAT) ||
|
||||
@@ -167,6 +167,8 @@ namespace {
|
||||
injection.target_void_fraction.update(rst_group.gas_voidage_limit);
|
||||
injection.phase = Opm::Phase::GAS;
|
||||
injection.cmode = Opm::Group::InjectionCModeFromInt(rst_group.ginj_cmode);
|
||||
injection.guide_rate_def = Opm::Group::GuideRateInjTargetFromInt(rst_group.inj_gas_guide_rate_def);
|
||||
injection.guide_rate = rst_group.inj_gas_guide_rate;
|
||||
|
||||
assign_injection_controls(active, injection);
|
||||
|
||||
@@ -185,6 +187,8 @@ namespace {
|
||||
injection.target_void_fraction.update(rst_group.water_voidage_limit);
|
||||
injection.phase = Opm::Phase::WATER;
|
||||
injection.cmode = Opm::Group::InjectionCModeFromInt(rst_group.winj_cmode);
|
||||
injection.guide_rate_def = Opm::Group::GuideRateInjTargetFromInt(rst_group.inj_water_guide_rate_def);
|
||||
injection.guide_rate = rst_group.inj_water_guide_rate;
|
||||
|
||||
assign_injection_controls(active, injection);
|
||||
|
||||
@@ -1134,6 +1138,23 @@ int Group::GuideRateInjTargetToInt(GuideRateInjTarget target) {
|
||||
}
|
||||
}
|
||||
|
||||
Group::GuideRateInjTarget Group::GuideRateInjTargetFromInt(int ecl_id) {
|
||||
switch (ecl_id) {
|
||||
case 1:
|
||||
return GuideRateInjTarget::RATE;
|
||||
case 2:
|
||||
return GuideRateInjTarget::RESV;
|
||||
case 3:
|
||||
return GuideRateInjTarget::VOID;
|
||||
case 4:
|
||||
return GuideRateInjTarget::NETV;
|
||||
default:
|
||||
return GuideRateInjTarget::NO_GUIDE_RATE;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
Group::GuideRateProdTarget Group::GuideRateProdTargetFromString( const std::string& stringValue ) {
|
||||
if (stringValue == "OIL")
|
||||
|
||||
Reference in New Issue
Block a user