def fetch(self, ert, key, parameter, data, comparison_fs): data.x_data_type = "time" fs = ert.enkf.enkf_main_get_fs(ert.main) config_node = ert.enkf.ensemble_config_get_node(ert.ensemble_config, key) node = ert.enkf.enkf_node_alloc(config_node) comp_node = ert.enkf.enkf_node_alloc(config_node) num_realizations = ert.enkf.enkf_main_get_ensemble_size(ert.main) user_data = parameter.getUserData() if user_data is None: return False key_index = None if user_data.has_key("key_index"): key_index = user_data["key_index"] if parameter.getType() == FieldModel.TYPE: field_position = user_data["field_position"] field_config = ert.enkf.enkf_config_node_get_ref(config_node) if ert.enkf.field_config_ijk_active( field_config, field_position[0] - 1, field_position[1] - 1, field_position[2] - 1 ): key_index = "%i,%i,%i" % (field_position[0], field_position[1], field_position[2]) data.setKeyIndexIsIndex(True) else: return False elif parameter.getType() == DataModel.TYPE: data_index = user_data["data_index"] key_index = "KEY:%d" % data_index data.setKeyIndexIsIndex(True) data.setKeyIndex(key_index) state_list = [user_data["state"]] if state_list[0] == enums.ert_state_enum.BOTH: state_list = [enums.ert_state_enum.FORECAST, enums.ert_state_enum.ANALYZED] for member in range(0, num_realizations): data.x_data[member] = [] data.y_data[member] = [] x_time = data.x_data[member] y = data.y_data[member] if not comparison_fs is None: data.x_comp_data[member] = [] data.y_comp_data[member] = [] x_comp_time = data.x_comp_data[member] y_comp = data.y_comp_data[member] member_config = ert.enkf.enkf_main_iget_member_config(ert.main, member) stop_time = ert.enkf.enkf_main_get_history_length(ert.main) for step in range(0, stop_time + 1): for state in state_list: if ert.enkf.enkf_fs_has_node(fs, config_node, step, member, state.value()): sim_time = ert.enkf.member_config_iget_sim_time(member_config, step, fs) ert.enkf.enkf_fs_fread_node(fs, node, step, member, state.value()) valid = ertwrapper.c_int() value = ert.enkf.enkf_node_user_get(node, key_index, ertwrapper.byref(valid)) if valid.value == 1: data.checkMaxMin(sim_time) data.checkMaxMinY(value) x_time.append(sim_time) y.append(value) # else: # print "Not valid: ", key, member, step, key_index if not comparison_fs is None: if ert.enkf.enkf_fs_has_node(comparison_fs, config_node, step, member, state.value()): sim_time = ert.enkf.member_config_iget_sim_time(member_config, step, comparison_fs) ert.enkf.enkf_fs_fread_node(comparison_fs, comp_node, step, member, state.value()) valid = ertwrapper.c_int() value = ert.enkf.enkf_node_user_get(comp_node, key_index, ertwrapper.byref(valid)) if valid.value == 1: # data.checkMaxMin(sim_time) # data.checkMaxMinY(value) x_comp_time.append(sim_time) y_comp.append(value) # else: # print "Not valid: ", key, member, step, key_index data.x_data[member] = numpy.array([t.datetime() for t in x_time]) data.y_data[member] = numpy.array(y) if not comparison_fs is None: data.x_comp_data[member] = numpy.array([t.datetime() for t in x_comp_time]) data.y_comp_data[member] = numpy.array(y_comp) self._getObservations(ert, key, key_index, data) self._getRefCase(ert, key, data) ert.enkf.enkf_node_free(node) ert.enkf.enkf_node_free(comp_node) data.inverted_y_axis = False
def fetch(self, ert, key, parameter, data, comparison_fs): data.x_data_type = "time" fs = ert.main.get_fs config_node = ert.main.ensemble_config.get_node(key) node = config_node.alloc_node comp_node = config_node.alloc_node num_realizations = ert.main.ens_size var_type_set = False user_data = parameter.getUserData() if user_data is None: return False key_index = None if user_data.has_key("key_index"): key_index = user_data["key_index"] if parameter.getType() == FieldModel.TYPE: var_type = enums.enkf_var_type.PARAMETER var_type_set = True field_position = user_data["field_position"] field_config = config_node.field_model if field_config.ijk_active(field_position[0] - 1, field_position[1] - 1, field_position[2] - 1): key_index = "%i,%i,%i" % (field_position[0], field_position[1], field_position[2]) data.setKeyIndexIsIndex(True) else: return False elif parameter.getType() == DataModel.TYPE: var_type = enums.enkf_var_type.PARAMETER var_type_set = True data_index = user_data["data_index"] key_index = "KEY:%d" % data_index data.setKeyIndexIsIndex(True) if not var_type_set: var_type = enums.enkf_var_type.DYNAMIC_RESULT data.setKeyIndex(key_index) state_list = [user_data["state"]] if state_list[0] == enums.ert_state_enum.BOTH: state_list = [enums.ert_state_enum.FORECAST, enums.ert_state_enum.ANALYZED] for member in range(0, num_realizations): data.x_data[member] = [] data.y_data[member] = [] x_time = data.x_data[member] y = data.y_data[member] if not comparison_fs is None: data.x_comp_data[member] = [] data.y_comp_data[member] = [] x_comp_time = data.x_comp_data[member] y_comp = data.y_comp_data[member] stop_time = ert.main.get_history_length for state in state_list: start_time = 0 if config_node.get_impl_type == SummaryModel.TYPE: start_time = 1 for step in range(start_time, stop_time): time_map = fs.get_time_map sim_time_as_c_int = time_map.iget(step) sim_time_as_time_t = time_t(sim_time_as_c_int) sim_time_as_ordinal = sim_time_as_time_t.datetime().toordinal() valid = ertwrapper.c_double() value = node.user_get(fs, key_index, step, member, state.value(), ertwrapper.byref(valid)) if value == True: data.checkMaxMin(sim_time_as_time_t) data.checkMaxMinY(valid.value) x_time.append(sim_time_as_ordinal) y.append(valid.value) # else: # print "Not valid: ", key, member, step, key_index, value, state.value() if not comparison_fs is None: time_map = comparison_fs.get_time_map sim_time_as_c_int = time_map.iget(step) sim_time_as_time_t = time_t(sim_time_as_c_int) sim_time_as_ordinal = sim_time_as_time_t.datetime().toordinal() valid = ertwrapper.c_double() value = node.user_get(comparison_fs, key, step, member, state.value(), ertwrapper.byref(valid)) if value == 1: data.checkMaxMin(sim_time_as_time_t) data.checkMaxMinY(valid.value) x_comp_time.append(sim_time_as_ordinal) y_comp.append(valid.value) # else: # print "Not valid: ", key, member, step, key_index data.x_data[member] = numpy.array(x_time) # [t.datetime() for t in x_time]) data.y_data[member] = numpy.array(y) if not comparison_fs is None: data.x_comp_data[member] = numpy.array(x_comp_time) # [t.datetime() for t in x_comp_time]) data.y_comp_data[member] = numpy.array(y_comp) self._getObservations(ert, key, key_index, data) self._getRefCase(ert, key, data) # node.__del__ # comp_node.__del__ data.inverted_y_axis = False