From ca7de3c7c19db973f7e5d9348cf3d9d0067716a2 Mon Sep 17 00:00:00 2001 From: Joakim Hove Date: Wed, 12 Mar 2014 18:18:40 +0100 Subject: [PATCH] Will check if a well is open before throwing for an invalid control. --- opm/core/wells/WellsManager.cpp | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/opm/core/wells/WellsManager.cpp b/opm/core/wells/WellsManager.cpp index 2deaea992..c438b29e9 100644 --- a/opm/core/wells/WellsManager.cpp +++ b/opm/core/wells/WellsManager.cpp @@ -664,12 +664,11 @@ namespace Opm } InjectionControl::Mode mode = InjectionControl::mode(wci_line.control_mode_); int cpos = control_pos[mode]; - if (cpos == -1 && mode != InjectionControl::GRUP) { - OPM_THROW(std::runtime_error, "Control for " << wci_line.control_mode_ << " not specified in well " << well_names[wix]); - } // We need to check if the well is shut or not if (wci_line.open_shut_flag_ == "SHUT") { well_controls_shut_well( w_->ctrls[wix]); + } else if (cpos == -1 && mode != InjectionControl::GRUP) { + OPM_THROW(std::runtime_error, "Control for " << wci_line.control_mode_ << " not specified in well " << well_names[wix]); } set_current_control(wix, cpos, w_); @@ -1329,12 +1328,10 @@ namespace Opm ProductionControl::Mode mode = ProductionControl::mode(well->getProducerControlMode(timeStep)); int cpos = control_pos[mode]; - if (cpos == -1 && mode != ProductionControl::GRUP) { - OPM_THROW(std::runtime_error, "Control mode type " << mode << " not present in well " << well_names[well_index]); - } - // If it's shut, we complement the cpos if (well->getStatus(timeStep) == WellCommon::SHUT) { well_controls_shut_well( w_->ctrls[well_index] ); + } else if (cpos == -1 && mode != ProductionControl::GRUP) { + OPM_THROW(std::runtime_error, "Control mode type " << mode << " not present in well " << well_names[well_index]); } set_current_control(well_index, cpos, w_); }