10 use,
intrinsic :: iso_c_binding, only : c_int, c_long, &
11 & c_long_long, c_short, c_char, &
12 & c_size_t, c_double, c_null_char, &
24 real(kind=c_double),
parameter :: &
193 bind( c, name=
'yac_mpi_init' )
198 bind( c, name=
'yac_yaxt_init_f2c' )
202 integer(kind=YAC_MPI_FINT_KIND),
value :: comm
207 bind( c, name=
'yac_mpi_is_initialised' )
209 use,
intrinsic :: iso_c_binding
216 bind ( c, name="yac_mpi_cleanup" )
221 bind( c, name=
'yac_mpi_finalize' )
233 bind( c, name=
'yac_basic_grid_empty_new' )
235 use,
intrinsic :: iso_c_binding
237 character(kind=c_char) :: name(*)
243 bind( c, name=
'yac_basic_grid_delete' )
245 use,
intrinsic :: iso_c_binding
247 type(c_ptr),
value :: grid
251 bind( c, name=
'yac_basic_grid_get_data_size_f2c')
253 use,
intrinsic :: iso_c_binding
255 type(c_ptr),
value :: grid
256 integer(kind=c_int),
value :: location
262 grid, location, coordinates, count) &
263 bind( c, name=
'yac_basic_grid_add_coordinates_f2c')
265 use,
intrinsic :: iso_c_binding
267 type(c_ptr),
value :: grid
268 integer(kind=c_int),
value :: location
269 real(kind=c_double) :: coordinates(*)
270 integer(kind=c_size_t),
value :: count
276 grid, location, coordinates) &
277 bind( c, name=
'yac_basic_grid_add_coordinates_nocpy_f2c')
279 use,
intrinsic :: iso_c_binding
281 type(c_ptr),
value :: grid
282 integer(kind=c_int),
value :: location
283 real(kind=c_double) :: coordinates(*)
289 grid, location, mask, count, name) &
290 bind( c, name=
'yac_basic_grid_add_mask_f2c')
292 use,
intrinsic :: iso_c_binding
294 type(c_ptr),
value :: grid
295 integer(kind=c_int),
value :: location
296 integer(kind=c_int) :: mask(*)
297 integer(kind=c_size_t),
value :: count
298 character(kind=c_char) :: name(*)
304 grid, location, mask, name) &
305 bind( c, name=
'yac_basic_grid_add_mask_nocpy_f2c')
307 use,
intrinsic :: iso_c_binding
309 type(c_ptr),
value :: grid
310 integer(kind=c_int),
value :: location
311 integer(kind=c_int) :: mask(*)
312 character(kind=c_char) :: name(*)
318 name, nbr_vertices, cyclic, lon_vertices, lat_vertices) &
319 bind( c, name=
'yac_basic_grid_reg_2d_new')
321 use,
intrinsic :: iso_c_binding
323 character(kind=c_char) :: name(*)
324 integer(kind=c_size_t) :: nbr_vertices(2)
325 integer(kind=c_int) :: cyclic(2)
326 real(kind=c_double) :: lon_vertices(*)
327 real(kind=c_double) :: lat_vertices(*)
334 name, nbr_vertices, cyclic, lon_vertices, lat_vertices) &
335 bind( c, name=
'yac_basic_grid_reg_2d_deg_new')
337 use,
intrinsic :: iso_c_binding
339 character(kind=c_char) :: name(*)
340 integer(kind=c_size_t) :: nbr_vertices(2)
341 integer(kind=c_int) :: cyclic(2)
342 real(kind=c_double) :: lon_vertices(*)
343 real(kind=c_double) :: lat_vertices(*)
350 name, nbr_vertices, cyclic, lon_vertices, lat_vertices) &
351 bind( c, name=
'yac_basic_grid_curve_2d_new')
353 use,
intrinsic :: iso_c_binding
355 character(kind=c_char) :: name(*)
356 integer(kind=c_size_t) :: nbr_vertices(2)
357 integer(kind=c_int) :: cyclic(2)
358 real(kind=c_double) :: lon_vertices(*)
359 real(kind=c_double) :: lat_vertices(*)
366 name, nbr_vertices, cyclic, lon_vertices, lat_vertices) &
367 bind( c, name=
'yac_basic_grid_curve_2d_deg_new')
369 use,
intrinsic :: iso_c_binding
371 character(kind=c_char) :: name(*)
372 integer(kind=c_size_t) :: nbr_vertices(2)
373 integer(kind=c_int) :: cyclic(2)
374 real(kind=c_double) :: lon_vertices(*)
375 real(kind=c_double) :: lat_vertices(*)
382 name, nbr_vertices, nbr_cells, num_vertices_per_cell, &
383 x_vertices, y_vertices, cell_to_vertex) &
384 bind( c, name=
'yac_basic_grid_unstruct_new')
386 use,
intrinsic :: iso_c_binding
388 character(kind=c_char) :: name(*)
389 integer(kind=c_size_t),
value :: nbr_vertices
390 integer(kind=c_size_t),
value :: nbr_cells
391 integer(kind=c_int) :: num_vertices_per_cell(*)
392 real(kind=c_double) :: x_vertices(*)
393 real(kind=c_double) :: y_vertices(*)
394 integer(kind=c_int) :: cell_to_vertex(*)
401 name, nbr_vertices, nbr_cells, num_vertices_per_cell, &
402 x_vertices, y_vertices, cell_to_vertex) &
403 bind( c, name=
'yac_basic_grid_unstruct_deg_new')
405 use,
intrinsic :: iso_c_binding
407 character(kind=c_char) :: name(*)
408 integer(kind=c_size_t),
value :: nbr_vertices
409 integer(kind=c_size_t),
value :: nbr_cells
410 integer(kind=c_int) :: num_vertices_per_cell(*)
411 real(kind=c_double) :: x_vertices(*)
412 real(kind=c_double) :: y_vertices(*)
413 integer(kind=c_int) :: cell_to_vertex(*)
420 name, nbr_vertices, nbr_cells, num_vertices_per_cell, &
421 x_vertices, y_vertices, cell_to_vertex) &
422 bind( c, name=
'yac_basic_grid_unstruct_ll_new')
424 use,
intrinsic :: iso_c_binding
426 character(kind=c_char) :: name(*)
427 integer(kind=c_size_t),
value :: nbr_vertices
428 integer(kind=c_size_t),
value :: nbr_cells
429 integer(kind=c_int) :: num_vertices_per_cell(*)
430 real(kind=c_double) :: x_vertices(*)
431 real(kind=c_double) :: y_vertices(*)
432 integer(kind=c_int) :: cell_to_vertex(*)
439 name, nbr_vertices, nbr_cells, num_vertices_per_cell, &
440 x_vertices, y_vertices, cell_to_vertex) &
441 bind( c, name=
'yac_basic_grid_unstruct_ll_deg_new')
443 use,
intrinsic :: iso_c_binding
445 character(kind=c_char) :: name(*)
446 integer(kind=c_size_t),
value :: nbr_vertices
447 integer(kind=c_size_t),
value :: nbr_cells
448 integer(kind=c_int) :: num_vertices_per_cell(*)
449 real(kind=c_double) :: x_vertices(*)
450 real(kind=c_double) :: y_vertices(*)
451 integer(kind=c_int) :: cell_to_vertex(*)
458 name, nbr_vertices, nbr_cells, nbr_edges, num_edges_per_cell, &
459 x_vertices, y_vertices, cell_to_edge, edge_to_vertex) &
460 bind( c, name=
'yac_basic_grid_unstruct_edge_new')
462 use,
intrinsic :: iso_c_binding
464 character(kind=c_char) :: name(*)
465 integer(kind=c_size_t),
value :: nbr_vertices
466 integer(kind=c_size_t),
value :: nbr_cells
467 integer(kind=c_size_t),
value :: nbr_edges
468 integer(kind=c_int) :: num_edges_per_cell(*)
469 real(kind=c_double) :: x_vertices(*)
470 real(kind=c_double) :: y_vertices(*)
471 integer(kind=c_int) :: cell_to_edge(*)
472 integer(kind=c_int) :: edge_to_vertex(*)
479 name, nbr_vertices, nbr_cells, nbr_edges, num_edges_per_cell, &
480 x_vertices, y_vertices, cell_to_edge, edge_to_vertex) &
481 bind( c, name=
'yac_basic_grid_unstruct_edge_deg_new')
483 use,
intrinsic :: iso_c_binding
485 character(kind=c_char) :: name(*)
486 integer(kind=c_size_t),
value :: nbr_vertices
487 integer(kind=c_size_t),
value :: nbr_cells
488 integer(kind=c_size_t),
value :: nbr_edges
489 integer(kind=c_int) :: num_edges_per_cell(*)
490 real(kind=c_double) :: x_vertices(*)
491 real(kind=c_double) :: y_vertices(*)
492 integer(kind=c_int) :: cell_to_edge(*)
493 integer(kind=c_int) :: edge_to_vertex(*)
500 name, nbr_vertices, nbr_cells, nbr_edges, num_edges_per_cell, &
501 x_vertices, y_vertices, cell_to_edge, edge_to_vertex) &
502 bind( c, name=
'yac_basic_grid_unstruct_edge_ll_new')
504 use,
intrinsic :: iso_c_binding
506 character(kind=c_char) :: name(*)
507 integer(kind=c_size_t),
value :: nbr_vertices
508 integer(kind=c_size_t),
value :: nbr_cells
509 integer(kind=c_size_t),
value :: nbr_edges
510 integer(kind=c_int) :: num_edges_per_cell(*)
511 real(kind=c_double) :: x_vertices(*)
512 real(kind=c_double) :: y_vertices(*)
513 integer(kind=c_int) :: cell_to_edge(*)
514 integer(kind=c_int) :: edge_to_vertex(*)
521 name, nbr_vertices, nbr_cells, nbr_edges, num_edges_per_cell, &
522 x_vertices, y_vertices, cell_to_edge, edge_to_vertex) &
523 bind( c, name=
'yac_basic_grid_unstruct_edge_ll_deg_new')
525 use,
intrinsic :: iso_c_binding
527 character(kind=c_char) :: name(*)
528 integer(kind=c_size_t),
value :: nbr_vertices
529 integer(kind=c_size_t),
value :: nbr_cells
530 integer(kind=c_size_t),
value :: nbr_edges
531 integer(kind=c_int) :: num_edges_per_cell(*)
532 real(kind=c_double) :: x_vertices(*)
533 real(kind=c_double) :: y_vertices(*)
534 integer(kind=c_int) :: cell_to_edge(*)
535 integer(kind=c_int) :: edge_to_vertex(*)
542 name, nbr_points, x_points, y_points) &
543 bind( c, name=
'yac_basic_grid_cloud_new')
545 use,
intrinsic :: iso_c_binding
547 character(kind=c_char) :: name(*)
548 integer(kind=c_size_t),
value :: nbr_points
549 real(kind=c_double) :: x_points(*)
550 real(kind=c_double) :: y_points(*)
557 name, nbr_points, x_points, y_points) &
558 bind( c, name=
'yac_basic_grid_cloud_deg_new')
560 use,
intrinsic :: iso_c_binding
562 character(kind=c_char) :: name(*)
563 integer(kind=c_size_t),
value :: nbr_points
564 real(kind=c_double) :: x_points(*)
565 real(kind=c_double) :: y_points(*)
572 name, nbr_vertices, cyclic, lon_vertices, lat_vertices, &
573 north_pol_lon, north_pol_lat) &
574 bind( c, name=
'yac_basic_grid_reg_2d_rot_new')
576 use,
intrinsic :: iso_c_binding
578 character(kind=c_char) :: name(*)
579 integer(kind=c_size_t) :: nbr_vertices(2)
580 integer(kind=c_int) :: cyclic(2)
581 real(kind=c_double) :: lon_vertices(*)
582 real(kind=c_double) :: lat_vertices(*)
583 real(kind=c_double),
value :: north_pol_lon
584 real(kind=c_double),
value :: north_pol_lat
590 name, nbr_vertices, cyclic, lon_vertices, lat_vertices, &
591 north_pol_lon, north_pol_lat) &
592 bind( c, name=
'yac_basic_grid_reg_2d_rot_deg_new')
594 use,
intrinsic :: iso_c_binding
596 character(kind=c_char) :: name(*)
597 integer(kind=c_size_t) :: nbr_vertices(2)
598 integer(kind=c_int) :: cyclic(2)
599 real(kind=c_double) :: lon_vertices(*)
600 real(kind=c_double) :: lat_vertices(*)
601 real(kind=c_double),
value :: north_pol_lon
602 real(kind=c_double),
value :: north_pol_lat
608 bind( c, name=
'yac_basic_grid_check_coordinates' )
610 use,
intrinsic :: iso_c_binding
612 type(c_ptr),
value :: grid
613 integer(kind=c_int),
value :: is_fatal
619 bind( c, name=
'yac_basic_grid_compute_cell_areas')
621 use,
intrinsic :: iso_c_binding
623 type(c_ptr),
value :: grid
624 real(kind=c_double) :: cell_areas(*)
636 bind( c, name=
'yac_dist_grid_pair_new_f2c' )
638 use,
intrinsic :: iso_c_binding
641 type(c_ptr),
value :: grid_a
642 type(c_ptr),
value :: grid_b
643 integer(kind=YAC_MPI_FINT_KIND),
value :: comm
650 bind( c, name=
'yac_dist_grid_pair_delete' )
652 use,
intrinsic :: iso_c_binding
654 type(c_ptr),
value :: grid_pair
669 src_field_locations, &
670 src_field_coordinate_idxs, &
671 src_field_masks_idxs, &
672 tgt_field_location, &
673 tgt_field_coordinate_idx, &
674 tgt_field_masks_idx) &
675 bind( c, name=
'yac_interp_grid_new_f2c' )
677 use,
intrinsic :: iso_c_binding
679 type(c_ptr),
value :: dist_grid_pair
680 character(kind=c_char) :: src_grid_name(*)
681 character(kind=c_char) :: tgt_grid_name(*)
682 integer(kind=c_size_t),
value :: num_src_fields
683 integer(kind=c_int) :: src_field_locations(*)
684 integer(kind=c_size_t) :: src_field_coordinate_idxs(*)
685 integer(kind=c_size_t) :: src_field_masks_idxs(*)
686 integer(kind=c_int),
value :: tgt_field_location
687 integer(kind=c_size_t),
value :: tgt_field_coordinate_idx
688 integer(kind=c_size_t),
value :: tgt_field_masks_idx
695 bind( c, name=
'yac_interp_grid_delete' )
697 use,
intrinsic :: iso_c_binding
699 type(c_ptr),
value :: interp_grid
711 center_lon, center_lat, inc_angle) &
712 bind( c, name=
'yac_point_selection_bnd_circle_new' )
714 use,
intrinsic :: iso_c_binding
716 real(kind=c_double),
value :: center_lon
717 real(kind=c_double),
value :: center_lat
718 real(kind=c_double),
value :: inc_angle
725 bind( c, name=
'yac_point_selection_delete' )
727 use,
intrinsic :: iso_c_binding
730 type(c_ptr),
value :: point_select
734 spread_distance, max_search_distance, &
735 weight_type, scale_config) &
736 bind( c, name=
'yac_interp_spmap_config_new_f2c' )
738 use,
intrinsic :: iso_c_binding
740 real(kind=c_double),
value :: spread_distance
741 real(kind=c_double),
value :: max_search_distance
744 type(c_ptr),
value :: scale_config
751 bind( c, name=
'yac_interp_spmap_config_delete' )
753 use,
intrinsic :: iso_c_binding
756 type(c_ptr),
value :: spmap_config
760 scale_type, source_cell_area_config, target_cell_area_config) &
761 bind( c, name=
'yac_spmap_scale_config_new_f2c' )
763 use,
intrinsic :: iso_c_binding
765 integer(kind=c_int),
value :: scale_type
767 type(c_ptr),
value :: source_cell_area_config
769 type(c_ptr),
value :: target_cell_area_config
776 bind( c, name=
'yac_spmap_scale_config_delete' )
778 use,
intrinsic :: iso_c_binding
781 type(c_ptr),
value :: scale_config
785 bind( c, name=
'yac_spmap_cell_area_config_yac_new' )
787 use,
intrinsic :: iso_c_binding
789 real(kind=c_double),
value :: sphere_radius
796 filename, varname, min_global_id) &
797 bind( c, name=
'yac_spmap_cell_area_config_file_new_f2c' )
799 use,
intrinsic :: iso_c_binding
801 character(kind=c_char) :: filename(*)
802 character(kind=c_char) :: varname(*)
803 integer(kind=c_int),
value :: min_global_id
810 bind( c, name=
'yac_spmap_cell_area_config_delete' )
812 use,
intrinsic :: iso_c_binding
815 type(c_ptr),
value :: cell_area_config
819 bind( c, name=
'yac_spmap_overwrite_config_new' )
821 use,
intrinsic :: iso_c_binding
824 type(c_ptr),
value :: src_point_selection
826 type(c_ptr),
value :: config
833 bind( c, name=
'yac_spmap_overwrite_config_delete' )
835 use,
intrinsic :: iso_c_binding
838 type(c_ptr),
value :: overwrite_config
842 bind( c, name=
'yac_spmap_overwrite_configs_delete' )
844 use,
intrinsic :: iso_c_binding
847 type(c_ptr),
value :: overwrite_configs
859 bind( c, name=
'yac_interp_method_config_default_from_name_new' )
861 use,
intrinsic :: iso_c_binding
863 character(kind=c_char) :: method_name(*)
870 bind( c, name=
'yac_interp_method_config_delete' )
872 use,
intrinsic :: iso_c_binding
875 type(c_ptr),
value :: config
879 config, path, value) &
880 bind( c, name=
'yac_interp_method_config_set_param_str' )
882 use,
intrinsic :: iso_c_binding
885 type(c_ptr),
value :: config
886 character(kind=c_char) :: path(*)
887 character(kind=c_char) ::
value(*)
891 config, path, value) &
892 bind( c, name=
'yac_interp_method_config_set_param_int' )
894 use,
intrinsic :: iso_c_binding
897 type(c_ptr),
value :: config
898 character(kind=c_char) :: path(*)
899 integer(kind=c_int),
value :: value
903 config, path, value) &
904 bind( c, name=
'yac_interp_method_config_set_param_dble' )
906 use,
intrinsic :: iso_c_binding
909 type(c_ptr),
value :: config
910 character(kind=c_char) :: path(*)
911 real(kind=c_double),
value ::
value
915 bind( c, name=
'yac_interp_method_config_get_param_int' )
917 use,
intrinsic :: iso_c_binding
920 type(c_ptr),
value :: config
921 character(kind=c_char) :: path(*)
927 bind( c, name=
'yac_interp_method_config_get_param_dble' )
929 use,
intrinsic :: iso_c_binding
932 type(c_ptr),
value :: config
933 character(kind=c_char) :: path(*)
939 config, path, buf, buflen) &
940 bind( c, name=
'yac_interp_method_config_get_param_str_f2c' )
942 use,
intrinsic :: iso_c_binding
945 type(c_ptr),
value :: config
946 character(kind=c_char) :: path(*)
947 character(kind=c_char) :: buf(*)
948 integer(kind=c_int),
value :: buflen
952 bind( c, name=
'yac_interp_method_config_get_list_size' )
954 use,
intrinsic :: iso_c_binding
957 type(c_ptr),
value :: config
958 character(kind=c_char) :: path(*)
964 bind( c, name=
'yac_interp_method_config_append_list_element' )
966 use,
intrinsic :: iso_c_binding
969 type(c_ptr),
value :: config
970 character(kind=c_char) :: path(*)
976 interp_stack_config, method_config) &
977 bind( c, name=
'yac_interp_stack_config_add' )
979 use,
intrinsic :: iso_c_binding
981 type(c_ptr),
value :: interp_stack_config
982 type(c_ptr),
value :: method_config
994 bind( c, name=
'yac_interp_stack_config_new' )
996 use,
intrinsic :: iso_c_binding
1002 bind( c, name=
'yac_interp_stack_config_copy' )
1004 use,
intrinsic :: iso_c_binding
1006 type(c_ptr),
value :: interp_stack_config
1012 bind( c, name=
'yac_interp_stack_config_delete' )
1014 use,
intrinsic :: iso_c_binding
1016 type(c_ptr),
value :: interp_stack_config
1020 interp_stack_config, reduction_type, partial_coverage) &
1021 bind( c, name=
'yac_interp_stack_config_add_average_f2c' )
1023 use,
intrinsic :: iso_c_binding
1025 type(c_ptr),
value :: interp_stack_config
1026 integer(kind=c_int),
value :: reduction_type
1027 integer(kind=c_int),
value :: partial_coverage
1031 interp_stack_config, weight_type, partial_coverage) &
1032 bind( c, name=
'yac_interp_stack_config_add_ncc_f2c' )
1034 use,
intrinsic :: iso_c_binding
1036 type(c_ptr),
value :: interp_stack_config
1037 integer(kind=c_int),
value :: weight_type
1038 integer(kind=c_int),
value :: partial_coverage
1042 interp_stack_config, type, search_distance_type, search_distance, scale) &
1043 bind( c, name=
'yac_interp_stack_config_add_dnn_f2c' )
1045 use,
intrinsic :: iso_c_binding
1047 type(c_ptr),
value :: interp_stack_config
1048 integer(kind=c_int),
value :: type
1049 integer(kind=c_int),
value :: search_distance_type
1050 real(kind=c_double),
value :: search_distance
1051 real(kind=c_double),
value :: scale
1055 interp_stack_config, type, n, max_search_distance, scale) &
1056 bind( c, name=
'yac_interp_stack_config_add_nnn_f2c' )
1058 use,
intrinsic :: iso_c_binding
1060 type(c_ptr),
value :: interp_stack_config
1061 integer(kind=c_int),
value :: type
1062 integer(kind=c_size_t),
value :: n
1063 real(kind=c_double),
value :: max_search_distance
1064 real(kind=c_double),
value :: scale
1068 interp_stack_config, n, max_search_distance, scale) &
1069 bind( c, name=
'yac_interp_stack_config_add_rbf' )
1071 use,
intrinsic :: iso_c_binding
1073 type(c_ptr),
value :: interp_stack_config
1074 integer(kind=c_size_t),
value :: n
1075 real(kind=c_double),
value :: max_search_distance
1076 real(kind=c_double),
value :: scale
1080 interp_stack_config, order, enforced_conserv, partial_coverage, &
1082 bind( c, name=
'yac_interp_stack_config_add_conservative_f2c' )
1084 use,
intrinsic :: iso_c_binding
1086 type(c_ptr),
value :: interp_stack_config
1087 integer(kind=c_int),
value :: order
1088 integer(kind=c_int),
value :: enforced_conserv
1089 integer(kind=c_int),
value :: partial_coverage
1090 integer(kind=c_int),
value :: normalisation
1094 interp_stack_config, default_config, overwrite_configs) &
1095 bind( c, name=
'yac_interp_stack_config_add_spmap_ext' )
1097 use,
intrinsic :: iso_c_binding
1099 type(c_ptr),
value :: interp_stack_config
1100 type(c_ptr),
value :: default_config
1101 type(c_ptr),
value :: overwrite_configs
1105 interp_stack_config, spread_distance, max_search_distance, &
1106 weight_type, scale_type, &
1107 src_sphere_radius, src_filename, src_varname, src_min_global_id, &
1108 tgt_sphere_radius, tgt_filename, tgt_varname, tgt_min_global_id) &
1109 bind( c, name=
'yac_interp_stack_config_add_spmap_f2c' )
1111 use,
intrinsic :: iso_c_binding
1113 type(c_ptr),
value :: interp_stack_config
1114 real(kind=c_double),
value :: spread_distance
1115 real(kind=c_double),
value :: max_search_distance
1116 integer(kind=c_int),
value :: weight_type
1117 integer(kind=c_int),
value :: scale_type
1118 real(kind=c_double),
value :: src_sphere_radius
1119 character(kind=c_char) :: src_filename(*)
1120 character(kind=c_char) :: src_varname(*)
1121 integer(kind=c_int),
value :: src_min_global_id
1122 real(kind=c_double),
value :: tgt_sphere_radius
1123 character(kind=c_char) :: tgt_filename(*)
1124 character(kind=c_char) :: tgt_varname(*)
1125 integer(kind=c_int),
value :: tgt_min_global_id
1129 bind( c, name=
'yac_interp_stack_config_add_hcsbb' )
1131 use,
intrinsic :: iso_c_binding
1133 type(c_ptr),
value :: interp_stack_config
1137 interp_stack_config, filename, on_missing_file, on_success) &
1138 bind( c, name=
'yac_interp_stack_config_add_user_file_f2c' )
1140 use,
intrinsic :: iso_c_binding
1142 type(c_ptr),
value :: interp_stack_config
1143 character(kind=c_char) :: filename(*)
1144 integer(kind=c_int),
value :: on_missing_file
1145 integer(kind=c_int),
value :: on_success
1149 interp_stack_config, value) &
1150 bind( c, name=
'yac_interp_stack_config_add_fixed' )
1152 use,
intrinsic :: iso_c_binding
1154 type(c_ptr),
value :: interp_stack_config
1155 real(kind=c_double),
value ::
value
1159 interp_stack_config, n) &
1160 bind( c, name=
'yac_interp_stack_config_add_creep' )
1162 use,
intrinsic :: iso_c_binding
1164 type(c_ptr),
value :: interp_stack_config
1165 integer(kind=c_int),
value :: n
1169 interp_stack_config, constructor_key, do_search_key) &
1170 bind( c, name=
'yac_interp_stack_config_add_check' )
1172 use,
intrinsic :: iso_c_binding
1174 type(c_ptr),
value :: interp_stack_config
1175 character(kind=c_char) :: constructor_key(*)
1176 character(kind=c_char) :: do_search_key(*)
1180 bind( c, name=
'yac_interp_stack_config_compare' )
1182 use,
intrinsic :: iso_c_binding
1184 type(c_ptr),
value :: a
1185 type(c_ptr),
value :: b
1191 bind( c, name=
'yac_interp_stack_config_generate' )
1193 use,
intrinsic :: iso_c_binding
1195 type(c_ptr),
value :: interp_stack_config
1210 bind( c, name=
'yac_interp_method_do_search' )
1212 use,
intrinsic :: iso_c_binding
1214 type(c_ptr),
value :: interp_method_stack
1215 type(c_ptr),
value :: interp_grid
1222 bind( c, name=
'yac_interp_method_delete' )
1224 use,
intrinsic :: iso_c_binding
1226 type(c_ptr),
value :: interp_method_stack
1230 bind( c, name=
'yac_interp_method_cleanup' )
1243 bind( c, name=
'yac_collection_selection_delete' )
1245 use,
intrinsic :: iso_c_binding
1247 type(c_ptr),
value :: collection_selection
1259 bind(c, name=
'yac_interpolation_gen_config_new')
1261 use,
intrinsic :: iso_c_binding
1263 type(c_ptr) :: config
1267 bind(c, name=
'yac_interpolation_gen_config_delete')
1269 use,
intrinsic :: iso_c_binding
1271 type(c_ptr),
value :: config
1275 bind(c, name=
'yac_interpolation_gen_config_copy')
1277 use,
intrinsic :: iso_c_binding
1279 type(c_ptr),
value ::
src
1284 bind(c, name=
'yac_interpolation_gen_config_set_reorder_f2c')
1286 use,
intrinsic :: iso_c_binding
1288 type(c_ptr),
value :: config
1289 integer(kind=c_int),
value :: reorder
1293 config, collection_size) &
1294 bind(c, name=
'yac_interpolation_gen_config_set_collection_size')
1296 use,
intrinsic :: iso_c_binding
1298 type(c_ptr),
value :: config
1299 integer(kind=c_size_t),
value :: collection_size
1303 config, collection_selection) &
1304 bind(c, name=
'yac_interpolation_gen_config_set_collection_selection')
1306 use,
intrinsic :: iso_c_binding
1308 type(c_ptr),
value :: config
1309 type(c_ptr),
value :: collection_selection
1313 config, frac_mask_fallback_value) &
1314 bind(c, name=
'yac_interpolation_gen_config_set_frac_mask_fallback_value')
1316 use,
intrinsic :: iso_c_binding
1318 type(c_ptr),
value :: config
1319 real(kind=c_double),
value :: frac_mask_fallback_value
1323 config, scaling_factor) &
1324 bind(c, name=
'yac_interpolation_gen_config_set_scaling_factor')
1326 use,
intrinsic :: iso_c_binding
1328 type(c_ptr),
value :: config
1329 real(kind=c_double),
value :: scaling_factor
1333 config, scaling_summand) &
1334 bind(c, name=
'yac_interpolation_gen_config_set_scaling_summand')
1336 use,
intrinsic :: iso_c_binding
1338 type(c_ptr),
value :: config
1339 real(kind=c_double),
value :: scaling_summand
1343 config, yaxt_exchanger_name) &
1344 bind(c, name=
'yac_interpolation_gen_config_set_yaxt_exchanger_name_f2c')
1346 use,
intrinsic :: iso_c_binding
1348 type(c_ptr),
value :: config
1349 character(kind=c_char) :: yaxt_exchanger_name(*)
1361 bind( c, name=
'yac_interp_weights_delete' )
1363 use,
intrinsic :: iso_c_binding
1365 type(c_ptr),
value :: interp_weights
1375 bind( c, name=
'yac_interp_weights_write_to_file' )
1377 use,
intrinsic :: iso_c_binding
1379 type(c_ptr),
value :: interp_weights
1380 character(kind=c_char) :: filename(*)
1381 character(kind=c_char) :: src_grid_name(*)
1382 character(kind=c_char) :: tgt_grid_name(*)
1383 integer(kind=c_size_t),
value :: src_grid_size
1384 integer(kind=c_size_t),
value :: tgt_grid_size
1385 integer(kind=c_int),
value :: on_existing
1389 interp_weights, reorder, collection_size, frac_mask_fallback_value, &
1390 scaling_factor, scaling_summand, yaxt_exchanger_name, &
1391 is_source, is_target) &
1392 bind( c, name=
'yac_interp_weights_get_interpolation_f2c' )
1394 use,
intrinsic :: iso_c_binding
1396 type(c_ptr),
value :: interp_weights
1397 integer(kind=c_int),
value :: reorder
1398 integer(kind=c_size_t),
value :: collection_size
1399 real(kind=c_double),
value :: frac_mask_fallback_value
1400 real(kind=c_double),
value :: scaling_factor
1401 real(kind=c_double),
value :: scaling_summand
1402 character(kind=c_char) :: yaxt_exchanger_name
1403 integer(kind=c_int),
value :: is_source
1404 integer(kind=c_int),
value :: is_target
1411 interp_weights, interpolation_gen_config, is_source, is_target) &
1412 bind( c, name=
'yac_interp_weights_get_interpolation_ext' )
1414 use,
intrinsic :: iso_c_binding
1416 type(c_ptr),
value :: interp_weights
1417 type(c_ptr),
value :: interpolation_gen_config
1418 integer(kind=c_int),
value :: is_source
1419 integer(kind=c_int),
value :: is_target
1434 bind( c, name=
'yac_interpolation_delete' )
1436 use,
intrinsic :: iso_c_binding
1438 type(c_ptr),
value :: interp
1442 interp, src_fields, tgt_field) &
1443 bind( c, name=
'yac_interpolation_execute' )
1445 use,
intrinsic :: iso_c_binding
1447 type(c_ptr),
value :: interp
1448 type(c_ptr),
value :: src_fields
1449 type(c_ptr),
value :: tgt_field
1453 interp, src_fields, src_frac_masks, tgt_field) &
1454 bind( c, name=
'yac_interpolation_execute_frac' )
1456 use,
intrinsic :: iso_c_binding
1458 type(c_ptr),
value :: interp
1459 type(c_ptr),
value :: src_fields
1460 type(c_ptr),
value :: src_frac_masks
1461 type(c_ptr),
value :: tgt_field
1465 bind( c, name=
'yac_interpolation_execute_put' )
1467 use,
intrinsic :: iso_c_binding
1469 type(c_ptr),
value :: interp
1470 type(c_ptr),
value :: src_fields
1474 interp, src_fields, src_frac_masks) &
1475 bind( c, name=
'yac_interpolation_execute_put_frac' )
1477 use,
intrinsic :: iso_c_binding
1479 type(c_ptr),
value :: interp
1480 type(c_ptr),
value :: src_fields
1481 type(c_ptr),
value :: src_frac_masks
1485 bind( c, name=
'yac_interpolation_execute_get' )
1487 use,
intrinsic :: iso_c_binding
1489 type(c_ptr),
value :: interp
1490 type(c_ptr),
value :: tgt_field
1494 bind( c, name=
'yac_interpolation_execute_get_async' )
1496 use,
intrinsic :: iso_c_binding
1498 type(c_ptr),
value :: interp
1499 type(c_ptr),
value :: tgt_field
1503 bind( c, name=
'yac_interpolation_execute_put_test' )
1505 use,
intrinsic :: iso_c_binding
1507 type(c_ptr),
value :: interp
1513 bind( c, name=
'yac_interpolation_execute_get_test' )
1515 use,
intrinsic :: iso_c_binding
1517 type(c_ptr),
value :: interp
1523 bind( c, name=
'yac_interpolation_execute_wait' )
1525 use,
intrinsic :: iso_c_binding
1527 type(c_ptr),
value :: interp
1531 bind( c, name=
'yac_interpolation_get_const_frac_mask_no_value_c2f' )
1533 use,
intrinsic :: iso_c_binding
1535 real(kind=c_double) :: &
1540 bind( c, name=
'yac_interpolation_get_const_frac_mask_undef_c2f' )
1542 use,
intrinsic :: iso_c_binding
1544 real(kind=c_double) :: &
1557 bind( c, name=
'yac_abort_message' )
1559 use,
intrinsic :: iso_c_binding, only : c_int, c_char
1561 character ( kind=c_char ),
dimension(*) :: text
1562 character ( kind=c_char ),
dimension(*) :: file
1563 integer ( kind=c_int ),
value :: line
1577 constructor_callback, user_data, key ) &
1578 bind( c, name=
'yac_interp_method_check_add_constructor_callback' )
1580 use,
intrinsic :: iso_c_binding, only : c_funptr, c_ptr, c_char
1582 type(c_funptr),
value :: constructor_callback
1583 type(c_ptr),
value :: user_data
1584 character ( kind=c_char ),
dimension(*) :: key
1589 do_search_callback, user_data, key ) &
1590 bind( c, name=
'yac_interp_method_check_add_do_search_callback' )
1592 use,
intrinsic :: iso_c_binding, only : c_funptr, c_ptr, c_char
1594 type(c_funptr),
value :: do_search_callback
1595 type(c_ptr),
value :: user_data
1596 character ( kind=c_char ),
dimension(*) :: key
1611 use,
intrinsic :: iso_c_binding
1615 integer(kind=c_size_t),
intent(in) :: collection_size
1616 integer(kind=c_size_t),
target,
optional,
intent(in) :: selection_indices(*)
1620 function yac_collection_selection_new_c_(collection_size, &
1621 selection_indices) &
1622 bind( c, name=
'yac_collection_selection_new' )
1624 use,
intrinsic :: iso_c_binding
1626 integer(kind=c_size_t),
value :: collection_size
1627 type(c_ptr),
value :: selection_indices
1629 type(c_ptr) :: yac_collection_selection_new_c_
1630 end function yac_collection_selection_new_c_
1633 if (
present(selection_indices))
then
1635 yac_collection_selection_new_c_( &
1636 collection_size, c_loc(selection_indices))
1639 yac_collection_selection_new_c_( &
1640 collection_size, c_null_ptr)
1651 use,
intrinsic :: iso_c_binding, only : c_ptr, c_char, &
1652 c_f_pointer, c_size_t
1657 function yac_get_core_version_c_ () &
1658 bind( c, name=
'yac_get_core_version' )
1659 use,
intrinsic :: iso_c_binding, only : c_ptr
1660 type(c_ptr) :: yac_get_core_version_c_
1661 end function yac_get_core_version_c_
1665 function strlen_c(str_ptr)
bind ( C, name = "strlen" ) result(len)
1666 use,
intrinsic :: iso_c_binding
1667 type(c_ptr),
value :: str_ptr
1668 integer(kind=c_size_t) :: len
1669 end function strlen_c
1672 type(c_ptr) :: c_string_ptr
1673 character(len=:),
allocatable :: version_string
1674 character(kind=c_char),
dimension(:),
pointer :: chars
1675 integer(kind=c_size_t) :: i, slen
1677 c_string_ptr = yac_get_core_version_c_()
1678 slen = strlen_c(c_string_ptr)
1679 call c_f_pointer(c_string_ptr, chars, [ slen ])
1680 allocate(
character(len=slen) :: version_string)
1682 version_string(i:i) = chars(i)
integer(kind=c_int), parameter yac_interp_ncc_partial_coverage_default_f
character(kind=c_char, len= *), parameter yac_interp_spmap_varname_default_f
integer(kind=c_int), parameter yac_interp_dnn_weight_type_default_f
integer(kind=c_int), parameter yac_interp_dnn_search_distance_type_default_f
integer(kind=c_int), parameter yac_interp_rbf_kernel_default_f
type(c_ptr) function yac_collection_selection_new_c(collection_size, selection_indices)
real(kind=c_double), parameter yac_interp_dnn_rbf_scale_default_f
real(kind=c_double), parameter yac_interp_dnn_gauss_scale_default_f
@ yac_interp_dnn_search_distance_fixed
@ yac_interp_dnn_search_distance_cell_area
integer(kind=c_int), parameter yac_interp_nnn_weighted_default_f
character(len=:) function, allocatable yac_get_core_version_c()
integer(kind=c_int), parameter yac_interp_avg_partial_coverage_default_f
real(kind=c_double), parameter yac_interp_nnn_max_search_distance_default_f
@ yac_weight_file_overwrite
integer(kind=c_int), parameter yac_interp_conserv_normalisation_default_f
integer(kind=c_int), parameter yac_interp_avg_weight_type_default_f
integer(kind=c_size_t), parameter yac_interp_rbf_n_default_f
@ yac_interp_spmap_fracarea
@ yac_interp_spmap_srcarea
@ yac_interp_spmap_invtgtarea
@ yac_interp_dnn_weight_gauss
@ yac_interp_dnn_weight_dist
@ yac_interp_dnn_weight_rbf
@ yac_interp_dnn_weight_avg
integer(kind=c_int), parameter yac_interp_file_on_missing_file_default_f
real(kind=c_double), parameter yac_interp_dnn_scale_default_f
real(kind=c_double), parameter yac_interp_rbf_scale_default_f
integer(kind=c_int), parameter yac_interp_spmap_min_global_id_default_f
@ yac_interp_file_success_stop
prevents following interpolation method from computating further weights
@ yac_interp_file_success_cont
continue weight computation with following interpolation methods
integer(kind=c_int), parameter yac_interp_ncc_weight_type_default_f
type(c_ptr), parameter yac_interp_spmap_overwrite_default_f
integer(kind=c_int), parameter yac_interp_spmap_weighted_default_f
integer(kind=c_int), parameter yac_interp_conserv_order_default_f
@ yac_interp_conserv_destarea
@ yac_interp_conserv_fracarea
character(kind=c_char, len= *), parameter yac_interp_spmap_filename_default_f
real(kind=c_double), parameter yac_interp_spmap_spread_distance_default_f
real(kind=c_double), parameter yac_interp_nnn_gauss_scale_default_f
character(kind=c_char, len= *), parameter yac_interp_check_constructor_key_default_f
real(kind=c_double), parameter yac_frac_mask_no_value
integer(kind=c_int), parameter yac_interp_file_on_success_default_f
real(kind=c_double), parameter yac_interp_fixed_value_default_f
integer(kind=c_int), parameter yac_interp_conserv_partial_coverage_default_f
real(kind=c_double), parameter yac_interp_spmap_sphere_radius_default_f
integer(kind=c_int), parameter yac_interp_conserv_enforced_conserv_default_f
integer(kind=c_size_t), parameter yac_interp_nnn_n_default_f
real(kind=c_double), parameter yac_interp_rbf_max_search_distance_default_f
integer, parameter yac_mpi_fint_kind
real(kind=c_double), parameter yac_interp_dnn_search_distance_default_f
type(c_ptr), parameter yac_interp_spmap_config_default_f
real(kind=c_double), parameter yac_interp_spmap_max_search_distance_default_f
@ yac_interp_avg_arithmetic
integer(kind=c_int), parameter yac_interp_creep_distance_default_f
character(kind=c_char, len= *), parameter yac_interp_check_do_search_key_default_f
integer(kind=c_int), parameter yac_interp_spmap_scale_type_default_f
@ yac_interp_file_missing_error
abort on missing file
@ yac_interp_file_missing_cont
continue on missing file