Exemple #1
0
    def run_ensemble_evaluator(self, run_context: ErtRunContext,
                               ee_config: EvaluatorServerConfig) -> int:
        if run_context.get_step():
            self.ert().eclConfig().assert_restart()

        ensemble = EnsembleBuilder.from_legacy(
            run_context,
            self.get_forward_model(),
            self._queue_config,
            self.ert().analysisConfig(),
            self.ert().resConfig(),
        ).build()

        self.ert().initRun(run_context)

        totalOk = EnsembleEvaluator(
            ensemble,
            ee_config,
            run_context.get_iter(),
            ee_id=str(uuid.uuid1()).split("-", maxsplit=1)[0],
        ).run_and_get_successful_realizations()

        for iens, run_arg in enumerate(run_context):
            if run_context.is_active(iens):
                if run_arg.run_status in (
                        RunStatusType.JOB_LOAD_FAILURE,
                        RunStatusType.JOB_RUN_FAILURE,
                ):
                    run_context.deactivate_realization(iens)

        run_context.get_sim_fs().fsync()
        return totalOk
Exemple #2
0
    def from_legacy(
        run_context: ErtRunContext,
        forward_model: ForwardModel,
        queue_config: QueueConfig,
        analysis_config: AnalysisConfig,
        res_config: ResConfig,
    ) -> "_EnsembleBuilder":
        builder = _EnsembleBuilder().set_legacy_dependencies(
            queue_config,
            analysis_config,
        )

        num_cpu = res_config.queue_config.num_cpu
        if num_cpu == 0:
            num_cpu = res_config.ecl_config.num_cpu

        for iens, run_arg in enumerate(run_context):
            active = run_context.is_active(iens)
            real = _RealizationBuilder().set_iens(iens).active(active)
            step = _StepBuilder().set_id("0").set_dummy_io().set_name("legacy step")
            if active:
                real.active(True).add_step(step)
                for index in range(0, len(forward_model)):
                    ext_job = forward_model.iget_job(index)
                    step.add_job(
                        _LegacyJobBuilder()
                        .set_id(str(index))
                        .set_name(ext_job.name())
                        .set_ext_job(ext_job)
                    )
                step.set_max_runtime(
                    analysis_config.get_max_runtime()
                ).set_callback_arguments((run_arg, res_config)).set_done_callback(
                    EnKFState.forward_model_ok_callback
                ).set_exit_callback(
                    EnKFState.forward_model_exit_callback
                ).set_num_cpu(
                    num_cpu
                ).set_run_path(
                    run_arg.runpath
                ).set_job_script(
                    res_config.queue_config.job_script
                ).set_job_name(
                    run_arg.job_name
                ).set_run_arg(
                    run_arg
                )
            builder.add_realization(real)
        return builder
Exemple #3
0
    def run_ensemble_evaluator(self, run_context: ErtRunContext,
                               ee_config: EvaluatorServerConfig) -> int:
        if run_context.get_step():
            self.ert().eclConfig().assert_restart()

        iactive = run_context.get_mask()

        run_context.get_sim_fs().getStateMap().deselectMatching(
            iactive,
            RealizationStateEnum.STATE_LOAD_FAILURE
            | RealizationStateEnum.STATE_PARENT_FAILURE,
        )

        ensemble = create_ensemble_builder_from_legacy(
            run_context,
            self.get_forward_model(),
            self._queue_config,
            self.ert().analysisConfig(),
            self.ert().resConfig(),
        ).build()

        self.ert().initRun(run_context)

        totalOk = EnsembleEvaluator(
            ensemble,
            ee_config,
            run_context.get_iter(),
            ee_id=str(uuid.uuid1()).split("-")[0],
        ).run_and_get_successful_realizations()

        for i in range(len(run_context)):
            if run_context.is_active(i):
                run_arg = run_context[i]
                if (run_arg.run_status == RunStatusType.JOB_LOAD_FAILURE or
                        run_arg.run_status == RunStatusType.JOB_RUN_FAILURE):
                    run_context.deactivate_realization(i)

        run_context.get_sim_fs().fsync()
        return totalOk
Exemple #4
0
def _is_iens_active(iens: int, run_context: ErtRunContext) -> bool:
    """Return whether or not the iens is active."""
    try:
        return run_context.is_active(iens)
    except AttributeError:
        return False