report negative rates

This commit is contained in:
goncalvesmachadoc 2023-08-04 14:33:51 +02:00
parent e79d612d55
commit 754e43e8b6

View File

@ -703,46 +703,61 @@ inline quantity well_rate_target( const fn_args& args ) {
if (injection){ if (injection){
if (phase == rt::wat){ if (phase == rt::wat){
if (wtype.producer() || (wtype.injector_type() != Opm::InjectorType::WATER)) { if (wtype.producer()) {
const auto& production = well->productionControls(args.st);
return { -production.water_rate, rate_unit<Opm::Phase::WATER>() };
} else if ((wtype.injector_type() != Opm::InjectorType::WATER)) {
return zero; return zero;
} else {
const auto& injectionControl = well->injectionControls(args.st);
return { injectionControl.surface_rate, rate_unit<Opm::Phase::WATER>() };
} }
const auto& injectionControl = well->injectionControls(args.st);
return { injectionControl.surface_rate, rate_unit<Opm::Phase::WATER>() };
} else if (phase == rt::oil){ } else if (phase == rt::oil){
if (wtype.producer() || (wtype.injector_type() != Opm::InjectorType::OIL)){ if (wtype.producer()) {
const auto& production = well->productionControls(args.st);
return { -production.oil_rate, rate_unit<Opm::Phase::OIL>() };
} else if ((wtype.injector_type() != Opm::InjectorType::OIL)){
return zero; return zero;
} else {
const auto& injectionControl = well->injectionControls(args.st);
return { injectionControl.surface_rate, rate_unit<Opm::Phase::OIL>() };
} }
const auto& injectionControl = well->injectionControls(args.st);
return { injectionControl.surface_rate, rate_unit<Opm::Phase::OIL>() };
} else if (phase == rt::gas){ } else if (phase == rt::gas){
if (wtype.producer() || (wtype.injector_type() != Opm::InjectorType::GAS)) { if (wtype.producer()) {
const auto& production = well->productionControls(args.st);
return { -production.gas_rate, rate_unit<Opm::Phase::GAS>() };
} else if ((wtype.injector_type() != Opm::InjectorType::GAS)) {
return zero; return zero;
} else {
const auto& injectionControl = well->injectionControls(args.st);
return { injectionControl.surface_rate, rate_unit<Opm::Phase::GAS>() };
} }
const auto& injectionControl = well->injectionControls(args.st); } else {
return { injectionControl.surface_rate, rate_unit<Opm::Phase::GAS>() };
} else{
return zero; return zero;
} }
} else { } else {
if (phase == rt::wat){ if (phase == rt::wat){
if (wtype.injector() ){ if (wtype.injector() ){
return zero; const auto& injectionControl = well->injectionControls(args.st);
return { -injectionControl.surface_rate, rate_unit<Opm::Phase::WATER>() };
} }
const auto& production = well->productionControls(args.st); const auto& production = well->productionControls(args.st);
return { production.water_rate, rate_unit<Opm::Phase::WATER>() }; return { production.water_rate, rate_unit<Opm::Phase::WATER>() };
} else if (phase == rt::oil){ } else if (phase == rt::oil){
if (wtype.injector() ){ if (wtype.injector() ){
return zero; const auto& injectionControl = well->injectionControls(args.st);
return { -injectionControl.surface_rate, rate_unit<Opm::Phase::OIL>() };
} }
const auto& production = well->productionControls(args.st); const auto& production = well->productionControls(args.st);
return { production.oil_rate, rate_unit<Opm::Phase::OIL>() }; return { production.oil_rate, rate_unit<Opm::Phase::OIL>() };
} else if (phase == rt::gas){ } else if (phase == rt::gas){
if (wtype.injector() ){ if (wtype.injector() ){
return zero; const auto& injectionControl = well->injectionControls(args.st);
return { -injectionControl.surface_rate, rate_unit<Opm::Phase::GAS>() };
} }
const auto& production = well->productionControls(args.st); const auto& production = well->productionControls(args.st);
return { production.gas_rate, rate_unit<Opm::Phase::GAS>() }; return { production.gas_rate, rate_unit<Opm::Phase::GAS>() };
} else{ } else {
return zero; return zero;
} }
} }