void test_create_from_field(ecl_grid_type * grid) { field_config_type * field_config = field_config_alloc_empty( "PRESSURE" , grid , NULL ); block_obs_type * block_obs = block_obs_alloc( "ObsKey" , field_config , grid ); test_assert_true( block_obs_is_instance( block_obs )); test_assert_int_equal(0 , block_obs_get_size( block_obs )); block_obs_append_field_obs( block_obs , 10 , 12 , 8 , 100 , 25); test_assert_int_equal(1 , block_obs_get_size( block_obs )); block_obs_append_field_obs( block_obs , 10 , 12 , 9 , 100 , 25); test_assert_int_equal(2 , block_obs_get_size( block_obs )); block_obs_free( block_obs ); field_config_free( field_config ); }
/** This will create a new gen_kw_config instance which is NOT yet valid. Mainly support code for the GUI. */ enkf_config_node_type * enkf_config_node_new_field( const char * key , ecl_grid_type * ecl_grid, field_trans_table_type * trans_table) { enkf_config_node_type * config_node = enkf_config_node_alloc__( INVALID , FIELD , key ); config_node->data = field_config_alloc_empty( key , ecl_grid , trans_table ); return config_node; }
void check_exported_data(const char * exported_file, const char * init_file, field_file_format_type file_type, const field_config_type * field_config, const field_type * field, int nx, int ny, int nz) { FILE * original_stream = NULL; ecl_kw_type * kw_original = NULL; FILE * exported_stream = NULL; ecl_kw_type * kw_exported = NULL; field_type * exported_field = NULL; field_config_type * exported_field_config = NULL; { if (init_file) { original_stream = util_fopen( init_file , "r"); kw_original = ecl_kw_fscanf_alloc_grdecl_dynamic( original_stream , field_config_get_key(field_config) , ECL_DOUBLE_TYPE ); } if (ECL_GRDECL_FILE == file_type) { exported_stream = util_fopen( exported_file , "r"); kw_exported = ecl_kw_fscanf_alloc_grdecl_dynamic( exported_stream , field_config_get_key(field_config) , ECL_DOUBLE_TYPE ); } else if (RMS_ROFF_FILE == file_type) { ecl_grid_type * grid = field_config_get_grid(field_config); exported_field_config = field_config_alloc_empty(field_config_get_key(field_config), grid, NULL, true); exported_field = field_alloc(exported_field_config); bool keep_inactive = true; field_fload_rms(exported_field, exported_file, keep_inactive); } } { int k, j, i = 0; for (k=0; k < nz; k++) { for (j=0; j < ny; j++) { for (i=0; i < nx; i++) { bool active = field_config_active_cell(field_config, i, j, k); double field_value = active ? field_ijk_get_double(field, i, j, k) : 0.0; int global_index = field_config_global_index(field_config , i , j , k); double exported_value = 0.0; if (ECL_GRDECL_FILE == file_type) exported_value = ecl_kw_iget_as_double(kw_exported, global_index); else if (RMS_ROFF_FILE == file_type) { exported_value = field_ijk_get_double(exported_field, i, j, k); } double initial_value = init_file ? ecl_kw_iget_as_double(kw_original, global_index) : 0.0; if (active) test_assert_double_equal(field_value, exported_value); else if (init_file) test_assert_double_equal(initial_value, exported_value); else if (file_type == RMS_ROFF_FILE) test_assert_double_equal(RMS_INACTIVE_DOUBLE, exported_value); else test_assert_double_equal(0.0, exported_value); } } } } if (init_file) { util_fclose(original_stream); ecl_kw_free(kw_original); } if (ECL_GRDECL_FILE == file_type) { util_fclose(exported_stream); ecl_kw_free(kw_exported); } else field_free(exported_field); }