YetAnotherCoupler 3.2.0_a
Loading...
Searching...
No Matches
yac_module.F90
Go to the documentation of this file.
1! Copyright (c) 2024 The YAC Authors
2!
3! SPDX-License-Identifier: BSD-3-Clause
4
8
12
15
18
21
24
27
30
33
36
39
43
44#ifdef HAVE_CONFIG_H
45! Get the definition of the 'YAC_MPI_FINT_FC_KIND' macro.
46#include "config.h"
47#endif
48
49module yac
50 use, intrinsic :: iso_c_binding, only : c_int, c_long, &
51 & c_long_long, c_short, c_char
52
53 !----------------------------------------------------------------------
57 !----------------------------------------------------------------------
58
59 public
60
61 integer, parameter :: yac_max_charlen = 132
62 integer, parameter :: yac_mpi_fint_kind = yac_mpi_fint_fc_kind
63
64
65 !----------------------------------------------------------------------
69 !----------------------------------------------------------------------
70
71 enum, bind(c)
72 enumerator :: yac_location_cell = 0
73 enumerator :: yac_location_corner = 1
74 enumerator :: yac_location_edge = 2
75 end enum
76
77 !----------------------------------------------------------------------
81 !----------------------------------------------------------------------
82
83 enum, bind(c)
84 enumerator :: yac_exchange_type_none = 0
85 enumerator :: yac_exchange_type_source = 1
86 enumerator :: yac_exchange_type_target = 2
87 end enum
88
89 !----------------------------------------------------------------------
93 !----------------------------------------------------------------------
94
95 enum, bind(c)
96 enumerator :: yac_action_none = 0
97 enumerator :: yac_action_reduction = 1
98 enumerator :: yac_action_coupling = 2
101 enumerator :: yac_action_out_of_bound = 8
102 end enum
103
104 !----------------------------------------------------------------------
108 !----------------------------------------------------------------------
109 enum, bind(c)
111 enumerator :: yac_time_unit_second = 1
112 enumerator :: yac_time_unit_minute = 2
113 enumerator :: yac_time_unit_hour = 3
114 enumerator :: yac_time_unit_day = 4
115 enumerator :: yac_time_unit_month = 5
116 enumerator :: yac_time_unit_year = 6
117 enumerator :: yac_time_unit_iso_format = 7
118 end enum
119
120 !----------------------------------------------------------------------
124 !----------------------------------------------------------------------
125
126 enum, bind(c)
127 enumerator :: yac_reduction_time_none = 0
132 end enum
133
134 !----------------------------------------------------------------------
138 !----------------------------------------------------------------------
139 enum, bind(c)
140 enumerator :: yac_calendar_not_set = 0
141 enumerator :: yac_proleptic_gregorian = 1
142 enumerator :: yac_year_of_365_days = 2
143 enumerator :: yac_year_of_360_days = 3
144 end enum
145
146 !----------------------------------------------------------------------
150 !----------------------------------------------------------------------
151
152 enum, bind(c)
153 enumerator :: yac_avg_arithmetic = 0
154 enumerator :: yac_avg_dist = 1
155 enumerator :: yac_avg_bary = 2
156 end enum
157
158 enum, bind(c)
159 enumerator :: yac_ncc_avg = 0
160 enumerator :: yac_ncc_dist = 1
161 end enum
162
163 enum, bind(c)
164 enumerator :: yac_nnn_avg = 0
165 enumerator :: yac_nnn_dist = 1
166 enumerator :: yac_nnn_gauss = 2
167 enumerator :: yac_nnn_rbf = 3
168 end enum
169
170 enum, bind(c)
171 enumerator :: yac_conserv_destarea = 0
172 enumerator :: yac_conserv_fracarea = 1
173 end enum
174
175 enum, bind(c)
176 enumerator :: yac_spmap_avg = 0
177 enumerator :: yac_spmap_dist = 1
178 end enum
179
180 enum, bind(c)
181 enumerator :: yac_spmap_none = 0
182 enumerator :: yac_spmap_srcarea = 1
183 enumerator :: yac_spmap_invtgtarea = 2
184 enumerator :: yac_spmap_fracarea = 3
185 end enum
186
187 !----------------------------------------------------------------------
191 !----------------------------------------------------------------------
192
195
196 !----------------------------------------------------------------------
200 !----------------------------------------------------------------------
201
203 real, pointer :: p(:)
204 end type yac_real_ptr
205
207 double precision, pointer :: p(:)
208 end type yac_dble_ptr
209
211 character(len=:), allocatable :: string
212 end type yac_string
213
214 !----------------------------------------------------------------------
218 !----------------------------------------------------------------------
219
220
223
225 subroutine yac_fmpi_handshake ( comm, group_names, group_comms )
226 import :: yac_max_charlen
227 integer, intent(in) :: comm
228 character(len=YAC_MAX_CHARLEN), intent(in) :: &
229 group_names(:)
230 integer, intent(out) :: &
231 group_comms(SIZE(group_names))
232 end subroutine yac_fmpi_handshake
233 end interface yac_fmpi_handshake
234
235 !----------------------------------------------------------------------
239 !----------------------------------------------------------------------
240
243
246
248
249 subroutine yac_finit_comm ( comm )
250
251 integer, intent(in) :: comm
252
253 end subroutine yac_finit_comm
254
255 subroutine yac_finit_comm_instance ( comm, yac_instance_id )
256
257 integer, intent(in) :: comm
258 integer, intent(out) :: yac_instance_id
259
260 end subroutine yac_finit_comm_instance
261
262 end interface yac_finit_comm
263
264 interface yac_finit
265
266 subroutine yac_finit ( )
267
268 end subroutine yac_finit
269
270 subroutine yac_finit_instance ( yac_instance_id)
271
272 integer, intent(out) :: yac_instance_id
273
274 end subroutine yac_finit_instance
275
276 end interface yac_finit
277
279 subroutine yac_finit_dummy ()
280 end subroutine yac_finit_dummy
281
282 subroutine yac_finit_comm_dummy ( comm )
283
284 integer, intent(in) :: comm
285
286 end subroutine yac_finit_comm_dummy
287 end interface yac_finit_dummy
288
289 !----------------------------------------------------------------------
293 !----------------------------------------------------------------------
294
295 interface
301 end interface
302
303 !----------------------------------------------------------------------
307 !----------------------------------------------------------------------
308
310 subroutine yac_fread_config_yaml (yaml_filename)
311 character(len=*), intent(in) :: yaml_filename
312 end subroutine yac_fread_config_yaml
313
314 subroutine yac_fread_config_yaml_instance (yac_instance_id, yaml_filename)
315 integer, intent(in) :: yac_instance_id
316 character(len=*), intent(in) :: yaml_filename
317 end subroutine yac_fread_config_yaml_instance
318 end interface yac_fread_config_yaml
319
321 subroutine yac_fread_config_json (json_filename)
322 character(len=*), intent(in) :: json_filename
323 end subroutine yac_fread_config_json
324
325 subroutine yac_fread_config_json_instance (yac_instance_id, json_filename)
326 integer, intent(in) :: yac_instance_id
327 character(len=*), intent(in) :: json_filename
328 end subroutine yac_fread_config_json_instance
329 end interface yac_fread_config_json
330
331 !----------------------------------------------------------------------
335 !----------------------------------------------------------------------
336
337 interface yac_fcleanup
338
339 subroutine yac_fcleanup ()
340 end subroutine yac_fcleanup
341
342 subroutine yac_fcleanup_instance ( yac_instance_id )
343
344 integer, intent(in) :: yac_instance_id
345
346 end subroutine yac_fcleanup_instance
347
348 end interface yac_fcleanup
349
350 !----------------------------------------------------------------------
354 !----------------------------------------------------------------------
355
357
358 subroutine yac_ffinalize ()
359 end subroutine yac_ffinalize
360
361 subroutine yac_ffinalize_instance ( yac_instance_id )
362
363 integer, intent(in) :: yac_instance_id
364
365 end subroutine
366
367 end interface yac_ffinalize
368
369 !----------------------------------------------------------------------
373 !----------------------------------------------------------------------
374
377
378 interface
379 function yac_fget_version () result (version_string)
380 character(len=:), ALLOCATABLE :: version_string
381 end function yac_fget_version
382 end interface
383
384 !----------------------------------------------------------------------
388 !----------------------------------------------------------------------
389
391
392 SUBROUTINE yac_fpredef_comp ( comp_name, comp_id )
393
394 character(len=*), intent(in) :: comp_name
395 integer, intent(out) :: comp_id
396
397 END SUBROUTINE yac_fpredef_comp
398
399 SUBROUTINE yac_fpredef_comp_instance ( yac_instance_id, comp_name, comp_id )
400
401 integer, intent(in) :: yac_instance_id
402 character(len=*), intent(in) :: comp_name
403 integer, intent(out) :: comp_id
404
405 END SUBROUTINE yac_fpredef_comp_instance
406
407 END INTERFACE yac_fpredef_comp
408
411
413
414 subroutine yac_fdef_comp ( comp_name, comp_id )
415
416 character(len=*), intent(in) :: comp_name
417 integer, intent(out) :: comp_id
418
419 end subroutine yac_fdef_comp
420
421 subroutine yac_fdef_comp_instance ( yac_instance_id, comp_name, comp_id )
422
423 integer, intent(in) :: yac_instance_id
424 character(len=*), intent(in) :: comp_name
425 integer, intent(out) :: comp_id
426
427 end subroutine yac_fdef_comp_instance
428
429 end interface yac_fdef_comp
430
432
433 subroutine yac_fdef_comps ( comp_names, num_comps, comp_ids )
434
435 use, intrinsic :: iso_c_binding, only : c_char
436 import :: yac_max_charlen
437
438 integer, intent(in) :: num_comps
439 character(kind=c_char, len=YAC_MAX_CHARLEN), intent(in) :: &
440 comp_names(num_comps)
441 integer, intent(out) :: comp_ids(num_comps)
442
443 end subroutine yac_fdef_comps
444
445 subroutine yac_fdef_comps_instance ( yac_instance_id, &
446 comp_names, &
447 num_comps, &
448 comp_ids )
449
450 use, intrinsic :: iso_c_binding, only : c_char
451 import :: yac_max_charlen
452
453 integer, intent(in) :: yac_instance_id
454 integer, intent(in) :: num_comps
455 character(kind=c_char, len=YAC_MAX_CHARLEN), intent(in) :: &
456 comp_names(num_comps)
457 integer, intent(out) :: comp_ids(num_comps)
458
459 end subroutine yac_fdef_comps_instance
460
461 end interface yac_fdef_comps
462
464
465 subroutine yac_fdef_comp_dummy ( )
466 end subroutine yac_fdef_comp_dummy
467
468 subroutine yac_fdef_comp_dummy_instance ( yac_instance_id )
469
470 integer, intent(in) :: yac_instance_id
471
472 end subroutine yac_fdef_comp_dummy_instance
473
474 end interface yac_fdef_comp_dummy
475
478
479 !----------------------------------------------------------------------
483 !----------------------------------------------------------------------
484
486
487 subroutine yac_fdef_datetime ( start_datetime, end_datetime )
488
489 character(len=*), intent(in), optional :: start_datetime
490 character(len=*), intent(in), optional :: end_datetime
491
492 end subroutine yac_fdef_datetime
493
494 subroutine yac_fdef_datetime_instance ( yac_instance_id, &
495 start_datetime, &
496 end_datetime )
497
498 integer, intent(in) :: yac_instance_id
499 character(len=*), intent(in), optional :: start_datetime
500 character(len=*), intent(in), optional :: end_datetime
501
502 end subroutine yac_fdef_datetime_instance
503
504 end interface yac_fdef_datetime
505
507
508 subroutine yac_fdef_calendar( calendar )
509 integer, intent(in) :: calendar
510 end subroutine yac_fdef_calendar
511
512 end interface yac_fdef_calendar
513
514 !----------------------------------------------------------------------
518 !----------------------------------------------------------------------
519
521
522 function yac_fget_start_datetime () result (start_datetime_string)
523 character(len=:), ALLOCATABLE :: start_datetime_string
524 end function yac_fget_start_datetime
525
526 function yac_fget_start_datetime_instance (yac_instance_id) &
527 result(start_datetime_string)
528 integer, intent(in) :: yac_instance_id
529 character(len=:), ALLOCATABLE :: start_datetime_string
531
532 end interface yac_fget_start_datetime
533
535
536 function yac_fget_end_datetime () result (end_datetime_string)
537 character(len=:), ALLOCATABLE :: end_datetime_string
538 end function yac_fget_end_datetime
539
540 function yac_fget_end_datetime_instance (yac_instance_id) &
541 result(end_datetime_string)
542 integer, intent(in) :: yac_instance_id
543 character(len=:), ALLOCATABLE :: end_datetime_string
545
546 end interface yac_fget_end_datetime
547
550
551 !----------------------------------------------------------------------
555 !----------------------------------------------------------------------
556
558
578 subroutine yac_fdef_grid_nonuniform_real ( grid_name, &
579 nbr_vertices, &
580 nbr_cells, &
581 nbr_connections, &
582 nbr_vertices_per_cell, &
583 x_vertices, &
584 y_vertices, &
585 cell_to_vertex, &
586 grid_id, &
587 use_ll_edges)
588
589 character(len=*), intent(in) :: grid_name
590 integer, intent(in) :: nbr_vertices
591 integer, intent(in) :: nbr_cells
592 integer, intent(in) :: nbr_connections
593 integer, intent(in) :: nbr_vertices_per_cell(nbr_cells)
594 real, intent(in) :: x_vertices(nbr_vertices)
595 real, intent(in) :: y_vertices(nbr_vertices)
596 integer, intent(in) :: cell_to_vertex(nbr_connections)
597 integer, intent(out) :: grid_id
598 logical, optional, intent(in) :: use_ll_edges
599
600 end subroutine yac_fdef_grid_nonuniform_real
601
621 subroutine yac_fdef_grid_nonuniform_dble ( grid_name, &
622 nbr_vertices, &
623 nbr_cells, &
624 nbr_connections, &
625 nbr_vertices_per_cell, &
626 x_vertices, &
627 y_vertices, &
628 cell_to_vertex, &
629 grid_id, &
630 use_ll_edges)
631
632 character(len=*), intent(in) :: grid_name
633 integer, intent(in) :: nbr_vertices
634 integer, intent(in) :: nbr_cells
635 integer, intent(in) :: nbr_connections
636 integer, intent(in) :: nbr_vertices_per_cell(nbr_cells)
637 double precision, intent(in) :: x_vertices(nbr_vertices)
638 double precision, intent(in) :: y_vertices(nbr_vertices)
639 integer, intent(in) :: cell_to_vertex(nbr_connections)
640 integer, intent(out) :: grid_id
641 logical, optional, intent(in) :: use_ll_edges
642
643 end subroutine yac_fdef_grid_nonuniform_dble
644
663 subroutine yac_fdef_grid_unstruct_real ( grid_name, &
664 nbr_vertices, &
665 nbr_cells, &
666 nbr_vertices_per_cell, &
667 x_vertices, &
668 y_vertices, &
669 cell_to_vertex, &
670 grid_id, &
671 use_ll_edges)
672
673 character(len=*), intent(in) :: grid_name
674 integer, intent(in) :: nbr_vertices
675 integer, intent(in) :: nbr_cells
676 integer, intent(in) :: nbr_vertices_per_cell
677 real, intent(in) :: x_vertices(nbr_vertices)
678 real, intent(in) :: y_vertices(nbr_vertices)
679 integer, intent(in) :: cell_to_vertex( &
680 nbr_vertices_per_cell,nbr_cells)
681 integer, intent(out) :: grid_id
682 logical, optional, intent(in) :: use_ll_edges
683
684 end subroutine yac_fdef_grid_unstruct_real
685
704 subroutine yac_fdef_grid_unstruct_dble ( grid_name, &
705 nbr_vertices, &
706 nbr_cells, &
707 nbr_vertices_per_cell, &
708 x_vertices, &
709 y_vertices, &
710 cell_to_vertex, &
711 grid_id, &
712 use_ll_edges)
713
714 character(len=*), intent(in) :: grid_name
715 integer, intent(in) :: nbr_vertices
716 integer, intent(in) :: nbr_cells
717 integer, intent(in) :: nbr_vertices_per_cell
718 double precision, intent(in) :: x_vertices(nbr_vertices)
719 double precision, intent(in) :: y_vertices(nbr_vertices)
720 integer, intent(in) :: cell_to_vertex( &
721 nbr_vertices_per_cell,nbr_cells)
722 integer, intent(out) :: grid_id
723 logical, optional, intent(in) :: use_ll_edges
724
725 end subroutine yac_fdef_grid_unstruct_dble
726
734 subroutine yac_fdef_grid_curve2d_real ( grid_name, &
735 nbr_vertices, &
736 cyclic, &
737 x_vertices, &
738 y_vertices, &
739 grid_id)
740
741 character(len=*), intent(in) :: grid_name
742 integer, intent(in) :: nbr_vertices(2)
743 integer, intent(in) :: cyclic(2)
744 real, intent(in) :: &
745 x_vertices(nbr_vertices(1),nbr_vertices(2))
746 real, intent(in) :: &
747 y_vertices(nbr_vertices(1),nbr_vertices(2))
748 integer, intent(out) :: grid_id
749
750 end subroutine yac_fdef_grid_curve2d_real
751
759 subroutine yac_fdef_grid_curve2d_dble ( grid_name, &
760 nbr_vertices, &
761 cyclic, &
762 x_vertices, &
763 y_vertices, &
764 grid_id)
765
766 character(len=*), intent(in) :: grid_name
767 integer, intent(in) :: nbr_vertices(2)
768 integer, intent(in) :: cyclic(2)
769 double precision, intent(in) :: &
770 x_vertices(nbr_vertices(1),nbr_vertices(2))
771 double precision, intent(in) :: &
772 y_vertices(nbr_vertices(1),nbr_vertices(2))
773 integer, intent(out) :: grid_id
774
775 end subroutine yac_fdef_grid_curve2d_dble
776
784 subroutine yac_fdef_grid_reg2d_real ( grid_name, &
785 nbr_vertices, &
786 cyclic, &
787 x_vertices, &
788 y_vertices, &
789 grid_id)
790
791 character(len=*), intent(in) :: grid_name
792 integer, intent(in) :: nbr_vertices(2)
793 integer, intent(in) :: cyclic(2)
794 real, intent(in) :: x_vertices(nbr_vertices(1))
795 real, intent(in) :: y_vertices(nbr_vertices(2))
796 integer, intent(out) :: grid_id
797
798 end subroutine yac_fdef_grid_reg2d_real
799
807 subroutine yac_fdef_grid_reg2d_dble ( grid_name, &
808 nbr_vertices, &
809 cyclic, &
810 x_vertices, &
811 y_vertices, &
812 grid_id)
813
814 character(len=*), intent(in) :: grid_name
815 integer, intent(in) :: nbr_vertices(2)
816 integer, intent(in) :: cyclic(2)
817 double precision, intent(in) :: x_vertices(nbr_vertices(1))
818 double precision, intent(in) :: y_vertices(nbr_vertices(2))
819 integer, intent(out) :: grid_id
820
821 end subroutine yac_fdef_grid_reg2d_dble
822
823 end interface yac_fdef_grid
824
827
828 !----------------------------------------------------------------------
832 !----------------------------------------------------------------------
833
835
836 subroutine yac_fdef_points_reg2d_real ( grid_id, &
837 nbr_points, &
838 location, &
839 x_points_real, &
840 y_points_real, &
841 point_id )
842
843 integer, intent(in) :: grid_id
844 integer, intent(in) :: nbr_points(2)
845 integer, intent(in) :: location
846 real, intent(in) :: x_points_real(nbr_points(1))
847 real, intent(in) :: y_points_real(nbr_points(2))
848 integer, intent(out) :: point_id
849
850 end subroutine yac_fdef_points_reg2d_real
851
852 subroutine yac_fdef_points_reg2d_dble ( grid_id, &
853 nbr_points, &
854 location, &
855 x_points, &
856 y_points, &
857 point_id )
858
859 integer, intent(in) :: grid_id
860 integer, intent(in) :: nbr_points(2)
861 integer, intent(in) :: location
862 double precision, intent(in) :: x_points(nbr_points(1))
863 double precision, intent(in) :: y_points(nbr_points(2))
864 integer, intent(out) :: point_id
865
866 end subroutine yac_fdef_points_reg2d_dble
867
868 subroutine yac_fdef_points_curve2d_real ( grid_id, &
869 nbr_points, &
870 location, &
871 x_points_real, &
872 y_points_real, &
873 point_id )
874
875 integer, intent(in) :: grid_id
876 integer, intent(in) :: nbr_points(2)
877 integer, intent(in) :: location
878 real, intent(in) :: &
879 x_points_real(nbr_points(1),nbr_points(2))
880 real, intent(in) :: &
881 y_points_real(nbr_points(1),nbr_points(2))
882 integer, intent(out) :: point_id
883
884 end subroutine yac_fdef_points_curve2d_real
885
886 subroutine yac_fdef_points_curve2d_dble ( grid_id, &
887 nbr_points, &
888 location, &
889 x_points, &
890 y_points, &
891 point_id )
892
893 integer, intent(in) :: grid_id
894 integer, intent(in) :: nbr_points(2)
895 integer, intent(in) :: location
896 double precision, intent(in) :: &
897 x_points(nbr_points(1),nbr_points(2))
898 double precision, intent(in) :: &
899 y_points(nbr_points(1),nbr_points(2))
900 integer, intent(out) :: point_id
901
902 end subroutine yac_fdef_points_curve2d_dble
903
904 subroutine yac_fdef_points_unstruct_real ( grid_id, &
905 nbr_points, &
906 location, &
907 x_points_real, &
908 y_points_real, &
909 point_id )
910
911 integer, intent(in) :: grid_id
912 integer, intent(in) :: nbr_points
913 integer, intent(in) :: location
914 real, intent(in) :: x_points_real(nbr_points)
915 real, intent(in) :: y_points_real(nbr_points)
916 integer, intent(out) :: point_id
917
918 end subroutine yac_fdef_points_unstruct_real
919
920 subroutine yac_fdef_points_unstruct_dble ( grid_id, &
921 nbr_points, &
922 location, &
923 x_points, &
924 y_points, &
925 point_id )
926
927 integer, intent(in) :: grid_id
928 integer, intent(in) :: nbr_points
929 integer, intent(in) :: location
930 double precision, intent(in) :: x_points(nbr_points)
931 double precision, intent(in) :: y_points(nbr_points)
932 integer, intent(out) :: point_id
933
934 end subroutine yac_fdef_points_unstruct_dble
935
936 end interface yac_fdef_points
937
938 !----------------------------------------------------------------------
942 !----------------------------------------------------------------------
943
944 interface
945
946 subroutine yac_fset_global_index ( global_index, &
947 location, &
948 grid_id )
949
950 integer, intent(in) :: global_index(*)
951 integer, intent(in) :: location
952 integer, intent(in) :: grid_id
953
954 end subroutine yac_fset_global_index
955
956 end interface
957
958 !----------------------------------------------------------------------
962 !----------------------------------------------------------------------
963
965
966 subroutine yac_fset_core_imask ( is_core, &
967 location, &
968 grid_id )
969
970 integer, intent(in) :: is_core(*)
971 integer, intent(in) :: location
972 integer, intent(in) :: grid_id
973
974 end subroutine yac_fset_core_imask
975
976 subroutine yac_fset_core_lmask ( is_core, &
977 location, &
978 grid_id )
979
980 logical, intent(in) :: is_core(*)
981 integer, intent(in) :: location
982 integer, intent(in) :: grid_id
983
984 end subroutine yac_fset_core_lmask
985
986 end interface yac_fset_core_mask
987
988 !----------------------------------------------------------------------
992 !----------------------------------------------------------------------
993
995
996 subroutine yac_fset_imask ( is_valid, points_id )
997
998 integer, intent(in) :: is_valid(*)
999 integer, intent(in) :: points_id
1000
1001 end subroutine yac_fset_imask
1002
1003 subroutine yac_fset_lmask ( is_valid, points_id )
1004
1005 logical, intent(in) :: is_valid(*)
1006 integer, intent(in) :: points_id
1007
1008 end subroutine yac_fset_lmask
1009
1010 end interface
1011
1012 !----------------------------------------------------------------------
1016 !----------------------------------------------------------------------
1017
1020
1022
1023 subroutine yac_fdef_imask ( grid_id, &
1024 nbr_points, &
1025 location, &
1026 is_valid, &
1027 mask_id )
1028
1029 integer, intent(in) :: grid_id
1030 integer, intent(in) :: nbr_points
1031 integer, intent(in) :: location
1032 integer, intent(in) :: is_valid(*)
1035 integer, intent(out) :: mask_id
1036
1037 end subroutine yac_fdef_imask
1038
1039 subroutine yac_fdef_lmask ( grid_id, &
1040 nbr_points, &
1041 location, &
1042 is_valid, &
1043 mask_id )
1044
1045 integer, intent(in) :: grid_id
1046 integer, intent(in) :: nbr_points
1047 integer, intent(in) :: location
1048 logical, intent(in) :: is_valid(*)
1051 integer, intent(out) :: mask_id
1052
1053 end subroutine yac_fdef_lmask
1054
1055 end interface
1056
1058
1059 subroutine yac_fdef_imask_named ( grid_id, &
1060 nbr_points, &
1061 location, &
1062 is_valid, &
1063 name, &
1064 mask_id )
1065
1066 integer, intent(in) :: grid_id
1067 integer, intent(in) :: nbr_points
1068 integer, intent(in) :: location
1069 integer, intent(in) :: is_valid(*)
1072 character(len=*), intent(in) :: name
1073 integer, intent(out) :: mask_id
1074
1075 end subroutine yac_fdef_imask_named
1076
1077 subroutine yac_fdef_lmask_named ( grid_id, &
1078 nbr_points, &
1079 location, &
1080 is_valid, &
1081 name, &
1082 mask_id )
1083
1084 integer, intent(in) :: grid_id
1085 integer, intent(in) :: nbr_points
1086 integer, intent(in) :: location
1087 logical, intent(in) :: is_valid(*)
1090 character(len=*), intent(in) :: name
1091 integer, intent(out) :: mask_id
1092
1093 end subroutine yac_fdef_lmask_named
1094
1095 end interface
1096
1097 !----------------------------------------------------------------------
1102 !----------------------------------------------------------------------
1103
1104 interface
1105
1106 subroutine yac_fdef_field ( field_name, &
1107 component_id, &
1108 point_ids, &
1109 num_pointsets, &
1110 collection_size,&
1111 timestep, &
1112 time_unit, &
1113 field_id )
1114
1115 character(len=*), intent (in) :: field_name
1116 integer, intent (in) :: component_id
1117 integer, intent (in) :: point_ids(*)
1118 integer, intent (in) :: num_pointsets
1119 integer, intent (in) :: collection_size
1120 character(len=*), intent (in) :: timestep
1121 integer, intent (in) :: time_unit
1122 integer, intent (out) :: field_id
1123
1124 end subroutine yac_fdef_field
1125
1126 end interface
1127
1128 !----------------------------------------------------------------------
1133 !----------------------------------------------------------------------
1134
1135 interface
1136
1137 subroutine yac_fdef_field_mask ( field_name, &
1138 component_id, &
1139 point_ids, &
1140 mask_ids, &
1141 num_pointsets, &
1142 collection_size,&
1143 timestep, &
1144 time_unit, &
1145 field_id )
1146
1147 character(len=*), intent (in) :: field_name
1148 integer, intent (in) :: component_id
1149 integer, intent (in) :: point_ids(*)
1150 integer, intent (in) :: mask_ids(*)
1151 integer, intent (in) :: num_pointsets
1152 integer, intent (in) :: collection_size
1153 character(len=*), intent (in) :: timestep
1154 integer, intent (in) :: time_unit
1155 integer, intent (out) :: field_id
1156
1157 end subroutine yac_fdef_field_mask
1158
1159 end interface
1160
1161 !----------------------------------------------------------------------
1165 !----------------------------------------------------------------------
1166
1167 interface
1168
1169 subroutine yac_fcheck_field_dimensions( field_id, &
1170 collection_size, &
1171 num_interp_fields, &
1172 interp_field_sizes )
1173
1174 integer, intent (in) :: field_id
1175 integer, intent (in) :: collection_size
1176 integer, intent (in) :: num_interp_fields
1178 integer, intent (in) :: interp_field_sizes(num_interp_fields)
1180
1181 end subroutine yac_fcheck_field_dimensions
1182
1183 end interface
1184
1185 !----------------------------------------------------------------------
1189 !----------------------------------------------------------------------
1190
1191 interface yac_fput
1192
1193 subroutine yac_fput_real ( field_id, &
1194 nbr_hor_points, &
1195 nbr_pointsets, &
1196 collection_size, &
1197 send_field, &
1198 info, &
1199 ierror )
1200
1201 integer, intent (in) :: field_id
1202 integer, intent (in) :: nbr_hor_points
1203 integer, intent (in) :: nbr_pointsets
1204 integer, intent (in) :: collection_size
1205 real, intent (in) :: send_field(nbr_hor_points, &
1206 nbr_pointsets, &
1207 collection_size)
1208
1209 integer, intent (out) :: info
1210 integer, intent (out) :: ierror
1211
1212 end subroutine yac_fput_real
1213
1214 subroutine yac_fput_real_ptr ( field_id, &
1215 nbr_pointsets, &
1216 collection_size, &
1217 send_field, &
1218 info, &
1219 ierror )
1220
1221 import :: yac_real_ptr
1222
1223 integer, intent (in) :: field_id
1224 integer, intent (in) :: nbr_pointsets
1225 integer, intent (in) :: collection_size
1226 type(yac_real_ptr), intent (in) :: send_field(nbr_pointsets, collection_size)
1227
1228 integer, intent (out) :: info
1229 integer, intent (out) :: ierror
1230
1231 end subroutine yac_fput_real_ptr
1232
1233 subroutine yac_fput_single_pointset_real ( field_id, &
1234 nbr_hor_points, &
1235 collection_size, &
1236 send_field, &
1237 info, &
1238 ierror )
1239
1240 integer, intent (in) :: field_id
1241 integer, intent (in) :: nbr_hor_points
1242 integer, intent (in) :: collection_size
1243 real, intent (in) :: send_field(nbr_hor_points, collection_size)
1244
1245 integer, intent (out) :: info
1246 integer, intent (out) :: ierror
1247
1248 end subroutine yac_fput_single_pointset_real
1249
1250 subroutine yac_fput_dble ( field_id, &
1251 nbr_hor_points, &
1252 nbr_pointsets, &
1253 collection_size, &
1254 send_field, &
1255 info, &
1256 ierror )
1257
1258 integer, intent (in) :: field_id
1259 integer, intent (in) :: nbr_hor_points
1260 integer, intent (in) :: nbr_pointsets
1261 integer, intent (in) :: collection_size
1262 double precision, intent (in) :: send_field(nbr_hor_points, nbr_pointsets, collection_size)
1263
1264 integer, intent (out) :: info
1265 integer, intent (out) :: ierror
1266
1267 end subroutine yac_fput_dble
1268
1269 subroutine yac_fput_dble_ptr ( field_id, &
1270 nbr_pointsets, &
1271 collection_size, &
1272 send_field, &
1273 info, &
1274 ierror )
1275
1276 import :: yac_dble_ptr
1277
1278 integer, intent (in) :: field_id
1279 integer, intent (in) :: nbr_pointsets
1280 integer, intent (in) :: collection_size
1281 type(yac_dble_ptr), intent (in) :: send_field(nbr_pointsets, collection_size)
1282
1283 integer, intent (out) :: info
1284 integer, intent (out) :: ierror
1285
1286 end subroutine yac_fput_dble_ptr
1287
1288 subroutine yac_fput_single_pointset_dble ( field_id, &
1289 nbr_hor_points, &
1290 collection_size, &
1291 send_field, &
1292 info, &
1293 ierror )
1294
1295 integer, intent (in) :: field_id
1296 integer, intent (in) :: nbr_hor_points
1297 integer, intent (in) :: collection_size
1298 double precision, intent (in) :: send_field(nbr_hor_points, collection_size)
1299
1300 integer, intent (out) :: info
1301 integer, intent (out) :: ierror
1302
1303 end subroutine yac_fput_single_pointset_dble
1304
1305 subroutine yac_fput_frac_real ( field_id, &
1306 nbr_hor_points, &
1307 nbr_pointsets, &
1308 collection_size, &
1309 send_field, &
1310 send_frac_mask, &
1311 info, &
1312 ierror )
1313
1314 integer, intent (in) :: field_id
1315 integer, intent (in) :: nbr_hor_points
1316 integer, intent (in) :: nbr_pointsets
1317 integer, intent (in) :: collection_size
1318 real, intent (in) :: send_field(nbr_hor_points, &
1319 nbr_pointsets, &
1320 collection_size)
1321
1322 real, intent (in) :: send_frac_mask(nbr_hor_points, &
1323 nbr_pointsets, &
1324 collection_size)
1325
1326 integer, intent (out) :: info
1327 integer, intent (out) :: ierror
1328
1329 end subroutine yac_fput_frac_real
1330
1331 subroutine yac_fput_frac_real_ptr ( field_id, &
1332 nbr_pointsets, &
1333 collection_size, &
1334 send_field, &
1335 send_frac_mask, &
1336 info, &
1337 ierror )
1338
1339 import :: yac_real_ptr
1340
1341 integer, intent (in) :: field_id
1342 integer, intent (in) :: nbr_pointsets
1343 integer, intent (in) :: collection_size
1344 type(yac_real_ptr), intent (in) :: send_field(nbr_pointsets, collection_size)
1345
1346 type(yac_real_ptr), intent (in) :: send_frac_mask(nbr_pointsets, collection_size)
1347
1348 integer, intent (out) :: info
1349 integer, intent (out) :: ierror
1350
1351 end subroutine yac_fput_frac_real_ptr
1352
1353 subroutine yac_fput_frac_single_pointset_real ( field_id, &
1354 nbr_hor_points, &
1355 collection_size, &
1356 send_field, &
1357 send_frac_mask, &
1358 info, &
1359 ierror )
1360
1361 integer, intent (in) :: field_id
1362 integer, intent (in) :: nbr_hor_points
1363 integer, intent (in) :: collection_size
1364 real, intent (in) :: send_field(nbr_hor_points, collection_size)
1365
1366 real, intent (in) :: send_frac_mask(nbr_hor_points, collection_size)
1367
1368 integer, intent (out) :: info
1369 integer, intent (out) :: ierror
1370
1372
1373 subroutine yac_fput_frac_dble ( field_id, &
1374 nbr_hor_points, &
1375 nbr_pointsets, &
1376 collection_size, &
1377 send_field, &
1378 send_frac_mask, &
1379 info, &
1380 ierror )
1381
1382 integer, intent (in) :: field_id
1383 integer, intent (in) :: nbr_hor_points
1384 integer, intent (in) :: nbr_pointsets
1385 integer, intent (in) :: collection_size
1386 double precision, intent (in) :: send_field(nbr_hor_points, nbr_pointsets, collection_size)
1387
1388 double precision, intent (in) :: send_frac_mask(nbr_hor_points, nbr_pointsets, collection_size)
1389
1390 integer, intent (out) :: info
1391 integer, intent (out) :: ierror
1392
1393 end subroutine yac_fput_frac_dble
1394
1395 subroutine yac_fput_frac_dble_ptr ( field_id, &
1396 nbr_pointsets, &
1397 collection_size, &
1398 send_field, &
1399 send_frac_mask, &
1400 info, &
1401 ierror )
1402
1403 import :: yac_dble_ptr
1404
1405 integer, intent (in) :: field_id
1406 integer, intent (in) :: nbr_pointsets
1407 integer, intent (in) :: collection_size
1408 type(yac_dble_ptr), intent (in) :: send_field(nbr_pointsets, collection_size)
1409
1410 type(yac_dble_ptr), intent (in) :: send_frac_mask(nbr_pointsets, collection_size)
1411
1412 integer, intent (out) :: info
1413 integer, intent (out) :: ierror
1414
1415 end subroutine yac_fput_frac_dble_ptr
1416
1417 subroutine yac_fput_frac_single_pointset_dble ( field_id, &
1418 nbr_hor_points, &
1419 collection_size, &
1420 send_field, &
1421 send_frac_mask, &
1422 info, &
1423 ierror )
1424
1425 integer, intent (in) :: field_id
1426 integer, intent (in) :: nbr_hor_points
1427 integer, intent (in) :: collection_size
1428 double precision, intent (in) :: send_field(nbr_hor_points, collection_size)
1429
1430 double precision, intent (in) :: send_frac_mask(nbr_hor_points, collection_size)
1431
1432 integer, intent (out) :: info
1433 integer, intent (out) :: ierror
1434
1436
1437 end interface yac_fput
1438
1439 !----------------------------------------------------------------------
1443 !----------------------------------------------------------------------
1444
1445 interface yac_fget
1446
1447 subroutine yac_fget_real ( field_id, &
1448 nbr_hor_points, &
1449 collection_size, &
1450 recv_field, &
1451 info, &
1452 ierror )
1453
1454 integer, intent (in) :: field_id
1455 integer, intent (in) :: nbr_hor_points
1456 integer, intent (in) :: collection_size
1457 real, intent (inout) :: recv_field(nbr_hor_points, collection_size)
1458 integer, intent (out) :: info
1459 integer, intent (out) :: ierror
1460
1461 end subroutine yac_fget_real
1462
1463 subroutine yac_fget_real_ptr ( field_id, &
1464 collection_size, &
1465 recv_field, &
1466 info, &
1467 ierror )
1468
1469 import :: yac_real_ptr
1470
1471 integer, intent (in) :: field_id
1472 integer, intent (in) :: collection_size
1473 type(yac_real_ptr) :: recv_field(collection_size)
1474 integer, intent (out) :: info
1475 integer, intent (out) :: ierror
1476
1477 end subroutine yac_fget_real_ptr
1478
1479 subroutine yac_fget_dble ( field_id, &
1480 nbr_hor_points, &
1481 collection_size, &
1482 recv_field, &
1483 info, &
1484 ierror )
1485
1486 integer, intent (in) :: field_id
1487 integer, intent (in) :: nbr_hor_points
1488 integer, intent (in) :: collection_size
1489 double precision, intent (inout) :: &
1490 recv_field(nbr_hor_points, collection_size)
1491 integer, intent (out) :: info
1492 integer, intent (out) :: ierror
1493
1494 end subroutine yac_fget_dble
1495
1496 subroutine yac_fget_dble_ptr ( field_id, &
1497 collection_size, &
1498 recv_field, &
1499 info, &
1500 ierror )
1501
1502 import :: yac_dble_ptr
1503
1504 integer, intent (in) :: field_id
1505 integer, intent (in) :: collection_size
1506 type(yac_dble_ptr) :: recv_field(collection_size)
1507 integer, intent (out) :: info
1508 integer, intent (out) :: ierror
1509
1510 end subroutine yac_fget_dble_ptr
1511
1512 end interface yac_fget
1513
1514 !----------------------------------------------------------------------
1518 !----------------------------------------------------------------------
1519
1521
1522 subroutine yac_fget_async_dble_ptr ( field_id, &
1523 collection_size, &
1524 recv_field, &
1525 info, &
1526 ierror )
1527
1528 import :: yac_dble_ptr
1529
1530 integer, intent (in) :: field_id
1531 integer, intent (in) :: collection_size
1532 type(yac_dble_ptr) :: recv_field(collection_size)
1533 integer, intent (out) :: info
1534 integer, intent (out) :: ierror
1535
1536 end subroutine yac_fget_async_dble_ptr
1537
1538 end interface yac_fget_async
1539
1540 !----------------------------------------------------------------------
1544 !----------------------------------------------------------------------
1545
1547
1548 subroutine yac_fexchange_real ( send_field_id, &
1549 recv_field_id, &
1550 send_nbr_hor_points, &
1551 send_nbr_pointsets, &
1552 recv_nbr_hor_points, &
1553 collection_size, &
1554 send_field, &
1555 recv_field, &
1556 send_info, &
1557 recv_info, &
1558 ierror )
1559
1560 integer, intent (in) :: send_field_id
1561 integer, intent (in) :: recv_field_id
1562 integer, intent (in) :: send_nbr_hor_points
1563 integer, intent (in) :: send_nbr_pointsets
1564 integer, intent (in) :: recv_nbr_hor_points
1565 integer, intent (in) :: collection_size
1566 real, intent (in) :: send_field(send_nbr_hor_points, &
1567 send_nbr_pointsets, &
1568 collection_size)
1569
1570 real, intent (inout) :: recv_field(recv_nbr_hor_points, &
1571 collection_size)
1572
1573 integer, intent (out) :: send_info
1574 integer, intent (out) :: recv_info
1575 integer, intent (out) :: ierror
1576
1577 end subroutine yac_fexchange_real
1578
1579 subroutine yac_fexchange_real_ptr ( send_field_id, &
1580 recv_field_id, &
1581 send_nbr_pointsets, &
1582 collection_size, &
1583 send_field, &
1584 recv_field, &
1585 send_info, &
1586 recv_info, &
1587 ierror )
1588
1589 import :: yac_real_ptr
1590
1591 integer, intent (in) :: send_field_id
1592 integer, intent (in) :: recv_field_id
1593 integer, intent (in) :: send_nbr_pointsets
1594 integer, intent (in) :: collection_size
1595 type(yac_real_ptr), intent (in) :: &
1596 send_field(send_nbr_pointsets, &
1597 collection_size)
1598
1599 type(yac_real_ptr) :: recv_field(collection_size)
1600
1601 integer, intent (out) :: send_info
1602 integer, intent (out) :: recv_info
1603 integer, intent (out) :: ierror
1604
1605 end subroutine yac_fexchange_real_ptr
1606
1607 subroutine yac_fexchange_single_pointset_real ( send_field_id, &
1608 recv_field_id, &
1609 send_nbr_hor_points, &
1610 recv_nbr_hor_points, &
1611 collection_size, &
1612 send_field, &
1613 recv_field, &
1614 send_info, &
1615 recv_info, &
1616 ierror )
1617
1618 integer, intent (in) :: send_field_id
1619 integer, intent (in) :: recv_field_id
1620 integer, intent (in) :: send_nbr_hor_points
1621 integer, intent (in) :: recv_nbr_hor_points
1622 integer, intent (in) :: collection_size
1623 real, intent (in) :: send_field(send_nbr_hor_points, &
1624 collection_size)
1625
1626 real, intent (inout) :: recv_field(recv_nbr_hor_points, &
1627 collection_size)
1628
1629 integer, intent (out) :: send_info
1630 integer, intent (out) :: recv_info
1631 integer, intent (out) :: ierror
1632
1634
1635 subroutine yac_fexchange_dble ( send_field_id, &
1636 recv_field_id, &
1637 send_nbr_hor_points, &
1638 send_nbr_pointsets, &
1639 recv_nbr_hor_points, &
1640 collection_size, &
1641 send_field, &
1642 recv_field, &
1643 send_info, &
1644 recv_info, &
1645 ierror )
1646
1647 integer, intent (in) :: send_field_id
1648 integer, intent (in) :: recv_field_id
1649 integer, intent (in) :: send_nbr_hor_points
1650 integer, intent (in) :: send_nbr_pointsets
1651 integer, intent (in) :: recv_nbr_hor_points
1652 integer, intent (in) :: collection_size
1653 double precision, intent (in) :: &
1654 send_field(send_nbr_hor_points, &
1655 send_nbr_pointsets, &
1656 collection_size)
1657
1658 double precision, intent (inout):: &
1659 recv_field(recv_nbr_hor_points, &
1660 collection_size)
1661
1662 integer, intent (out) :: send_info
1663 integer, intent (out) :: recv_info
1664 integer, intent (out) :: ierror
1665
1666 end subroutine yac_fexchange_dble
1667
1668 subroutine yac_fexchange_dble_ptr ( send_field_id, &
1669 recv_field_id, &
1670 send_nbr_pointsets, &
1671 collection_size, &
1672 send_field, &
1673 recv_field, &
1674 send_info, &
1675 recv_info, &
1676 ierror )
1677
1678 import :: yac_dble_ptr
1679
1680 integer, intent (in) :: send_field_id
1681 integer, intent (in) :: recv_field_id
1682 integer, intent (in) :: send_nbr_pointsets
1683 integer, intent (in) :: collection_size
1684 type(yac_dble_ptr), intent (in) :: &
1685 send_field(send_nbr_pointsets, &
1686 collection_size)
1687
1688 type(yac_dble_ptr) :: recv_field(collection_size)
1689
1690 integer, intent (out) :: send_info
1691 integer, intent (out) :: recv_info
1692 integer, intent (out) :: ierror
1693
1694 end subroutine yac_fexchange_dble_ptr
1695
1696 subroutine yac_fexchange_single_pointset_dble ( send_field_id, &
1697 recv_field_id, &
1698 send_nbr_hor_points, &
1699 recv_nbr_hor_points, &
1700 collection_size, &
1701 send_field, &
1702 recv_field, &
1703 send_info, &
1704 recv_info, &
1705 ierror )
1706
1707 integer, intent (in) :: send_field_id
1708 integer, intent (in) :: recv_field_id
1709 integer, intent (in) :: send_nbr_hor_points
1710 integer, intent (in) :: recv_nbr_hor_points
1711 integer, intent (in) :: collection_size
1712 double precision, intent (in) :: &
1713 send_field(send_nbr_hor_points, &
1714 collection_size)
1715
1716 double precision, intent (inout):: &
1717 recv_field(recv_nbr_hor_points, &
1718 collection_size)
1719
1720 integer, intent (out) :: send_info
1721 integer, intent (out) :: recv_info
1722 integer, intent (out) :: ierror
1723
1725
1726 subroutine yac_fexchange_frac_real ( send_field_id, &
1727 recv_field_id, &
1728 send_nbr_hor_points, &
1729 send_nbr_pointsets, &
1730 recv_nbr_hor_points, &
1731 collection_size, &
1732 send_field, &
1733 send_frac_mask, &
1734 recv_field, &
1735 send_info, &
1736 recv_info, &
1737 ierror )
1738
1739 integer, intent (in) :: send_field_id
1740 integer, intent (in) :: recv_field_id
1741 integer, intent (in) :: send_nbr_hor_points
1742 integer, intent (in) :: send_nbr_pointsets
1743 integer, intent (in) :: recv_nbr_hor_points
1744 integer, intent (in) :: collection_size
1745 real, intent (in) :: send_field(send_nbr_hor_points, &
1746 send_nbr_pointsets, &
1747 collection_size)
1748
1749 real, intent (in) :: send_frac_mask(send_nbr_hor_points, &
1750 send_nbr_pointsets, &
1751 collection_size)
1752
1753 real, intent (inout) :: recv_field(recv_nbr_hor_points, &
1754 collection_size)
1755
1756 integer, intent (out) :: send_info
1757 integer, intent (out) :: recv_info
1758 integer, intent (out) :: ierror
1759
1760 end subroutine yac_fexchange_frac_real
1761
1762 subroutine yac_fexchange_frac_real_ptr ( send_field_id, &
1763 recv_field_id, &
1764 send_nbr_pointsets, &
1765 collection_size, &
1766 send_field, &
1767 send_frac_mask, &
1768 recv_field, &
1769 send_info, &
1770 recv_info, &
1771 ierror )
1772
1773 import :: yac_real_ptr
1774
1775 integer, intent (in) :: send_field_id
1776 integer, intent (in) :: recv_field_id
1777 integer, intent (in) :: send_nbr_pointsets
1778 integer, intent (in) :: collection_size
1779 type(yac_real_ptr), intent (in) :: &
1780 send_field(send_nbr_pointsets, &
1781 collection_size)
1782
1783 type(yac_real_ptr), intent (in) :: &
1784 send_frac_mask(send_nbr_pointsets, &
1785 collection_size)
1786
1787 type(yac_real_ptr) :: recv_field(collection_size)
1788
1789 integer, intent (out) :: send_info
1790 integer, intent (out) :: recv_info
1791 integer, intent (out) :: ierror
1792
1793 end subroutine yac_fexchange_frac_real_ptr
1794
1795 subroutine yac_fexchange_frac_single_pointset_real ( send_field_id, &
1796 recv_field_id, &
1797 send_nbr_hor_points, &
1798 recv_nbr_hor_points, &
1799 collection_size, &
1800 send_field, &
1801 send_frac_mask, &
1802 recv_field, &
1803 send_info, &
1804 recv_info, &
1805 ierror )
1806
1807 integer, intent (in) :: send_field_id
1808 integer, intent (in) :: recv_field_id
1809 integer, intent (in) :: send_nbr_hor_points
1810 integer, intent (in) :: recv_nbr_hor_points
1811 integer, intent (in) :: collection_size
1812 real, intent (in) :: send_field(send_nbr_hor_points, &
1813 collection_size)
1814
1815 real, intent (in) :: send_frac_mask(send_nbr_hor_points, &
1816 collection_size)
1817
1818 real, intent (inout) :: recv_field(recv_nbr_hor_points, &
1819 collection_size)
1820
1821 integer, intent (out) :: send_info
1822 integer, intent (out) :: recv_info
1823 integer, intent (out) :: ierror
1824
1826
1827 subroutine yac_fexchange_frac_dble ( send_field_id, &
1828 recv_field_id, &
1829 send_nbr_hor_points, &
1830 send_nbr_pointsets, &
1831 recv_nbr_hor_points, &
1832 collection_size, &
1833 send_field, &
1834 send_frac_mask, &
1835 recv_field, &
1836 send_info, &
1837 recv_info, &
1838 ierror )
1839
1840 integer, intent (in) :: send_field_id
1841 integer, intent (in) :: recv_field_id
1842 integer, intent (in) :: send_nbr_hor_points
1843 integer, intent (in) :: send_nbr_pointsets
1844 integer, intent (in) :: recv_nbr_hor_points
1845 integer, intent (in) :: collection_size
1846 double precision, intent (in) :: &
1847 send_field(send_nbr_hor_points, &
1848 send_nbr_pointsets, &
1849 collection_size)
1850
1851 double precision, intent (in) :: &
1852 send_frac_mask(send_nbr_hor_points, &
1853 send_nbr_pointsets, &
1854 collection_size)
1855
1856 double precision, intent (inout):: &
1857 recv_field(recv_nbr_hor_points, &
1858 collection_size)
1859
1860 integer, intent (out) :: send_info
1861 integer, intent (out) :: recv_info
1862 integer, intent (out) :: ierror
1863
1864 end subroutine yac_fexchange_frac_dble
1865
1866 subroutine yac_fexchange_frac_dble_ptr ( send_field_id, &
1867 recv_field_id, &
1868 send_nbr_pointsets, &
1869 collection_size, &
1870 send_field, &
1871 send_frac_mask, &
1872 recv_field, &
1873 send_info, &
1874 recv_info, &
1875 ierror )
1876
1877 import :: yac_dble_ptr
1878
1879 integer, intent (in) :: send_field_id
1880 integer, intent (in) :: recv_field_id
1881 integer, intent (in) :: send_nbr_pointsets
1882 integer, intent (in) :: collection_size
1883 type(yac_dble_ptr), intent (in) :: &
1884 send_field(send_nbr_pointsets, &
1885 collection_size)
1886
1887 type(yac_dble_ptr), intent (in) :: &
1888 send_frac_mask(send_nbr_pointsets, &
1889 collection_size)
1890
1891 type(yac_dble_ptr) :: recv_field(collection_size)
1892
1893 integer, intent (out) :: send_info
1894 integer, intent (out) :: recv_info
1895 integer, intent (out) :: ierror
1896
1897 end subroutine yac_fexchange_frac_dble_ptr
1898
1899 subroutine yac_fexchange_frac_single_pointset_dble ( send_field_id, &
1900 recv_field_id, &
1901 send_nbr_hor_points, &
1902 recv_nbr_hor_points, &
1903 collection_size, &
1904 send_field, &
1905 send_frac_mask, &
1906 recv_field, &
1907 send_info, &
1908 recv_info, &
1909 ierror )
1910
1911 integer, intent (in) :: send_field_id
1912 integer, intent (in) :: recv_field_id
1913 integer, intent (in) :: send_nbr_hor_points
1914 integer, intent (in) :: recv_nbr_hor_points
1915 integer, intent (in) :: collection_size
1916 double precision, intent (in) :: &
1917 send_field(send_nbr_hor_points, &
1918 collection_size)
1919
1920 double precision, intent (in) :: &
1921 send_frac_mask(send_nbr_hor_points, &
1922 collection_size)
1923
1924 double precision, intent (inout):: &
1925 recv_field(recv_nbr_hor_points, &
1926 collection_size)
1927
1928 integer, intent (out) :: send_info
1929 integer, intent (out) :: recv_info
1930 integer, intent (out) :: ierror
1931
1933
1934 end interface yac_fexchange
1935
1936 !----------------------------------------------------------------------
1940 !----------------------------------------------------------------------
1941
1942 interface yac_ftest
1943
1944 subroutine yac_ftest_i ( field_id, flag )
1945
1946 integer, intent (in) :: field_id
1947 integer, intent (out) :: flag
1950
1951 end subroutine yac_ftest_i
1952
1953 subroutine yac_ftest_l ( field_id, flag )
1954
1955 integer, intent (in) :: field_id
1956 logical, intent (out) :: flag
1959
1960 end subroutine yac_ftest_l
1961
1962 end interface yac_ftest
1963
1964 !----------------------------------------------------------------------
1968 !----------------------------------------------------------------------
1969
1970 interface yac_fwait
1971
1972 subroutine yac_fwait ( field_id )
1973
1974 integer, intent (in) :: field_id
1975
1976 end subroutine yac_fwait
1977
1978 end interface yac_fwait
1979
1980 !----------------------------------------------------------------------
1984 !----------------------------------------------------------------------
1985
1986 interface
1987
1988 subroutine yac_fget_comp_comm ( comp_id, comp_comm )
1989
1990 integer, intent (in) :: comp_id
1991 integer, intent (out) :: comp_comm
1992
1993 end subroutine yac_fget_comp_comm
1994
1995 end interface
1996
1997 !----------------------------------------------------------------------
2002 !----------------------------------------------------------------------
2003
2005
2006 subroutine yac_fget_comps_comm ( comp_names, &
2007 num_comps, &
2008 comps_comm)
2009
2010 use, intrinsic :: iso_c_binding, only : c_char
2011 import :: yac_max_charlen
2012
2013 integer, intent(in) :: num_comps
2014 character(kind=c_char, len=YAC_MAX_CHARLEN), intent(in) :: &
2015 comp_names(num_comps)
2016 integer, intent (out) :: comps_comm
2017
2018 end subroutine yac_fget_comps_comm
2019
2020 subroutine yac_fget_comps_comm_instance ( yac_instance_id, &
2021 comp_names, &
2022 num_comps, &
2023 comps_comm)
2024
2025 use, intrinsic :: iso_c_binding, only : c_char
2026 import :: yac_max_charlen
2027
2028 integer, intent(in) :: yac_instance_id
2029 integer, intent(in) :: num_comps
2030 character(kind=c_char, len=YAC_MAX_CHARLEN), intent(in) :: &
2031 comp_names(num_comps)
2032 integer, intent (out) :: comps_comm
2033
2034 end subroutine yac_fget_comps_comm_instance
2035
2036 end interface yac_fget_comps_comm
2037
2038
2039 !----------------------------------------------------------------------
2043 !----------------------------------------------------------------------
2044
2046
2047 subroutine yac_fsync_def ( )
2048
2049 end subroutine yac_fsync_def
2050
2051 subroutine yac_fsync_def_instance ( yac_instance_id )
2052
2053 integer, intent(in) :: yac_instance_id
2054
2055 end subroutine yac_fsync_def_instance
2056
2057 end interface yac_fsync_def
2058
2059 !----------------------------------------------------------------------
2063 !----------------------------------------------------------------------
2064
2065 interface
2066
2067 subroutine yac_fget_interp_stack_config(interp_stack_config_id)
2068 integer, intent(out) :: interp_stack_config_id
2069 end subroutine yac_fget_interp_stack_config
2070
2071 subroutine yac_ffree_interp_stack_config(interp_stack_config_id)
2072 integer, intent(in) :: interp_stack_config_id
2073 end subroutine yac_ffree_interp_stack_config
2074
2075 subroutine yac_fadd_interp_stack_config_average(interp_stack_config_id, &
2076 reduction_type, partial_coverage)
2077 integer, intent(in) :: interp_stack_config_id
2078 integer, intent(in) :: reduction_type
2079 integer, intent(in) :: partial_coverage
2081
2082 subroutine yac_fadd_interp_stack_config_ncc(interp_stack_config_id, &
2083 weight_type, partial_coverage)
2084 integer, intent(in) :: interp_stack_config_id
2085 integer, intent(in) :: weight_type
2086 integer, intent(in) :: partial_coverage
2088
2089 subroutine yac_fadd_interp_stack_config_nnn(interp_stack_config_id, &
2090 type, n, scale)
2091 integer, intent(in) :: interp_stack_config_id
2092 integer, intent(in) :: type
2093 integer, intent(in) :: n
2094 double precision, intent(in) :: scale
2096
2097 subroutine yac_fadd_interp_stack_config_conservative(interp_stack_config_id, &
2098 order, enforced_conserv, partial_coverage, normalization)
2099 integer, intent(in) :: interp_stack_config_id
2100 integer, intent(in) :: order
2101 integer, intent(in) :: enforced_conserv
2102 integer, intent(in) :: partial_coverage
2103 integer, intent(in) :: normalization
2105
2106 subroutine yac_fadd_interp_stack_config_spmap(interp_stack_config_id, &
2107 spread_distance, max_search_distance, weight_type, scale_type, &
2108 src_sphere_radius, tgt_sphere_radius)
2109 integer, intent(in) :: interp_stack_config_id
2110 double precision, intent(in) :: spread_distance
2111 double precision, intent(in) :: max_search_distance
2112 integer, intent(in) :: weight_type
2113 integer, intent(in) :: scale_type
2114 double precision, intent(in) :: src_sphere_radius
2115 double precision, intent(in) :: tgt_sphere_radius
2117
2118 subroutine yac_fadd_interp_stack_config_hcsbb(interp_stack_config_id)
2119 integer, intent(in) :: interp_stack_config_id
2121
2122 subroutine yac_fadd_interp_stack_config_user_file(interp_stack_config_id, &
2123 filename, src_grid_name, tgt_grid_name)
2124 integer, intent(in) :: interp_stack_config_id
2125 character (len=*), intent(in) :: filename
2126 character (len=*), intent(in) :: src_grid_name
2127 character (len=*), intent(in) :: tgt_grid_name
2129
2130 subroutine yac_fadd_interp_stack_config_fixed(interp_stack_config_id, &
2131 val)
2132 integer, intent(in) :: interp_stack_config_id
2133 double precision, intent(in) :: val
2135
2136 subroutine yac_fadd_interp_stack_config_creep(interp_stack_config_id, &
2137 creep_distance)
2138 integer, intent(in) :: interp_stack_config_id
2139 integer, intent(in) :: creep_distance
2141
2142 end interface
2143
2144 !----------------------------------------------------------------------
2148 !----------------------------------------------------------------------
2149
2151
2152 subroutine yac_fdef_couple ( &
2153 src_comp_name, src_grid_name, src_field_name, &
2154 tgt_comp_name, tgt_grid_name, tgt_field_name, &
2155 coupling_timestep, time_unit, time_reduction, &
2156 interp_stack_config_id, src_lag, tgt_lag, &
2157 weight_file, mapping_side, scale_factor, &
2158 scale_summand, src_mask_names, tgt_mask_name )
2159
2160 import :: yac_string
2161 character ( len=* ), intent(in) :: src_comp_name
2162 character ( len=* ), intent(in) :: src_grid_name
2163 character ( len=* ), intent(in) :: src_field_name
2164 character ( len=* ), intent(in) :: tgt_comp_name
2165 character ( len=* ), intent(in) :: tgt_grid_name
2166 character ( len=* ), intent(in) :: tgt_field_name
2167 character ( len=* ), intent(in) :: coupling_timestep
2168 integer, intent(in) :: time_unit
2169 integer, intent(in) :: time_reduction
2170 integer, intent(in) :: interp_stack_config_id
2171 integer, intent(in), optional :: src_lag
2172 integer, intent(in), optional :: tgt_lag
2173 character ( len=* ), intent(in), optional :: weight_file
2174 integer, intent(in), optional :: mapping_side
2175 double precision, intent(in), optional :: scale_factor
2176 double precision, intent(in), optional :: scale_summand
2177 type(yac_string), intent(in), optional :: src_mask_names(:)
2178 character ( len=* ), intent(in), optional :: tgt_mask_name
2179 end subroutine yac_fdef_couple
2180
2181 subroutine yac_fdef_couple_instance ( instance_id, &
2182 src_comp_name, src_grid_name, src_field_name, &
2183 tgt_comp_name, tgt_grid_name, tgt_field_name, &
2184 coupling_timestep, time_unit, time_reduction, &
2185 interp_stack_config_id, src_lag, tgt_lag, &
2186 weight_file, mapping_side, scale_factor, &
2187 scale_summand, src_mask_names, tgt_mask_name )
2188
2189 import :: yac_string
2190 integer, intent(in) :: instance_id
2191 character ( len=* ), intent(in) :: src_comp_name
2192 character ( len=* ), intent(in) :: src_grid_name
2193 character ( len=* ), intent(in) :: src_field_name
2194 character ( len=* ), intent(in) :: tgt_comp_name
2195 character ( len=* ), intent(in) :: tgt_grid_name
2196 character ( len=* ), intent(in) :: tgt_field_name
2197 character ( len=* ), intent(in) :: coupling_timestep
2198 integer, intent(in) :: time_unit
2199 integer, intent(in) :: time_reduction
2200 integer, intent(in) :: interp_stack_config_id
2201 integer, intent(in), optional :: src_lag
2202 integer, intent(in), optional :: tgt_lag
2203 character ( len=* ), intent(in), optional :: weight_file
2204 integer, intent(in), optional :: mapping_side
2205 double precision, intent(in), optional :: scale_factor
2206 double precision, intent(in), optional :: scale_summand
2207 type(yac_string), intent(in), optional :: src_mask_names(:)
2208 character ( len=* ), intent(in), optional :: tgt_mask_name
2209 end subroutine yac_fdef_couple_instance
2210
2211 end interface yac_fdef_couple
2212
2213 !----------------------------------------------------------------------
2217 !----------------------------------------------------------------------
2218
2219 interface yac_fenddef
2220
2221 subroutine yac_fenddef ( )
2222
2223 end subroutine yac_fenddef
2224
2225 subroutine yac_fenddef_instance ( yac_instance_id )
2226
2227 integer, intent(in) :: yac_instance_id
2228
2229 end subroutine yac_fenddef_instance
2230
2231 subroutine yac_fenddef_and_emit_config(emit_flags, config)
2232
2233 integer, intent (in) :: emit_flags
2234 character (len=:), ALLOCATABLE :: config
2235
2236 end subroutine yac_fenddef_and_emit_config
2237
2239 yac_instance_id, emit_flags, config)
2240
2241 integer, intent (in) :: yac_instance_id
2242 integer, intent (in) :: emit_flags
2243 character (len=:), ALLOCATABLE :: config
2244
2246
2247 end interface yac_fenddef
2248
2249 !----------------------------------------------------------------------
2253 !----------------------------------------------------------------------
2254
2256
2257 function yac_fget_grid_size( location, grid_id ) result (grid_size)
2258
2259 integer, intent(in) :: location
2260 integer, intent(in) :: grid_id
2261 integer :: grid_size
2262
2263 end function yac_fget_grid_size
2264
2265 end interface yac_fget_grid_size
2266
2267 ! ---------------------------------------------------------------------
2268
2270
2271 function yac_fget_points_size( point_id ) result (points_size)
2272
2273 integer, intent(in) :: point_id
2274 integer :: points_size
2275
2276 end function yac_fget_points_size
2277
2278 end interface yac_fget_points_size
2279
2280 ! ---------------------------------------------------------------------
2281
2283
2284 function yac_fget_field_id ( comp_name, grid_name, field_name ) result(field_id)
2285
2286 character(len=*), intent(in) :: comp_name
2287 character(len=*), intent(in) :: grid_name
2288 character(len=*), intent(in) :: field_name
2289 integer :: field_id
2290
2291 end function yac_fget_field_id
2292
2293 function yac_fget_field_id_instance ( yac_id, &
2294 comp_name, &
2295 grid_name, &
2296 field_name ) result(field_id)
2297
2298 integer, intent(in) :: yac_id
2299 character(len=*), intent(in) :: comp_name
2300 character(len=*), intent(in) :: grid_name
2301 character(len=*), intent(in) :: field_name
2302 integer :: field_id
2303
2304 end function yac_fget_field_id_instance
2305 end interface yac_fget_field_id
2306
2307 ! ---------------------------------------------------------------------
2308
2310
2312 result( comp_name )
2313
2314 integer, intent (in) :: field_id
2315 character(len=:), ALLOCATABLE :: comp_name
2316
2318
2319 end interface yac_fget_component_name
2320
2322
2323 function yac_fget_grid_name_from_field_id ( field_id ) &
2324 result( grid_name )
2325
2326 integer, intent (in) :: field_id
2327 character(len=:), ALLOCATABLE :: grid_name
2328
2330
2331 end interface yac_fget_grid_name
2332
2334
2336 result( field_name )
2337
2338 integer, intent (in) :: field_id
2339 character(len=:), ALLOCATABLE :: field_name
2340
2342
2343 end interface yac_fget_field_name
2344
2345 ! ---------------------------------------------------------------------
2346
2348
2349 function yac_fget_comp_names( ) result(comp_names)
2350 import :: yac_string
2351 type(yac_string), allocatable :: comp_names(:)
2352 end function yac_fget_comp_names
2353
2354 function yac_fget_comp_names_instance( yac_instance_id) &
2355 result( comp_names )
2356 import :: yac_string
2357 integer, intent(in) :: yac_instance_id
2358 type(yac_string), allocatable :: comp_names(:)
2359 end function yac_fget_comp_names_instance
2360
2361 end interface yac_fget_comp_names
2362
2364
2365 function yac_fget_grid_names( ) result( grid_names )
2366 import :: yac_string
2367 type(yac_string), allocatable :: grid_names(:)
2368 end function yac_fget_grid_names
2369
2370 function yac_fget_grid_names_instance( yac_instance_id ) &
2371 result( grid_names )
2372 import :: yac_string
2373 integer, intent(in) :: yac_instance_id
2374 type(yac_string), allocatable :: grid_names(:)
2375 end function yac_fget_grid_names_instance
2376
2377 end interface yac_fget_grid_names
2378
2380
2381 function yac_fget_comp_grid_names( comp_name ) result( grid_names )
2382 import :: yac_string
2383 character(len=*), intent(in) :: comp_name
2384 type(yac_string), allocatable :: grid_names(:)
2385 end function yac_fget_comp_grid_names
2386
2387 function yac_fget_comp_grid_names_instance( yac_instance_id, comp_name ) &
2388 result( grid_names )
2389 import :: yac_string
2390 integer, intent(in) :: yac_instance_id
2391 character(len=*), intent(in) :: comp_name
2392 type(yac_string), allocatable :: grid_names(:)
2394
2395 end interface yac_fget_comp_grid_names
2396
2398
2399 function yac_fget_field_names( comp_name, grid_name ) result ( field_names )
2400 import :: yac_string
2401 character(len=*), intent(in) :: comp_name
2402 character(len=*), intent(in) :: grid_name
2403 type(yac_string), allocatable :: field_names(:)
2404 end function yac_fget_field_names
2405
2406 function yac_fget_field_names_instance( yac_instance_id, &
2407 comp_name, &
2408 grid_name ) &
2409 result( field_names )
2410 import :: yac_string
2411 integer, intent(in) :: yac_instance_id
2412 character(len=*), intent(in) :: comp_name
2413 character(len=*), intent(in) :: grid_name
2414 type(yac_string), allocatable :: field_names(:)
2416
2417 end interface yac_fget_field_names
2418
2419 ! ---------------------------------------------------------------------
2420
2422
2423 function yac_fget_role_from_field_id ( field_id )
2424
2425 integer, intent (in) :: field_id
2427
2428 end function yac_fget_role_from_field_id
2429
2430 function yac_fget_field_role ( comp_name, grid_name, field_name )
2431 character(len=*), intent(in) :: comp_name
2432 character(len=*), intent(in) :: grid_name
2433 character(len=*), intent(in) :: field_name
2434 integer :: yac_fget_field_role
2435 end function yac_fget_field_role
2436
2437 function yac_fget_field_role_instance ( yac_instance_id, &
2438 comp_name, &
2439 grid_name, &
2440 field_name )
2441 integer, intent(in) :: yac_instance_id
2442 character(len=*), intent(in) :: comp_name
2443 character(len=*), intent(in) :: grid_name
2444 character(len=*), intent(in) :: field_name
2446 end function yac_fget_field_role_instance
2447
2448 end interface yac_fget_field_role
2449
2450 ! ---------------------------------------------------------------------
2451
2453
2454
2455 function yac_fget_timestep_from_field_id ( field_id ) result( timestep )
2456 integer, intent (in) :: field_id
2457 character(len=:), ALLOCATABLE :: timestep
2458
2460
2461 function yac_fget_field_timestep ( comp_name, grid_name, field_name ) &
2462 result( timestep )
2463
2464 character(len=*), intent(in) :: comp_name
2465 character(len=*), intent(in) :: grid_name
2466 character(len=*), intent(in) :: field_name
2467 character(len=:), ALLOCATABLE :: timestep
2468
2469 end function yac_fget_field_timestep
2470
2471 function yac_fget_field_timestep_instance ( yac_instance_id, &
2472 comp_name, &
2473 grid_name, &
2474 field_name ) &
2475 result( timestep )
2476
2477 integer, intent(in) :: yac_instance_id
2478 character(len=*), intent(in) :: comp_name
2479 character(len=*), intent(in) :: grid_name
2480 character(len=*), intent(in) :: field_name
2481 character(len=:), ALLOCATABLE :: timestep
2482
2484
2485 end interface yac_fget_field_timestep
2486
2487 ! ---------------------------------------------------------------------
2488
2490
2491 function yac_fget_field_datetime ( field_id ) &
2492 result( datetime )
2493 integer, intent(in) :: field_id
2494 character(len=:), allocatable :: datetime
2495 end function yac_fget_field_datetime
2496
2497 end interface yac_fget_field_datetime
2498
2499 ! ---------------------------------------------------------------------
2500
2502
2504 comp_name, grid_name, field_name, frac_mask_fallback_value )
2505 character(len=*), intent(in) :: comp_name
2506 character(len=*), intent(in) :: grid_name
2507 character(len=*), intent(in) :: field_name
2508 double precision, intent(in) :: frac_mask_fallback_value
2509 end subroutine yac_fenable_field_frac_mask
2510
2512 yac_instance_id, comp_name, grid_name, field_name, &
2513 frac_mask_fallback_value )
2514 integer, intent(in) :: yac_instance_id
2515 character(len=*), intent(in) :: comp_name
2516 character(len=*), intent(in) :: grid_name
2517 character(len=*), intent(in) :: field_name
2518 double precision, intent(in) :: frac_mask_fallback_value
2520
2521 end interface yac_fenable_field_frac_mask
2522
2523 ! ---------------------------------------------------------------------
2524
2526
2528 comp_name, grid_name, field_name )
2529 character(len=*), intent(in) :: comp_name
2530 character(len=*), intent(in) :: grid_name
2531 character(len=*), intent(in) :: field_name
2532 double precision :: yac_fget_field_frac_mask_fallback_value
2534
2536 yac_instance_id, comp_name, grid_name, field_name )
2537 integer, intent(in) :: yac_instance_id
2538 character(len=*), intent(in) :: comp_name
2539 character(len=*), intent(in) :: grid_name
2540 character(len=*), intent(in) :: field_name
2543
2545
2546 ! ---------------------------------------------------------------------
2547
2549
2551 result(collection_size)
2552
2553 integer, intent (in) :: field_id
2554 integer :: collection_size
2555
2557
2558 function yac_fget_field_collection_size ( comp_name, grid_name, field_name )
2559 character(len=*), intent(in) :: comp_name
2560 character(len=*), intent(in) :: grid_name
2561 character(len=*), intent(in) :: field_name
2564
2565 function yac_fget_field_collection_size_instance ( yac_instance_id, &
2566 comp_name, &
2567 grid_name, &
2568 field_name )
2569 integer, intent(in) :: yac_instance_id
2570 character(len=*), intent(in) :: comp_name
2571 character(len=*), intent(in) :: grid_name
2572 character(len=*), intent(in) :: field_name
2575
2576 end interface yac_fget_field_collection_size
2577
2578 ! ---------------------------------------------------------------------
2579
2581 subroutine yac_fdef_component_metadata(comp_name, metadata)
2582 character(len=*), intent(in) :: comp_name
2583 character(len=*), intent(in) :: metadata
2584 end subroutine yac_fdef_component_metadata
2585
2586 subroutine yac_fdef_component_metadata_instance(yac_instance_id, comp_name, &
2587 metadata)
2588 integer, intent(in) :: yac_instance_id
2589 character(len=*), intent(in) :: comp_name
2590 character(len=*), intent(in) :: metadata
2592 end interface yac_fdef_component_metadata
2593
2595 function yac_fcomponent_has_metadata(comp_name) result( has_metadata )
2596 character(len=*), intent(in) :: comp_name
2597 logical :: has_metadata
2598 end function yac_fcomponent_has_metadata
2599
2600 function yac_fcomponent_has_metadata_instance(yac_instance_id, comp_name) &
2601 result( has_metadata )
2602 integer, intent(in) :: yac_instance_id
2603 character(len=*), intent(in) :: comp_name
2604 logical :: has_metadata
2606 end interface yac_fcomponent_has_metadata
2607
2609 function yac_fget_component_metadata(comp_name) result( metadata )
2610 character(len=*), intent(in) :: comp_name
2611 character(len=:), allocatable :: metadata
2612 end function yac_fget_component_metadata
2613
2614 function yac_fget_component_metadata_instance(yac_instance_id, comp_name) &
2615 result( metadata )
2616 integer, intent(in) :: yac_instance_id
2617 character(len=*), intent(in) :: comp_name
2618 character(len=:), allocatable :: metadata
2620 end interface yac_fget_component_metadata
2621
2623 subroutine yac_fdef_grid_metadata(grid_name, metadata)
2624 character(len=*), intent(in) :: grid_name
2625 character(len=*), intent(in) :: metadata
2626 end subroutine yac_fdef_grid_metadata
2627
2628 subroutine yac_fdef_grid_metadata_instance(yac_instance_id, grid_name, metadata)
2629 integer, intent(in) :: yac_instance_id
2630 character(len=*), intent(in) :: grid_name
2631 character(len=*), intent(in) :: metadata
2632 end subroutine yac_fdef_grid_metadata_instance
2633 end interface yac_fdef_grid_metadata
2634
2636 function yac_fgrid_has_metadata(grid_name) result( has_metadata )
2637 character(len=*), intent(in) :: grid_name
2638 logical :: has_metadata
2639 end function yac_fgrid_has_metadata
2640
2641 function yac_fgrid_has_metadata_instance(yac_instance_id, grid_name) &
2642 result( has_metadata )
2643 integer, intent(in) :: yac_instance_id
2644 character(len=*), intent(in) :: grid_name
2645 logical :: has_metadata
2647 end interface yac_fgrid_has_metadata
2648
2650 function yac_fget_grid_metadata(grid_name) result( metadata )
2651 character(len=*), intent(in) :: grid_name
2652 character(len=:), allocatable :: metadata
2653 end function yac_fget_grid_metadata
2654
2655 function yac_fget_grid_metadata_instance(yac_instance_id, grid_name) &
2656 result( metadata )
2657 integer, intent(in) :: yac_instance_id
2658 character(len=*), intent(in) :: grid_name
2659 character(len=:), allocatable :: metadata
2661 end interface yac_fget_grid_metadata
2662
2664 subroutine yac_fdef_field_metadata(comp_name, grid_name, field_name, metadata)
2665 character(len=*), intent(in) :: comp_name
2666 character(len=*), intent(in) :: grid_name
2667 character(len=*), intent(in) :: field_name
2668 character(len=*), intent(in) :: metadata
2669 end subroutine yac_fdef_field_metadata
2670
2671 subroutine yac_fdef_field_metadata_instance(yac_instance_id, comp_name, &
2672 grid_name, field_name, metadata)
2673 integer, intent(in) :: yac_instance_id
2674 character(len=*), intent(in) :: comp_name
2675 character(len=*), intent(in) :: grid_name
2676 character(len=*), intent(in) :: field_name
2677 character(len=*), intent(in) :: metadata
2679 end interface yac_fdef_field_metadata
2680
2682 function yac_ffield_has_metadata(comp_name, grid_name, field_name) &
2683 result( has_metadata )
2684 character(len=*), intent(in) :: comp_name
2685 character(len=*), intent(in) :: grid_name
2686 character(len=*), intent(in) :: field_name
2687 logical :: has_metadata
2688 end function yac_ffield_has_metadata
2689
2691 yac_instance_id, comp_name, grid_name, field_name) &
2692 result( has_metadata )
2693 integer, intent(in) :: yac_instance_id
2694 character(len=*), intent(in) :: comp_name
2695 character(len=*), intent(in) :: grid_name
2696 character(len=*), intent(in) :: field_name
2697 logical :: has_metadata
2699 end interface yac_ffield_has_metadata
2700
2702 function yac_fget_field_metadata(comp_name, grid_name, field_name) &
2703 result( metadata )
2704 character(len=*), intent(in) :: comp_name
2705 character(len=*), intent(in) :: grid_name
2706 character(len=*), intent(in) :: field_name
2707 character(len=:), allocatable :: metadata
2708 end function yac_fget_field_metadata
2709
2710 function yac_fget_field_metadata_instance(yac_instance_id, comp_name, &
2711 grid_name, field_name) &
2712 result( metadata )
2713 integer, intent(in) :: yac_instance_id
2714 character(len=*), intent(in) :: comp_name
2715 character(len=*), intent(in) :: grid_name
2716 character(len=*), intent(in) :: field_name
2717 character(len=:), allocatable :: metadata
2719 end interface yac_fget_field_metadata
2720
2721 ! ---------------------------------------------------------------------
2722
2723 interface
2724
2725 subroutine yac_fget_action ( field_id, action )
2726
2727 integer, intent (in) :: field_id
2728 integer, intent (out) :: action
2734
2735 end subroutine yac_fget_action
2736
2737 end interface
2738
2739 ! ---------------------------------------------------------------------
2740
2741 interface
2742
2743 subroutine yac_fupdate ( field_id )
2744
2745 integer, intent (in) :: field_id
2746
2747 end subroutine yac_fupdate
2748
2749 end interface
2750
2751! --- ISO_C interface -------------------------------------------------
2752
2755
2756 interface
2757
2758 subroutine yac_abort_message ( text, file, line ) &
2759 bind( c, name='yac_abort_message' )
2760
2761 use, intrinsic :: iso_c_binding, only : c_int, c_char
2762
2763 character ( kind=c_char ), dimension(*) :: text
2764 character ( kind=c_char ), dimension(*) :: file
2765 integer ( kind=c_int ), value :: line
2766
2767 end subroutine yac_abort_message
2768
2769 end interface
2770
2771end module yac
Fortran interface for checking the dimensions of a field.
Fortran interface for the coupler cleanup before restart.
Fortran interface for definition of a couple.
Fortran interface for the definition of time parameters.
Fortran interface for the definition of coupling fields using explicit masks.
Fortran interface for the definition of coupling fields using default masks.
Fortran interface for the definition of grids.
Fortran interface for the definition of points.
Fortran interface for invoking the end of the definition phase.
Fortran interface for exchanging coupling fields.
Fortran interface for the coupler termination.
Fortran interface for asynchronous receiving coupling fields.
Fortran interface for getting back a local MPI communicator.
Fortran interface for getting back a MPI communicator for communication between components.
Fortran interface for getting default instance id.
Fortran interface for invoking query functions.
Fortran interfaces for the definition of an interpolation stack.
Fortran interface for getting the start- and end datetime.
Fortran interface for receiving coupling fields.
Fortran interface for the component definition.
Fortran interface for sending coupling fields.
Fortran interface for the reading of configuration files.
Fortran interface for the setting of a grid core masks.
Fortran interface for the setting of grid global ids.
Fortran interface for the setting of default pointset masks.
Fortran interface for invoking the end of the definition phase.
Fortran interface for testing fields for active communicaitons.
Fortran interface for testing fields for active communicaitons.
@ yac_location_edge
@ yac_location_cell
@ yac_location_corner
@ yac_time_unit_millisecond
@ yac_time_unit_minute
@ yac_time_unit_hour
@ yac_time_unit_year
@ yac_time_unit_second
@ yac_time_unit_iso_format
@ yac_time_unit_month
@ yac_time_unit_day
@ yac_action_coupling
@ yac_action_out_of_bound
@ yac_action_reduction
@ yac_action_put_for_restart
@ yac_action_none
@ yac_action_get_for_restart
@ yac_nnn_gauss
@ yac_nnn_dist
@ yac_nnn_rbf
@ yac_nnn_avg
@ yac_ncc_avg
@ yac_ncc_dist
@ yac_proleptic_gregorian
@ yac_year_of_365_days
@ yac_calendar_not_set
@ yac_year_of_360_days
integer, parameter yac_max_charlen
Constants.
integer yac_yaml_emitter_default_f
Flag paramters for emitting of coupling configurations.
@ yac_conserv_fracarea
@ yac_conserv_destarea
@ yac_avg_bary
@ yac_avg_arithmetic
@ yac_avg_dist
@ yac_spmap_avg
@ yac_spmap_dist
@ yac_reduction_time_average
@ yac_reduction_time_accumulate
@ yac_reduction_time_minimum
@ yac_reduction_time_none
@ yac_reduction_time_maximum
integer, parameter yac_mpi_fint_kind
@ yac_exchange_type_target
@ yac_exchange_type_source
@ yac_exchange_type_none
integer yac_yaml_emitter_json_f
@ yac_spmap_srcarea
@ yac_spmap_invtgtarea
@ yac_spmap_fracarea
@ yac_spmap_none
pointer data types
subroutine yac_fsync_def_instance(yac_instance_id)
character(len=:) function, allocatable yac_fget_field_metadata_instance(yac_instance_id, comp_name, grid_name, field_name)
subroutine yac_fexchange_frac_real_ptr(send_field_id, recv_field_id, send_nbr_pointsets, collection_size, send_field, send_frac_mask, recv_field, send_info, recv_info, ierror)
integer function yac_fget_field_role_instance(yac_instance_id, comp_name, grid_name, field_name)
logical function yac_fgrid_has_metadata_instance(yac_instance_id, grid_name)
subroutine yac_fenddef_and_emit_config_instance(yac_instance_id, emit_flags, config)
subroutine yac_fexchange_dble(send_field_id, recv_field_id, send_nbr_hor_points, send_nbr_pointsets, recv_nbr_hor_points, collection_size, send_field, recv_field, send_info, recv_info, ierror)
subroutine yac_fdef_comp_dummy_instance(yac_instance_id)
character(len=:) function, allocatable yac_fget_component_name_from_field_id(field_id)
subroutine yac_fget_comps_comm_instance(yac_instance_id, comp_names, num_comps, comps_comm)
subroutine yac_fput_frac_single_pointset_real(field_id, nbr_hor_points, collection_size, send_field, send_frac_mask, info, ierror)
subroutine yac_fdef_grid_unstruct_dble(grid_name, nbr_vertices, nbr_cells, nbr_vertices_per_cell_in, x_vertices, y_vertices, cell_to_vertex_in, grid_id, use_ll_edges)
Definition of a uniform unstructured grid (all cells have the number of vertices)
subroutine yac_fput_single_pointset_dble(field_id, nbr_hor_points, collection_size, send_field, info, ierror)
subroutine yac_fdef_lmask_named(grid_id, nbr_points, location, is_valid, name, mask_id)
type(yac_string) function, dimension(:), allocatable yac_fget_comp_names_instance(yac_instance_id)
subroutine yac_fget_real_ptr(field_id, collection_size, recv_field, info, ierror)
character(len=:) function, allocatable yac_fget_grid_name_from_field_id(field_id)
subroutine yac_fexchange_frac_dble_ptr(send_field_id, recv_field_id, send_nbr_pointsets, collection_size, send_field, send_frac_mask, recv_field, send_info, recv_info, ierror)
subroutine yac_finit_instance(yac_instance_id)
character(len=:) function, allocatable yac_fget_field_timestep_instance(yac_instance_id, comp_name, grid_name, field_name)
subroutine yac_fdef_datetime_instance(yac_instance_id, start_datetime, end_datetime)
subroutine yac_fput_frac_dble(field_id, nbr_hor_points, nbr_pointsets, collection_size, send_field, send_frac_mask, info, ierror)
subroutine yac_fput_frac_single_pointset_dble(field_id, nbr_hor_points, collection_size, send_field, send_frac_mask, info, ierror)
subroutine yac_fexchange_frac_real(send_field_id, recv_field_id, send_nbr_hor_points, send_nbr_pointsets, recv_nbr_hor_points, collection_size, send_field, send_frac_mask, recv_field, send_info, recv_info, ierror)
subroutine yac_fexchange_frac_dble(send_field_id, recv_field_id, send_nbr_hor_points, send_nbr_pointsets, recv_nbr_hor_points, collection_size, send_field, send_frac_mask, recv_field, send_info, recv_info, ierror)
subroutine yac_fdef_grid_metadata_instance(yac_instance_id, grid_name, metadata)
subroutine yac_fput_dble_ptr(field_id, nbr_pointsets, collection_size, send_field, info, ierror)
subroutine yac_fexchange_single_pointset_dble(send_field_id, recv_field_id, send_nbr_hor_points, recv_nbr_hor_points, collection_size, send_field, recv_field, send_info, recv_info, ierror)
subroutine yac_fdef_grid_unstruct_real(grid_name, nbr_vertices, nbr_cells, nbr_vertices_per_cell_in, x_vertices_real, y_vertices_real, cell_to_vertex_in, grid_id, use_ll_edges)
Definition of a uniform unstructured grid (all cells have the number of vertices)
subroutine yac_fcleanup_instance(yac_instance_id)
subroutine yac_fget_dble(field_id, nbr_hor_points, collection_size, recv_field, info, ierror)
integer function yac_fget_field_id_instance(yac_id, comp_name, grid_name, field_name)
subroutine yac_fdef_points_curve2d_dble(grid_id, nbr_points, location, x_points, y_points, point_id)
subroutine yac_fdef_grid_curve2d_dble(grid_name, nbr_vertices, cyclic, x_vertices, y_vertices, grid_id)
Definition of a 2d curvilinear grid.
type(yac_string) function, dimension(:), allocatable yac_fget_comp_grid_names_instance(yac_instance_id, comp_name)
subroutine yac_finit_comm_dummy(world_comm)
type(yac_string) function, dimension(:), allocatable yac_fget_grid_names_instance(yac_instance_id)
subroutine yac_fdef_imask(grid_id, nbr_points, location, is_valid, mask_id)
subroutine yac_fdef_points_reg2d_real(grid_id, nbr_points, location, x_points_real, y_points_real, point_id)
character(len=:) function, allocatable yac_fget_timestep_from_field_id(field_id)
character(len=:) function, allocatable yac_fget_field_name_from_field_id(field_id)
subroutine yac_fput_dble(field_id, nbr_hor_points, nbr_pointsets, collection_size, send_field, info, ierror)
subroutine yac_fput_single_pointset_real(field_id, nbr_hor_points, collection_size, send_field, info, ierror)
subroutine yac_finit_comm_instance(comm, yac_instance_id)
logical function yac_fcomponent_has_metadata_instance(yac_instance_id, comp_name)
subroutine yac_fset_lmask(is_valid, points_id)
subroutine yac_fdef_imask_named(grid_id, nbr_points, location, is_valid, name, mask_id)
subroutine yac_fdef_grid_curve2d_real(grid_name, nbr_vertices, cyclic, x_vertices_real, y_vertices_real, grid_id)
Definition of a 2d curvilinear grid.
type(yac_string) function, dimension(:), allocatable yac_fget_field_names_instance(yac_instance_id, comp_name, grid_name)
subroutine yac_fdef_couple_instance(instance_id, src_comp_name, src_grid_name, src_field_name, tgt_comp_name, tgt_grid_name, tgt_field_name, coupling_timestep, time_unit, time_reduction, interp_stack_config_id, src_lag, tgt_lag, weight_file, mapping_side, scale_factor, scale_summand, src_mask_names, tgt_mask_name)
subroutine yac_fdef_comp_instance(yac_instance_id, comp_name, comp_id)
subroutine yac_fdef_grid_nonuniform_real(grid_name, nbr_vertices, nbr_cells, nbr_connections, nbr_vertices_per_cell, x_vertices_real, y_vertices_real, cell_to_vertex_in, grid_id, use_ll_edges)
Definition of a non-uniform unstructured grid (cells have varying numbers of vertices)
subroutine yac_fexchange_frac_single_pointset_dble(send_field_id, recv_field_id, send_nbr_hor_points, recv_nbr_hor_points, collection_size, send_field, send_frac_mask, recv_field, send_info, recv_info, ierror)
subroutine yac_ftest_l(field_id, flag)
double precision function yac_fget_field_frac_mask_fallback_value_instance(yac_instance_id, comp_name, grid_name, field_name)
logical function yac_ffield_has_metadata_instance(yac_instance_id, comp_name, grid_name, field_name)
subroutine yac_fput_real_ptr(field_id, nbr_pointsets, collection_size, send_field, info, ierror)
subroutine yac_ffinalize_instance(yac_instance_id)
integer function yac_fget_collection_size_from_field_id(field_id)
subroutine yac_fset_core_imask(is_core, location, grid_id)
integer function yac_fget_role_from_field_id(field_id)
subroutine yac_fenable_field_frac_mask_instance(yac_instance_id, comp_name, grid_name, field_name, frac_mask_fallback_value)
subroutine yac_fget_async_dble_ptr(field_id, collection_size, recv_field, info, ierror)
character(len=:) function, allocatable yac_fget_end_datetime_instance(yac_instance_id)
subroutine yac_fread_config_yaml_instance(yac_instance_id, yaml_filename)
subroutine yac_fput_frac_dble_ptr(field_id, nbr_pointsets, collection_size, send_field, send_frac_mask, info, ierror)
subroutine yac_fexchange_real(send_field_id, recv_field_id, send_nbr_hor_points, send_nbr_pointsets, recv_nbr_hor_points, collection_size, send_field, recv_field, send_info, recv_info, ierror)
subroutine yac_fput_frac_real(field_id, nbr_hor_points, nbr_pointsets, collection_size, send_field, send_frac_mask, info, ierror)
subroutine yac_fexchange_real_ptr(send_field_id, recv_field_id, send_nbr_pointsets, collection_size, send_field, recv_field, send_info, recv_info, ierror)
character(len=:) function, allocatable yac_fget_grid_metadata_instance(yac_instance_id, grid_name)
subroutine yac_ftest_i(field_id, flag)
subroutine yac_fset_core_lmask(is_core, location, grid_id)
subroutine yac_fdef_points_curve2d_real(grid_id, nbr_points, location, x_points_real, y_points_real, point_id)
subroutine yac_fget_real(field_id, nbr_hor_points, collection_size, recv_field, info, ierror)
subroutine yac_fenddef_and_emit_config(emit_flags, config)
integer function yac_fget_field_collection_size_instance(yac_instance_id, comp_name, grid_name, field_name)
subroutine yac_fexchange_dble_ptr(send_field_id, recv_field_id, send_nbr_pointsets, collection_size, send_field, recv_field, send_info, recv_info, ierror)
subroutine yac_fput_real(field_id, nbr_hor_points, nbr_pointsets, collection_size, send_field, info, ierror)
subroutine yac_fdef_comps_instance(yac_instance_id, comp_names, num_comps, comp_ids)
subroutine yac_fget_dble_ptr(field_id, collection_size, recv_field, info, ierror)
subroutine yac_fenddef_instance(yac_instance_id)
character(len=:) function, allocatable yac_fget_component_metadata_instance(yac_instance_id, comp_name)
subroutine yac_fput_frac_real_ptr(field_id, nbr_pointsets, collection_size, send_field, send_frac_mask, info, ierror)
subroutine yac_fdef_lmask(grid_id, nbr_points, location, is_valid, mask_id)
subroutine yac_fdef_component_metadata_instance(yac_instance_id, comp_name, metadata)
subroutine yac_fset_imask(is_valid, points_id)
subroutine yac_fpredef_comp_instance(yac_instance_id, comp_name, comp_id)
subroutine yac_fexchange_single_pointset_real(send_field_id, recv_field_id, send_nbr_hor_points, recv_nbr_hor_points, collection_size, send_field, recv_field, send_info, recv_info, ierror)
subroutine yac_fexchange_frac_single_pointset_real(send_field_id, recv_field_id, send_nbr_hor_points, recv_nbr_hor_points, collection_size, send_field, send_frac_mask, recv_field, send_info, recv_info, ierror)
subroutine yac_fdef_grid_nonuniform_dble(grid_name, nbr_vertices, nbr_cells, nbr_connections, nbr_vertices_per_cell, x_vertices, y_vertices, cell_to_vertex_in, grid_id, use_ll_edges)
Definition of a non-uniform unstructured grid (cells have varying numbers of vertices)
subroutine yac_fdef_field_metadata_instance(yac_instance_id, comp_name, grid_name, field_name, metadata)
subroutine yac_fread_config_json_instance(yac_instance_id, json_filename)
subroutine yac_fdef_grid_reg2d_dble(grid_name, nbr_vertices, cyclic, x_vertices, y_vertices, grid_id)
Definition of a 2d regular grid.
subroutine yac_fdef_points_unstruct_real(grid_id, nbr_points, location, x_points_real, y_points_real, point_id)
subroutine yac_fdef_points_reg2d_dble(grid_id, nbr_points, location, x_points, y_points, point_id)
subroutine yac_fdef_grid_reg2d_real(grid_name, nbr_vertices, cyclic, x_vertices_real, y_vertices_real, grid_id)
Definition of a 2d regular grid.
subroutine yac_fdef_points_unstruct_dble(grid_id, nbr_points, location, x_points, y_points, point_id)
character(len=:) function, allocatable yac_fget_start_datetime_instance(yac_instance_id)