15 use,
intrinsic :: iso_c_binding, only : c_int, c_long, &
16 & c_long_long, c_short, c_char, &
17 & c_size_t, c_double, c_null_char
141 bind( c, name=
'yac_mpi_init' )
146 bind( c, name=
'yac_yaxt_init_f2c' )
150 integer(kind=YAC_MPI_FINT_KIND),
value :: comm
155 bind( c, name=
'yac_mpi_is_initialised' )
157 use,
intrinsic :: iso_c_binding
164 bind ( c, name="yac_mpi_cleanup" )
169 bind( c, name=
'yac_mpi_finalize' )
181 bind( c, name=
'yac_basic_grid_empty_new' )
183 use,
intrinsic :: iso_c_binding
185 character(kind=c_char) :: name(*)
191 bind( c, name=
'yac_basic_grid_delete' )
193 use,
intrinsic :: iso_c_binding
195 type(c_ptr),
value :: grid
199 bind( c, name=
'yac_basic_grid_get_data_size_f2c')
201 use,
intrinsic :: iso_c_binding
203 type(c_ptr),
value :: grid
204 integer(kind=c_int),
value :: location
210 grid, location, coordinates, count) &
211 bind( c, name=
'yac_basic_grid_add_coordinates_f2c')
213 use,
intrinsic :: iso_c_binding
215 type(c_ptr),
value :: grid
216 integer(kind=c_int),
value :: location
217 real(kind=c_double) :: coordinates(*)
218 integer(kind=c_size_t),
value :: count
224 grid, location, coordinates) &
225 bind( c, name=
'yac_basic_grid_add_coordinates_nocpy_f2c')
227 use,
intrinsic :: iso_c_binding
229 type(c_ptr),
value :: grid
230 integer(kind=c_int),
value :: location
231 real(kind=c_double) :: coordinates(*)
237 grid, location, mask, count, name) &
238 bind( c, name=
'yac_basic_grid_add_mask_f2c')
240 use,
intrinsic :: iso_c_binding
242 type(c_ptr),
value :: grid
243 integer(kind=c_int),
value :: location
244 integer(kind=c_int) :: mask(*)
245 integer(kind=c_size_t),
value :: count
246 character(kind=c_char) :: name(*)
252 grid, location, mask, name) &
253 bind( c, name=
'yac_basic_grid_add_mask_nocpy_f2c')
255 use,
intrinsic :: iso_c_binding
257 type(c_ptr),
value :: grid
258 integer(kind=c_int),
value :: location
259 integer(kind=c_int) :: mask(*)
260 character(kind=c_char) :: name(*)
266 name, nbr_vertices, cyclic, lon_vertices, lat_vertices) &
267 bind( c, name=
'yac_basic_grid_reg_2d_new')
269 use,
intrinsic :: iso_c_binding
271 character(kind=c_char) :: name(*)
272 integer(kind=c_size_t) :: nbr_vertices(2)
273 integer(kind=c_int) :: cyclic(2)
274 real(kind=c_double) :: lon_vertices(*)
275 real(kind=c_double) :: lat_vertices(*)
281 name, nbr_vertices, cyclic, lon_vertices, lat_vertices) &
282 bind( c, name=
'yac_basic_grid_reg_2d_deg_new')
284 use,
intrinsic :: iso_c_binding
286 character(kind=c_char) :: name(*)
287 integer(kind=c_size_t) :: nbr_vertices(2)
288 integer(kind=c_int) :: cyclic(2)
289 real(kind=c_double) :: lon_vertices(*)
290 real(kind=c_double) :: lat_vertices(*)
296 name, nbr_vertices, cyclic, lon_vertices, lat_vertices) &
297 bind( c, name=
'yac_basic_grid_curve_2d_new')
299 use,
intrinsic :: iso_c_binding
301 character(kind=c_char) :: name(*)
302 integer(kind=c_size_t) :: nbr_vertices(2)
303 integer(kind=c_int) :: cyclic(2)
304 real(kind=c_double) :: lon_vertices(*)
305 real(kind=c_double) :: lat_vertices(*)
311 name, nbr_vertices, cyclic, lon_vertices, lat_vertices) &
312 bind( c, name=
'yac_basic_grid_curve_2d_deg_new')
314 use,
intrinsic :: iso_c_binding
316 character(kind=c_char) :: name(*)
317 integer(kind=c_size_t) :: nbr_vertices(2)
318 integer(kind=c_int) :: cyclic(2)
319 real(kind=c_double) :: lon_vertices(*)
320 real(kind=c_double) :: lat_vertices(*)
326 name, nbr_vertices, nbr_cells, num_vertices_per_cell, &
327 x_vertices, y_vertices, cell_to_vertex) &
328 bind( c, name=
'yac_basic_grid_unstruct_new')
330 use,
intrinsic :: iso_c_binding
332 character(kind=c_char) :: name(*)
333 integer(kind=c_size_t),
value :: nbr_vertices
334 integer(kind=c_size_t),
value :: nbr_cells
335 integer(kind=c_int) :: num_vertices_per_cell(*)
336 real(kind=c_double) :: x_vertices(*)
337 real(kind=c_double) :: y_vertices(*)
338 integer(kind=c_int) :: cell_to_vertex(*)
344 name, nbr_vertices, nbr_cells, num_vertices_per_cell, &
345 x_vertices, y_vertices, cell_to_vertex) &
346 bind( c, name=
'yac_basic_grid_unstruct_deg_new')
348 use,
intrinsic :: iso_c_binding
350 character(kind=c_char) :: name(*)
351 integer(kind=c_size_t),
value :: nbr_vertices
352 integer(kind=c_size_t),
value :: nbr_cells
353 integer(kind=c_int) :: num_vertices_per_cell(*)
354 real(kind=c_double) :: x_vertices(*)
355 real(kind=c_double) :: y_vertices(*)
356 integer(kind=c_int) :: cell_to_vertex(*)
362 name, nbr_vertices, nbr_cells, num_vertices_per_cell, &
363 x_vertices, y_vertices, cell_to_vertex) &
364 bind( c, name=
'yac_basic_grid_unstruct_ll_new')
366 use,
intrinsic :: iso_c_binding
368 character(kind=c_char) :: name(*)
369 integer(kind=c_size_t),
value :: nbr_vertices
370 integer(kind=c_size_t),
value :: nbr_cells
371 integer(kind=c_int) :: num_vertices_per_cell(*)
372 real(kind=c_double) :: x_vertices(*)
373 real(kind=c_double) :: y_vertices(*)
374 integer(kind=c_int) :: cell_to_vertex(*)
380 name, nbr_vertices, nbr_cells, num_vertices_per_cell, &
381 x_vertices, y_vertices, cell_to_vertex) &
382 bind( c, name=
'yac_basic_grid_unstruct_ll_deg_new')
384 use,
intrinsic :: iso_c_binding
386 character(kind=c_char) :: name(*)
387 integer(kind=c_size_t),
value :: nbr_vertices
388 integer(kind=c_size_t),
value :: nbr_cells
389 integer(kind=c_int) :: num_vertices_per_cell(*)
390 real(kind=c_double) :: x_vertices(*)
391 real(kind=c_double) :: y_vertices(*)
392 integer(kind=c_int) :: cell_to_vertex(*)
406 bind( c, name=
'yac_dist_grid_pair_new_f2c' )
408 use,
intrinsic :: iso_c_binding
411 type(c_ptr),
value :: grid_a
412 type(c_ptr),
value :: grid_b
413 integer(kind=YAC_MPI_FINT_KIND),
value :: comm
419 bind( c, name=
'yac_dist_grid_pair_delete' )
421 use,
intrinsic :: iso_c_binding
423 type(c_ptr),
value :: grid_pair
438 src_field_locations, &
439 src_field_coordinate_idxs, &
440 src_field_masks_idxs, &
441 tgt_field_location, &
442 tgt_field_coordinate_idx, &
443 tgt_field_masks_idx) &
444 bind( c, name=
'yac_interp_grid_new_f2c' )
446 use,
intrinsic :: iso_c_binding
448 type(c_ptr),
value :: dist_grid_pair
449 character(kind=c_char) :: src_grid_name(*)
450 character(kind=c_char) :: tgt_grid_name(*)
451 integer(kind=c_size_t),
value :: num_src_fields
452 integer(kind=c_int) :: src_field_locations(*)
453 integer(kind=c_size_t) :: src_field_coordinate_idxs(*)
454 integer(kind=c_size_t) :: src_field_masks_idxs(*)
455 integer(kind=c_int),
value :: tgt_field_location
456 integer(kind=c_size_t),
value :: tgt_field_coordinate_idx
457 integer(kind=c_size_t),
value :: tgt_field_masks_idx
463 bind( c, name=
'yac_interp_grid_delete' )
465 use,
intrinsic :: iso_c_binding
467 type(c_ptr),
value :: interp_grid
479 bind( c, name=
'yac_interp_stack_config_new' )
481 use,
intrinsic :: iso_c_binding
487 bind( c, name=
'yac_interp_stack_config_copy' )
489 use,
intrinsic :: iso_c_binding
491 type(c_ptr),
value :: interp_stack_config
497 bind( c, name=
'yac_interp_stack_config_delete' )
499 use,
intrinsic :: iso_c_binding
501 type(c_ptr),
value :: interp_stack_config
505 interp_stack_config, reduction_type, partial_coverage) &
506 bind( c, name=
'yac_interp_stack_config_add_average_f2c' )
508 use,
intrinsic :: iso_c_binding
510 type(c_ptr),
value :: interp_stack_config
511 integer(kind=c_int),
value :: reduction_type
512 integer(kind=c_int),
value :: partial_coverage
516 interp_stack_config, weight_type, partial_coverage) &
517 bind( c, name=
'yac_interp_stack_config_add_ncc_f2c' )
519 use,
intrinsic :: iso_c_binding
521 type(c_ptr),
value :: interp_stack_config
522 integer(kind=c_int),
value :: weight_type
523 integer(kind=c_int),
value :: partial_coverage
527 interp_stack_config, type, n, scale) &
528 bind( c, name=
'yac_interp_stack_config_add_nnn_f2c' )
530 use,
intrinsic :: iso_c_binding
532 type(c_ptr),
value :: interp_stack_config
533 integer(kind=c_int),
value :: type
534 integer(kind=c_size_t),
value :: n
535 real(kind=c_double),
value :: scale
539 interp_stack_config, order, enforced_conserv, partial_coverage, &
541 bind( c, name=
'yac_interp_stack_config_add_conservative_f2c' )
543 use,
intrinsic :: iso_c_binding
545 type(c_ptr),
value :: interp_stack_config
546 integer(kind=c_int),
value :: order
547 integer(kind=c_int),
value :: enforced_conserv
548 integer(kind=c_int),
value :: partial_coverage
549 integer(kind=c_int),
value :: normalisation
553 interp_stack_config, spread_distance, max_search_distance, &
554 weight_type, scale_type, src_sphere_radius, tgt_sphere_radius) &
555 bind( c, name=
'yac_interp_stack_config_add_spmap_f2c' )
557 use,
intrinsic :: iso_c_binding
559 type(c_ptr),
value :: interp_stack_config
560 real(kind=c_double),
value :: spread_distance
561 real(kind=c_double),
value :: max_search_distance
562 integer(kind=c_int),
value :: weight_type
563 integer(kind=c_int),
value :: scale_type
564 real(kind=c_double),
value :: src_sphere_radius
565 real(kind=c_double),
value :: tgt_sphere_radius
569 bind( c, name=
'yac_interp_stack_config_add_hcsbb' )
571 use,
intrinsic :: iso_c_binding
573 type(c_ptr),
value :: interp_stack_config
577 interp_stack_config, filename, src_grid_name, tgt_grid_name) &
578 bind( c, name=
'yac_interp_stack_config_add_user_file' )
580 use,
intrinsic :: iso_c_binding
582 type(c_ptr),
value :: interp_stack_config
583 character(kind=c_char) :: filename(*)
584 character(kind=c_char) :: src_grid_name(*)
585 character(kind=c_char) :: tgt_grid_name(*)
589 interp_stack_config, value) &
590 bind( c, name=
'yac_interp_stack_config_add_fixed' )
592 use,
intrinsic :: iso_c_binding
594 type(c_ptr),
value :: interp_stack_config
595 real(kind=c_double),
value ::
value
599 interp_stack_config, n) &
600 bind( c, name=
'yac_interp_stack_config_add_creep' )
602 use,
intrinsic :: iso_c_binding
604 type(c_ptr),
value :: interp_stack_config
605 integer(kind=c_int),
value :: n
609 interp_stack_config, constructor_key, do_search_key) &
610 bind( c, name=
'yac_interp_stack_config_add_check' )
612 use,
intrinsic :: iso_c_binding
614 type(c_ptr),
value :: interp_stack_config
615 character(kind=c_char) :: constructor_key(*)
616 character(kind=c_char) :: do_search_key(*)
620 bind( c, name=
'yac_interp_stack_config_compare' )
622 use,
intrinsic :: iso_c_binding
624 type(c_ptr),
value :: a
625 type(c_ptr),
value :: b
631 bind( c, name=
'yac_interp_stack_config_generate' )
633 use,
intrinsic :: iso_c_binding
635 type(c_ptr),
value :: interp_stack_config
649 bind( c, name=
'yac_interp_method_do_search' )
651 use,
intrinsic :: iso_c_binding
653 type(c_ptr),
value :: interp_method_stack
654 type(c_ptr),
value :: interp_grid
660 bind( c, name=
'yac_interp_method_delete' )
662 use,
intrinsic :: iso_c_binding
664 type(c_ptr),
value :: interp_method_stack
676 bind( c, name=
'yac_interp_weights_delete' )
678 use,
intrinsic :: iso_c_binding
680 type(c_ptr),
value :: interp_weights
689 bind( c, name=
'yac_interp_weights_write_to_file' )
691 use,
intrinsic :: iso_c_binding
693 type(c_ptr),
value :: interp_weights
694 character(kind=c_char) :: filename(*)
695 character(kind=c_char) :: src_grid_name(*)
696 character(kind=c_char) :: tgt_grid_name(*)
697 integer(kind=c_size_t),
value :: src_grid_size
698 integer(kind=c_size_t),
value :: tgt_grid_size
702 interp_weights, reorder, collection_size, frac_mask_fallback_value, &
703 scaling_factor, scaling_summand) &
704 bind( c, name=
'yac_interp_weights_get_interpolation_f2c' )
706 use,
intrinsic :: iso_c_binding
708 type(c_ptr),
value :: interp_weights
709 integer(kind=c_int),
value :: reorder
710 integer(kind=c_size_t),
value :: collection_size
711 real(kind=c_double),
value :: frac_mask_fallback_value
712 real(kind=c_double),
value :: scaling_factor
713 real(kind=c_double),
value :: scaling_summand
727 bind( c, name=
'yac_interpolation_delete' )
729 use,
intrinsic :: iso_c_binding
731 type(c_ptr),
value :: interp
735 interp, src_fields, tgt_field) &
736 bind( c, name=
'yac_interpolation_execute' )
738 use,
intrinsic :: iso_c_binding
740 type(c_ptr),
value :: interp
741 type(c_ptr),
value :: src_fields
742 type(c_ptr),
value :: tgt_field
746 interp, src_fields, src_frac_masks, tgt_field) &
747 bind( c, name=
'yac_interpolation_execute_frac' )
749 use,
intrinsic :: iso_c_binding
751 type(c_ptr),
value :: interp
752 type(c_ptr),
value :: src_fields
753 type(c_ptr),
value :: src_frac_masks
754 type(c_ptr),
value :: tgt_field
758 bind( c, name=
'yac_interpolation_execute_put' )
760 use,
intrinsic :: iso_c_binding
762 type(c_ptr),
value :: interp
763 type(c_ptr),
value :: src_fields
767 interp, src_fields, src_frac_masks) &
768 bind( c, name=
'yac_interpolation_execute_put_frac' )
770 use,
intrinsic :: iso_c_binding
772 type(c_ptr),
value :: interp
773 type(c_ptr),
value :: src_fields
774 type(c_ptr),
value :: src_frac_masks
778 bind( c, name=
'yac_interpolation_execute_get' )
780 use,
intrinsic :: iso_c_binding
782 type(c_ptr),
value :: interp
783 type(c_ptr),
value :: tgt_field
787 bind( c, name=
'yac_interpolation_execute_get_async' )
789 use,
intrinsic :: iso_c_binding
791 type(c_ptr),
value :: interp
792 type(c_ptr),
value :: tgt_field
796 bind( c, name=
'yac_interpolation_execute_put_test' )
798 use,
intrinsic :: iso_c_binding
800 type(c_ptr),
value :: interp
806 bind( c, name=
'yac_interpolation_execute_get_test' )
808 use,
intrinsic :: iso_c_binding
810 type(c_ptr),
value :: interp
816 bind( c, name=
'yac_interpolation_execute_wait' )
818 use,
intrinsic :: iso_c_binding
820 type(c_ptr),
value :: interp
824 bind( c, name=
'yac_interpolation_get_const_frac_mask_no_value_c2f' )
826 use,
intrinsic :: iso_c_binding
828 real(kind=c_double) :: &
833 bind( c, name=
'yac_interpolation_get_const_frac_mask_undef_c2f' )
835 use,
intrinsic :: iso_c_binding
837 real(kind=c_double) :: &
850 bind( c, name=
'yac_abort_message' )
852 use,
intrinsic :: iso_c_binding, only : c_int, c_char
854 character ( kind=c_char ),
dimension(*) :: text
855 character ( kind=c_char ),
dimension(*) :: file
856 integer ( kind=c_int ),
value :: line
870 constructor_callback, user_data, key ) &
871 bind( c, name=
'yac_interp_method_check_add_constructor_callback' )
873 use,
intrinsic :: iso_c_binding, only : c_funptr, c_ptr, c_char
875 type(c_funptr),
value :: constructor_callback
876 type(c_ptr),
value :: user_data
877 character ( kind=c_char ),
dimension(*) :: key
882 do_search_callback, user_data, key ) &
883 bind( c, name=
'yac_interp_method_check_add_do_search_callback' )
885 use,
intrinsic :: iso_c_binding, only : c_funptr, c_ptr, c_char
887 type(c_funptr),
value :: do_search_callback
888 type(c_ptr),
value :: user_data
889 character ( kind=c_char ),
dimension(*) :: key
integer(kind=c_int), parameter yac_interp_ncc_partial_coverage_default_f
integer(kind=c_int), parameter yac_interp_rbf_kernel_default_f
@ yac_interp_spmap_fracarea
@ yac_interp_spmap_srcarea
@ yac_interp_spmap_invtgtarea
integer(kind=c_int), parameter yac_interp_nnn_weighted_default_f
real(kind=c_double), parameter yac_interp_spmap_tgt_sphere_radius_default_f
integer(kind=c_int), parameter yac_interp_avg_partial_coverage_default_f
@ yac_interp_avg_arithmetic
integer(kind=c_int), parameter yac_interp_conserv_normalisation_default_f
@ yac_interp_conserv_destarea
@ yac_interp_conserv_fracarea
integer(kind=c_int), parameter yac_interp_avg_weight_type_default_f
real(kind=c_double), parameter yac_interp_spmap_src_sphere_radius_default_f
real(kind=c_double), parameter yac_interp_rbf_scale_default_f
integer(kind=c_int), parameter yac_interp_spmap_scale_default_f
integer(kind=c_int), parameter yac_interp_ncc_weight_type_default_f
integer(kind=c_int), parameter yac_interp_spmap_weighted_default_f
integer(kind=c_int), parameter yac_interp_conserv_order_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
integer(kind=c_int), parameter yac_interp_rbf_n_default_f
character(kind=c_char, len= *), parameter yac_interp_check_constructor_key_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
integer(kind=c_int), parameter yac_interp_conserv_enforced_conserv_default_f
integer(kind=c_size_t), parameter yac_interp_nnn_n_default_f
integer, parameter yac_mpi_fint_kind
real(kind=c_double), parameter yac_interp_spmap_max_search_distance_default_f
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