YetAnotherCoupler 3.1.1
Loading...
Searching...
No Matches
yac_interface.h
Go to the documentation of this file.
1// Copyright (c) 2024 The YAC Authors
2//
3// SPDX-License-Identifier: BSD-3-Clause
4
5#ifndef YAC_INTERFACE_H
6#define YAC_INTERFACE_H
7
8#include <mpi.h>
9
10extern int const YAC_LOCATION_CELL;
11extern int const YAC_LOCATION_CORNER;
12extern int const YAC_LOCATION_EDGE;
13
14extern int const YAC_EXCHANGE_TYPE_NONE;
15extern int const YAC_EXCHANGE_TYPE_SOURCE;
16extern int const YAC_EXCHANGE_TYPE_TARGET;
17
18extern int const YAC_ACTION_NONE;
19extern int const YAC_ACTION_REDUCTION;
20extern int const YAC_ACTION_COUPLING;
21extern int const YAC_ACTION_GET_FOR_RESTART;
22extern int const YAC_ACTION_PUT_FOR_RESTART;
23extern int const YAC_ACTION_OUT_OF_BOUND;
24
25extern int const YAC_REDUCTION_TIME_NONE;
26extern int const YAC_REDUCTION_TIME_ACCUMULATE;
27extern int const YAC_REDUCTION_TIME_AVERAGE;
28extern int const YAC_REDUCTION_TIME_MINIMUM;
29extern int const YAC_REDUCTION_TIME_MAXIMUM;
30
31extern int const YAC_TIME_UNIT_MILLISECOND;
32extern int const YAC_TIME_UNIT_SECOND;
33extern int const YAC_TIME_UNIT_MINUTE;
34extern int const YAC_TIME_UNIT_HOUR;
35extern int const YAC_TIME_UNIT_DAY;
36extern int const YAC_TIME_UNIT_MONTH;
37extern int const YAC_TIME_UNIT_YEAR;
38extern int const YAC_TIME_UNIT_ISO_FORMAT;
39
40extern int const YAC_CALENDAR_NOT_SET;
41extern int const YAC_PROLEPTIC_GREGORIAN;
42extern int const YAC_YEAR_OF_365_DAYS;
43extern int const YAC_YEAR_OF_360_DAYS;
44
45extern int const YAC_AVG_ARITHMETIC;
46extern int const YAC_AVG_DIST;
47extern int const YAC_AVG_BARY;
48
49extern int const YAC_NCC_AVG;
50extern int const YAC_NCC_DIST;
51
52extern int const YAC_NNN_AVG;
53extern int const YAC_NNN_DIST;
54extern int const YAC_NNN_GAUSS;
55extern int const YAC_NNN_RBF;
56extern int const YAC_NNN_ZERO;
57
58extern int const YAC_CONSERV_DESTAREA;
59extern int const YAC_CONSERV_FRACAREA;
60
61extern int const YAC_SPMAP_AVG;
62extern int const YAC_SPMAP_DIST;
63
64extern int YAC_YAML_EMITTER_DEFAULT;
65extern int YAC_YAML_EMITTER_JSON;
66
67#define YAC_MAX_CHARLEN (132)
68
129/* -----------------------------------------------------------------------------
130
131 C and Fortran description of the user API
132
133 ----------------------------------------------------------------------------- */
134
161void yac_cmpi_handshake(MPI_Comm comm, size_t n, char const** group_names,
162 MPI_Comm * group_comms);
163
173
182 void yac_cinit (void);
183
193 void yac_cinit_instance ( int * yac_instance_id );
194
204 void yac_cinit_comm ( MPI_Comm comm );
205
215 void yac_cinit_comm_instance ( MPI_Comm comm, int * yac_instance_id );
216
217/* -------------------------------------------------------------------------------- */
218
224 void yac_cinit_dummy(void);
225
234 void yac_cinit_comm_dummy ( MPI_Comm comm );
235
236/* -------------------------------------------------------------------------------- */
237
244void yac_cread_config_yaml_instance( int yac_instance_id,
245 const char * yaml_file);
246
251void yac_cread_config_yaml(const char * yaml_file);
252
259void yac_cread_config_json_instance( int yac_instance_id,
260 const char * json_file);
261
266void yac_cread_config_json(const char * json_file);
267
268/* -------------------------------------------------------------------------------- */
269
276 void yac_ccleanup ();
277
284 void yac_ccleanup_instance ( int yac_instance_id );
285
286/* -------------------------------------------------------------------------------- */
287
291 void yac_cfinalize ();
292
297 void yac_cfinalize_instance (int yac_instance_id);
298
299/* -------------------------------------------------------------------------------- */
300
307 void yac_cdef_datetime ( const char * start_datetime,
308 const char * end_datetime );
309
317 void yac_cdef_datetime_instance ( int yac_instance_id,
318 const char * start_datetime,
319 const char * end_datetime );
320
326 void yac_cdef_calendar ( int calendar );
327
328/* -------------------------------------------------------------------------------- */
329
337 void yac_cget_groupcomm( MPI_Comm * group_comm );
338
347 void yac_cget_groupcomm_instance( int yac_instance_id,
348 MPI_Comm * group_comm );
349
350/* -------------------------------------------------------------------------------- */
351
360void yac_cpredef_comp(char const * comp_name, int * comp_id);
361
371void yac_cpredef_comp_instance(int yac_instance_id,
372 char const * comp_name,
373 int * comp_id);
374
375/* -------------------------------------------------------------------------------- */
376
387 void yac_cdef_comp ( const char * comp_name,
388 int * comp_id );
389
402 void yac_cdef_comp_instance ( int yac_instance_id,
403 const char * comp_name,
404 int * comp_id );
405
406/* -------------------------------------------------------------------------------- */
407
419 void yac_cdef_comps ( const char ** comp_names,
420 int num_comps,
421 int * comp_ids );
422
435 void yac_cdef_comps_instance ( int yac_instance_id,
436 const char ** comp_names,
437 int num_comps,
438 int * comp_ids );
439
440/* -------------------------------------------------------------------------------- */
441
449 void yac_cget_comp_comm ( int comp_id,
450 MPI_Comm *comp_comm );
451
452/* -------------------------------------------------------------------------------- */
453
466 void yac_cget_comps_comm ( const char ** comp_names,
467 int num_comps,
468 MPI_Comm * comps_comm);
469
482 void yac_cget_comps_comm_instance ( int yac_instance_id,
483 const char ** comp_names,
484 int num_comps,
485 MPI_Comm * comps_comm );
486
487/* -------------------------------------------------------------------------------- */
488
499 void yac_cdef_points_reg2d ( int const grid_id,
500 int const *nbr_points,
501 int const location,
502 double const *x_points,
503 double const *y_points,
504 int *point_id );
505
506/* -------------------------------------------------------------------------------- */
507
520 void yac_cdef_points_curve2d ( int const grid_id,
521 int const *nbr_points,
522 int const location,
523 double const *x_points,
524 double const *y_points,
525 int *point_id );
526
527/* -------------------------------------------------------------------------------- */
528
539 void yac_cdef_points_unstruct ( int const grid_id,
540 int const nbr_points,
541 int const location,
542 double const *x_points,
543 double const *y_points,
544 int *point_id );
545
546/* -------------------------------------------------------------------------------- */
547
561 void yac_cdef_grid_reg2d ( const char * grid_name,
562 int nbr_vertices[2],
563 int cyclic[2],
564 double *x_vertices,
565 double *y_vertices,
566 int *grid_id);
567
568/* -------------------------------------------------------------------------------- */
569
585 void yac_cdef_grid_curve2d ( const char * grid_name,
586 int nbr_vertices[2],
587 int cyclic[2],
588 double *x_vertices,
589 double *y_vertices,
590 int *grid_id);
591
592/* -------------------------------------------------------------------------------- */
593
606 void yac_cdef_grid_unstruct ( const char * grid_name,
607 int nbr_vertices,
608 int nbr_cells,
609 int *num_vertices_per_cell,
610 double *x_vertices,
611 double *y_vertices,
612 int *cell_to_vertex,
613 int *grid_id);
614
615/* -------------------------------------------------------------------------------- */
616
632 void yac_cdef_grid_unstruct_ll ( const char * grid_name,
633 int nbr_vertices,
634 int nbr_cells,
635 int *num_vertices_per_cell,
636 double *x_vertices,
637 double *y_vertices,
638 int *cell_to_vertex,
639 int *grid_id);
640
641/* -------------------------------------------------------------------------------- */
642
652 void yac_cset_global_index ( int const * global_index,
653 int location,
654 int grid_id);
655
656/* -------------------------------------------------------------------------------- */
657
670 void yac_cset_core_mask ( int const * is_core,
671 int location,
672 int grid_id);
673
674/* -------------------------------------------------------------------------------- */
675
682 void yac_cset_mask ( int const * is_valid,
683 int points_id );
684
685/* -------------------------------------------------------------------------------- */
686
696 void yac_cdef_mask ( int const grid_id,
697 int const nbr_points,
698 int const location,
699 int const * is_valid,
700 int *mask_id );
701
702/* -------------------------------------------------------------------------------- */
703
714 void yac_cdef_mask_named ( int const grid_id,
715 int const nbr_points,
716 int const location,
717 int const * is_valid,
718 char const * name,
719 int *mask_id );
720
721/* -------------------------------------------------------------------------------- */
722
741 void yac_cdef_field ( char const * field_name,
742 int const component_id,
743 int const * point_ids,
744 int const num_pointsets,
745 int collection_size,
746 const char* timestep,
747 int time_unit,
748 int * field_id );
749
750/* -------------------------------------------------------------------------------- */
751
771 void yac_cdef_field_mask ( char const * field_name,
772 int const component_id,
773 int const * point_ids,
774 int const * mask_ids,
775 int const num_pointsets,
776 int collection_size,
777 const char* timestep,
778 int time_unit,
779 int * field_id );
780
781/* -------------------------------------------------------------------------- */
782
796 const char* comp_name, const char* grid_name, const char* field_name,
797 double frac_mask_fallback_value);
798
813 int yac_instance_id, const char* comp_name, const char* grid_name,
814 const char* field_name, double frac_mask_fallback_value);
815
816/* -------------------------------------------------------------------------- */
817
822void yac_cdef_component_metadata(const char* comp_name, const char* metadata);
823
829void yac_cdef_component_metadata_instance(int yac_instance_id, const char* comp_name,
830 const char* metadata);
831
836void yac_cdef_grid_metadata(const char* grid_name, const char* metadata);
837
843void yac_cdef_grid_metadata_instance(int yac_instance_id, const char* grid_name,
844 const char* metadata);
845
852void yac_cdef_field_metadata(const char* comp_name, const char* grid_name,
853 const char* field_name, const char* metadata);
854
862void yac_cdef_field_metadata_instance(int yac_instance_id,const char* comp_name,
863 const char* grid_name, const char* field_name, const char* metadata);
864
865/* -------------------------------------------------------------------------- */
866
883void yac_cget_action(int field_id, int * action);
884
889const char * yac_cget_field_datetime(int field_id);
890
891/* -------------------------------------------------------------------------- */
892
904void yac_cupdate(int field_id);
905
906/* -------------------------------------------------------------------------- */
907
912void yac_cget_ext_couple_config(int * ext_couple_config_id);
913
917void yac_cfree_ext_couple_config(int ext_couple_config_id);
918
927void yac_cset_ext_couple_config_weight_file(int ext_couple_config_id,
928 char const * weight_file);
929
935void yac_cget_ext_couple_config_weight_file(int ext_couple_config_id,
936 char const ** weight_file);
937
943void yac_cset_ext_couple_config_mapping_side(int ext_couple_config_id,
944 int mapping_side);
945
950void yac_cget_ext_couple_config_mapping_side(int ext_couple_config_id,
951 int * mapping_side);
952
957void yac_cset_ext_couple_config_scale_factor(int ext_couple_config_id,
958 double scale_factor);
959
964void yac_cget_ext_couple_config_scale_factor(int ext_couple_config_id,
965 double * scale_factor);
966
971void yac_cset_ext_couple_config_scale_summand(int ext_couple_config_id,
972 double scale_summand);
973
978void yac_cget_ext_couple_config_scale_summand(int ext_couple_config_id,
979 double * scale_summand);
980
987 int ext_couple_config_id, size_t num_src_mask_names,
988 char const * const * src_mask_names);
989
996 int ext_couple_config_id, size_t * num_src_mask_names,
997 char const * const ** src_mask_names);
998
1004 int ext_couple_config_id, char const * tgt_mask_name);
1005
1011 int ext_couple_config_id, char const ** tgt_mask_name);
1012
1013/* -------------------------------------------------------------------------- */
1014
1036 int yac_instance_id,
1037 char const * src_comp_name, char const * src_grid_name, char const * src_field_name,
1038 char const * tgt_comp_name, char const * tgt_grid_name, char const * tgt_field_name,
1039 char const * coupling_timestep, int time_unit, int time_reduction,
1040 int interp_stack_config_id, int src_lag, int tgt_lag,
1041 int ext_couple_config_id);
1042
1064 char const * src_comp_name, char const * src_grid_name, char const * src_field_name,
1065 char const * tgt_comp_name, char const * tgt_grid_name, char const * tgt_field_name,
1066 char const * coupling_timestep, int time_unit, int time_reduction,
1067 int interp_stack_config_id, int src_lag, int tgt_lag,
1068 int ext_couple_config_id);
1069
1070/* -------------------------------------------------------------------------- */
1071
1092 int yac_instance_id,
1093 char const * src_comp_name, char const * src_grid_name, char const * src_field_name,
1094 char const * tgt_comp_name, char const * tgt_grid_name, char const * tgt_field_name,
1095 char const * coupling_timestep, int time_unit, int time_reduction,
1096 int interp_stack_config_id, int src_lag, int tgt_lag);
1097
1116void yac_cdef_couple(
1117 char const * src_comp_name, char const * src_grid_name, char const * src_field_name,
1118 char const * tgt_comp_name, char const * tgt_grid_name, char const * tgt_field_name,
1119 char const * coupling_timestep, int time_unit, int time_reduction,
1120 int interp_stack_config_id, int src_lag, int tgt_lag);
1121
1122
1123/* -------------------------------------------------------------------------------- */
1124
1135 void yac_ccheck_field_dimensions ( int field_id,
1136 int collection_size,
1137 int num_pointsets,
1138 int const * pointset_sizes );
1139
1140/* -------------------------------------------------------------------------------- */
1141
1152 void yac_cget_ ( int const field_id,
1153 int const collection_size,
1154 double *recv_field,
1155 int *info,
1156 int *ierror );
1157
1167 void yac_cget ( int const field_id,
1168 int const collection_size,
1169 double **recv_field,
1170 int *info,
1171 int *ierror );
1172
1187 void yac_cget_async_ ( int const field_id,
1188 int const collection_size,
1189 double *recv_field,
1190 int *info,
1191 int *ierror );
1192
1206 void yac_cget_async ( int const field_id,
1207 int const collection_size,
1208 double **recv_field,
1209 int *info,
1210 int *ierror );
1211
1212/* -------------------------------------------------------------------------------- */
1213
1227 void yac_cput_ ( int const field_id,
1228 int const collection_size,
1229 double *send_field,
1230 int *info,
1231 int *ierror );
1232
1245 void yac_cput ( int const field_id,
1246 int const collection_size,
1247 double *** const send_field,
1248 int *info,
1249 int *ierror );
1250
1251/* -------------------------------------------------------------------------------- */
1252
1271 void yac_cput_frac_ ( int const field_id,
1272 int const collection_size,
1273 double *send_field,
1274 double *send_frac_mask,
1275 int *info,
1276 int *ierror );
1277
1294 void yac_cput_frac ( int const field_id,
1295 int const collection_size,
1296 double *** const send_field,
1297 double *** const send_frac_mask,
1298 int *info,
1299 int *ierror );
1300
1301/* -------------------------------------------------------------------------------- */
1302
1314 void yac_cput_ptr_ ( int const field_id,
1315 int const collection_size,
1316 double ** send_field,
1317 int *info,
1318 int *ierror );
1319
1320/* -------------------------------------------------------------------------------- */
1321
1336 void yac_cput_frac_ptr_ ( int const field_id,
1337 int const collection_size,
1338 double ** send_field,
1339 double ** send_frac_mask,
1340 int *info,
1341 int *ierror );
1342
1343/* -------------------------------------------------------------------------------- */
1344
1363 void yac_cexchange_ ( int const send_field_id,
1364 int const recv_field_id,
1365 int const collection_size,
1366 double *send_field ,
1367 double *recv_field,
1368 int *send_info,
1369 int *recv_info,
1370 int *ierror );
1371
1372
1389 void yac_cexchange ( int const send_field_id,
1390 int const recv_field_id,
1391 int const collection_size,
1392 double *** const send_field,
1393 double ** recv_field,
1394 int *send_info,
1395 int *recv_info,
1396 int *ierror );
1397
1398/* -------------------------------------------------------------------------------- */
1399
1423 void yac_cexchange_frac_ ( int const send_field_id,
1424 int const recv_field_id,
1425 int const collection_size,
1426 double *send_field,
1427 double *send_frac_mask,
1428 double *recv_field,
1429 int *send_info,
1430 int *recv_info,
1431 int *ierror );
1432
1433
1454 void yac_cexchange_frac ( int const send_field_id,
1455 int const recv_field_id,
1456 int const collection_size,
1457 double *** const send_field,
1458 double *** const send_frac_mask,
1459 double ** recv_field,
1460 int *send_info,
1461 int *recv_info,
1462 int *ierror );
1463
1464/* -------------------------------------------------------------------------------- */
1465
1481 void yac_cexchange_ptr_ ( int const send_field_id,
1482 int const recv_field_id,
1483 int const collection_size,
1484 double ** send_field,
1485 double ** recv_field,
1486 int *send_info,
1487 int *recv_info,
1488 int *ierror );
1489
1490/* -------------------------------------------------------------------------------- */
1491
1510 void yac_cexchange_frac_ptr_ ( int const send_field_id,
1511 int const recv_field_id,
1512 int const collection_size,
1513 double ** send_field,
1514 double ** send_frac_mask,
1515 double ** recv_field,
1516 int *send_info,
1517 int *recv_info,
1518 int *ierror );
1519
1520/* -------------------------------------------------------------------------------- */
1521
1531 void yac_ctest ( int field_id, int * flag );
1532
1533/* -------------------------------------------------------------------------------- */
1534
1541 void yac_cwait ( int field_id );
1542
1543/* -------------------------------------------------------------------------------- */
1544
1547void yac_csync_def ( void );
1548
1553void yac_csync_def_instance ( int yac_instance_id );
1554
1559void yac_cenddef ( void );
1560
1567void yac_cenddef_instance ( int yac_instance_id );
1568
1584void yac_cenddef_and_emit_config ( int emit_flags, char ** config );
1585
1601 int yac_instance_id, int emit_flags, char ** config);
1602
1603/* --------------------------------------------------------------------------------
1604 query routines
1605 -------------------------------------------------------------------------------- */
1606
1610char * yac_cget_start_datetime ( void );
1611
1617char * yac_cget_start_datetime_instance ( int yac_instance_id );
1618
1622char * yac_cget_end_datetime ( void );
1623
1629char * yac_cget_end_datetime_instance ( int yac_instance_id );
1630
1634char * yac_cget_version ( void );
1635
1636/* -------------------------------------------------------------------------------- */
1637
1644int yac_cget_nbr_comps ( void );
1645
1651int yac_cget_nbr_comps_instance ( int yac_instance_id );
1652
1660int yac_cget_nbr_grids ( );
1661
1668int yac_cget_nbr_grids_instance ( int yac_instance_id );
1669
1677int yac_cget_comp_nbr_grids ( const char* comp_name );
1678
1686int yac_cget_comp_nbr_grids_instance ( int yac_instance_id,
1687 const char* comp_name );
1688
1697int yac_cget_nbr_fields ( const char* comp_name, const char* grid_name );
1698
1708int yac_cget_nbr_fields_instance ( int yac_instance_id, const char* comp_name,
1709 const char* grid_name);
1710
1711/* -------------------------------------------------------------------------------- */
1712
1719void yac_cget_comp_names ( int nbr_comps, const char ** comp_names );
1720
1728void yac_cget_comp_names_instance ( int yac_instance_id, int nbr_comps,
1729 const char ** comp_names );
1730
1739void yac_cget_grid_names ( int nbr_grids, const char ** grid_names );
1740
1749void yac_cget_grid_names_instance ( int yac_instance_id,
1750 int nbr_grids, const char ** grid_names );
1751
1761void yac_cget_comp_grid_names ( const char* comp_name,
1762 int nbr_grids, const char ** grid_names );
1763
1774void yac_cget_comp_grid_names_instance ( int yac_instance_id, const char* comp_name,
1775 int nbr_grids, const char ** grid_names );
1776
1786void yac_cget_field_names ( const char* comp_name, const char* grid_name,
1787 int nbr_fields, const char ** field_names );
1788
1798void yac_cget_field_names_instance ( int yac_instance_id,
1799 const char * comp_name, const char* grid_name, int nbr_fields,
1800 const char ** field_names );
1801
1802/* ---------------------------------------------------------------------- */
1803
1812const char* yac_cget_component_name_from_field_id ( int field_id );
1813
1822const char* yac_cget_grid_name_from_field_id ( int field_id );
1823
1832const char* yac_cget_field_name_from_field_id ( int field_id );
1833
1843const char* yac_cget_timestep_from_field_id ( int field_id );
1844
1852int yac_cget_collection_size_from_field_id ( int field_id );
1853
1866int yac_cget_role_from_field_id ( int field_id );
1867
1876int yac_cget_field_id(const char* comp_name, const char* grid_name,
1877 const char* field_name);
1878
1888int yac_cget_field_id_instance(int yac_instance_id, const char* comp_name,
1889 const char* grid_name, const char* field_name);
1890
1891/* ---------------------------------------------------------------------- */
1892
1897const char* yac_cget_component_metadata(const char* comp_name);
1898
1904const char* yac_cget_component_metadata_instance(int yac_instance_id,
1905 const char* comp_name);
1906
1911const char* yac_cget_grid_metadata(const char* grid_name);
1912
1918const char* yac_cget_grid_metadata_instance(int yac_instance_id,
1919 const char* grid_name);
1920
1927const char* yac_cget_field_metadata(const char* comp_name, const char* grid_name,
1928 const char* field_name);
1929
1937const char* yac_cget_field_metadata_instance(int yac_instance_id,
1938 const char* comp_name, const char* grid_name, const char* field_name);
1939
1940/* ---------------------------------------------------------------------- */
1941
1952const char* yac_cget_field_timestep ( const char* comp_name, const char* grid_name,
1953 const char* field_name );
1954
1966const char* yac_cget_field_timestep_instance ( int yac_instance_id, const char* comp_name,
1967 const char* grid_name, const char* field_name );
1968
1981 const char* comp_name, const char* grid_name, const char* field_name);
1982
1993 const char* comp_name, const char* grid_name, const char* field_name);
1994
2008 int yac_instance_id, const char* comp_name, const char* grid_name,
2009 const char* field_name );
2010
2022 int yac_instance_id, const char* comp_name, const char* grid_name,
2023 const char* field_name);
2024
2039int yac_cget_field_role ( const char* comp_name, const char* grid_name,
2040 const char* field_name );
2041
2057int yac_cget_field_role_instance ( int yac_instance_id, const char* comp_name,
2058 const char* grid_name, const char* field_name );
2059
2060/* --------------------------------------------------------------------------------
2061 auxiliary routines
2062 -------------------------------------------------------------------------------- */
2063
2064#ifndef __GNUC__
2065# define __attribute__(x) /*NOTHING*/
2066#endif
2067
2068// prevent warning if compile with cython
2069#ifdef YAC_CYTHON
2070# define __attribute__(x) /*NOTHING*/
2071#endif
2072
2076typedef void (*yac_abort_func)(MPI_Comm comm, const char *msg,
2077 const char *source, int line)
2078 __attribute__((noreturn));
2079
2080
2081#ifdef YAC_CYTHON
2082# undef __attribute__
2083#endif
2084
2092void yac_abort(MPI_Comm comm, const char *msg,
2093 const char *source, int line)
2094 __attribute__((noreturn));
2095
2103void yac_abort_message(char const *msg, const char *source, int line);
2104
2109
2118
2124
2130
2135void yac_set_default_comm(MPI_Comm comm);
2136
2137/* -------------------------------------------------------------------------------- */
2138
2146size_t yac_get_grid_size ( int location, int grid_id );
2147
2148/* -------------------------------------------------------------------------------- */
2149
2156size_t yac_get_points_size ( int points_id );
2157
2158/* -------------------------------------------------------------------------------- */
2159
2163void yac_cget_interp_stack_config(int * interp_stack_config_id);
2164
2168void yac_cfree_interp_stack_config(int interp_stack_config_id);
2169
2176 int interp_stack_config_id, int reduction_type, int partial_coverage);
2177
2185 int interp_stack_config_id, int weight_type, int partial_coverage);
2186
2196 int interp_stack_config_id, int type, size_t n, double scale);
2197
2206 int interp_stack_config_id, int order, int enforced_conserv,
2207 int partial_coverage, int normalisation);
2208
2217 int interp_stack_config_id, double spread_distance,
2218 double max_search_distance, int weight_type);
2219
2223void yac_cadd_interp_stack_config_hcsbb(int interp_stack_config_id);
2224
2236 int interp_stack_config_id, char const * filename, char const * src_grid_name,
2237 char const * tgt_grid_name);
2238
2244 int interp_stack_config_id, double value);
2245
2256 int interp_stack_config_id, char const * constructor_key,
2257 char const * do_search_key);
2258
2264 int interp_stack_config_id, int creep_distance);
2265
2273 int interp_stack_config_id, char const * func_compute_weights_key);
2274
2344#ifndef TYPEDEF_YAC_FUNC_COMPUTE_WEIGHTS
2345#define TYPEDEF_YAC_FUNC_COMPUTE_WEIGHTS
2346
2347// Remark: make sure that this typedef is consistent with the one in interp_method_callback.h
2349 double const tgt_coords[3], int src_cell_id, size_t src_cell_idx,
2350 int const ** global_results_points, double ** result_weights,
2351 size_t * result_count, void * user_data);
2352#endif
2353
2366 yac_func_compute_weights compute_weights_callback,
2367 void * user_data, char const * key);
2368
2369#endif // YAC_INTERFACE_H
2370
void * user_data
char * key
struct @8::@9 value
enum callback_type type
int const YAC_YEAR_OF_365_DAYS
void yac_cdef_comps(const char **comp_names, int num_comps, int *comp_ids)
int const YAC_REDUCTION_TIME_AVERAGE
void yac_cenddef_and_emit_config(int emit_flags, char **config)
void yac_cdef_points_curve2d(int const grid_id, int const *nbr_points, int const location, double const *x_points, double const *y_points, int *point_id)
void yac_cread_config_yaml_instance(int yac_instance_id, const char *yaml_file)
void yac_cinit_comm_dummy(MPI_Comm comm)
void yac_cget_grid_names(int nbr_grids, const char **grid_names)
void yac_cadd_interp_stack_config_ncc(int interp_stack_config_id, int weight_type, int partial_coverage)
void yac_cread_config_json_instance(int yac_instance_id, const char *json_file)
void yac_cget_ext_couple_config_scale_factor(int ext_couple_config_id, double *scale_factor)
const char * yac_cget_field_metadata_instance(int yac_instance_id, const char *comp_name, const char *grid_name, const char *field_name)
void yac_cexchange_frac(int const send_field_id, int const recv_field_id, int const collection_size, double ***const send_field, double ***const send_frac_mask, double **recv_field, int *send_info, int *recv_info, int *ierror)
int const YAC_NCC_AVG
void yac_cget_async(int const field_id, int const collection_size, double **recv_field, int *info, int *ierror)
void yac_cput_frac_ptr_(int const field_id, int const collection_size, double **send_field, double **send_frac_mask, int *info, int *ierror)
int YAC_YAML_EMITTER_JSON
emit to JSON format
Definition config_yaml.c:35
size_t yac_get_points_size(int points_id)
void yac_cenddef(void)
yac_abort_func yac_get_abort_handler(void)
void yac_ccheck_field_dimensions(int field_id, int collection_size, int num_pointsets, int const *pointset_sizes)
void yac_cget_groupcomm_instance(int yac_instance_id, MPI_Comm *group_comm)
void yac_cenable_field_frac_mask(const char *comp_name, const char *grid_name, const char *field_name, double frac_mask_fallback_value)
int const YAC_ACTION_OUT_OF_BOUND
void yac_cget_ext_couple_config_mapping_side(int ext_couple_config_id, int *mapping_side)
void yac_cput_(int const field_id, int const collection_size, double *send_field, int *info, int *ierror)
char * yac_cget_start_datetime_instance(int yac_instance_id)
void yac_cset_global_index(int const *global_index, int location, int grid_id)
int const YAC_NNN_RBF
void yac_cdef_datetime_instance(int yac_instance_id, const char *start_datetime, const char *end_datetime)
int yac_cget_role_from_field_id(int field_id)
int yac_cget_nbr_grids_instance(int yac_instance_id)
void yac_cfree_ext_couple_config(int ext_couple_config_id)
const char * yac_cget_grid_metadata_instance(int yac_instance_id, const char *grid_name)
char * yac_cget_end_datetime_instance(int yac_instance_id)
void yac_cdef_datetime(const char *start_datetime, const char *end_datetime)
void yac_cget_ext_couple_config_mask_name(int ext_couple_config_id, char const **tgt_mask_name)
int const YAC_LOCATION_CELL
int const YAC_REDUCTION_TIME_MINIMUM
void yac_cset_ext_couple_config_tgt_mask_name(int ext_couple_config_id, char const *tgt_mask_name)
void yac_cget_async_(int const field_id, int const collection_size, double *recv_field, int *info, int *ierror)
void yac_cdef_field(char const *field_name, int const component_id, int const *point_ids, int const num_pointsets, int collection_size, const char *timestep, int time_unit, int *field_id)
void yac_cdef_grid_metadata(const char *grid_name, const char *metadata)
int const YAC_TIME_UNIT_MINUTE
void yac_cdef_grid_curve2d(const char *grid_name, int nbr_vertices[2], int cyclic[2], double *x_vertices, double *y_vertices, int *grid_id)
void yac_cget_grid_names_instance(int yac_instance_id, int nbr_grids, const char **grid_names)
void yac_cset_ext_couple_config_scale_factor(int ext_couple_config_id, double scale_factor)
int const YAC_NCC_DIST
void yac_cadd_interp_stack_config_creep(int interp_stack_config_id, int creep_distance)
void yac_cdef_mask(int const grid_id, int const nbr_points, int const location, int const *is_valid, int *mask_id)
void yac_cdef_component_metadata(const char *comp_name, const char *metadata)
int const YAC_TIME_UNIT_YEAR
void yac_cexchange(int const send_field_id, int const recv_field_id, int const collection_size, double ***const send_field, double **recv_field, int *send_info, int *recv_info, int *ierror)
int yac_cget_field_role(const char *comp_name, const char *grid_name, const char *field_name)
void yac_ccleanup()
int const YAC_AVG_ARITHMETIC
void yac_set_default_comm(MPI_Comm comm)
void yac_cput_frac_(int const field_id, int const collection_size, double *send_field, double *send_frac_mask, int *info, int *ierror)
void yac_cadd_compute_weights_callback(yac_func_compute_weights compute_weights_callback, void *user_data, char const *key)
void yac_cmpi_handshake(MPI_Comm comm, size_t n, char const **group_names, MPI_Comm *group_comms)
void yac_cput(int const field_id, int const collection_size, double ***const send_field, int *info, int *ierror)
int const YAC_REDUCTION_TIME_MAXIMUM
int const YAC_TIME_UNIT_MILLISECOND
int yac_cget_field_id_instance(int yac_instance_id, const char *comp_name, const char *grid_name, const char *field_name)
int yac_cget_comp_nbr_grids_instance(int yac_instance_id, const char *comp_name)
void yac_cdef_grid_unstruct_ll(const char *grid_name, int nbr_vertices, int nbr_cells, int *num_vertices_per_cell, double *x_vertices, double *y_vertices, int *cell_to_vertex, int *grid_id)
const char * yac_cget_timestep_from_field_id(int field_id)
int yac_cget_nbr_fields(const char *comp_name, const char *grid_name)
int const YAC_NNN_GAUSS
void yac_csync_def_instance(int yac_instance_id)
void yac_csync_def(void)
void(* yac_abort_func)(MPI_Comm comm, const char *msg, const char *source, int line) __attribute__((noreturn))
int const YAC_TIME_UNIT_HOUR
void yac_cinit(void)
int const YAC_YEAR_OF_360_DAYS
void yac_cfinalize_instance(int yac_instance_id)
void yac_cfinalize()
const char * yac_cget_field_name_from_field_id(int field_id)
void yac_cadd_interp_stack_config_check(int interp_stack_config_id, char const *constructor_key, char const *do_search_key)
void yac_cenddef_instance(int yac_instance_id)
void yac_cset_ext_couple_config_src_mask_names(int ext_couple_config_id, size_t num_src_mask_names, char const *const *src_mask_names)
int yac_cget_nbr_comps_instance(int yac_instance_id)
int yac_cget_nbr_fields_instance(int yac_instance_id, const char *comp_name, const char *grid_name)
void yac_cdef_comp(const char *comp_name, int *comp_id)
void yac_cget_ext_couple_config(int *ext_couple_config_id)
void yac_cdef_grid_metadata_instance(int yac_instance_id, const char *grid_name, const char *metadata)
void yac_cset_ext_couple_config_weight_file(int ext_couple_config_id, char const *weight_file)
const char * yac_cget_component_metadata_instance(int yac_instance_id, const char *comp_name)
int const YAC_LOCATION_CORNER
void yac_cdef_couple_custom(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)
const char * yac_cget_field_timestep_instance(int yac_instance_id, const char *comp_name, const char *grid_name, const char *field_name)
void yac_cset_ext_couple_config_scale_summand(int ext_couple_config_id, double scale_summand)
void yac_cget_comp_comm(int comp_id, MPI_Comm *comp_comm)
const char * yac_cget_field_datetime(int field_id)
int const YAC_SPMAP_AVG
int const YAC_CONSERV_DESTAREA
int const YAC_EXCHANGE_TYPE_SOURCE
void yac_cupdate(int field_id)
void yac_cget_action(int field_id, int *action)
int const YAC_REDUCTION_TIME_ACCUMULATE
void yac_abort(MPI_Comm comm, const char *msg, const char *source, int line) __attribute__((noreturn))
int yac_cget_field_id(const char *comp_name, const char *grid_name, const char *field_name)
void yac_cget_ext_couple_config_src_mask_names(int ext_couple_config_id, size_t *num_src_mask_names, char const *const **src_mask_names)
const char * yac_cget_grid_name_from_field_id(int field_id)
int yac_cget_collection_size_from_field_id(int field_id)
void yac_cdef_comps_instance(int yac_instance_id, const char **comp_names, int num_comps, int *comp_ids)
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)
int const YAC_EXCHANGE_TYPE_NONE
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)
void yac_cget_comps_comm(const char **comp_names, int num_comps, MPI_Comm *comps_comm)
void yac_cinit_comm_instance(MPI_Comm comm, int *yac_instance_id)
void yac_cadd_interp_stack_config_nnn(int interp_stack_config_id, int type, size_t n, double scale)
int const YAC_EXCHANGE_TYPE_TARGET
void yac_cput_frac(int const field_id, int const collection_size, double ***const send_field, double ***const send_frac_mask, int *info, int *ierror)
const char * yac_cget_grid_metadata(const char *grid_name)
void yac_cenable_field_frac_mask_instance(int yac_instance_id, const char *comp_name, const char *grid_name, const char *field_name, double frac_mask_fallback_value)
char * yac_cget_start_datetime(void)
int const YAC_TIME_UNIT_MONTH
int const YAC_TIME_UNIT_SECOND
void yac_cget(int const field_id, int const collection_size, double **recv_field, int *info, int *ierror)
void yac_cadd_interp_stack_config_conservative(int interp_stack_config_id, int order, int enforced_conserv, int partial_coverage, int normalisation)
void yac_cget_comps_comm_instance(int yac_instance_id, const char **comp_names, int num_comps, MPI_Comm *comps_comm)
void yac_cdef_grid_unstruct(const char *grid_name, int nbr_vertices, int nbr_cells, int *num_vertices_per_cell, double *x_vertices, double *y_vertices, int *cell_to_vertex, int *grid_id)
char * yac_cget_version(void)
int const YAC_LOCATION_EDGE
void yac_cput_ptr_(int const field_id, int const collection_size, double **send_field, int *info, int *ierror)
void yac_cexchange_ptr_(int const send_field_id, int const recv_field_id, int const collection_size, double **send_field, double **recv_field, int *send_info, int *recv_info, int *ierror)
#define __attribute__(x)
void yac_cexchange_frac_(int const send_field_id, int const recv_field_id, int const collection_size, double *send_field, double *send_frac_mask, double *recv_field, int *send_info, int *recv_info, int *ierror)
int yac_cget_default_instance_id()
void yac_cadd_interp_stack_config_spmap(int interp_stack_config_id, double spread_distance, double max_search_distance, int weight_type)
void yac_cexchange_frac_ptr_(int const send_field_id, int const recv_field_id, int const collection_size, double **send_field, double **send_frac_mask, double **recv_field, int *send_info, int *recv_info, int *ierror)
int YAC_YAML_EMITTER_DEFAULT
emit to YAML format
Definition config_yaml.c:34
void(* yac_func_compute_weights)(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)
const char * yac_cget_component_name_from_field_id(int field_id)
int yac_cget_field_collection_size(const char *comp_name, const char *grid_name, const char *field_name)
void yac_restore_default_abort_handler(void)
void yac_cdef_component_metadata_instance(int yac_instance_id, const char *comp_name, const char *metadata)
void yac_cenddef_and_emit_config_instance(int yac_instance_id, int emit_flags, char **config)
void yac_abort_message(char const *msg, const char *source, int line)
yac_abort_func yac_get_default_abort_handler(void)
char * yac_cget_end_datetime(void)
void yac_cread_config_yaml(const char *yaml_file)
int const YAC_ACTION_NONE
void yac_cdef_calendar(int calendar)
void yac_cset_core_mask(int const *is_core, int location, int grid_id)
void yac_cwait(int field_id)
void yac_cget_comp_names(int nbr_comps, const char **comp_names)
const char * yac_cget_field_metadata(const char *comp_name, const char *grid_name, const char *field_name)
int const YAC_ACTION_REDUCTION
void yac_cdef_field_mask(char const *field_name, int const component_id, int const *point_ids, int const *mask_ids, int const num_pointsets, int collection_size, const char *timestep, int time_unit, int *field_id)
int const YAC_ACTION_GET_FOR_RESTART
int const YAC_PROLEPTIC_GREGORIAN
void yac_cdef_points_unstruct(int const grid_id, int const nbr_points, int const location, double const *x_points, double const *y_points, int *point_id)
void yac_cget_comp_grid_names_instance(int yac_instance_id, const char *comp_name, int nbr_grids, const char **grid_names)
double yac_cget_field_frac_mask_fallback_value(const char *comp_name, const char *grid_name, const char *field_name)
void yac_cset_mask(int const *is_valid, int points_id)
void yac_cadd_interp_stack_config_hcsbb(int interp_stack_config_id)
void yac_cdef_comp_instance(int yac_instance_id, const char *comp_name, int *comp_id)
void yac_cadd_interp_stack_config_fixed(int interp_stack_config_id, double value)
int const YAC_TIME_UNIT_DAY
int yac_cget_comp_nbr_grids(const char *comp_name)
int const YAC_ACTION_COUPLING
double yac_cget_field_frac_mask_fallback_value_instance(int yac_instance_id, const char *comp_name, const char *grid_name, const char *field_name)
int const YAC_TIME_UNIT_ISO_FORMAT
void yac_cpredef_comp_instance(int yac_instance_id, char const *comp_name, int *comp_id)
int const YAC_AVG_DIST
int yac_cget_field_role_instance(int yac_instance_id, const char *comp_name, const char *grid_name, const char *field_name)
int const YAC_CONSERV_FRACAREA
void yac_cadd_interp_stack_config_user_callback(int interp_stack_config_id, char const *func_compute_weights_key)
void yac_cset_ext_couple_config_mapping_side(int ext_couple_config_id, int mapping_side)
void yac_ccleanup_instance(int yac_instance_id)
int yac_cget_field_collection_size_instance(int yac_instance_id, const char *comp_name, const char *grid_name, const char *field_name)
void yac_cfree_interp_stack_config(int interp_stack_config_id)
int const YAC_CALENDAR_NOT_SET
int const YAC_NNN_AVG
void yac_cdef_points_reg2d(int const grid_id, int const *nbr_points, int const location, double const *x_points, double const *y_points, int *point_id)
void yac_cadd_interp_stack_config_user_file(int interp_stack_config_id, char const *filename, char const *src_grid_name, char const *tgt_grid_name)
void yac_cget_ext_couple_config_scale_summand(int ext_couple_config_id, double *scale_summand)
void yac_cinit_instance(int *yac_instance_id)
void yac_ctest(int field_id, int *flag)
void yac_cget_interp_stack_config(int *interp_stack_config_id)
void yac_cinit_dummy(void)
void yac_cadd_interp_stack_config_average(int interp_stack_config_id, int reduction_type, int partial_coverage)
int const YAC_ACTION_PUT_FOR_RESTART
int const YAC_NNN_ZERO
void yac_cread_config_json(const char *json_file)
void yac_cpredef_comp(char const *comp_name, int *comp_id)
int const YAC_SPMAP_DIST
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)
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)
int yac_cget_nbr_comps(void)
size_t yac_get_grid_size(int location, int grid_id)
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)
int const YAC_AVG_BARY
void yac_set_abort_handler(yac_abort_func custom_abort)
void yac_cget_(int const field_id, int const collection_size, double *recv_field, int *info, int *ierror)
void yac_cdef_mask_named(int const grid_id, int const nbr_points, int const location, int const *is_valid, char const *name, int *mask_id)
int const YAC_NNN_DIST
void yac_cget_comp_grid_names(const char *comp_name, int nbr_grids, const char **grid_names)
int yac_cget_nbr_grids()
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)
void yac_cexchange_(int const send_field_id, int const recv_field_id, int const collection_size, double *send_field, double *recv_field, int *send_info, int *recv_info, int *ierror)
int const YAC_REDUCTION_TIME_NONE
void yac_cget_comp_names_instance(int yac_instance_id, int nbr_comps, const char **comp_names)
void yac_cdef_field_metadata(const char *comp_name, const char *grid_name, const char *field_name, const char *metadata)
const char * yac_cget_component_metadata(const char *comp_name)
const char * yac_cget_field_timestep(const char *comp_name, const char *grid_name, const char *field_name)
void yac_cget_field_names(const char *comp_name, const char *grid_name, int nbr_fields, const char **field_names)
void yac_cget_groupcomm(MPI_Comm *group_comm)
void yac_cget_ext_couple_config_weight_file(int ext_couple_config_id, char const **weight_file)
void yac_cinit_comm(MPI_Comm comm)