From c234d4faa586c33e889b49b3937b98ffdede2c0a Mon Sep 17 00:00:00 2001 From: Arne Morten Kvarving Date: Fri, 12 May 2023 15:12:26 +0200 Subject: [PATCH] StandardWell: use scalar mobilities in computeConnLevel(Inj|Prod)Ind unifies code with MultisegmentWell --- opm/simulators/wells/StandardWell.hpp | 4 ++-- opm/simulators/wells/StandardWell_impl.hpp | 13 ++++++------- 2 files changed, 8 insertions(+), 9 deletions(-) diff --git a/opm/simulators/wells/StandardWell.hpp b/opm/simulators/wells/StandardWell.hpp index 815cb0933..0ad66ff84 100644 --- a/opm/simulators/wells/StandardWell.hpp +++ b/opm/simulators/wells/StandardWell.hpp @@ -243,13 +243,13 @@ namespace Opm void computeConnLevelProdInd(const FluidState& fs, const std::function& connPICalc, - const std::vector& mobility, + const std::vector& mobility, double* connPI) const; void computeConnLevelInjInd(const typename StandardWell::FluidState& fs, const Phase preferred_phase, const std::function& connIICalc, - const std::vector& mobility, + const std::vector& mobility, double* connII, DeferredLogger& deferred_logger) const; diff --git a/opm/simulators/wells/StandardWell_impl.hpp b/opm/simulators/wells/StandardWell_impl.hpp index 71bf699e8..fbc558a96 100644 --- a/opm/simulators/wells/StandardWell_impl.hpp +++ b/opm/simulators/wells/StandardWell_impl.hpp @@ -1341,7 +1341,7 @@ namespace Opm return wellPICalc.connectionProdIndStandard(allPerfID, mobility); }; - std::vector mob(this->num_components_, {this->primary_variables_.numWellEq() + Indices::numEq, 0.0}); + std::vector mob(this->num_components_, 0.0); getMobility(ebosSimulator, static_cast(subsetPerfID), mob, deferred_logger); const auto& fs = fluidState(subsetPerfID); @@ -2404,7 +2404,7 @@ namespace Opm StandardWell:: computeConnLevelProdInd(const typename StandardWell::FluidState& fs, const std::function& connPICalc, - const std::vector& mobility, + const std::vector& mobility, double* connPI) const { const auto& pu = this->phaseUsage(); @@ -2413,7 +2413,7 @@ namespace Opm // Note: E100's notion of PI value phase mobility includes // the reciprocal FVF. const auto connMob = - mobility[ this->flowPhaseToEbosCompIdx(p) ].value() + mobility[ this->flowPhaseToEbosCompIdx(p) ] * fs.invB(this->flowPhaseToEbosPhaseIdx(p)).value(); connPI[p] = connPICalc(connMob); @@ -2443,7 +2443,7 @@ namespace Opm computeConnLevelInjInd(const typename StandardWell::FluidState& fs, const Phase preferred_phase, const std::function& connIICalc, - const std::vector& mobility, + const std::vector& mobility, double* connII, DeferredLogger& deferred_logger) const { @@ -2468,9 +2468,8 @@ namespace Opm deferred_logger); } - const auto zero = EvalWell{this->primary_variables_.numWellEq() + Indices::numEq, 0.0}; - const auto mt = std::accumulate(mobility.begin(), mobility.end(), zero); - connII[phase_pos] = connIICalc(mt.value() * fs.invB(this->flowPhaseToEbosPhaseIdx(phase_pos)).value()); + const auto mt = std::accumulate(mobility.begin(), mobility.end(), 0.0); + connII[phase_pos] = connIICalc(mt * fs.invB(this->flowPhaseToEbosPhaseIdx(phase_pos)).value()); }