From f6077809c73b4affd4e2c919b49e08582d4332a8 Mon Sep 17 00:00:00 2001 From: Joakim Hove Date: Tue, 20 Oct 2020 08:38:13 +0200 Subject: [PATCH] Init GuideRateModel from restart file --- .../Schedule/Group/GuideRateModel.hpp | 10 +++++++ .../Schedule/Group/GuideRateModel.cpp | 23 +++++++++++++++ .../EclipseState/Schedule/Schedule.cpp | 29 +++++++++++++++++++ 3 files changed, 62 insertions(+) diff --git a/opm/parser/eclipse/EclipseState/Schedule/Group/GuideRateModel.hpp b/opm/parser/eclipse/EclipseState/Schedule/Group/GuideRateModel.hpp index 134adcb61..1ed9c8f50 100644 --- a/opm/parser/eclipse/EclipseState/Schedule/Group/GuideRateModel.hpp +++ b/opm/parser/eclipse/EclipseState/Schedule/Group/GuideRateModel.hpp @@ -54,6 +54,16 @@ public: bool use_free_gas_arg); GuideRateModel() = default; + static bool rst_valid(double time_interval, + double A, + double B, + double C, + double D, + double E, + double F, + double damping_factor); + + static GuideRateModel serializeObject(); bool updateLINCOM(const UDAValue& alpha, const UDAValue& beta, const UDAValue& gamma); diff --git a/src/opm/parser/eclipse/EclipseState/Schedule/Group/GuideRateModel.cpp b/src/opm/parser/eclipse/EclipseState/Schedule/Group/GuideRateModel.cpp index a8138a09e..0dceedc82 100644 --- a/src/opm/parser/eclipse/EclipseState/Schedule/Group/GuideRateModel.cpp +++ b/src/opm/parser/eclipse/EclipseState/Schedule/Group/GuideRateModel.cpp @@ -90,6 +90,29 @@ GuideRateModel GuideRateModel::serializeObject() return result; } +bool GuideRateModel::rst_valid(double time_interval, + double A, + double B, + double C, + double D, + double E, + double F, + double damping_factor) { + if (time_interval == 0 && + A == 0 && + B == 0 && + C == 0 && + D == 0 && + E == 0 && + F == 0 && + damping_factor == 0) + return false; + + return true; +} + + + double GuideRateModel::pot(double oil_pot, double gas_pot, double wat_pot) const { return pot(this->target(), oil_pot, gas_pot, wat_pot); } diff --git a/src/opm/parser/eclipse/EclipseState/Schedule/Schedule.cpp b/src/opm/parser/eclipse/EclipseState/Schedule/Schedule.cpp index c7ae102ca..cdb71be3a 100644 --- a/src/opm/parser/eclipse/EclipseState/Schedule/Schedule.cpp +++ b/src/opm/parser/eclipse/EclipseState/Schedule/Schedule.cpp @@ -1696,6 +1696,35 @@ namespace { m_tuning.update(report_step, rst_state.tuning); m_events.addEvent( ScheduleEvents::TUNING_CHANGE , report_step); + + { + const auto& header = rst_state.header; + bool time_interval = 0; + GuideRateModel::Target target = GuideRateModel::Target::OIL; + bool allow_increase = true; + bool use_free_gas = false; + if (GuideRateModel::rst_valid(time_interval, + header.guide_rate_a, + header.guide_rate_b, + header.guide_rate_c, + header.guide_rate_d, + header.guide_rate_e, + header.guide_rate_f, + header.guide_rate_damping)) { + auto guide_rate_model = GuideRateModel(time_interval, + target, + header.guide_rate_a, + header.guide_rate_b, + header.guide_rate_c, + header.guide_rate_d, + header.guide_rate_e, + header.guide_rate_f, + allow_increase, + header.guide_rate_damping, + use_free_gas); + this->updateGuideRateModel(guide_rate_model, report_step); + } + } } std::shared_ptr Schedule::python() const