diff --git a/opm/simulators/wells/RateConverter.hpp b/opm/simulators/wells/RateConverter.hpp index 9704d2cb7..91ac14afe 100644 --- a/opm/simulators/wells/RateConverter.hpp +++ b/opm/simulators/wells/RateConverter.hpp @@ -552,6 +552,26 @@ namespace Opm { return { rs, rv }; } +#define BURN_RESV_BRIDGES 0 + +#if !BURN_RESV_BRIDGES + + auto b = rs; + if (io >= 0 && ig >= 0) { + b = surface_rates[ig] / (surface_rates[io] + 1.0e-15); + } + const double Rs = std::min(rs, b); + + b = rv; + if (io >= 0 && ig >= 0) { + b = surface_rates[io] / (surface_rates[ig] + 1.0e-15); + } + const double Rv = std::min(rv, b); + + return { Rs, Rv }; + +#else // BURN_RESV_BRIDGES + auto eps = std::copysign(1.0e-15, surface_rates[io]); const auto Rs = surface_rates[ig] / (surface_rates[io] + eps); @@ -562,6 +582,10 @@ namespace Opm { std::clamp(static_cast(Rs), 0.0, rs), std::clamp(static_cast(Rv), 0.0, rv) }; + +#endif // BURN_RESV_BRIDGES + +#undef BURN_RESV_BRIDGES } };