void enkf_config_node_fprintf_config( const enkf_config_node_type * config_node , FILE * stream ) { switch( config_node->impl_type) { case(GEN_KW): fprintf( stream , CONFIG_KEY_FORMAT , GEN_KW_KEY ); fprintf( stream , CONFIG_VALUE_FORMAT , config_node->key ); gen_kw_config_fprintf_config( config_node->data , path_fmt_get_fmt( config_node->enkf_outfile_fmt ) , config_node->min_std_file , stream ); break; case(FIELD): fprintf( stream , CONFIG_KEY_FORMAT , FIELD_KEY ); fprintf( stream , CONFIG_VALUE_FORMAT , config_node->key ); field_config_fprintf_config( config_node->data , config_node->var_type , path_fmt_get_fmt( config_node->enkf_outfile_fmt ) , path_fmt_get_fmt( config_node->enkf_infile_fmt ) , config_node->min_std_file , stream ); break; case(GEN_DATA): if (config_node->var_type == PARAMETER) fprintf( stream , CONFIG_KEY_FORMAT , GEN_PARAM_KEY ); else fprintf( stream , CONFIG_KEY_FORMAT , GEN_DATA_KEY ); gen_data_config_fprintf_config( config_node->data , config_node->var_type , path_fmt_get_fmt( config_node->enkf_outfile_fmt ) , path_fmt_get_fmt( config_node->enkf_infile_fmt ) , config_node->min_std_file , stream ); break; default: util_abort("%s: internal error - function can not store configuration for: %s variables. \n",__func__ , enkf_types_get_impl_name( config_node->impl_type) ); } fprintf( stream , "\n"); }
obs_vector_type * obs_vector_alloc_from_GENERAL_OBSERVATION(const conf_instance_type * conf_instance , const history_type * history, const ensemble_config_type * ensemble_config) { if(!conf_instance_is_of_class(conf_instance, "GENERAL_OBSERVATION")) util_abort("%s: internal error. expected \"GENERAL_OBSERVATION\" instance, got \"%s\".\n", __func__, conf_instance_get_class_name_ref(conf_instance) ); const char * obs_key = conf_instance_get_name_ref(conf_instance); const char * state_kw = conf_instance_get_item_value_ref( conf_instance, "DATA" ); if (ensemble_config_has_key( ensemble_config , state_kw )) { const char * obs_key = conf_instance_get_name_ref(conf_instance); int size = history_get_last_restart( history ); obs_vector_type * obs_vector = obs_vector_alloc( GEN_OBS , obs_key , ensemble_config_get_node(ensemble_config , state_kw ), size); int obs_restart_nr = __conf_instance_get_restart_nr(conf_instance , obs_key , history , size); const char * index_file = NULL; const char * index_list = NULL; const char * obs_file = NULL; const char * error_covar_file = NULL; if (conf_instance_has_item(conf_instance , "INDEX_FILE")) index_file = conf_instance_get_item_value_ref( conf_instance, "INDEX_FILE" ); if (conf_instance_has_item(conf_instance , "INDEX_LIST")) index_list = conf_instance_get_item_value_ref( conf_instance, "INDEX_LIST" ); if (conf_instance_has_item(conf_instance , "OBS_FILE")) obs_file = conf_instance_get_item_value_ref( conf_instance, "OBS_FILE" ); if (conf_instance_has_item(conf_instance , "ERROR_COVAR")) error_covar_file = conf_instance_get_item_value_ref( conf_instance, "ERROR_COVAR" ); { const enkf_config_node_type * config_node = ensemble_config_get_node( ensemble_config , state_kw); if (enkf_config_node_get_impl_type(config_node) == GEN_DATA) { double scalar_error = -1; double scalar_value = -1; gen_obs_type * gen_obs ; if (conf_instance_has_item(conf_instance , "VALUE")) { scalar_value = conf_instance_get_item_value_double(conf_instance , "VALUE"); scalar_error = conf_instance_get_item_value_double(conf_instance , "ERROR"); } /** The config system has ensured that we have either OBS_FILE or (VALUE and ERROR). */ gen_obs = gen_obs_alloc( enkf_config_node_get_ref( config_node ) , obs_key , obs_file , scalar_value , scalar_error , index_file , index_list , error_covar_file); obs_vector_install_node( obs_vector , obs_restart_nr , gen_obs ); } else { ert_impl_type impl_type = enkf_config_node_get_impl_type(config_node); util_abort("%s: %s has implementation type:\'%s\' - expected:\'%s\'.\n",__func__ , state_kw , enkf_types_get_impl_name(impl_type) , enkf_types_get_impl_name(GEN_DATA)); } } return obs_vector; } else { fprintf(stderr,"** Warning the ensemble key:%s does not exist - observation:%s not added \n", state_kw , obs_key); return NULL; } }