void * enkf_main_std_scale_correlated_obs_JOB(void * self, const stringlist_type * args) { if (stringlist_get_size(args) > 0) { enkf_main_type * enkf_main = enkf_main_safe_cast( self ); int ensemble_size = enkf_main_get_ensemble_size(enkf_main); enkf_fs_type * fs = enkf_main_get_fs( enkf_main ); enkf_obs_type * obs = enkf_main_get_obs( enkf_main ); int_vector_type * realizations = int_vector_alloc(1, 0); local_obsdata_type * obsdata = local_obsdata_alloc( "OBS-JOB" ); int_vector_init_range(realizations, 0, ensemble_size, 1); for (int iarg = 0; iarg < stringlist_get_size(args); iarg++) { const char * arg_key = stringlist_iget( args , iarg ); stringlist_type * key_list = enkf_obs_alloc_matching_keylist(obs, arg_key); for (int iobs=0; iobs < stringlist_get_size( key_list ); iobs++) { const char * obs_key = stringlist_iget( key_list , iobs); const obs_vector_type * obs_vector = enkf_obs_get_vector(obs, obs_key); local_obsdata_add_node( obsdata , obs_vector_alloc_local_node(obs_vector) ); } stringlist_free( key_list ); } if (local_obsdata_get_size(obsdata) > 0) enkf_obs_scale_correlated_std(obs, fs, realizations, obsdata ); local_obsdata_free( obsdata ); } return NULL; }
int main(int argc , char ** argv) { local_obsdata_type * obsdata; obsdata = local_obsdata_alloc( "KEY"); test_assert_true( local_obsdata_is_instance( obsdata )); test_assert_int_equal( 0 , local_obsdata_get_size( obsdata )); test_assert_string_equal( "KEY" , local_obsdata_get_name( obsdata )); { local_obsdata_node_type * obsnode = local_obsdata_node_alloc( "KEY" ); test_assert_true( local_obsdata_add_node( obsdata , obsnode ) ); test_assert_false( local_obsdata_add_node( obsdata , obsnode ) ); test_assert_int_equal( 1 , local_obsdata_get_size( obsdata )); test_assert_ptr_equal( obsnode , local_obsdata_iget( obsdata , 0)); } local_obsdata_free( obsdata ); test_wrapper(); exit(0); }
local_obsdata_type * local_obsdata_alloc_wrapper( local_obsdata_node_type * node ) { local_obsdata_type * data = local_obsdata_alloc( local_obsdata_node_get_key( node )); local_obsdata_add_node( data , node ); return data; }
void local_ministep_add_obsdata_node( local_ministep_type * ministep , local_obsdata_node_type * obsdatanode) { local_obsdata_type * obsdata = local_ministep_get_obsdata(ministep); local_obsdata_add_node(obsdata, obsdatanode); }