std::pair<RestartValue, SummaryState> load(const std::string& filename, int report_step, const std::vector<RestartKey>& solution_keys, const EclipseState& es, const EclipseGrid& grid, const Schedule& schedule, const std::vector<RestartKey>& extra_keys) { const auto rst_view = RestartFileView{ filename, report_step }; auto xr = restoreSOLUTION(rst_view, solution_keys, grid.getNumActive()); xr.convertToSI(es.getUnits()); auto xw = Opm::RestartIO::ecl_file_view_has_kw(rst_view, "OPM_XWEL") ? restore_wells_opm(rst_view, es, grid, schedule) : restore_wells_ecl(rst_view, es, grid, schedule); auto rst_value = RestartValue{ std::move(xr), std::move(xw) }; if (! extra_keys.empty()) { restoreExtra(rst_view, extra_keys, es.getUnits(), rst_value); } return { std::move(rst_value), restore_cumulative(rst_view, schedule) }; }
double prod_wpr_P2(const EclipseState& es, const Schedule& sched, const data::Solution& sol, size_t report_step, double seconds_elapsed) { const auto& units = es.getUnits(); double water_rate = 0.0; if (report_step > 5) water_rate = 2.0; // => WWCT = WWPR / (WOPR + WWPR) = 2/3 return -units.to_si(UnitSystem::measure::rate, water_rate); }
void pressure(const EclipseState& es, const Schedule& /* sched */, data::Solution& sol, size_t /* report_step */, double seconds_elapsed) { const auto& grid = es.getInputGrid(); const auto& units = es.getUnits(); if (!sol.has("PRESSURE")) sol.insert("PRESSURE", UnitSystem::measure::pressure, std::vector<double>(grid.getNumActive()), data::TargetType::RESTART_SOLUTION); auto& data = sol.data("PRESSURE"); std::fill(data.begin(), data.end(), units.to_si(UnitSystem::measure::pressure, seconds_elapsed)); }
double prod_opr(const EclipseState& es, const Schedule& /* sched */, const data::Solution& /* sol */, size_t /* report_step */, double seconds_elapsed) { const auto& units = es.getUnits(); return -units.to_si(UnitSystem::measure::rate, seconds_elapsed); }
double prod_wpr_P3(const EclipseState& es, const Schedule& sched, const data::Solution& sol, size_t report_step, double seconds_elapsed) { const auto& units = es.getUnits(); double water_rate = 0.0; return -units.to_si(UnitSystem::measure::rate, water_rate); }