Ejemplo n.º 1
0
    def _initializeRealization(self, sim_fs, geo_id, iens, keywords):
        ens_config = self.ert.ensembleConfig()

        # Copy all parameter all parameter values which are not given by @keywords from the
        # the initialization case to the target case.

        geo_case_fs = self.ert.getEnkfFsManager().getFileSystem(
            self._session.geo_case)
        for kw in ens_config.getKeylistFromVarType(EnkfVarType.PARAMETER):
            if not kw in keywords:
                config_node = ens_config[kw]
                data_node = EnkfNode(config_node)
                init_id = NodeId(0, geo_id)
                run_id = NodeId(0, iens)
                data_node.load(geo_case_fs, init_id)
                data_node.save(sim_fs, run_id)

        # All the values supplied externally by the keywords list will be written
        # directly into the result case.
        for key, values in keywords.items():
            config_node = ens_config[key]
            data_node = EnkfNode(config_node)

            gen_kw = data_node.asGenKw()
            gen_kw.setValues(values)

            run_id = NodeId(0, iens)
            data_node.save(sim_fs, run_id)

        sim_fs.fsync()
        state_map = sim_fs.getStateMap()
        state_map[iens] = RealizationStateEnum.STATE_INITIALIZED
Ejemplo n.º 2
0
    def _setup_sim(self, sim_id, controls, file_system):
        def _set_ext_param(ext_param, key, assignment):
            if isinstance(assignment, dict):  # handle suffixes
                suffixes = ext_param.config[key]
                if len(assignment) != len(suffixes):
                    raise KeyError(
                        "Key {} is missing values for these suffixes: {}".
                        format(
                            key,
                            set(suffixes).difference(set(assignment.keys()))))
                for suffix, value in assignment.items():
                    ext_node[key, suffix] = value
            else:  # assume assignment is a single numerical value
                ext_node[key] = assignment

        node_id = NodeId(0, sim_id)
        if set(controls.keys()) != self.control_keys:
            err_msg = "Mismatch between initialized and provided control names."
            raise KeyError(err_msg)

        for control_name, control in controls.items():
            ens_config = self.res_config.ensemble_config
            node = EnkfNode(ens_config[control_name])
            ext_node = node.as_ext_param()
            if len(ext_node) != len(control.keys()):
                raise KeyError(("Expected {} variables for control {}, "
                                "received {}.").format(len(ext_node),
                                                       control_name,
                                                       len(control.keys())))
            for var_name, var_setting in control.items():
                _set_ext_param(ext_node, var_name, var_setting)
            node.save(file_system, node_id)
Ejemplo n.º 3
0
    def _initializeRealization(self, target_fs, geo_id, iens, keywords):
        ens_config = self.ert.ensembleConfig()

        for kw in ens_config.getKeylistFromVarType(EnkfVarType.PARAMETER):
            if not kw in keywords:
                config_node = ens_config[kw]
                data_node = EnkfNode(config_node)
                init_id = NodeId(0, geo_id)
                run_id = NodeId(0, iens)
                data_node.load(self._getInitializationCase(), init_id)
                data_node.save(target_fs, run_id)

        for key, values in keywords.items():
            config_node = ens_config[key]
            data_node = EnkfNode(config_node)

            gen_kw = data_node.asGenKw()
            gen_kw.setValues(values)

            run_id = NodeId(0, iens)
            data_node.save(target_fs, run_id)

        target_fs.fsync()
        state_map = target_fs.getStateMap()
        state_map[iens] = RealizationStateEnum.STATE_INITIALIZED