def runSimulations(self, arguments): phase_count = getNumberOfIterations() + 1 self.setPhaseCount(phase_count) analysis_module = self.setAnalysisModule(arguments["analysis_module"]) active_realization_mask = arguments["active_realizations"] target_case_format = arguments["target_case"] source_fs = self.ert().getEnkfFsManager().getCurrentFileSystem() initial_fs = self.createTargetCaseFileSystem(0, target_case_format) if not source_fs == initial_fs: self.ert().getEnkfFsManager().switchFileSystem(initial_fs) self.ert().getEnkfFsManager().initializeCurrentCaseFromExisting(source_fs, 0) self.runAndPostProcess(active_realization_mask, 0, phase_count, EnkfInitModeEnum.INIT_CONDITIONAL) self.ert().analysisConfig().getAnalysisIterConfig().setCaseFormat(target_case_format) analysis_config = self.ert().analysisConfig() analysis_iter_config = analysis_config.getAnalysisIterConfig() num_retries_per_iteration = analysis_iter_config.getNumRetries() num_tries = 0 current_iteration = 1 while current_iteration <= getNumberOfIterations() and num_tries < num_retries_per_iteration: target_fs = self.createTargetCaseFileSystem(current_iteration, target_case_format) pre_analysis_iter_num = analysis_module.getInt("ITER") self.analyzeStep(target_fs) post_analysis_iter_num = analysis_module.getInt("ITER") analysis_success = False if post_analysis_iter_num > pre_analysis_iter_num: analysis_success = True if analysis_success: self.ert().getEnkfFsManager().switchFileSystem(target_fs) self.runAndPostProcess( active_realization_mask, current_iteration, phase_count, EnkfInitModeEnum.INIT_NONE ) num_tries = 0 current_iteration += 1 else: self.ert().getEnkfFsManager().initializeCurrentCaseFromExisting(target_fs, 0) self.runAndPostProcess( active_realization_mask, current_iteration - 1, phase_count, EnkfInitModeEnum.INIT_NONE ) num_tries += 1 if current_iteration == phase_count: self.setPhase(phase_count, "Simulations completed.") else: raise ErtRunError( "Iterated Ensemble Smoother stopped: maximum number of iteration retries (%d retries) reached for iteration %d" % (num_retries_per_iteration, current_iteration) )
def runSimulations(self, arguments): phase_count = getNumberOfIterations() + 1 self.setPhaseCount(phase_count) analysis_module = self.setAnalysisModule(arguments["analysis_module"]) target_case_format = arguments["target_case"] run_context = self.create_context(arguments, 0) self.ert().analysisConfig().getAnalysisIterConfig().setCaseFormat( target_case_format) self._runAndPostProcess(run_context) analysis_config = self.ert().analysisConfig() analysis_iter_config = analysis_config.getAnalysisIterConfig() num_retries_per_iteration = analysis_iter_config.getNumRetries() num_tries = 0 current_iteration = 1 while current_iteration <= getNumberOfIterations( ) and num_tries < num_retries_per_iteration: pre_analysis_iter_num = analysis_module.getInt("ITER") self.analyzeStep(run_context) post_analysis_iter_num = analysis_module.getInt("ITER") analysis_success = False if post_analysis_iter_num > pre_analysis_iter_num: analysis_success = True if analysis_success: current_iteration += 1 run_context = self.create_context(arguments, current_iteration, prior_context=run_context) self.ert().getEnkfFsManager().switchFileSystem( run_context.get_target_fs()) self._runAndPostProcess(run_context) num_tries = 0 else: run_context = self.create_context(arguments, current_iteration, prior_context=run_context, rerun=True) self._runAndPostProcess(run_context) num_tries += 1 if current_iteration == phase_count: self.setPhase(phase_count, "Simulations completed.") else: raise ErtRunError( "Iterated Ensemble Smoother stopped: maximum number of iteration retries (%d retries) reached for iteration %d" % (num_retries_per_iteration, current_iteration))
def __init__(self): SimulationConfigPanel.__init__(self, IteratedEnsembleSmoother) layout = QFormLayout() case_selector = CaseSelector() layout.addRow("Current case:", case_selector) run_path_label = QLabel("<b>%s</b>" % getRunPath()) addHelpToWidget(run_path_label, "config/simulation/runpath") layout.addRow("Runpath:", run_path_label) number_of_realizations_label = QLabel("<b>%d</b>" % getRealizationCount()) addHelpToWidget(number_of_realizations_label, "config/ensemble/num_realizations") layout.addRow(QLabel("Number of realizations:"), number_of_realizations_label) # The num_iterations_spinner does not track any external changes (will that ever happen?) num_iterations_spinner = QSpinBox() num_iterations_spinner.setMinimum(1) num_iterations_spinner.setMaximum(100) num_iterations_spinner.setValue(getNumberOfIterations()) addHelpToWidget(num_iterations_spinner, "config/simulation/number_of_iterations") num_iterations_spinner.valueChanged[int].connect(setNumberOfIterations) layout.addRow("Number of iterations:", num_iterations_spinner) self._iterated_target_case_format_model = TargetCaseModel( format_mode=True) self._iterated_target_case_format_field = StringBox( self._iterated_target_case_format_model, "config/simulation/iterated_target_case_format", ) self._iterated_target_case_format_field.setValidator( ProperNameFormatArgument()) layout.addRow("Target case format:", self._iterated_target_case_format_field) self._analysis_module_selector = AnalysisModuleSelector( iterable=True, help_link="config/analysis/analysis_module") layout.addRow("Analysis Module:", self._analysis_module_selector) self._active_realizations_model = ActiveRealizationsModel() self._active_realizations_field = StringBox( self._active_realizations_model, "config/simulation/active_realizations") self._active_realizations_field.setValidator( RangeStringArgument(getRealizationCount())) layout.addRow("Active realizations", self._active_realizations_field) self._iterated_target_case_format_field.getValidationSupport( ).validationChanged.connect(self.simulationConfigurationChanged) self._active_realizations_field.getValidationSupport( ).validationChanged.connect(self.simulationConfigurationChanged) self.setLayout(layout)
def runSimulations(self, arguments): phase_count = getNumberOfIterations() + 1 self.setPhaseCount(phase_count) analysis_module = self.setAnalysisModule(arguments["analysis_module"]) target_case_format = arguments["target_case"] run_context = self.create_context( arguments , 0 ) self.ert().analysisConfig().getAnalysisIterConfig().setCaseFormat( target_case_format ) self._runAndPostProcess( run_context ) analysis_config = self.ert().analysisConfig() analysis_iter_config = analysis_config.getAnalysisIterConfig() num_retries_per_iteration = analysis_iter_config.getNumRetries() num_tries = 0 current_iteration = 1 while current_iteration <= getNumberOfIterations() and num_tries < num_retries_per_iteration: pre_analysis_iter_num = analysis_module.getInt("ITER") self.analyzeStep( run_context ) post_analysis_iter_num = analysis_module.getInt("ITER") analysis_success = False if post_analysis_iter_num > pre_analysis_iter_num: analysis_success = True if analysis_success: current_iteration += 1 run_context = self.create_context( arguments, current_iteration, prior_context = run_context ) self.ert().getEnkfFsManager().switchFileSystem(run_context.get_target_fs()) self._runAndPostProcess(run_context) num_tries = 0 else: run_context = self.create_context( arguments, current_iteration, prior_context = run_context , rerun = True) self._runAndPostProcess(run_context) num_tries += 1 if current_iteration == phase_count: self.setPhase(phase_count, "Simulations completed.") else: raise ErtRunError("Iterated Ensemble Smoother stopped: maximum number of iteration retries (%d retries) reached for iteration %d" % (num_retries_per_iteration, current_iteration))
def __init__(self, advanced_option=False): SimulationConfigPanel.__init__(self, IteratedEnsembleSmoother(), advanced_option) layout = QFormLayout() case_selector = CaseSelector() layout.addRow("Current case:", case_selector) run_path_label = QLabel("<b>%s</b>" % getRunPath()) addHelpToWidget(run_path_label, "config/simulation/runpath") layout.addRow("Runpath:", run_path_label) number_of_realizations_label = QLabel("<b>%d</b>" % getRealizationCount()) addHelpToWidget(number_of_realizations_label, "config/ensemble/num_realizations") layout.addRow(QLabel("Number of realizations:"), number_of_realizations_label) # The num_iterations_spinner does not track any external changes (will that ever happen?) num_iterations_spinner = QSpinBox() num_iterations_spinner.setMinimum(1) num_iterations_spinner.setMaximum(100) num_iterations_spinner.setValue(getNumberOfIterations()) addHelpToWidget(num_iterations_spinner, "config/simulation/number_of_iterations") num_iterations_spinner.valueChanged[int].connect(setNumberOfIterations) layout.addRow("Number of iterations:", num_iterations_spinner) self._iterated_target_case_format_model = TargetCaseModel(format_mode=True) self._iterated_target_case_format_field = StringBox(self._iterated_target_case_format_model, "config/simulation/iterated_target_case_format") self._iterated_target_case_format_field.setValidator(ProperNameFormatArgument()) layout.addRow("Target case format:", self._iterated_target_case_format_field) self._analysis_module_selector = AnalysisModuleSelector(iterable=True, help_link="config/analysis/analysis_module") layout.addRow("Analysis Module:", self._analysis_module_selector) self._active_realizations_model = ActiveRealizationsModel() self._active_realizations_field = StringBox(self._active_realizations_model, "config/simulation/active_realizations") self._active_realizations_field.setValidator(RangeStringArgument(getRealizationCount())) layout.addRow("Active realizations", self._active_realizations_field) self._iterated_target_case_format_field.getValidationSupport().validationChanged.connect(self.simulationConfigurationChanged) self._active_realizations_field.getValidationSupport().validationChanged.connect(self.simulationConfigurationChanged) self.setLayout(layout)
def runSimulations(self, arguments): phase_count = getNumberOfIterations() + 1 self.setPhaseCount(phase_count) analysis_module = self.setAnalysisModule(arguments["analysis_module"]) active_realization_mask = arguments["active_realizations"] target_case_format = arguments["target_case"] source_fs = self.ert().getEnkfFsManager().getCurrentFileSystem() initial_fs = self.createTargetCaseFileSystem(0, target_case_format) if not source_fs == initial_fs: self.ert().getEnkfFsManager().switchFileSystem(initial_fs) self.ert().getEnkfFsManager().initializeCurrentCaseFromExisting( source_fs, 0) self.runAndPostProcess(active_realization_mask, 0, phase_count, EnkfInitModeEnum.INIT_CONDITIONAL) self.ert().analysisConfig().getAnalysisIterConfig().setCaseFormat( target_case_format) analysis_config = self.ert().analysisConfig() analysis_iter_config = analysis_config.getAnalysisIterConfig() num_retries_per_iteration = analysis_iter_config.getNumRetries() num_tries = 0 current_iteration = 1 while current_iteration <= getNumberOfIterations( ) and num_tries < num_retries_per_iteration: target_fs = self.createTargetCaseFileSystem( current_iteration, target_case_format) pre_analysis_iter_num = analysis_module.getInt("ITER") self.analyzeStep(target_fs) post_analysis_iter_num = analysis_module.getInt("ITER") analysis_success = False if post_analysis_iter_num > pre_analysis_iter_num: analysis_success = True if analysis_success: self.ert().getEnkfFsManager().switchFileSystem(target_fs) self.runAndPostProcess(active_realization_mask, current_iteration, phase_count, EnkfInitModeEnum.INIT_NONE) num_tries = 0 current_iteration += 1 else: self.ert().getEnkfFsManager( ).initializeCurrentCaseFromExisting(target_fs, 0) self.runAndPostProcess(active_realization_mask, current_iteration - 1, phase_count, EnkfInitModeEnum.INIT_NONE) num_tries += 1 if current_iteration == phase_count: self.setPhase(phase_count, "Simulations completed.") else: raise ErtRunError( "Iterated Ensemble Smoother stopped: maximum number of iteration retries (%d retries) reached for iteration %d" % (num_retries_per_iteration, current_iteration))