YAC 3.18.0
Yet Another Coupler
Loading...
Searching...
No Matches
test_dynamic_config_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 <mpi.h>
6#include <stdlib.h>
7#include <stdio.h>
8#include <unistd.h>
9#include <math.h>
10#include <string.h>
11#include "tests.h"
12#include "yac.h"
13#include "yac_core.h"
14#include "io_utils.h"
15
22#define YAC_RAD (0.01745329251994329576923690768489) // M_PI / 180
23
24static void gen_weight_file(void);
25static void utest_comp1_main(void);
26static void utest_comp2_main(void);
27static int utest_gen_field_avg(int yac_id);
28static int utest_gen_field_ncc(int yac_id);
29static int utest_gen_field_nnn(int yac_id);
30static int utest_gen_field_dnn(int yac_id);
31static int utest_gen_field_rbf(int yac_id);
32static int utest_gen_field_conserv(int yac_id);
33static int utest_gen_field_spmap(int yac_id);
34static int utest_gen_field_spmap_ext_yac(int yac_id);
35static int utest_gen_field_spmap_ext_file(int yac_id);
36static int utest_gen_field_hcsbb(int yac_id);
37static int utest_gen_field_user_file(int yac_id);
38static int utest_gen_field_fixed(int yac_id);
39static int utest_gen_field_creep(int yac_id);
40static int utest_gen_field_check(int yac_id);
41static int utest_gen_field_callback(int yac_id);
42
43int n_cells[2] = {32, 16};
44int n_corners[2] = {32+1, 16+1};
45int cyclic[2] = {0, 0};
48char const * weight_file_name = "test_dynamic_config_c.nc";
49char const * weight_file_name_dummy = "test_dynamic_config_dummy_c.nc";
51
53 "test_dynamic_config_c.yaml";
55 "test_dynamic_config_c.json";
56
57char const * grid_output_filename = "test_dynamic_config_c_grids.nc";
58
60 double const tgt_coords[3],
61 int src_cell_id, size_t src_cell_idx,
62 int const **global_results_points, double **result_weights,
63 size_t *result_count, void *user_data) {
64 (void)tgt_coords;
65 (void)src_cell_id;
66 (void)src_cell_idx;
67 *global_results_points = NULL;
68 *result_weights = NULL;
69 *result_count = 0;
70 (void)user_data;
71}
72
73int main (void) {
74
75 MPI_Init(NULL, NULL);
76
77 int global_rank, global_size;
78 MPI_Comm_rank(MPI_COMM_WORLD, &global_rank);
79 MPI_Comm_size(MPI_COMM_WORLD, &global_size);
80
81 if (global_size != 4) {
82 PUT_ERR("ERROR: wrong number of processes\n");
83 return TEST_EXIT_CODE;
84 }
85
86
87 data = malloc((size_t)(n_cells[0] * n_cells[1]) * sizeof(*data));
88 corner_lon = malloc((size_t)(n_corners[0]) * sizeof(*corner_lon));
89 corner_lat = malloc((size_t)(n_corners[1]) * sizeof(*corner_lat));
90 cell_lon = malloc((size_t)(n_cells[0]) * sizeof(*cell_lon));
91 cell_lat = malloc((size_t)(n_cells[1]) * sizeof(*cell_lat));
92
93 double const delta_lon = 1.0, delta_lat=1.0;
94 for (int i = 0; i < n_corners[0]; ++i)
95 corner_lon[i] = ((double)i * delta_lon - 180.0) * YAC_RAD;
96 for (int i = 0; i < n_corners[1]; ++i)
97 corner_lat[i] = ((double)i * delta_lat - 90.0) * YAC_RAD;
98 for (int i = 0; i < n_cells[0]; ++i)
99 cell_lon[i] = (((double)i + 0.5) * delta_lon - 180.0) * YAC_RAD;
100 for (int i = 0; i < n_cells[1]; ++i)
101 cell_lat[i] = (((double)i + 0.5) * delta_lat - 90.0) * YAC_RAD;
102
103 if (global_rank == 0) gen_weight_file();
105 compute_weights_callback, NULL, "compute_weights_callback");
106
108
109 if ((global_rank % 2) == 0) utest_comp1_main();
110 else utest_comp2_main();
111
112 if (global_rank == 0) {
114 PUT_ERR("error yac_cset_config_output_file (sync)");
116 PUT_ERR("error yac_cset_config_output_file (enddef)");
117 if (!yac_file_exists("test_dynamic_config_c_grids.nc"))
118 PUT_ERR("error yac_cset_grid_output_file");
119 unlink(grid_output_filename);
122 unlink(weight_file_name);
124 }
125
126 free(cell_lat);
127 free(cell_lon);
128 free(corner_lat);
129 free(corner_lon);
130 free(data);
131
132 if (timestep_counter != 11) PUT_ERR("wrong final timestep_counter");
133
134 MPI_Finalize();
135 return TEST_EXIT_CODE;
136}
137
138static void utest_comp1_main(void) {
139
140 int grid_id;
141
142 yac_cinit();
143
144 // this component defines the datetime
146 yac_cdef_datetime("2000-01-01T00:00:00", "2000-01-01T00:00:10");
147
149
150 int const apply_check = 0;
151 yac_cset_coordinates_check(apply_check);
152
153 int const coordinates_mismatch_is_fatal = 0;
154 yac_cset_coordinates_mismatch_is_fatal(coordinates_mismatch_is_fatal);
155
156 // test yac_cpredef_comp:
157 yac_cpredef_comp("comp1", &comp_id);
158 yac_cdef_comps(NULL, 0, NULL);
163
164 int field_1, field_2, field_3, field_4, field_out;
166 "A", comp_id, &point_id, 1, 1, "1", YAC_TIME_UNIT_SECOND, &field_1);
168 "B", comp_id, &point_id, 1, 1, "1", YAC_TIME_UNIT_SECOND, &field_2);
170 "C", comp_id, &point_id, 1, 1, "1", YAC_TIME_UNIT_SECOND, &field_3);
172 "D", comp_id, &point_id, 1, 1, "1", YAC_TIME_UNIT_SECOND, &field_4);
173
175 "OUT", comp_id, &point_id, 1, 1, "1", YAC_TIME_UNIT_SECOND, &field_out);
176
177 int avg_interp;
178 yac_cget_interp_stack_config(&avg_interp);
181 "comp2", "grid2", "4", "comp1", "grid1", "D",
183 0, 0);
185
186 int include_definitions = 0;
189 YAC_CONFIG_OUTPUT_SYNC_LOC_SYNC_DEF, include_definitions);
192 YAC_CONFIG_OUTPUT_SYNC_LOC_ENDDEF, include_definitions);
193
194 yac_cenddef();
195
196 int info = YAC_ACTION_NONE;
198 int ierror;
200 for (int i = 0; i < n_cells[0] * n_cells[1]; ++i) data[i] = 42.0;
201 yac_cput_(field_1, 1, data, &info, &ierror);
202 printf("time of field_1: %s\n", yac_cget_field_datetime(field_1));
203 for (int i = 0; i < n_cells[0] * n_cells[1]; ++i) data[i] = 43.0;
204 yac_cput_(field_2, 1, data, &info, &ierror);
205 for (int i = 0; i < n_cells[0] * n_cells[1]; ++i) data[i] = 44.0;
206 yac_cput_(field_3, 1, data, &info, &ierror);
207 for (int i = 0; i < n_cells[0] * n_cells[1]; ++i) data[i] = -1.0;
208 yac_cget(field_4, 1, &data, &info, &ierror);
209 if (fabs(data[0] - 40.0) > 1.0e-14) PUT_ERR("error in data for field_4");
210 yac_cput_(field_out, 1, data, &info, &ierror);
211 }
212
214}
215
216static void utest_comp2_main(void) {
217
218 int yac_id, grid_id, avg_interp;
219 yac_cinit_instance(&yac_id);
221 // test yac_cpredef_comp_instance
222 yac_cpredef_comp_instance(yac_id, "comp2", &comp_id);
223 yac_cdef_comps_instance(yac_id, NULL, 0, NULL);
224
226
227 // define fields after sync_def to tests the sync mechanism
232
234
235 int const apply_check = 0;
236 yac_cset_coordinates_check_instance(yac_id, apply_check);
237
238 int const coordinates_mismatch_is_fatal = 0;
240 yac_id, coordinates_mismatch_is_fatal);
241
242 int field_1, field_2, field_3, field_4;
244 "1", comp_id, &point_id, 1, 1, "1", YAC_TIME_UNIT_SECOND, &field_1);
246 "2", comp_id, &point_id, 1, 1, "1", YAC_TIME_UNIT_SECOND, &field_2);
248 "3", comp_id, &point_id, 1, 1, "1", YAC_TIME_UNIT_SECOND, &field_3);
250 "4", comp_id, &point_id, 1, 1, "1", YAC_TIME_UNIT_SECOND, &field_4);
251
252 yac_cget_interp_stack_config(&avg_interp);
254
256 yac_id, "comp1", "grid1", "A", "comp2", "grid2", "1",
258 0, 0);
260 yac_id, "comp1", "grid1", "B", "comp2", "grid2", "2",
262 0, 0);
264 yac_id, "comp1", "grid1", "C", "comp2", "grid2", "3",
266 0, 0);
267
269
270 // check all interpolation methods
271 int field_in[] =
272 {utest_gen_field_avg(yac_id),
273 utest_gen_field_ncc(yac_id),
274 utest_gen_field_nnn(yac_id),
275 utest_gen_field_dnn(yac_id),
276 utest_gen_field_rbf(yac_id),
277 utest_gen_field_conserv(yac_id),
278 utest_gen_field_spmap(yac_id),
279 utest_gen_field_spmap_ext_yac(yac_id),
280 utest_gen_field_spmap_ext_file(yac_id),
281 utest_gen_field_hcsbb(yac_id),
282 utest_gen_field_user_file(yac_id),
283 utest_gen_field_fixed(yac_id),
284 utest_gen_field_creep(yac_id),
285 utest_gen_field_check(yac_id),
286 utest_gen_field_callback(yac_id)};
287
288 yac_cenddef_instance(yac_id);
289
290 int info = YAC_ACTION_NONE;
292 int ierror;
294 for (int i = 0; i < n_cells[0] * n_cells[1]; ++i) data[i] = -1.0;
295 yac_cget(field_1, 1, &data, &info, &ierror);
296 printf("time of field_1: %s\n", yac_cget_field_datetime(field_1));
297 if (fabs(data[0] - 42.0) > 1.0e-14) PUT_ERR("error in data for field_1");
298 for (int i = 0; i < n_cells[0] * n_cells[1]; ++i) data[i] = -1.0;
299 yac_cget(field_2, 1, &data, &info, &ierror);
300 if (fabs(data[0] - 43.0) > 1.0e-14) PUT_ERR("error in data for field_2");
301 for (int i = 0; i < n_cells[0] * n_cells[1]; ++i) data[i] = -1.0;
302 yac_cget(field_3, 1, &data, &info, &ierror);
303 if (fabs(data[0] - 44.0) > 1.0e-14) PUT_ERR("error in data for field_3");
304 for (int i = 0; i < n_cells[0] * n_cells[1]; ++i) data[i] = 40.0;
305 yac_cput_(field_4, 1, data, &info, &ierror);
306 for (size_t i = 0; i < sizeof(field_in) / sizeof(field_in[0]); ++i)
307 yac_cget(field_in[i], 1, &data, &info, &ierror);
308 }
309
311}
312
313static int utest_gen_field(int yac_id, char const * field_name, int interp_stack) {
314 int field_id;
316 field_name, comp_id, &point_id, 1, 1, "1",
319 yac_id, "comp1", "grid1", "OUT", "comp2", "grid2", field_name,
321 0, 0);
322 yac_cfree_interp_stack_config(interp_stack);
323 return field_id;
324}
325
326static int utest_gen_field_avg(int yac_id) {
327 int interp_stack;
328 yac_cget_interp_stack_config(&interp_stack);
330 interp_stack, YAC_AVG_ARITHMETIC, 1);
331 return utest_gen_field(yac_id, "avg", interp_stack);
332}
333
334static int utest_gen_field_ncc(int yac_id) {
335 int interp_stack;
336 yac_cget_interp_stack_config(&interp_stack);
338 interp_stack, YAC_NCC_AVG, 1);
339 return utest_gen_field(yac_id, "ncc", interp_stack);
340}
341
342static int utest_gen_field_nnn(int yac_id) {
343 int interp_stack;
344 yac_cget_interp_stack_config(&interp_stack);
346 interp_stack, YAC_NNN_AVG, 3, 0.0, 1.0);
347 return utest_gen_field(yac_id, "nn", interp_stack);
348}
349
350static int utest_gen_field_dnn(int yac_id) {
351 int interp_stack;
352 yac_cget_interp_stack_config(&interp_stack);
354 interp_stack, YAC_DNN_DIST, YAC_DNN_SEARCH_DISTANCE_FIXED, 0.1, 1.0);
355 return utest_gen_field(yac_id, "dnn", interp_stack);
356}
357
358static int utest_gen_field_rbf(int yac_id) {
359 int interp_stack;
360 yac_cget_interp_stack_config(&interp_stack);
362 interp_stack, YAC_INTERP_RBF_N_DEFAULT,
365 return utest_gen_field(yac_id, "rbf", interp_stack);
366}
367
368static int utest_gen_field_conserv(int yac_id) {
369 int interp_stack;
370 yac_cget_interp_stack_config(&interp_stack);
372 interp_stack, 1, 1, 1, YAC_CONSERV_DESTAREA);
373 return utest_gen_field(yac_id, "conserv", interp_stack);
374}
375
376static int utest_gen_field_spmap(int yac_id) {
377 int interp_stack;
378 yac_cget_interp_stack_config(&interp_stack);
380 interp_stack, 0.0, 0.0, YAC_SPMAP_AVG, YAC_SPMAP_NONE,
381 1.0, NULL, NULL, 0, 1.0, NULL, NULL, 0);
382 return utest_gen_field(yac_id, "spmap", interp_stack);
383}
384
385static int utest_gen_field_spmap_ext_yac(int yac_id) {
386 int ext_spmap_config;
387 yac_cget_ext_spmap_config(&ext_spmap_config);
388 yac_cset_ext_spmap_config_spread_distance(ext_spmap_config, 0.0);
395 ext_spmap_config, "area_file.nc", "src_area", 0);
397 ext_spmap_config, "area_file.nc", "tgt_area", 0);
400 int overwrite_configs[2];
401 enum {
402 NUM_OVERWRITE_CONFIGS =
403 sizeof(overwrite_configs)/sizeof(overwrite_configs[0])};
404 yac_cget_spmap_overwrite_config(&overwrite_configs[0]);
406 overwrite_configs[0], 0.0, 0.0, 1.0);
408 overwrite_configs[0], 0.5);
409 yac_cget_spmap_overwrite_config(&overwrite_configs[1]);
411 overwrite_configs[1], 0.0, M_PI_2, 1.0);
413 overwrite_configs[1], 0.6);
415 overwrite_configs[1], YAC_SPMAP_DIST);
416 int interp_stack;
417 yac_cget_interp_stack_config(&interp_stack);
419 interp_stack, ext_spmap_config, overwrite_configs, NUM_OVERWRITE_CONFIGS);
420 for (int i = 0; i < NUM_OVERWRITE_CONFIGS; ++i)
421 yac_cfree_spmap_overwrite_config(overwrite_configs[i]);
422 yac_cfree_ext_spmap_config(ext_spmap_config);
423
424 { // checking that free for file-based ext_spmap_config works
425 yac_cget_ext_spmap_config(&ext_spmap_config);
427 ext_spmap_config, "area_file.nc", "src_area", 0);
429 ext_spmap_config, "area_file.nc", "tgt_area", 0);
430 yac_cfree_ext_spmap_config(ext_spmap_config);
431 }
432 return utest_gen_field(yac_id, "spmap_ext_yac", interp_stack);
433}
434
435static int utest_gen_field_spmap_ext_file(int yac_id) {
436 int ext_spmap_config;
437 yac_cget_ext_spmap_config(&ext_spmap_config);
440 ext_spmap_config, "area_file.nc", "src_area", 0);
442 ext_spmap_config, "area_file.nc", "tgt_area", 0);
443 int interp_stack;
444 yac_cget_interp_stack_config(&interp_stack);
446 interp_stack, ext_spmap_config, NULL, 0);
447 yac_cfree_ext_spmap_config(ext_spmap_config);
448 return utest_gen_field(yac_id, "spmap_ext_file", interp_stack);
449}
450
451static int utest_gen_field_hcsbb(int yac_id) {
452 int interp_stack;
453 yac_cget_interp_stack_config(&interp_stack);
455 return utest_gen_field(yac_id, "hcsbb", interp_stack);
456}
457
458static int utest_gen_field_user_file(int yac_id) {
459 int interp_stack;
460 yac_cget_interp_stack_config(&interp_stack);
462 interp_stack, weight_file_name);
463 return utest_gen_field(yac_id, "user_file", interp_stack);
464}
465
466static int utest_gen_field_fixed(int yac_id) {
467 int interp_stack;
468 yac_cget_interp_stack_config(&interp_stack);
469 yac_cadd_interp_stack_config_fixed(interp_stack, -1.0);
470 return utest_gen_field(yac_id, "fixed", interp_stack);
471}
472
473static int utest_gen_field_creep(int yac_id) {
474 int interp_stack;
475 yac_cget_interp_stack_config(&interp_stack);
476 yac_cadd_interp_stack_config_creep(interp_stack, 0);
477 return utest_gen_field(yac_id, "creep", interp_stack);
478}
479
480static int utest_gen_field_check(int yac_id) {
481 int interp_stack;
482 yac_cget_interp_stack_config(&interp_stack);
483 yac_cadd_interp_stack_config_check(interp_stack, NULL, NULL);
484 return utest_gen_field(yac_id, "check", interp_stack);
485}
486
487static int utest_gen_field_callback(int yac_id) {
488 int interp_stack;
489 yac_cget_interp_stack_config(&interp_stack);
491 interp_stack, "compute_weights_callback");
492 return utest_gen_field(yac_id, "callback", interp_stack);
493}
494
495static void gen_weight_file(void) {
496
497 int yac_id, comp_id, grid_id_out, grid_id_in, point_id_out, point_id_in,
498 field_id_out, field_id_in, interp_stack, ext_couple_config;
499 int weight_file_on_existing = YAC_WGT_ON_EXISTING_ERROR;
500 int mapping_side = 0;
501 double scale_factor = 10.0;
502 double scale_summand = 0.5;
503 char const * yaxt_exchanger_name = "irecv_send";
504 int use_raw_exchange = 0;
505 yac_cinit_comm_instance(MPI_COMM_SELF, &yac_id);
507 yac_cdef_datetime_instance(yac_id, "2000-01-01T00:00:00", "2000-01-01T00:00:10");
508 yac_cdef_comp_instance(yac_id, "comp", &comp_id);
510 "grid1", n_corners, cyclic, corner_lon, corner_lat, &grid_id_out);
512 "grid2", n_corners, cyclic, corner_lon, corner_lat, &grid_id_in);
514 grid_id_out, n_cells, YAC_LOCATION_CELL, cell_lon, cell_lat, &point_id_out);
516 grid_id_in, n_cells, YAC_LOCATION_CELL, cell_lon, cell_lat, &point_id_in);
518 "out", comp_id, &point_id_out, 1, 1, "1", YAC_TIME_UNIT_SECOND, &field_id_out);
520 "in", comp_id, &point_id_in, 1, 1, "1", YAC_TIME_UNIT_SECOND, &field_id_in);
521 yac_cget_interp_stack_config(&interp_stack);
523 yac_cget_ext_couple_config(&ext_couple_config);
525 ext_couple_config, weight_file_name);
527 ext_couple_config, weight_file_on_existing);
529 ext_couple_config, mapping_side);
531 ext_couple_config, scale_factor);
533 ext_couple_config, scale_summand);
535 ext_couple_config, yaxt_exchanger_name);
537 ext_couple_config, use_raw_exchange);
538 { // testing unset collection selection
539 int collection_size, * collection_indices;
541 ext_couple_config, &collection_size, &collection_indices);
542 if (collection_size != 0)
543 PUT_ERR("error in yac_cget_ext_couple_config_collection_selection");
544 if (collection_indices != NULL)
545 PUT_ERR("error in yac_cget_ext_couple_config_collection_selection");
546 }
547 { // setting collection size with explicit indices
549 ext_couple_config, 1, (int[]){2});
550 int collection_size, * collection_indices;
552 ext_couple_config, &collection_size, &collection_indices);
553 if (collection_size != 1)
554 PUT_ERR("error in yac_cget_ext_couple_config_collection_selection");
555 if ((collection_indices == NULL) || (collection_indices[0] != 2))
556 PUT_ERR("error in yac_cget_ext_couple_config_collection_selection");
557 free(collection_indices);
558 }
560 ext_couple_config, 1, NULL);
562 yac_id, "comp", "grid1", "out", "comp", "grid2", "in",
564 0, 0, ext_couple_config);
565 char const * temp_weight_file_name;
567 ext_couple_config, &temp_weight_file_name);
568 if (strcmp(weight_file_name, temp_weight_file_name))
569 PUT_ERR("error in yac_cget_ext_couple_config_weight_file");
570 int temp_weight_file_on_existing;
572 ext_couple_config, &temp_weight_file_on_existing);
573 if (weight_file_on_existing != temp_weight_file_on_existing)
574 PUT_ERR("error in yac_cget_ext_couple_config_weight_file_on_existing");
575 int temp_mapping_side;
577 ext_couple_config, &temp_mapping_side);
578 if (mapping_side != temp_mapping_side)
579 PUT_ERR("error in yac_cget_ext_couple_config_mapping_side");
580 double temp_scale_factor;
582 ext_couple_config, &temp_scale_factor);
583 if (scale_factor != temp_scale_factor)
584 PUT_ERR("error in yac_cget_ext_couple_config_scale_factor");
585 double temp_scale_summand;
587 ext_couple_config, &temp_scale_summand);
588 if (scale_summand != temp_scale_summand)
589 PUT_ERR("error in yac_cget_ext_couple_config_scale_summand");
590 char const * temp_yaxt_exchanger_name;
592 ext_couple_config, &temp_yaxt_exchanger_name);
593 if (strcmp(yaxt_exchanger_name, temp_yaxt_exchanger_name))
594 PUT_ERR("error in yac_cget_ext_couple_config_yaxt_exchanger_name");
595 int temp_use_raw_exchange;
597 ext_couple_config, &temp_use_raw_exchange);
598 if (use_raw_exchange != temp_use_raw_exchange)
599 PUT_ERR("error in yac_cget_ext_couple_config_use_raw_exchange");
600 int collection_size, * collection_indices;
602 ext_couple_config, &collection_size, &collection_indices);
603 if (collection_size != 1)
604 PUT_ERR("error in yac_cget_ext_couple_config_collection_selection");
605 if (collection_indices != NULL)
606 PUT_ERR("error in yac_cget_ext_couple_config_collection_selection");
607 yac_cfree_ext_couple_config(ext_couple_config);
608 yac_cfree_interp_stack_config(interp_stack);
609 yac_cenddef_instance(yac_id);
611}
void * user_data
#define YAC_INTERP_RBF_MAX_SEARCH_DISTANCE_DEFAULT
#define YAC_INTERP_RBF_N_DEFAULT
#define YAC_INTERP_RBF_SCALE_DEFAULT
int yac_file_exists(const char *filename)
Definition utils_core.c:12
int collection_size
int n_cells[2]
char const * grid_output_filename
double * data
double * cell_lat
char const * test_config_filename_json
double * corner_lat
int cyclic[2]
double * cell_lon
int point_id
char const * weight_file_name
static void gen_weight_file(void)
char const * test_config_filename_yaml
int n_corners[2]
void compute_weights_callback(double const tgt_coords[3], int src_cell_id, size_t src_cell_idx, int const **global_results_points, double **result_weights, size_t *result_count, void *user_data)
double * corner_lon
#define YAC_RAD
int timestep_counter
char const * weight_file_name_dummy
int comp_id
#define TEST_EXIT_CODE
Definition tests.h:15
#define PUT_ERR(string)
Definition tests.h:10
int info
int grid_id
int ierror
int * field_id
void yac_cset_ext_spmap_config_src_cell_area_config_yac(int ext_spmap_config_id, double sphere_radius)
Definition yac.c:6176
void yac_cadd_interp_stack_config_ncc(int interp_stack_config_id, int weight_type, int partial_coverage)
Definition yac.c:5978
void yac_cget_ext_couple_config_scale_factor(int ext_couple_config_id, double *scale_factor)
Definition yac.c:2262
int const YAC_NCC_AVG
Definition yac.c:80
void yac_cadd_interp_stack_config_spmap_ext(int interp_stack_config_id, int ext_spmap_config_id, int *spmap_overwrite_config_ids, int spmap_overwrite_config_count)
Definition yac.c:6467
void yac_cenddef(void)
Definition yac.c:5091
void yac_cget_ext_couple_config_mapping_side(int ext_couple_config_id, int *mapping_side)
Definition yac.c:2239
void yac_cset_config_output_file(const char *filename, int filetype, int sync_location, int include_definitions)
Definition yac.c:901
void yac_cpredef_comp_instance(int yac_instance_id, char const *name, int *comp_id)
Definition yac.c:1294
int const YAC_CONFIG_OUTPUT_SYNC_LOC_ENDDEF
after end of definitions
Definition yac.c:133
void yac_cset_grid_output_file_instance(int yac_instance_id, const char *gridname, const char *filename)
Definition yac.c:913
void yac_cset_coordinates_check(int apply_check)
Definition yac.c:945
void yac_cdef_datetime_instance(int yac_instance_id, const char *start_datetime, const char *end_datetime)
Definition yac.c:1046
void yac_cfree_ext_couple_config(int ext_couple_config_id)
Definition yac.c:2159
void yac_cdef_datetime(const char *start_datetime, const char *end_datetime)
Definition yac.c:1055
int const YAC_LOCATION_CELL
Definition yac.c:37
void yac_cfree_spmap_overwrite_config(int spmap_overwrite_config_id)
Definition yac.c:6299
void yac_cget_ext_couple_config_weight_file_on_existing(int ext_couple_config_id, int *weight_file_on_existing)
Definition yac.c:2213
void yac_cset_ext_couple_config_scale_factor(int ext_couple_config_id, double scale_factor)
Definition yac.c:2255
void yac_cset_ext_couple_config_weight_file_on_existing(int ext_couple_config_id, int weight_file_on_existing)
Definition yac.c:2206
void yac_cadd_interp_stack_config_creep(int interp_stack_config_id, int creep_distance)
Definition yac.c:6662
int const YAC_AVG_ARITHMETIC
Definition yac.c:76
void yac_cset_spmap_overwrite_config_max_search_distance(int spmap_overwrite_config_id, double max_search_distance)
Definition yac.c:6337
void yac_cadd_compute_weights_callback(yac_func_compute_weights compute_weights_callback, void *user_data, char const *key)
Definition yac.c:6685
int const YAC_WGT_ON_EXISTING_ERROR
Definition yac.c:119
int const YAC_DNN_SEARCH_DISTANCE_FIXED
Definition yac.c:94
void yac_cset_ext_spmap_config_scale_type(int ext_spmap_config_id, int scale_type)
Definition yac.c:6158
void yac_csync_def_instance(int yac_instance_id)
Definition yac.c:4992
void yac_cpredef_comp(char const *name, int *comp_id)
Definition yac.c:1321
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
void yac_cget_ext_couple_config_collection_selection(int ext_couple_config_id, int *collection_size, int **collection_indices)
Definition yac.c:2429
void yac_cadd_interp_stack_config_check(int interp_stack_config_id, char const *constructor_key, char const *do_search_key)
Definition yac.c:6650
void yac_cenddef_instance(int yac_instance_id)
Definition yac.c:5065
void yac_cget_ext_couple_config_yaxt_exchanger_name(int ext_couple_config_id, char const **yaxt_exchanger_name)
Definition yac.c:2362
void yac_cset_coordinates_mismatch_is_fatal_instance(int yac_instance_id, int is_fatal)
Definition yac.c:951
void yac_cget_ext_couple_config(int *ext_couple_config_id)
Definition yac.c:2138
void yac_cset_ext_couple_config_weight_file(int ext_couple_config_id, char const *weight_file)
Definition yac.c:2175
void yac_cset_ext_spmap_config_spread_distance(int ext_spmap_config_id, double spread_distance)
Definition yac.c:6122
void yac_cset_ext_couple_config_yaxt_exchanger_name(int ext_couple_config_id, char const *yaxt_exchanger_name)
Definition yac.c:2355
void yac_cset_ext_couple_config_scale_summand(int ext_couple_config_id, double scale_summand)
Definition yac.c:2278
void yac_cset_coordinates_mismatch_is_fatal(int is_fatal)
Definition yac.c:960
void yac_cset_spmap_overwrite_config_weight_type(int spmap_overwrite_config_id, int weight_type)
Definition yac.c:6347
const char * yac_cget_field_datetime(int field_id)
Definition yac.c:3013
int const YAC_SPMAP_AVG
Definition yac.c:100
int const YAC_CONSERV_DESTAREA
Definition yac.c:97
void yac_cget(int const field_id, int collection_size, double **recv_field, int *info, int *ierr)
Definition yac.c:3364
void yac_cdef_comp_instance(int yac_instance_id, char const *comp_name, int *comp_id)
Definition yac.c:1377
int const YAC_REDUCTION_TIME_ACCUMULATE
Definition yac.c:57
void yac_cset_ext_spmap_config_weight_type(int ext_spmap_config_id, int weight_type)
Definition yac.c:6142
void yac_cset_spmap_overwrite_config_src_point_selection_bnd_circle(int spmap_overwrite_config_id, double center_lon, double center_lat, double inc_angle)
Definition yac.c:6309
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
void yac_cget_ext_couple_config_use_raw_exchange(int ext_couple_config_id, int *use_raw_exchange)
Definition yac.c:2382
void yac_cdef_couple_custom_instance(int yac_instance_id, char const *src_comp_name, char const *src_grid_name, char const *src_field_name, char const *tgt_comp_name, char const *tgt_grid_name, char const *tgt_field_name, char const *coupling_timestep, int time_unit, int time_reduction, int interp_stack_config_id, int src_lag, int tgt_lag, int ext_couple_config_id)
Definition yac.c:2494
void yac_cset_ext_couple_config_use_raw_exchange(int ext_couple_config_id, int use_raw_exchange)
Definition yac.c:2375
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
void yac_cinit_comm_instance(MPI_Comm comm, int *yac_instance_id)
Definition yac.c:722
void yac_cfree_ext_spmap_config(int ext_spmap_config_id)
Definition yac.c:6101
void yac_cset_ext_spmap_config_max_search_distance(int ext_spmap_config_id, double max_search_distance)
Definition yac.c:6132
int const YAC_CONFIG_OUTPUT_FORMAT_YAML
Definition yac.c:116
int const YAC_TIME_UNIT_SECOND
Definition yac.c:63
void yac_cadd_interp_stack_config_conservative(int interp_stack_config_id, int order, int enforced_conserv, int partial_coverage, int normalisation)
Definition yac.c:6056
void yac_cset_ext_spmap_config_tgt_cell_area_config_file(int ext_spmap_config_id, char const *filename, char const *varname, int min_global_id)
Definition yac.c:6269
int const YAC_DNN_DIST
Definition yac.c:90
void yac_cadd_interp_stack_config_user_file(int interp_stack_config_id, char const *filename)
Definition yac.c:6631
int const YAC_SPMAP_FRACAREA
Definition yac.c:106
int const YAC_ACTION_NONE
no data exchanges
Definition yac.c:46
void yac_cdef_calendar(int calendar)
Definition yac.c:1063
int const YAC_SPMAP_NONE
Definition yac.c:103
void yac_cset_coordinates_check_instance(int yac_instance_id, int apply_check)
Definition yac.c:936
void yac_cadd_interp_stack_config_rbf(int interp_stack_config_id, size_t n, double max_search_distance, double scale)
Definition yac.c:6044
int const YAC_CONFIG_OUTPUT_SYNC_LOC_SYNC_DEF
after synchronization of definition
Definition yac.c:131
void yac_cdef_comps(char const **comp_names, int num_comps, int *comp_ids)
Definition yac.c:1369
int const YAC_ACTION_GET_FOR_RESTART
last valid get
Definition yac.c:50
void yac_cput_(int const field_id, int const collection_size, double *send_field, int *info, int *ierr)
Definition yac.c:3671
void yac_cset_ext_spmap_config_tgt_cell_area_config_yac(int ext_spmap_config_id, double sphere_radius)
Definition yac.c:6194
int const YAC_PROLEPTIC_GREGORIAN
Definition yac.c:72
void yac_cadd_interp_stack_config_hcsbb(int interp_stack_config_id)
Definition yac.c:6596
void yac_cadd_interp_stack_config_fixed(int interp_stack_config_id, double value)
Definition yac.c:6640
void yac_cset_ext_spmap_config_src_cell_area_config_file(int ext_spmap_config_id, char const *filename, char const *varname, int min_global_id)
Definition yac.c:6257
void yac_cadd_interp_stack_config_spmap(int interp_stack_config_id, double spread_distance, double max_search_distance, int weight_type, int scale_type, double src_sphere_radius, char const *src_filename, char const *src_varname, int src_min_global_id, double tgt_sphere_radius, char const *tgt_filename, char const *tgt_varname, int tgt_min_global_id)
Definition yac.c:6363
void yac_cadd_interp_stack_config_user_callback(int interp_stack_config_id, char const *func_compute_weights_key)
Definition yac.c:6672
void yac_cset_ext_couple_config_mapping_side(int ext_couple_config_id, int mapping_side)
Definition yac.c:2232
void yac_cfree_interp_stack_config(int interp_stack_config_id)
Definition yac.c:5938
void yac_cset_grid_output_file(const char *gridname, const char *filename)
Definition yac.c:930
int const YAC_NNN_AVG
Definition yac.c:83
void yac_cadd_interp_stack_config_nnn(int interp_stack_config_id, int type, size_t n, double max_search_distance, double scale)
Definition yac.c:5996
void yac_cget_ext_couple_config_scale_summand(int ext_couple_config_id, double *scale_summand)
Definition yac.c:2285
int const YAC_CONFIG_OUTPUT_FORMAT_JSON
Definition yac.c:117
void yac_cinit_instance(int *yac_instance_id)
Definition yac.c:756
void yac_cget_interp_stack_config(int *interp_stack_config_id)
Definition yac.c:5922
void yac_cset_ext_couple_config_collection_selection(int ext_couple_config_id, int collection_size, int const *collection_indices)
Definition yac.c:2421
void yac_cadd_interp_stack_config_average(int interp_stack_config_id, int reduction_type, int partial_coverage)
Definition yac.c:5959
int const YAC_ACTION_PUT_FOR_RESTART
last valid put
Definition yac.c:51
int const YAC_SPMAP_DIST
Definition yac.c:101
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
void yac_cset_spmap_overwrite_config_spread_distance(int spmap_overwrite_config_id, double spread_distance)
Definition yac.c:6327
void yac_cdef_couple_instance(int yac_instance_id, char const *src_comp_name, char const *src_grid_name, char const *src_field_name, char const *tgt_comp_name, char const *tgt_grid_name, char const *tgt_field_name, char const *coupling_timestep, int time_unit, int time_reduction, int interp_stack_config_id, int src_lag, int tgt_lag)
Definition yac.c:2524
void yac_cget_spmap_overwrite_config(int *spmap_overwrite_config_id)
Definition yac.c:6281
void yac_cdef_couple(char const *src_comp_name, char const *src_grid_name, char const *src_field_name, char const *tgt_comp_name, char const *tgt_grid_name, char const *tgt_field_name, char const *coupling_timestep, int time_unit, int time_reduction, int interp_stack_config_id, int src_lag, int tgt_lag)
Definition yac.c:2541
void yac_cadd_interp_stack_config_dnn(int interp_stack_config_id, int weight_type, int search_distance_type, double search_distance, double scale)
Definition yac.c:6017
void yac_cdef_comps_instance(int yac_instance_id, char const **comp_names, int num_comps, int *comp_ids)
Definition yac.c:1326
int const YAC_REDUCTION_TIME_NONE
Definition yac.c:56
void yac_cget_ext_spmap_config(int *ext_spmap_config_id)
Definition yac.c:6075
void yac_cget_ext_couple_config_weight_file(int ext_couple_config_id, char const **weight_file)
Definition yac.c:2182