mirror of
https://github.com/OPM/opm-simulators.git
synced 2025-02-25 18:55:30 -06:00
Use well index when iterating over solvent perf rates
This commit is contained in:
parent
8e0ed53207
commit
5437cfa37a
@ -628,7 +628,8 @@ namespace Opm
|
||||
|
||||
// Store the perforation phase flux for later usage.
|
||||
if (has_solvent && componentIdx == contiSolventEqIdx) {
|
||||
well_state.perfRateSolvent()[first_perf_ + perf] = cq_s[componentIdx].value();
|
||||
auto * perf_rate_solvent = &well_state.perfRateSolvent()[first_perf_];
|
||||
perf_rate_solvent[perf] = cq_s[componentIdx].value();
|
||||
} else {
|
||||
perf_rates[perf*np + ebosCompIdxToFlowCompIdx(componentIdx)] = cq_s[componentIdx].value();
|
||||
}
|
||||
@ -825,7 +826,8 @@ namespace Opm
|
||||
const double dis_gas_frac = perf_dis_gas_rate / cq_s_zfrac_effective.value();
|
||||
cq_s_zfrac_effective *= extendEval(dis_gas_frac*intQuants.xVolume() + (1.0-dis_gas_frac)*intQuants.yVolume());
|
||||
}
|
||||
well_state.perfRateSolvent()[first_perf_ + perf] = cq_s_zfrac_effective.value();
|
||||
auto * perf_rate_solvent = &well_state.perfRateSolvent()[first_perf_];
|
||||
perf_rate_solvent[perf] = cq_s_zfrac_effective.value();
|
||||
|
||||
cq_s_zfrac_effective *= well_efficiency_factor_;
|
||||
connectionRates[perf][contiZfracEqIdx] = Base::restrictEval(cq_s_zfrac_effective);
|
||||
@ -2099,12 +2101,17 @@ namespace Opm
|
||||
const int np = number_of_phases_;
|
||||
std::vector<double> perfRates(b_perf.size(),0.0);
|
||||
const auto * perf_rates_state = &well_state.perfPhaseRates()[first_perf_ * np];
|
||||
|
||||
for (int perf = 0; perf < nperf; ++perf) {
|
||||
for (int comp = 0; comp < np; ++comp) {
|
||||
perfRates[perf * num_components_ + comp] = perf_rates_state[perf * np + ebosCompIdxToFlowCompIdx(comp)];
|
||||
}
|
||||
if constexpr (has_solvent) {
|
||||
perfRates[perf * num_components_ + contiSolventEqIdx] = well_state.perfRateSolvent()[first_perf_ + perf];
|
||||
}
|
||||
|
||||
if constexpr (has_solvent) {
|
||||
const auto * solvent_perf_rates_state = &well_state.perfRateSolvent()[this->first_perf_];
|
||||
for (int perf = 0; perf < nperf; ++perf) {
|
||||
perfRates[perf * num_components_ + contiSolventEqIdx] = solvent_perf_rates_state[perf];
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -794,7 +794,8 @@ void WellState::reportConnections(data::Well& well,
|
||||
comp.rates.set( rt::brine, this->perfRateBrine()[wt.second[1] + local_comp_index]);
|
||||
}
|
||||
if ( pu.has_solvent ) {
|
||||
comp.rates.set( rt::solvent, this->perfRateSolvent()[wt.second[1] + local_comp_index]);
|
||||
const auto * perf_solvent_rate = &this->perfRateSolvent()[wt.second[1]];
|
||||
comp.rates.set( rt::solvent, perf_solvent_rate[local_comp_index] );
|
||||
}
|
||||
|
||||
++local_comp_index;
|
||||
@ -1010,8 +1011,8 @@ WellState::calculateSegmentRates(const std::vector<std::vector<int>>& segment_in
|
||||
|
||||
double WellState::solventWellRate(const int w) const
|
||||
{
|
||||
return parallel_well_info_[w]->sumPerfValues(&perfRateSolvent_[0] + first_perf_index_[w],
|
||||
&perfRateSolvent_[0] + first_perf_index_[w] + num_perf_[w]);
|
||||
const auto * perf_rates_solvent = &perfRateSolvent_[first_perf_index_[w]];
|
||||
return parallel_well_info_[w]->sumPerfValues(perf_rates_solvent, perf_rates_solvent + this->num_perf_[w]);
|
||||
}
|
||||
|
||||
double WellState::polymerWellRate(const int w) const
|
||||
|
Loading…
Reference in New Issue
Block a user