Ejemplo n.º 1
0
    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)
            )
Ejemplo n.º 2
0
    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)
Ejemplo n.º 4
0
    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)
Ejemplo n.º 6
0
    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))