Use well index for well water perf velocity

This commit is contained in:
Joakim Hove
2021-06-02 11:32:11 +02:00
parent 8f9a3f0140
commit f62b0a5d1e
3 changed files with 8 additions and 8 deletions

View File

@@ -1305,7 +1305,7 @@ namespace Opm
// other primary variables related to polymer injectivity study // other primary variables related to polymer injectivity study
if constexpr (Base::has_polymermw) { if constexpr (Base::has_polymermw) {
if (this->isInjector()) { if (this->isInjector()) {
auto * perf_water_velocity = &well_state.perfWaterVelocity()[this->first_perf_]; auto * perf_water_velocity = well_state.perfWaterVelocity(this->index_of_well_);
auto * perf_skin_pressure = well_state.perfSkinPressure(this->index_of_well_); auto * perf_skin_pressure = well_state.perfSkinPressure(this->index_of_well_);
for (int perf = 0; perf < number_of_perforations_; ++perf) { for (int perf = 0; perf < number_of_perforations_; ++perf) {
perf_water_velocity[perf] = primary_variables_[Bhp + 1 + perf]; perf_water_velocity[perf] = primary_variables_[Bhp + 1 + perf];
@@ -2833,7 +2833,7 @@ namespace Opm
// other primary variables related to polymer injection // other primary variables related to polymer injection
if constexpr (Base::has_polymermw) { if constexpr (Base::has_polymermw) {
if (this->isInjector()) { if (this->isInjector()) {
const auto * water_velocity = &well_state.perfWaterVelocity()[first_perf_]; const auto * water_velocity = well_state.perfWaterVelocity(this->index_of_well_);
const auto * skin_pressure = well_state.perfSkinPressure(this->index_of_well_); const auto * skin_pressure = well_state.perfSkinPressure(this->index_of_well_);
for (int perf = 0; perf < number_of_perforations_; ++perf) { for (int perf = 0; perf < number_of_perforations_; ++perf) {
primary_variables_[Bhp + 1 + perf] = water_velocity[perf]; primary_variables_[Bhp + 1 + perf] = water_velocity[perf];

View File

@@ -482,11 +482,11 @@ void WellState::init(const std::vector<double>& cellPressures,
{ {
auto * throughput_target = this->perfThroughput(newIndex); auto * throughput_target = this->perfThroughput(newIndex);
auto * pressure_target = this->perfSkinPressure(newIndex); auto * pressure_target = this->perfSkinPressure(newIndex);
auto * velocity_target = &perf_water_velocity_[connpos]; auto * velocity_target = this->perfWaterVelocity(newIndex);
const auto * throughput_src = prevState->perfThroughput(oldIndex); const auto * throughput_src = prevState->perfThroughput(oldIndex);
const auto * pressure_src = prevState->perfSkinPressure(oldIndex); const auto * pressure_src = prevState->perfSkinPressure(oldIndex);
const auto * velocity_src = &prevState->perfWaterVelocity()[oldPerf_idx_beg]; const auto * velocity_src = prevState->perfWaterVelocity(oldIndex);
for (int perf = 0; perf < num_perf_this_well; ++perf) for (int perf = 0; perf < num_perf_this_well; ++perf)
{ {

View File

@@ -254,12 +254,12 @@ public:
return &perf_skin_pressure_[this->first_perf_index_[well_index]]; return &perf_skin_pressure_[this->first_perf_index_[well_index]];
} }
std::vector<double>& perfWaterVelocity() { double * perfWaterVelocity(std::size_t well_index) {
return perf_water_velocity_; return &perf_water_velocity_[this->first_perf_index_[well_index]];
} }
const std::vector<double>& perfWaterVelocity() const { const double * perfWaterVelocity(std::size_t well_index) const {
return perf_water_velocity_; return &perf_water_velocity_[this->first_perf_index_[well_index]];
} }
template<class Comm> template<class Comm>