Support Using Different Types for Surface and Reservoir Rates

Simplifies using pointers here.
This commit is contained in:
Bård Skaflestad 2022-10-18 18:17:01 +02:00
parent 3c31b7bafe
commit 7d9beb3506

View File

@ -422,18 +422,16 @@ namespace Opm {
* \param[out] voidage_rates Reservoir volume flow rates for all
* active phases.
*/
template <class Rates>
template <typename SurfaceRates, typename VoidageRates>
void calcReservoirVoidageRates(const int pvtRegionIdx,
const double p,
const double rs,
const double rv,
const double T,
const double saltConcentration,
const Rates& surface_rates,
Rates& voidage_rates) const
const SurfaceRates& surface_rates,
VoidageRates& voidage_rates) const
{
std::fill(voidage_rates.begin(), voidage_rates.end(), 0.0);
const auto& pu = this->phaseUsage_;
const auto iw = RegionAttributeHelpers::PhasePos::water(pu);
const auto io = RegionAttributeHelpers::PhasePos::oil (pu);
@ -442,6 +440,8 @@ namespace Opm {
const auto [Rs, Rv] = this->
dissolvedVaporisedRatio(io, ig, rs, rv, surface_rates);
std::fill_n(&voidage_rates[0], pu.num_phases, 0.0);
if (RegionAttributeHelpers::PhaseUsed::water(pu)) {
// q[w]_r = q[w]_s / bw
const auto bw = FluidSystem::waterPvt()