diff --git a/opm/simulators/wells/MultisegmentWell_impl.hpp b/opm/simulators/wells/MultisegmentWell_impl.hpp index dfbd0042d..81a2eff4a 100644 --- a/opm/simulators/wells/MultisegmentWell_impl.hpp +++ b/opm/simulators/wells/MultisegmentWell_impl.hpp @@ -2704,10 +2704,10 @@ namespace Opm assemblePressureEq(seg, unit_system, well_state, deferred_logger); } - auto top_segment_index = well_state.topSegmentIndex(index_of_well_); - well_state.segPressDrop()[top_segment_index + seg] = well_state.segPressDropHydroStatic()[top_segment_index + seg] + - well_state.segPressDropFriction()[top_segment_index + seg] + - well_state.segPressDropAcceleration()[top_segment_index + seg]; + auto seg_press_drop = well_state.segPressDrop(index_of_well_); + seg_press_drop[seg] = well_state.segPressDropHydroStatic()[seg] + + well_state.segPressDropFriction()[seg] + + well_state.segPressDropAcceleration()[seg]; } } diff --git a/opm/simulators/wells/WellState.cpp b/opm/simulators/wells/WellState.cpp index 9454678cf..b866adaa0 100644 --- a/opm/simulators/wells/WellState.cpp +++ b/opm/simulators/wells/WellState.cpp @@ -1157,7 +1157,7 @@ WellState::reportSegmentResults(const PhaseUsage& pu, using Value = data::SegmentPressures::Value; auto& segpress = seg_res.pressures; segpress[Value::Pressure] = this->segPress(well_id)[seg_ix]; - segpress[Value::PDrop] = this->segPressDrop()[seg_dof]; + segpress[Value::PDrop] = this->segPressDrop(well_id)[seg_ix]; segpress[Value::PDropHydrostatic] = this->segPressDropHydroStatic()[seg_dof]; segpress[Value::PDropFriction] = this->segPressDropFriction()[seg_dof]; segpress[Value::PDropAccel] = this->segPressDropAcceleration()[seg_dof]; diff --git a/opm/simulators/wells/WellState.hpp b/opm/simulators/wells/WellState.hpp index f1bf546f0..7559c3c40 100644 --- a/opm/simulators/wells/WellState.hpp +++ b/opm/simulators/wells/WellState.hpp @@ -217,14 +217,16 @@ public: return &seg_press_[top_segment_index]; } - std::vector& segPressDrop() + double * segPressDrop(std::size_t well_index) { - return seg_pressdrop_; + const int top_segment_index = this->top_segment_index_[well_index]; + return &seg_pressdrop_[top_segment_index]; } - const std::vector& segPressDrop() const + const double * segPressDrop(std::size_t well_index) const { - return seg_pressdrop_; + const int top_segment_index = this->top_segment_index_[well_index]; + return &seg_pressdrop_[top_segment_index]; } std::vector& segPressDropFriction()