Make sure all wells are added to the well_rates map

This commit is contained in:
Joakim Hove 2021-05-26 17:04:20 +02:00
parent d94cc2cc30
commit 509fe67ff5
2 changed files with 9 additions and 2 deletions

View File

@ -236,9 +236,13 @@ void WellState::init(const std::vector<double>& cellPressures,
// call init on base class
this->base_init(cellPressures, wells_ecl, parallel_well_info, well_perf_data, summary_state);
this->global_well_info = std::make_optional<GlobalWellInfo>( schedule, report_step, wells_ecl );
for (const auto& wname : schedule.wellNames(report_step))
{
well_rates.insert({wname, std::make_pair(false, std::vector<double>(this->numPhases()))});
}
for (const auto& winfo: parallel_well_info)
{
well_rates.insert({winfo->name(), std::make_pair(winfo->isOwner(), std::vector<double>(this->numPhases()))});
well_rates[winfo->name()].first = winfo->isOwner();
}
const int nw = wells_ecl.size();

View File

@ -111,7 +111,7 @@ public:
void currentProductionControl(std::size_t well_index, Well::ProducerCMode cmode) { current_production_controls_[well_index] = cmode; }
void setCurrentWellRates(const std::string& wellName, const std::vector<double>& rates ) {
well_rates[wellName].second = rates;
well_rates.at(wellName).second = rates;
}
const std::vector<double>& currentWellRates(const std::string& wellName) const;
@ -470,6 +470,9 @@ private:
WellContainer<Opm::Well::InjectorCMode> current_injection_controls_;
WellContainer<Well::ProducerCMode> current_production_controls_;
// The well_rates variable is defined for all wells on all processors. The
// bool in the value pair is whether the current process owns the well or
// not.
std::map<std::string, std::pair<bool, std::vector<double>>> well_rates;