changed: put calculation of production gas-water perf rates in separate method

This commit is contained in:
Arne Morten Kvarving 2023-05-05 09:55:26 +02:00
parent 21aa783d88
commit 516320699e
2 changed files with 32 additions and 12 deletions

View File

@ -473,6 +473,12 @@ namespace Opm
const Value& rv,
const Value& rs,
const Value& rvw) const;
template<class Value>
void gasWaterPerfRateProd(std::vector<Value>& cq_s,
PerforationRates& perf_rates,
const Value& rvw,
const Value& rsw) const;
};
}

View File

@ -234,18 +234,7 @@ namespace Opm
if (FluidSystem::phaseIsActive(FluidSystem::oilPhaseIdx) && FluidSystem::phaseIsActive(FluidSystem::gasPhaseIdx)) {
gasOilPerfRateProd(cq_s, perf_rates, rv, rs, rvw);
} else if (FluidSystem::phaseIsActive(FluidSystem::waterPhaseIdx) && FluidSystem::phaseIsActive(FluidSystem::gasPhaseIdx)) {
const unsigned waterCompIdx = Indices::canonicalToActiveComponentIndex(FluidSystem::waterCompIdx);
const unsigned gasCompIdx = Indices::canonicalToActiveComponentIndex(FluidSystem::gasCompIdx);
const Value cq_sWat = cq_s[waterCompIdx];
const Value cq_sGas = cq_s[gasCompIdx];
const Value vap_wat = rvw * cq_sGas;
const Value dis_gas_wat = rsw * cq_sWat;
cq_s[waterCompIdx] += vap_wat;
cq_s[gasCompIdx] += dis_gas_wat;
if (this->isProducer()) {
perf_rates.vap_wat = getValue(vap_wat);
perf_rates.dis_gas_in_water = getValue(dis_gas_wat);
}
gasWaterPerfRateProd(cq_s, perf_rates, rvw, rsw);
}
} else {
// Do nothing if crossflow is not allowed
@ -2482,4 +2471,29 @@ namespace Opm
perf_rates.vap_wat = getValue(vap_wat);
}
}
template <typename TypeTag>
template<class Value>
void
StandardWell<TypeTag>::
gasWaterPerfRateProd(std::vector<Value>& cq_s,
PerforationRates& perf_rates,
const Value& rvw,
const Value& rsw) const
{
const unsigned waterCompIdx = Indices::canonicalToActiveComponentIndex(FluidSystem::waterCompIdx);
const unsigned gasCompIdx = Indices::canonicalToActiveComponentIndex(FluidSystem::gasCompIdx);
const Value cq_sWat = cq_s[waterCompIdx];
const Value cq_sGas = cq_s[gasCompIdx];
const Value vap_wat = rvw * cq_sGas;
const Value dis_gas_wat = rsw * cq_sWat;
cq_s[waterCompIdx] += vap_wat;
cq_s[gasCompIdx] += dis_gas_wat;
if (this->isProducer()) {
perf_rates.vap_wat = getValue(vap_wat);
perf_rates.dis_gas_in_water = getValue(dis_gas_wat);
}
}
} // namespace Opm