YAC 3.18.0
Yet Another Coupler
Loading...
Searching...
No Matches
test_query_routines_c.c
Go to the documentation of this file.
1// Copyright (c) 2024 The YAC Authors
2//
3// SPDX-License-Identifier: BSD-3-Clause
4
5#include <stdlib.h>
6#include <stdio.h>
7#include <string.h>
8
9#include <mpi.h>
10#include <yaxt.h>
11
12#include "tests.h"
13
14#include "yac.h"
15
21#define YAC_RAD (0.01745329251994329576923690768489) // M_PI / 180
22
23void yac_cget_comp_size_c2py(int comp_id, int* size);
24void yac_cget_comp_rank_c2py(int comp_id, int* rank);
25void yac_cget_instance_rank_c2py(int yac_instance_id, int * rank);
26void yac_cget_instance_size_c2py(int yac_instance_id, int * size);
27
28int main(void) {
29
30 MPI_Init(NULL, NULL);
31 xt_initialize(MPI_COMM_WORLD);
32
33 // Test yac_cdefault_instance_defined before initialization
35 PUT_ERR("error: yac_cdefault_instance_defined should return 0 before init");
36
37 int yac_id;
39 yac_cinit();
40
41 // Test yac_cdefault_instance_defined after initialization
43 PUT_ERR("error: yac_cdefault_instance_defined should return 1 after init");
44
45 yac_cinit_instance(&yac_id);
46
47 int global_rank, global_size;
48 MPI_Comm_rank(MPI_COMM_WORLD, &global_rank);
49 MPI_Comm_size(MPI_COMM_WORLD, &global_size);
50
51 //--------------------------------------------------
52 // definition of components, grid, points and fields
53 //--------------------------------------------------
54
55 int rank_type = global_rank%5;
56
57 if (rank_type == 0) {
58
59 // ranks of type 0 define no data
60 yac_cdef_comps(NULL, 0, NULL);
61 yac_cdef_comps_instance(yac_id, NULL, 0, NULL);
62
63 } else {
64
65 // ranks of type 1 or higher define a component
66 char comp_name[16];
67 int comp_id, comp_id_instance;
68 sprintf(comp_name, "comp_%d", global_rank);
69 int prelim_comp_id = yac_cget_comp_id(comp_name);
70 int prelim_comp_id_instance =
71 yac_cget_comp_id_instance(yac_id, comp_name);
72 yac_cdef_comp(comp_name, &comp_id);
73 yac_cdef_comp_instance(yac_id, comp_name, &comp_id_instance);
74 if (prelim_comp_id != comp_id)
75 PUT_ERR("ERROR in yac_cget_comp_id");
76 if (prelim_comp_id_instance != comp_id_instance)
77 PUT_ERR("ERROR in yac_cget_comp_id_instance");
78
79 // test C to Python interfaces
80 {
81 int size, rank;
82
84 if (size != 1) PUT_ERR("error in yac_cget_comp_size_c2py");
85
87 if (rank != 0) PUT_ERR("erro in yac_cget_comp_rank_c2py");
88
89 yac_cget_instance_rank_c2py(yac_id, &rank);
90 if (rank != global_rank)
91 PUT_ERR("error in yac_cget_instance_rank_c2py");
92
93 yac_cget_instance_size_c2py(yac_id, &size);
94 if (size != global_size)
95 PUT_ERR("error in yac_cget_instance_size_c2py");
96 }
97
98 // ranks of type 2 or higher define a grid and attach some
99 // meta data to their component
100 if (rank_type > 1) {
101
102 char comp_meta_data[64];
103 sprintf(comp_meta_data, "%s METADATA_C", comp_name);
104 yac_cdef_component_metadata(comp_name, comp_meta_data);
105 sprintf(comp_meta_data, "%s METADATA_C_instance", comp_name);
106 yac_cdef_component_metadata_instance(yac_id, comp_name, comp_meta_data);
107
108 char grid_name[16];
109 int grid_id;
110 sprintf(grid_name, "grid_%d_0", global_rank);
111 int prelim_grid_id = yac_cget_grid_id(grid_name);
113 grid_name, (int[]){2, 2}, (int[]){0,0},
114 (double[]){0.*YAC_RAD,180.*YAC_RAD},
115 (double[]){-45.*YAC_RAD,45.*YAC_RAD}, &grid_id);
116 if (prelim_grid_id != grid_id)
117 PUT_ERR("ERROR in yac_cget_grid_id");
118
119 int point_id;
120 char point_name[16];
121 sprintf(point_name, "p_%d_0", global_rank);
122 int prelim_point_id =
125 grid_id, (int[]){1,1}, YAC_LOCATION_CELL,
126 (double[]){90.*YAC_RAD}, (double[]){0.*YAC_RAD}, point_name,
127 &point_id);
128 if (prelim_point_id != point_id)
129 PUT_ERR("ERROR in yac_cget_points_id");
130
131 int mask_id;
132 int prelim_mask_id =
135 grid_id, 1, YAC_LOCATION_CELL, (int[]){1}, "mask_0", &mask_id);
136 if (prelim_mask_id != mask_id)
137 PUT_ERR("ERROR in yac_cget_mask_id");
138
139 // ranks of type 3 or higher define a second grid, attach some
140 // meta data to it
141 if (rank_type > 2) {
142
143 sprintf(grid_name, "grid_%d_1", global_rank);
145 grid_name, (int[]){2, 2}, (int[]){0,0},
146 (double[]){0.*YAC_RAD,180.*YAC_RAD},
147 (double[]){-45.*YAC_RAD,45.*YAC_RAD}, &grid_id);
148
150 grid_id, (int[]){1,1}, YAC_LOCATION_CELL,
151 (double[]){90.*YAC_RAD}, (double[]){0.*YAC_RAD}, &point_id);
152
153 char grid_meta_data[64];
154 sprintf(grid_meta_data, "%s METADATA_G", grid_name);
155 yac_cdef_grid_metadata(grid_name, grid_meta_data);
156 sprintf(grid_meta_data, "%s METADATA_G_instance", grid_name);
157 yac_cdef_grid_metadata_instance(yac_id, grid_name, grid_meta_data);
158
159 // ranks of type 4 or higher define a third grid, attach some
160 // meta data to it and define two fields (one with meta data
161 // and one without)
162 if (rank_type > 3) {
163
164 sprintf(grid_name, "grid_%d_2", global_rank);
166 grid_name, (int[]){2, 2}, (int[]){0,0},
167 (double[]){0.*YAC_RAD,180.*YAC_RAD},
168 (double[]){-45.*YAC_RAD,45.*YAC_RAD}, &grid_id);
169
171 grid_id, (int[]){1,1}, YAC_LOCATION_CELL,
172 (double[]){90.*YAC_RAD}, (double[]){0.*YAC_RAD}, &point_id);
173
174 char grid_meta_data[64];
175 sprintf(grid_meta_data, "%s METADATA_G", grid_name);
176 yac_cdef_grid_metadata(grid_name, grid_meta_data);
177 sprintf(grid_meta_data, "%s METADATA_G_instance", grid_name);
178 yac_cdef_grid_metadata_instance(yac_id, grid_name, grid_meta_data);
179
180 char field_name[16];
181 int field_id, field_id_instance;
182 int point_ids[1];
183 point_ids[0] = point_id;
184 sprintf(field_name, "field_%d_0", global_rank);
186 field_name, comp_id, point_ids, 1, 1, "PT5M",
189 field_name, comp_id_instance, point_ids, 1, 1, "PT5M",
190 YAC_TIME_UNIT_ISO_FORMAT, &field_id_instance);
191
192 sprintf(field_name, "field_%d_1", global_rank);
194 field_name, comp_id, point_ids, 1, 1, "PT5M",
197 field_name, comp_id_instance, point_ids, 1, 1, "PT5M",
198 YAC_TIME_UNIT_ISO_FORMAT, &field_id_instance);
199
200 char field_meta_data[64];
201 sprintf(field_meta_data, "%s METADATA_F", field_name);
203 comp_name, grid_name, field_name, field_meta_data);
204 sprintf(field_meta_data, "%s METADATA_F_instance", field_name);
206 yac_id, comp_name, grid_name, field_name, field_meta_data);
207
208 //----------------------------------------
209 // test some field_id based query routines
210 //----------------------------------------
211 if (!yac_cget_field_is_defined(comp_name, grid_name, field_name))
212 PUT_ERR("ERROR in yac_cget_field_is_defined");
213 if (yac_cget_field_is_defined(comp_name, grid_name, "undefined_field"))
214 PUT_ERR("ERROR in yac_cget_field_is_defined");
215 if (yac_cget_field_is_defined(comp_name, "undefined_grid", field_name))
216 PUT_ERR("ERROR in yac_cget_field_is_defined");
217 if (yac_cget_field_is_defined("undefined_comp", grid_name, field_name))
218 PUT_ERR("ERROR in yac_cget_field_is_defined");
220 yac_id, comp_name, grid_name, field_name))
221 PUT_ERR("ERROR in yac_cget_field_is_defined_instance");
223 yac_id, comp_name, grid_name, "undefined_field"))
224 PUT_ERR("ERROR in yac_cget_field_is_defined_instance");
226 yac_id, comp_name, "undefined_grid", field_name))
227 PUT_ERR("ERROR in yac_cget_field_is_defined_instance");
229 yac_id, "undefined_comp", grid_name, field_name))
230 PUT_ERR("ERROR in yac_cget_field_is_defined_instance");
231 if (field_id != yac_cget_field_id(comp_name, grid_name, field_name))
232 PUT_ERR("ERROR in yac_cget_field_id");
233 if (field_id_instance !=
235 yac_id, comp_name, grid_name, field_name))
236 PUT_ERR("ERROR in yac_cget_field_id_instance");
237 if (strcmp(comp_name, yac_cget_component_name_from_field_id(field_id)))
238 PUT_ERR("ERROR in yac_cget_component_name_from_field_id");
239 if (strcmp(comp_name,
240 yac_cget_component_name_from_field_id(field_id_instance)))
241 PUT_ERR("ERROR in yac_cget_component_name_from_field_id");
242 if (strcmp(grid_name, yac_cget_grid_name_from_field_id(field_id)))
243 PUT_ERR("ERROR in yac_cget_grid_name_from_field_id");
244 if (strcmp(grid_name,
245 yac_cget_grid_name_from_field_id(field_id_instance)))
246 PUT_ERR("ERROR in yac_cget_grid_name_from_field_id");
247 if (strcmp(field_name, yac_cget_field_name_from_field_id(field_id)))
248 PUT_ERR("ERROR in yac_cget_field_name_from_field_id");
249 if (strcmp(field_name,
250 yac_cget_field_name_from_field_id(field_id_instance)))
251 PUT_ERR("ERROR in yac_cget_field_name_from_field_id");
252 if (strcmp("PT5M", yac_cget_timestep_from_field_id(field_id)))
253 PUT_ERR("ERROR in yac_cget_timestep_from_field_id");
254 if (strcmp("PT5M",
255 yac_cget_timestep_from_field_id(field_id_instance)))
256 PUT_ERR("ERROR in yac_cget_timestep_from_field_id");
258 PUT_ERR("ERROR in yac_cget_collection_size_from_field_id");
259 if (1 != yac_cget_collection_size_from_field_id(field_id_instance))
260 PUT_ERR("ERROR in yac_cget_collection_size_from_field_id");
263 PUT_ERR("ERROR in yac_cget_role_from_field_id");
265 yac_cget_role_from_field_id(field_id_instance))
266 PUT_ERR("ERROR in yac_cget_role_from_field_id");
267 }
268 }
269 }
270 }
271
272 // end definition phase and synchronise definitions across all processes
275
276 //--------------------
277 // test query routines
278 //--------------------
279
280 int const ref_nbr_comps = 4 * ((global_size - 1) / 5) + ((global_size - 1) % 5);
281
282 if (ref_nbr_comps != yac_cget_nbr_comps())
283 PUT_ERR("ERROR in yac_cget_nbr_comps");
284 if (ref_nbr_comps != yac_cget_nbr_comps_instance(yac_id))
285 PUT_ERR("ERROR in yac_cget_nbr_comps_instance");
286
287 char const ** comp_names =
288 malloc((size_t)ref_nbr_comps * sizeof(*comp_names));
289 char const ** comp_names_instance =
290 malloc((size_t)ref_nbr_comps * sizeof(*comp_names_instance));
291 yac_cget_comp_names(ref_nbr_comps, comp_names);
292 yac_cget_comp_names_instance(yac_id, ref_nbr_comps, comp_names_instance);
293
294 int const ref_nbr_grids =
295 3 * ((global_size - 1) / 5) +
296 ((global_size - 1) % 5 > 2) +
297 2 * ((global_size - 1) % 5 > 3);
298
299 if (ref_nbr_grids != yac_cget_nbr_grids())
300 PUT_ERR("ERROR in yac_cget_nbr_grids");
301 if (ref_nbr_grids != yac_cget_nbr_grids_instance(yac_id))
302 PUT_ERR("ERROR in yac_cget_nbr_grids_instance");
303
304 char const ** grid_names =
305 malloc((size_t)ref_nbr_grids * sizeof(*grid_names));
306 char const ** grid_names_instance =
307 malloc((size_t)ref_nbr_grids * sizeof(*grid_names_instance));
308 yac_cget_grid_names(ref_nbr_grids, grid_names);
309 yac_cget_grid_names_instance(yac_id, ref_nbr_grids, grid_names_instance);
310
311 for (int rank = 0; rank < global_size; ++rank) {
312
313 int idx;
314 int rank_type = rank % 5;
315
316 char ref_comp_name[16];
317 char ref_grid_names[3][32];
318 char ref_field_names[2][32];
319 sprintf(ref_comp_name, "comp_%d", rank);
320 for (int i = 0; i < 3; ++i)
321 sprintf(ref_grid_names[i], "grid_%d_%d", rank, i);
322 for (int i = 0; i < 2; ++i)
323 sprintf(ref_field_names[i], "field_%d_%d", rank, i);
324
325 if (rank_type == 0) {
326
327 // no component or grid is defined on this rank
328 for (idx = 0; idx < ref_nbr_comps; ++idx)
329 if (!strcmp(ref_comp_name, comp_names[idx])) break;
330 if (idx != ref_nbr_comps) PUT_ERR("ERROR in yac_cget_comp_names");
331 for (idx = 0; idx < ref_nbr_comps; ++idx)
332 if (!strcmp(ref_comp_name, comp_names_instance[idx])) break;
333 if (idx != ref_nbr_comps) PUT_ERR("ERROR in yac_cget_comp_names_instance");
334 for (int i = 0; i < 3; ++i) {
335 for (idx = 0; idx < ref_nbr_grids; ++idx)
336 if (!strcmp(ref_grid_names[i], grid_names[idx])) break;
337 if (idx != ref_nbr_grids) PUT_ERR("ERROR in yac_cget_grid_names");
338 for (idx = 0; idx < ref_nbr_grids; ++idx)
339 if (!strcmp(ref_grid_names[i], grid_names_instance[idx])) break;
340 if (idx != ref_nbr_grids) PUT_ERR("ERROR in yac_cget_grid_names_instance");
341 }
342
343 } else {
344
345 // a component is defined on this process
346 for (idx = 0; idx < ref_nbr_comps; ++idx)
347 if (!strcmp(ref_comp_name, comp_names[idx])) break;
348 if (idx == ref_nbr_comps) PUT_ERR("ERROR in yac_cget_comp_names");
349 for (idx = 0; idx < ref_nbr_comps; ++idx)
350 if (!strcmp(ref_comp_name, comp_names_instance[idx])) break;
351 if (idx == ref_nbr_comps) PUT_ERR("ERROR in yac_cget_comp_names_instance");
352
353 if (rank_type == 1) {
354
355 // the component of this rank has no meta data
356 if (yac_cget_component_metadata(ref_comp_name))
357 PUT_ERR("ERROR in yac_cget_component_metadata");
358 if (yac_cget_component_metadata_instance(yac_id, ref_comp_name))
359 PUT_ERR("ERROR in yac_cget_component_metadata_instance");
360
361 // no grid is registered in the coupling configuration on this rank
362 for (int i = 0; i < 3; ++i) {
363 for (idx = 0; idx < ref_nbr_grids; ++idx)
364 if (!strcmp(ref_grid_names[i], grid_names[idx])) break;
365 if (idx != ref_nbr_grids) PUT_ERR("ERROR in yac_cget_grid_names");
366 for (idx = 0; idx < ref_nbr_grids; ++idx)
367 if (!strcmp(ref_grid_names[i], grid_names_instance[idx])) break;
368 if (idx != ref_nbr_grids) PUT_ERR("ERROR in yac_cget_grid_names_instance");
369 }
370
371 if (yac_cget_comp_nbr_grids(ref_comp_name) != 0)
372 PUT_ERR("ERROR in yac_cget_comp_nbr_grids");
373 if (yac_cget_comp_nbr_grids_instance(yac_id, ref_comp_name) != 0)
374 PUT_ERR("ERROR in yac_cget_comp_nbr_grids_instance");
375
376 } else {
377
378 char ref_comp_meta_data[64], ref_comp_meta_data_instance[64];
379 sprintf(ref_comp_meta_data, "%s METADATA_C", ref_comp_name);
380 sprintf(ref_comp_meta_data_instance, "%s METADATA_C_instance",
381 ref_comp_name);
382
383 // the component has meta data on this rank
384 if (strcmp(
385 ref_comp_meta_data,
386 yac_cget_component_metadata(ref_comp_name)))
387 PUT_ERR("ERROR in yac_cget_component_metadata");
388 if (strcmp(
389 ref_comp_meta_data_instance,
390 yac_cget_component_metadata_instance(yac_id, ref_comp_name)))
391 PUT_ERR("ERROR in yac_cget_component_metadata_instance");
392
393 if (rank_type == 2) {
394
395 // no grid is registered in the coupling configuration on this rank
396 for (int i = 0; i < 3; ++i) {
397 for (idx = 0; idx < ref_nbr_grids; ++idx)
398 if (!strcmp(ref_grid_names[i], grid_names[idx])) break;
399 if (idx != ref_nbr_grids) PUT_ERR("ERROR in yac_cget_grid_names");
400 for (idx = 0; idx < ref_nbr_grids; ++idx)
401 if (!strcmp(ref_grid_names[i], grid_names_instance[idx])) break;
402 if (idx != ref_nbr_grids)
403 PUT_ERR("ERROR in yac_cget_grid_names_instance");
404 }
405
406 if (yac_cget_comp_nbr_grids(ref_comp_name) != 0)
407 PUT_ERR("ERROR in yac_cget_comp_nbr_grids");
408 if (yac_cget_comp_nbr_grids_instance(yac_id, ref_comp_name) != 0)
409 PUT_ERR("ERROR in yac_cget_comp_nbr_grids_instance");
410
411 } else {
412
413 // grid_*_0 is not registered in the coupling configuration
414 for (idx = 0; idx < ref_nbr_grids; ++idx)
415 if (!strcmp(ref_grid_names[0], grid_names[idx])) break;
416 if (idx != ref_nbr_grids) PUT_ERR("ERROR in yac_cget_grid_names");
417 for (idx = 0; idx < ref_nbr_grids; ++idx)
418 if (!strcmp(ref_grid_names[0], grid_names_instance[idx])) break;
419 if (idx != ref_nbr_grids)
420 PUT_ERR("ERROR in yac_cget_grid_names_instance");
421
422 char ref_grid_meta_data[2][64];
423 char ref_grid_meta_data_instance[2][64];
424 for (int i = 0; i < 2; ++i) {
425 sprintf(ref_grid_meta_data[i], "%s METADATA_G",
426 ref_grid_names[i+1]);
427 sprintf(ref_grid_meta_data_instance[i], "%s METADATA_G_instance",
428 ref_grid_names[i+1]);
429 }
430
431 // grid_*_1 is registered in the coupling configuration, has meta
432 // data, but no fields
433 for (idx = 0; idx < ref_nbr_grids; ++idx)
434 if (!strcmp(ref_grid_names[1], grid_names[idx])) break;
435 if (idx == ref_nbr_grids) PUT_ERR("ERROR in yac_cget_grid_names");
436 for (idx = 0; idx < ref_nbr_grids; ++idx)
437 if (!strcmp(ref_grid_names[1], grid_names_instance[idx])) break;
438 if (idx == ref_nbr_grids)
439 PUT_ERR("ERROR in yac_cget_grid_names_instance");
440 if (strcmp(
441 ref_grid_meta_data[0],
442 yac_cget_grid_metadata(ref_grid_names[1])))
443 PUT_ERR("ERROR in yac_cget_grid_metadata");
444 if (strcmp(
445 ref_grid_meta_data_instance[0],
446 yac_cget_grid_metadata_instance(yac_id, ref_grid_names[1])))
447 PUT_ERR("ERROR in yac_cget_grid_metadata_instance");
448 if (yac_cget_nbr_fields(ref_comp_name, ref_grid_names[1]))
449 PUT_ERR("ERROR in yac_cget_nbr_fields");
451 yac_id, ref_comp_name, ref_grid_names[1]))
452 PUT_ERR("ERROR in yac_cget_nbr_fields_instance");
453
454 if (rank_type == 3) {
455
456 // grid_*_2 is not defined on this rank
457 for (idx = 0; idx < ref_nbr_grids; ++idx)
458 if (!strcmp(ref_grid_names[2], grid_names[idx])) break;
459 if (idx != ref_nbr_grids) PUT_ERR("ERROR in yac_cget_grid_names");
460 for (idx = 0; idx < ref_nbr_grids; ++idx)
461 if (!strcmp(ref_grid_names[2], grid_names_instance[idx])) break;
462 if (idx != ref_nbr_grids)
463 PUT_ERR("ERROR in yac_cget_grid_names_instance");
464
465 if (yac_cget_comp_nbr_grids(ref_comp_name) != 0)
466 PUT_ERR("ERROR in yac_cget_comp_nbr_grids");
467 if (yac_cget_comp_nbr_grids_instance(yac_id, ref_comp_name) != 0)
468 PUT_ERR("ERROR in yac_cget_comp_nbr_grids_instance");
469
470 } else {
471
472 // grid_*_2 is registered in the coupling configuration, has
473 // meta data, and two fields
474 for (idx = 0; idx < ref_nbr_grids; ++idx)
475 if (!strcmp(ref_grid_names[2], grid_names[idx])) break;
476 if (idx == ref_nbr_grids) PUT_ERR("ERROR in yac_cget_grid_names");
477 for (idx = 0; idx < ref_nbr_grids; ++idx)
478 if (!strcmp(ref_grid_names[2], grid_names_instance[idx])) break;
479 if (idx == ref_nbr_grids)
480 PUT_ERR("ERROR in yac_cget_grid_names_instance");
481 if (strcmp(
482 ref_grid_meta_data[1],
483 yac_cget_grid_metadata(ref_grid_names[2])))
484 PUT_ERR("ERROR in yac_cget_grid_metadata");
485 if (strcmp(
486 ref_grid_meta_data_instance[1],
487 yac_cget_grid_metadata_instance(yac_id, ref_grid_names[2])))
488 PUT_ERR("ERROR in yac_cget_grid_metadata_instance");
489
490 int const ref_nbr_fields = 2;
491 char const * field_names[2];
492 char const * field_names_instance[2];
493 char ref_field_meta_data[64];
494 char ref_field_meta_data_instance[64];
495 sprintf(ref_field_meta_data, "%s METADATA_F", ref_field_names[1]);
496 sprintf(ref_field_meta_data_instance, "%s METADATA_F_instance",
497 ref_field_names[1]);
498
499 // field_*_0 and field_*_1 are defined and the second one has
500 // meta data
502 ref_comp_name, ref_grid_names[2]) != ref_nbr_fields)
503 PUT_ERR("ERROR in yac_cget_nbr_fields");
505 yac_id, ref_comp_name, ref_grid_names[2]) != ref_nbr_fields)
506 PUT_ERR("ERROR in yac_cget_nbr_fields_instance");
508 ref_comp_name, ref_grid_names[2], ref_nbr_fields, field_names);
510 yac_id, ref_comp_name, ref_grid_names[2], ref_nbr_fields,
511 field_names_instance);
512 for (int i = 0; i < ref_nbr_fields; ++i) {
513 for (idx = 0; idx < ref_nbr_fields ; ++idx)
514 if (!strcmp(ref_field_names[i], field_names[idx])) break;
515 if (idx == ref_nbr_fields)
516 PUT_ERR("ERROR in yac_cget_field_names");
517 for (idx = 0; idx < ref_nbr_fields; ++idx)
518 if (!strcmp(
519 ref_field_names[i], field_names_instance[idx])) break;
520 if (idx == ref_nbr_fields)
521 PUT_ERR("ERROR in yac_cget_field_names_instance");
522 }
524 ref_comp_name, ref_grid_names[2], ref_field_names[0]))
525 PUT_ERR("ERROR in yac_cget_field_metadata");
527 yac_id, ref_comp_name, ref_grid_names[2],
528 ref_field_names[0]))
529 PUT_ERR("ERROR in yac_cget_field_metadata_instance");
530 if (strcmp(
531 ref_field_meta_data,
533 ref_comp_name, ref_grid_names[2], ref_field_names[1])))
534 PUT_ERR("ERROR in yac_cget_field_metadata");
535 if (strcmp(
536 ref_field_meta_data_instance,
538 yac_id, ref_comp_name, ref_grid_names[2],
539 ref_field_names[1])))
540 PUT_ERR("ERROR in yac_cget_field_metadata_instance");
541
542 if (yac_cget_comp_nbr_grids(ref_comp_name) != 1)
543 PUT_ERR("ERROR in yac_cget_comp_nbr_grids");
544 if (yac_cget_comp_nbr_grids_instance(yac_id, ref_comp_name) != 1)
545 PUT_ERR("ERROR in yac_cget_comp_nbr_grids_instance");
546 char const * comp_grid_name;
547 yac_cget_comp_grid_names(ref_comp_name, 1, &comp_grid_name);
548 if (strcmp(comp_grid_name, ref_grid_names[2]))
549 PUT_ERR("ERROR in yac_cget_comp_grid_names");
550 yac_cget_comp_grid_names_instance(yac_id, ref_comp_name, 1, &comp_grid_name);
551 if (strcmp(comp_grid_name, ref_grid_names[2]))
552 PUT_ERR("ERROR in yac_cget_comp_grid_names_instance");
553
555 ref_comp_name, ref_grid_names[2],
556 ref_field_names[0]) != YAC_EXCHANGE_TYPE_NONE)
557 PUT_ERR("ERROR in yac_cget_field_role");
559 yac_id, ref_comp_name, ref_grid_names[2],
560 ref_field_names[0]) != YAC_EXCHANGE_TYPE_NONE)
561 PUT_ERR("ERROR in yac_cget_field_role_instance");
563 ref_comp_name, ref_grid_names[2],
564 ref_field_names[0]) != 1)
565 PUT_ERR("ERROR in yac_cget_field_collection_size");
567 yac_id, ref_comp_name, ref_grid_names[2],
568 ref_field_names[0]) != 1)
569 PUT_ERR("ERROR in yac_cget_field_collection_size_instance");
570 if (strcmp(
572 ref_comp_name, ref_grid_names[2],
573 ref_field_names[0]), "PT5M"))
574 PUT_ERR("ERROR in yac_cget_field_timestep");
575 if (strcmp(
577 yac_id, ref_comp_name, ref_grid_names[2],
578 ref_field_names[0]), "PT5M"))
579 PUT_ERR("ERROR in yac_cget_field_timestep");
580 }
581 }
582 }
583 }
584 }
585
586 free(grid_names_instance);
587 free(grid_names);
588 free(comp_names_instance);
589 free(comp_names);
590
593 xt_finalize();
594 MPI_Finalize();
595
596 return TEST_EXIT_CODE;
597}
char const * grid_names[]
char const * field_names[8]
int point_id
void yac_cget_instance_size_c2py(int yac_instance_id, int *size)
Definition yac.c:818
void yac_cget_comp_rank_c2py(int comp_id, int *rank)
Definition yac.c:1188
void yac_cget_comp_size_c2py(int comp_id, int *size)
Definition yac.c:1181
void yac_cget_instance_rank_c2py(int yac_instance_id, int *rank)
Definition yac.c:808
#define YAC_RAD
#define TEST_EXIT_CODE
Definition tests.h:15
#define PUT_ERR(string)
Definition tests.h:10
int grid_id
int * field_id
int comp_id
int yac_cget_points_id(int grid_id, int location, const char *point_name)
Definition yac.c:5162
void yac_cget_grid_names(int nbr_grids, const char **grid_names)
Definition yac.c:5351
const char * yac_cget_field_metadata_instance(int yac_instance_id, const char *comp_name, const char *grid_name, const char *field_name)
Definition yac.c:2106
int yac_cget_role_from_field_id(int field_id)
Definition yac.c:5487
int yac_cget_nbr_grids_instance(int yac_instance_id)
Definition yac.c:5239
const char * yac_cget_grid_metadata_instance(int yac_instance_id, const char *grid_name)
Definition yac.c:2093
int const YAC_LOCATION_CELL
Definition yac.c:37
void yac_cdef_grid_metadata(const char *grid_name, const char *metadata)
Definition yac.c:2059
void yac_cget_grid_names_instance(int yac_instance_id, int nbr_grids, const char **grid_names)
Definition yac.c:5331
void yac_cdef_component_metadata(const char *comp_name, const char *metadata)
Definition yac.c:2045
int yac_cget_field_role(const char *comp_name, const char *grid_name, const char *field_name)
Definition yac.c:5574
int yac_cget_field_id_instance(int yac_instance_id, const char *comp_name, const char *grid_name, const char *field_name)
Definition yac.c:5207
int yac_cget_comp_nbr_grids_instance(int yac_instance_id, const char *comp_name)
Definition yac.c:5252
int yac_cget_field_is_defined(const char *comp_name, const char *grid_name, const char *field_name)
Definition yac.c:5199
const char * yac_cget_timestep_from_field_id(int field_id)
Definition yac.c:5473
int yac_cget_comp_id(const char *comp_name)
Definition yac.c:5145
int yac_cget_nbr_fields(const char *comp_name, const char *grid_name)
Definition yac.c:5300
void yac_csync_def_instance(int yac_instance_id)
Definition yac.c:4992
void yac_csync_def(void)
Definition yac.c:5000
int yac_cget_field_is_defined_instance(int yac_instance_id, const char *comp_name, const char *grid_name, const char *field_name)
Definition yac.c:5190
void yac_cinit(void)
Definition yac.c:768
void yac_cfinalize_instance(int yac_instance_id)
Finalises YAC.
Definition yac.c:1018
void yac_cfinalize()
Finalises YAC.
Definition yac.c:1030
const char * yac_cget_field_name_from_field_id(int field_id)
Definition yac.c:5466
int yac_cget_nbr_comps_instance(int yac_instance_id)
Definition yac.c:5228
int yac_cget_nbr_fields_instance(int yac_instance_id, const char *comp_name, const char *grid_name)
Definition yac.c:5280
void yac_cdef_points_reg2d_named(int const grid_id, int const *nbr_points, int const located, double const *x_points, double const *y_points, char const *name, int *point_id)
Definition yac.c:1541
void yac_cdef_grid_metadata_instance(int yac_instance_id, const char *grid_name, const char *metadata)
Definition yac.c:2050
const char * yac_cget_component_metadata_instance(int yac_instance_id, const char *comp_name)
Definition yac.c:2080
const char * yac_cget_field_timestep_instance(int yac_instance_id, const char *comp_name, const char *grid_name, const char *field_name)
Definition yac.c:5496
void yac_cdef_comp_instance(int yac_instance_id, char const *comp_name, int *comp_id)
Definition yac.c:1377
int yac_cget_field_id(const char *comp_name, const char *grid_name, const char *field_name)
Definition yac.c:5220
const char * yac_cget_grid_name_from_field_id(int field_id)
Definition yac.c:5458
int yac_cget_collection_size_from_field_id(int field_id)
Definition yac.c:5480
void yac_cdef_grid_reg2d(const char *grid_name, int nbr_vertices[2], int cyclic[2], double *x_vertices, double *y_vertices, int *grid_id)
Definition yac.c:5608
int yac_cget_comp_id_instance(int yac_instance_id, const char *comp_name)
Definition yac.c:5132
int yac_cdefault_instance_defined(void)
Definition yac.c:718
int const YAC_EXCHANGE_TYPE_NONE
Definition yac.c:42
int yac_cget_grid_id(const char *grid_name)
Definition yac.c:5151
void yac_cdef_points_reg2d(int const grid_id, int const *nbr_points, int const located, double const *x_points, double const *y_points, int *point_id)
Definition yac.c:1583
const char * yac_cget_grid_metadata(const char *grid_name)
Definition yac.c:2101
const char * yac_cget_component_name_from_field_id(int field_id)
Definition yac.c:5451
int yac_cget_field_collection_size(const char *comp_name, const char *grid_name, const char *field_name)
Definition yac.c:5555
void yac_cdef_component_metadata_instance(int yac_instance_id, const char *comp_name, const char *metadata)
Definition yac.c:2037
void yac_cdef_calendar(int calendar)
Definition yac.c:1063
int yac_cget_mask_id(int grid_id, int location, const char *mask_name)
Definition yac.c:5176
void yac_cget_comp_names(int nbr_comps, const char **comp_names)
Definition yac.c:5325
void yac_cdef_comps(char const **comp_names, int num_comps, int *comp_ids)
Definition yac.c:1369
const char * yac_cget_field_metadata(const char *comp_name, const char *grid_name, const char *field_name)
Definition yac.c:2115
int const YAC_PROLEPTIC_GREGORIAN
Definition yac.c:72
void yac_cget_comp_grid_names_instance(int yac_instance_id, const char *comp_name, int nbr_grids, const char **grid_names)
Definition yac.c:5356
int yac_cget_comp_nbr_grids(const char *comp_name)
Definition yac.c:5275
int const YAC_TIME_UNIT_ISO_FORMAT
Definition yac.c:69
int yac_cget_field_role_instance(int yac_instance_id, const char *comp_name, const char *grid_name, const char *field_name)
Definition yac.c:5563
void yac_cdef_mask_named(int const grid_id, int const nbr_points, int const located, int const *is_valid, char const *name, int *mask_id)
Definition yac.c:1847
int yac_cget_field_collection_size_instance(int yac_instance_id, const char *comp_name, const char *grid_name, const char *field_name)
Definition yac.c:5526
void yac_cinit_instance(int *yac_instance_id)
Definition yac.c:756
void yac_cdef_comp(char const *comp_name, int *comp_id)
Definition yac.c:1383
void yac_cdef_field(char const *name, int const comp_id, int const *point_ids, int const num_pointsets, int collection_size, const char *timestep, int time_unit, int *field_id)
Definition yac.c:1985
int yac_cget_nbr_comps(void)
Definition yac.c:5234
void yac_cdef_field_metadata_instance(int yac_instance_id, const char *comp_name, const char *grid_name, const char *field_name, const char *metadata)
Definition yac.c:2064
void yac_cget_comp_grid_names(const char *comp_name, int nbr_grids, const char **grid_names)
Definition yac.c:5398
int yac_cget_nbr_grids()
Definition yac.c:5247
void yac_cget_field_names_instance(int yac_instance_id, const char *comp_name, const char *grid_name, int nbr_fields, const char **field_names)
Definition yac.c:5405
void yac_cdef_comps_instance(int yac_instance_id, char const **comp_names, int num_comps, int *comp_ids)
Definition yac.c:1326
void yac_cget_comp_names_instance(int yac_instance_id, int nbr_comps, const char **comp_names)
Definition yac.c:5305
void yac_cdef_field_metadata(const char *comp_name, const char *grid_name, const char *field_name, const char *metadata)
Definition yac.c:2073
const char * yac_cget_component_metadata(const char *comp_name)
Definition yac.c:2088
const char * yac_cget_field_timestep(const char *comp_name, const char *grid_name, const char *field_name)
Definition yac.c:5508
void yac_cget_field_names(const char *comp_name, const char *grid_name, int nbr_fields, const char **field_names)
Definition yac.c:5444