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
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)
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