mirror of
https://github.com/OPM/opm-simulators.git
synced 2025-02-25 18:55:30 -06:00
clean up based on review
This commit is contained in:
@@ -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_;
|
||||
|
||||
|
||||
@@ -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]));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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_;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user