mirror of
https://github.com/OPM/opm-simulators.git
synced 2025-02-25 18:55:30 -06:00
StandardWell: use scalar mobilities in computeConnLevel(Inj|Prod)Ind
unifies code with MultisegmentWell
This commit is contained in:
@@ -243,13 +243,13 @@ namespace Opm
|
|||||||
|
|
||||||
void computeConnLevelProdInd(const FluidState& fs,
|
void computeConnLevelProdInd(const FluidState& fs,
|
||||||
const std::function<double(const double)>& connPICalc,
|
const std::function<double(const double)>& connPICalc,
|
||||||
const std::vector<EvalWell>& mobility,
|
const std::vector<Scalar>& mobility,
|
||||||
double* connPI) const;
|
double* connPI) const;
|
||||||
|
|
||||||
void computeConnLevelInjInd(const typename StandardWell<TypeTag>::FluidState& fs,
|
void computeConnLevelInjInd(const typename StandardWell<TypeTag>::FluidState& fs,
|
||||||
const Phase preferred_phase,
|
const Phase preferred_phase,
|
||||||
const std::function<double(const double)>& connIICalc,
|
const std::function<double(const double)>& connIICalc,
|
||||||
const std::vector<EvalWell>& mobility,
|
const std::vector<Scalar>& mobility,
|
||||||
double* connII,
|
double* connII,
|
||||||
DeferredLogger& deferred_logger) const;
|
DeferredLogger& deferred_logger) const;
|
||||||
|
|
||||||
|
|||||||
@@ -1341,7 +1341,7 @@ namespace Opm
|
|||||||
return wellPICalc.connectionProdIndStandard(allPerfID, mobility);
|
return wellPICalc.connectionProdIndStandard(allPerfID, mobility);
|
||||||
};
|
};
|
||||||
|
|
||||||
std::vector<EvalWell> mob(this->num_components_, {this->primary_variables_.numWellEq() + Indices::numEq, 0.0});
|
std::vector<Scalar> mob(this->num_components_, 0.0);
|
||||||
getMobility(ebosSimulator, static_cast<int>(subsetPerfID), mob, deferred_logger);
|
getMobility(ebosSimulator, static_cast<int>(subsetPerfID), mob, deferred_logger);
|
||||||
|
|
||||||
const auto& fs = fluidState(subsetPerfID);
|
const auto& fs = fluidState(subsetPerfID);
|
||||||
@@ -2404,7 +2404,7 @@ namespace Opm
|
|||||||
StandardWell<TypeTag>::
|
StandardWell<TypeTag>::
|
||||||
computeConnLevelProdInd(const typename StandardWell<TypeTag>::FluidState& fs,
|
computeConnLevelProdInd(const typename StandardWell<TypeTag>::FluidState& fs,
|
||||||
const std::function<double(const double)>& connPICalc,
|
const std::function<double(const double)>& connPICalc,
|
||||||
const std::vector<EvalWell>& mobility,
|
const std::vector<Scalar>& mobility,
|
||||||
double* connPI) const
|
double* connPI) const
|
||||||
{
|
{
|
||||||
const auto& pu = this->phaseUsage();
|
const auto& pu = this->phaseUsage();
|
||||||
@@ -2413,7 +2413,7 @@ namespace Opm
|
|||||||
// Note: E100's notion of PI value phase mobility includes
|
// Note: E100's notion of PI value phase mobility includes
|
||||||
// the reciprocal FVF.
|
// the reciprocal FVF.
|
||||||
const auto connMob =
|
const auto connMob =
|
||||||
mobility[ this->flowPhaseToEbosCompIdx(p) ].value()
|
mobility[ this->flowPhaseToEbosCompIdx(p) ]
|
||||||
* fs.invB(this->flowPhaseToEbosPhaseIdx(p)).value();
|
* fs.invB(this->flowPhaseToEbosPhaseIdx(p)).value();
|
||||||
|
|
||||||
connPI[p] = connPICalc(connMob);
|
connPI[p] = connPICalc(connMob);
|
||||||
@@ -2443,7 +2443,7 @@ namespace Opm
|
|||||||
computeConnLevelInjInd(const typename StandardWell<TypeTag>::FluidState& fs,
|
computeConnLevelInjInd(const typename StandardWell<TypeTag>::FluidState& fs,
|
||||||
const Phase preferred_phase,
|
const Phase preferred_phase,
|
||||||
const std::function<double(const double)>& connIICalc,
|
const std::function<double(const double)>& connIICalc,
|
||||||
const std::vector<EvalWell>& mobility,
|
const std::vector<Scalar>& mobility,
|
||||||
double* connII,
|
double* connII,
|
||||||
DeferredLogger& deferred_logger) const
|
DeferredLogger& deferred_logger) const
|
||||||
{
|
{
|
||||||
@@ -2468,9 +2468,8 @@ namespace Opm
|
|||||||
deferred_logger);
|
deferred_logger);
|
||||||
}
|
}
|
||||||
|
|
||||||
const auto zero = EvalWell{this->primary_variables_.numWellEq() + Indices::numEq, 0.0};
|
const auto mt = std::accumulate(mobility.begin(), mobility.end(), 0.0);
|
||||||
const auto mt = std::accumulate(mobility.begin(), mobility.end(), zero);
|
connII[phase_pos] = connIICalc(mt * fs.invB(this->flowPhaseToEbosPhaseIdx(phase_pos)).value());
|
||||||
connII[phase_pos] = connIICalc(mt.value() * fs.invB(this->flowPhaseToEbosPhaseIdx(phase_pos)).value());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user