From 754e43e8b62a3408109c6e142c4696ed9832ac31 Mon Sep 17 00:00:00 2001 From: goncalvesmachadoc Date: Fri, 4 Aug 2023 14:33:51 +0200 Subject: [PATCH] report negative rates --- src/opm/output/eclipse/Summary.cpp | 45 ++++++++++++++++++++---------- 1 file changed, 30 insertions(+), 15 deletions(-) diff --git a/src/opm/output/eclipse/Summary.cpp b/src/opm/output/eclipse/Summary.cpp index dfb86a30e..00e21decb 100644 --- a/src/opm/output/eclipse/Summary.cpp +++ b/src/opm/output/eclipse/Summary.cpp @@ -703,46 +703,61 @@ inline quantity well_rate_target( const fn_args& args ) { if (injection){ if (phase == rt::wat){ - if (wtype.producer() || (wtype.injector_type() != Opm::InjectorType::WATER)) { - return zero; + if (wtype.producer()) { + const auto& production = well->productionControls(args.st); + return { -production.water_rate, rate_unit() }; + } else if ((wtype.injector_type() != Opm::InjectorType::WATER)) { + return zero; + } else { + const auto& injectionControl = well->injectionControls(args.st); + return { injectionControl.surface_rate, rate_unit() }; } - const auto& injectionControl = well->injectionControls(args.st); - return { injectionControl.surface_rate, rate_unit() }; } 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() }; + } else if ((wtype.injector_type() != Opm::InjectorType::OIL)){ return zero; + } else { + const auto& injectionControl = well->injectionControls(args.st); + return { injectionControl.surface_rate, rate_unit() }; } - const auto& injectionControl = well->injectionControls(args.st); - return { injectionControl.surface_rate, rate_unit() }; } 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() }; + } else if ((wtype.injector_type() != Opm::InjectorType::GAS)) { return zero; + } else { + const auto& injectionControl = well->injectionControls(args.st); + return { injectionControl.surface_rate, rate_unit() }; } - const auto& injectionControl = well->injectionControls(args.st); - return { injectionControl.surface_rate, rate_unit() }; - } else{ + } else { return zero; } } else { if (phase == rt::wat){ if (wtype.injector() ){ - return zero; + const auto& injectionControl = well->injectionControls(args.st); + return { -injectionControl.surface_rate, rate_unit() }; } const auto& production = well->productionControls(args.st); return { production.water_rate, rate_unit() }; } else if (phase == rt::oil){ if (wtype.injector() ){ - return zero; + const auto& injectionControl = well->injectionControls(args.st); + return { -injectionControl.surface_rate, rate_unit() }; } const auto& production = well->productionControls(args.st); return { production.oil_rate, rate_unit() }; } else if (phase == rt::gas){ if (wtype.injector() ){ - return zero; + const auto& injectionControl = well->injectionControls(args.st); + return { -injectionControl.surface_rate, rate_unit() }; } const auto& production = well->productionControls(args.st); return { production.gas_rate, rate_unit() }; - } else{ + } else { return zero; } }