23#define DUMMY_GRID_NAME ("dummy_grid")
27 char * grid_filename =
"test_read_scrip_c_grids.nc";
28 char * mask_filename =
"test_read_scrip_c_masks.nc";
29 utest_write_dummy_scrip_grid_file(
31 360, 10, (
double[]){0.0,360.0}, (
double[]){0.0, 10.0});
33 size_t ref_num_cells = 360 * 10;
34 size_t ref_num_vertices = 360 * 11;
36 int valid_mask_value = 0;
46 size_t * duplicated_cell_idx = NULL;
47 yac_int * orig_cell_global_ids = NULL;
48 size_t nbr_duplicated_cells = 0;
50 size_t cell_coord_idx;
54 grid_filename, mask_filename, gridname, valid_mask_value, gridname,
55 0, &cell_coord_idx, &duplicated_cell_idx, &orig_cell_global_ids,
56 &nbr_duplicated_cells);
58 if (ref_num_vertices !=
60 PUT_ERR(
"error in yac_read_scrip_grid");
63 PUT_ERR(
"error in yac_read_scrip_grid");
65 free(duplicated_cell_idx);
66 free(orig_cell_global_ids);
68 #ifdef WRITE_VTK_GRID_FILE
71 char const * vtk_gridname =
"test_read_scrip_grid_c";
72 char const * vtk_filename =
"test_read_scrip_grid_c.vtk";
77 PUT_ERR(
"ERROR in yac_write_basic_grid_to_file");
89 int * num_vertices_per_cell;
96 size_t * duplicated_cell_idx;
97 size_t * orig_cell_idx;
98 size_t nbr_duplicated_cells;
101 grid_filename, mask_filename, gridname, valid_mask_value,
102 &num_vertices, &
num_cells, &num_vertices_per_cell,
103 &x_vertices, &y_vertices, &x_cells, &y_cells,
105 &duplicated_cell_idx, &orig_cell_idx, &nbr_duplicated_cells);
107 if (ref_num_vertices != num_vertices)
108 PUT_ERR(
"error in yac_read_scrip_grid_information");
110 PUT_ERR(
"error in yac_read_scrip_grid_information");
112 free(num_vertices_per_cell);
119 free(duplicated_cell_idx);
129 grid_filename, mask_filename, gridname, valid_mask_value, gridname,
130 1, NULL, NULL, NULL, NULL);
132#ifdef WRITE_VTK_GRID_FILE
133 char vtk_gridname[64];
135 scrip_grid, strcat(strcpy(vtk_gridname, gridname),
"_ll"));
144 char * grid_filename =
"test_read_scrip_cloud_c_grids.nc";
145 char * mask_filename =
"test_read_scrip_cloud_c_masks.nc";
146 utest_write_dummy_scrip_grid_file(
148 380, 180, (
double[]){0.0,380.0}, (
double[]){-90.0, 90.0});
150 size_t vertex_coord_idx;
151 size_t * duplicated_vertex_idx;
152 yac_int * orig_vertex_global_ids;
153 size_t nbr_duplicated_vertices;
158 &orig_vertex_global_ids, &nbr_duplicated_vertices);
160#ifdef WRITE_VTK_GRID_FILE
171 if (scrip_cloud_grid_data->
num_cells != 0)
172 PUT_ERR(
"wrong number of cells");
174 PUT_ERR(
"wrong global number of vertices");
175 if (nbr_duplicated_vertices != 20 * 180)
176 PUT_ERR(
"wrong global number of duplicated vertices");
177 if (scrip_cloud_grid_data->
num_edges != 0)
178 PUT_ERR(
"wrong number of edges");
186 if (scrip_cloud_grid_data.
num_cells != 0)
187 PUT_ERR(
"wrong number of cells");
189 PUT_ERR(
"wrong global number of vertices");
190 if (scrip_cloud_grid_data.
num_edges != 0)
191 PUT_ERR(
"wrong number of edges");
196 free(duplicated_vertex_idx);
197 free(orig_vertex_global_ids);
201 unlink(grid_filename);
202 unlink(mask_filename);
207 char * grid_filename =
"test_read_scrip_masked_cloud_c_grids.nc";
208 char * mask_filename =
"test_read_scrip_masked_cloud_c_masks.nc";
209 enum {NUM_LON = 36, NUM_LAT = 18, INVALID_CELL_STRIDE = 3};
212 NUM_LON, NUM_LAT, (
double[]){0.0,360.0}, (
double[]){-90.0, 90.0}, 3);
214 size_t ref_num_valid_vertices = 0;
215 for (
size_t i = 0; i < NUM_LON * NUM_LAT; ++i)
216 if (i % INVALID_CELL_STRIDE) ++ref_num_valid_vertices;
222 if (
grid_data.num_vertices != NUM_LON * NUM_LAT)
223 PUT_ERR(
"wrong number of vertices");
225 PUT_ERR(
"wrong number of cells");
227 size_t num_valid_vertices = 0;
228 for (
size_t i = 0; i <
grid_data.num_vertices; ++i)
229 if (
grid_data.core_vertex_mask[i]) ++num_valid_vertices;
230 if (num_valid_vertices != ref_num_valid_vertices)
231 PUT_ERR(
"wrong number of unmasked vertices");
235 unlink(grid_filename);
236 unlink(mask_filename);
242 char * grid_filename =
"test_read_scrip_penta_c_grids.nc";
243 char * mask_filename =
"test_read_scrip_penta_c_masks.nc";
244 enum {NUM_LON = 36, NUM_LAT = 18, INVALID_CELL_STRIDE = 5};
247 NUM_LON, NUM_LAT, (
double[]){0.0,360.0}, (
double[]){-90.0, 90.0},
248 INVALID_CELL_STRIDE);
250 size_t ref_num_valid_cells = 0;
251 for (
size_t i = 0; i < NUM_LON * NUM_LAT; ++i)
252 if (i % INVALID_CELL_STRIDE) ++ref_num_valid_cells;
259 1, NULL, NULL, NULL, NULL);
263 if (penta_grid_data->
num_cells != NUM_LON * NUM_LAT)
264 PUT_ERR(
"wrong number of cells");
266 size_t num_valid_cells = 0;
267 for (
size_t i = 0; i < penta_grid_data->
num_cells; ++i)
269 if (num_valid_cells != ref_num_valid_cells)
270 PUT_ERR(
"wrong number of unmasked cells");
274 unlink(grid_filename);
275 unlink(mask_filename);
278 unlink(grid_filename);
279 unlink(mask_filename);
struct yac_basic_grid_data * yac_basic_grid_get_data(struct yac_basic_grid *grid)
char const * yac_basic_grid_get_name(struct yac_basic_grid *grid)
size_t yac_basic_grid_get_data_size(struct yac_basic_grid *grid, enum yac_location location)
void yac_basic_grid_delete(struct yac_basic_grid *grid)
void yac_basic_grid_data_free(struct yac_basic_grid_data grid)
void yac_write_basic_grid_to_file(struct yac_basic_grid *grid, char const *name)
void write_dummy_scrip_grid_file_ext(char *grid_name, char *grid_filename, char *mask_filename, size_t num_corners, size_t num_lon, size_t num_lat, double lon_range[2], double lat_range[2], size_t invalid_cell_stride)
int yac_file_exists(const char *filename)
Check whether a file exists.
void yac_read_scrip_grid_information(char const *grid_filename, char const *mask_filename, char const *grid_name, int valid_mask_value, size_t *num_vertices, size_t *num_cells, int **num_vertices_per_cell, double **x_vertices, double **y_vertices, double **x_cells, double **y_cells, int **cell_to_vertex, int **cell_core_mask, size_t **duplicated_cell_idx, size_t **orig_cell_idx, size_t *nbr_duplicated_cells)
struct yac_basic_grid_data yac_read_scrip_cloud_basic_grid_data(char const *grid_filename, char const *mask_filename, char const *grid_name, int valid_mask_value)
struct yac_basic_grid * yac_read_scrip_cloud_basic_grid(char const *grid_filename, char const *mask_filename, char const *grid_name, int valid_mask_value, char const *name, size_t *vertex_coord_idx, size_t **duplicated_vertex_idx, yac_int **orig_vertex_global_ids, size_t *nbr_duplicated_vertices)
struct yac_basic_grid * yac_read_scrip_basic_grid(char const *grid_filename, char const *mask_filename, char const *grid_name, int valid_mask_value, char const *name, int use_ll_edges, size_t *cell_coord_idx, size_t **duplicated_cell_idx, yac_int **orig_cell_global_ids, size_t *nbr_duplicated_cells)