clean up based on review

This commit is contained in:
Tor Harald Sandve
2020-06-23 14:06:34 +02:00
parent 39e23c4d41
commit a99254f917
3 changed files with 19 additions and 28 deletions

View File

@@ -277,7 +277,6 @@ namespace Opm {
std::vector< Well > wells_ecl_;
std::vector< std::vector<PerforationData> > well_perf_data_;
std::vector<int> first_perf_index_;
bool wells_active_;

View File

@@ -565,8 +565,6 @@ namespace Opm {
const auto& grid = ebosSimulator_.vanguard().grid();
const auto& cartDims = Opm::UgGridHelpers::cartDims(grid);
well_perf_data_.resize(wells_ecl_.size());
first_perf_index_.clear();
first_perf_index_.resize(wells_ecl_.size() + 1, 0);
int well_index = 0;
for (const auto& well : wells_ecl_) {
well_perf_data_[well_index].clear();
@@ -597,7 +595,6 @@ namespace Opm {
}
}
}
first_perf_index_[well_index + 1] = first_perf_index_[well_index] + well_perf_data_[well_index].size();
++well_index;
}
}
@@ -715,7 +712,7 @@ namespace Opm {
numComponents(),
numPhases(),
w,
first_perf_index_[w],
well_state_.firstPerfIndex()[w],
well_perf_data_[w]));
} else {
well_container.emplace_back(new MultisegmentWell<TypeTag>(well_ecl,
@@ -726,7 +723,7 @@ namespace Opm {
numComponents(),
numPhases(),
w,
first_perf_index_[w],
well_state_.firstPerfIndex()[w],
well_perf_data_[w]));
}
if (wellIsStopped)
@@ -782,7 +779,7 @@ namespace Opm {
numComponents(),
numPhases(),
index_well_ecl,
first_perf_index_[index_well_ecl],
well_state_.firstPerfIndex()[index_well_ecl],
well_perf_data_[index_well_ecl]));
} else {
return WellInterfacePtr(new MultisegmentWell<TypeTag>(well_ecl,
@@ -793,7 +790,7 @@ namespace Opm {
numComponents(),
numPhases(),
index_well_ecl,
first_perf_index_[index_well_ecl],
well_state_.firstPerfIndex()[index_well_ecl],
well_perf_data_[index_well_ecl]));
}
}

View File

@@ -37,6 +37,7 @@
#include <algorithm>
#include <array>
#include <iostream>
#include <numeric>
namespace Opm
{
@@ -131,6 +132,8 @@ namespace Opm
perf_skin_pressure_.resize(nperf, 0.0);
int connpos = 0;
first_perf_index_.resize(nw+1, 0);
first_perf_index_[0] = connpos;
for (int w = 0; w < nw; ++w) {
// Initialize perfphaserates_ to well
// rates divided by the number of perforations.
@@ -144,6 +147,7 @@ namespace Opm
perfPress()[perf] = cellPressures[well_perf_data[w][perf-connpos].cell_index];
}
connpos += num_perf_this_well;
first_perf_index_[w+1] = connpos;
}
current_injection_controls_.resize(nw);
@@ -805,6 +809,10 @@ namespace Opm
effective_events_occurred_[w] = effective_events_occurred;
}
const std::vector<int>& firstPerfIndex() const
{
return first_perf_index_;
}
/// One rate pr well connection.
std::vector<double>& perfRateSolvent() { return perfRateSolvent_; }
@@ -812,16 +820,7 @@ namespace Opm
/// One rate pr well
double solventWellRate(const int w) const {
int connpos = 0;
for (int iw = 0; iw < w; ++iw) {
connpos += this->well_perf_data_[iw].size();
}
double solvent_well_rate = 0.0;
const int endperf = connpos + this->well_perf_data_[w].size();
for (int perf = connpos; perf < endperf; ++perf ) {
solvent_well_rate += perfRateSolvent_[perf];
}
return solvent_well_rate;
return std::accumulate(&perfRateSolvent_[0] + first_perf_index_[w], &perfRateSolvent_[0] + first_perf_index_[w+1], 0.0);
}
/// One rate pr well connection.
@@ -830,16 +829,7 @@ namespace Opm
/// One rate pr well
double polymerWellRate(const int w) const {
int connpos = 0;
for (int iw = 0; iw < w; ++iw) {
connpos += this->well_perf_data_[iw].size();
}
double polymer_well_rate = 0.0;
const int endperf = connpos + this->well_perf_data_[w].size();
for (int perf = connpos; perf < endperf; ++perf ) {
polymer_well_rate += perfRatePolymer_[perf];
}
return polymer_well_rate;
return std::accumulate(&perfRatePolymer_[0] + first_perf_index_[w], &perfRatePolymer_[0] + first_perf_index_[w+1], 0.0);
}
std::vector<double>& wellReservoirRates()
@@ -1066,6 +1056,11 @@ namespace Opm
private:
std::vector<double> perfphaserates_;
// vector with size number of wells +1.
// iterate over all perforations of a given well
// for (int perf = first_perf_index_[well_index]; perf < first_perf_index_[well_index+1]; ++perf)
std::vector<int> first_perf_index_;
std::vector<Opm::Well::InjectorCMode> current_injection_controls_;
std::vector<Well::ProducerCMode> current_production_controls_;