int test_grdecl_loader() { FILE * stream = util_fopen("/private/joaho/ERT/NR/python/ctypes/test/data/eclipse/case/PERMX.grdecl" , "r"); ecl_kw_type * kw = ecl_kw_fscanf_alloc_grdecl_dynamic( stream , "PERMX" , ECL_FLOAT_TYPE ); ecl_kw_free( kw ); fclose( stream ); return 1; }
bool check_original_exported_data_equal(const enkf_node_type * field_node) { FILE * original_stream = util_fopen( "petro.grdecl" , "r"); ecl_kw_type * kw_original = ecl_kw_fscanf_alloc_grdecl_dynamic( original_stream , "PORO" , ECL_DOUBLE_TYPE ); enkf_node_ecl_write(field_node, "tmp", NULL, 0); FILE * exported_stream = util_fopen( "tmp/PORO.grdecl" , "r"); ecl_kw_type * kw_exported = ecl_kw_fscanf_alloc_grdecl_dynamic( exported_stream , "PORO" , ECL_DOUBLE_TYPE ); bool ret = ecl_kw_numeric_equal(kw_original, kw_exported, 1e-5); util_fclose(original_stream); util_fclose(exported_stream); ecl_kw_free(kw_original); ecl_kw_free(kw_exported); return ret; }
int main(int argc , char ** argv) { FILE * stream = util_fopen( argv[1] , "r"); ecl_kw_type * gridhead_kw = ecl_kw_fscanf_alloc_grdecl_dynamic__( stream , SPECGRID_KW , false , ECL_INT_TYPE ); ecl_kw_type * zcorn_kw = ecl_kw_fscanf_alloc_grdecl_dynamic( stream , ZCORN_KW , ECL_FLOAT_TYPE ); ecl_kw_type * coord_kw = ecl_kw_fscanf_alloc_grdecl_dynamic( stream , COORD_KW , ECL_FLOAT_TYPE ); ecl_kw_type * actnum_kw = ecl_kw_fscanf_alloc_grdecl_dynamic( stream , ACTNUM_KW , ECL_INT_TYPE ); { int nx = ecl_kw_iget_int( gridhead_kw , SPECGRID_NX_INDEX ); int ny = ecl_kw_iget_int( gridhead_kw , SPECGRID_NY_INDEX ); int nz = ecl_kw_iget_int( gridhead_kw , SPECGRID_NZ_INDEX ); ecl_grid_type * ecl_grid = ecl_grid_alloc_GRDECL_kw( nx , ny , nz, zcorn_kw, coord_kw , actnum_kw , NULL ); /* .... */ ecl_grid_free( ecl_grid ); } ecl_kw_free( gridhead_kw ); ecl_kw_free( zcorn_kw ); ecl_kw_free( actnum_kw ); ecl_kw_free( coord_kw ); fclose( stream ); }
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); }