7 use,
intrinsic :: iso_c_binding, only: c_null_char
17 "(use yac_fcomponent_has_metadata to check for the existence of " // &
18 "metadata before calling yac_fget_component_metadata)"
21 "(use yac_fgrid_has_metadata to check for the existence of " // &
22 "metadata before calling yac_fget_grid_metadata)"
25 "(use yac_ffield_has_metadata to check for the existence of " // &
26 "metadata before calling yac_fget_field_metadata)"
31#ifndef YAC_CODE_COVERAGE_TEST
32#define YAC_FASSERT(exp, msg) IF (.NOT. exp) call yac_abort_message(TRIM(msg) // c_null_char, TRIM(__FILE__) // c_null_char, __LINE__)
33#define YAC_CHECK_STRING_LEN(routine, str) YAC_FASSERT(LEN_TRIM(str) < YAC_MAX_CHARLEN, "ERROR(" // TRIM(routine) // "): string """ // TRIM(str) // """ exceeds length of YAC_MAX_CHARLEN")
35#define YAC_FASSERT(exp, msg)
36#define YAC_CHECK_STRING_LEN(routine, str)
44 use,
intrinsic :: iso_c_binding, only: c_ptr, c_char, &
49 TYPE(c_ptr),
intent(in) :: cptr
50 CHARACTER(len=:),
allocatable :: string
51 CHARACTER(kind=c_char),
dimension(:),
pointer :: chars
52 INTEGER(kind=c_size_t) :: i, strlen
55 function strlen_c(str_ptr)
bind ( C, name = "strlen" ) result(len)
56 use,
intrinsic :: iso_c_binding
57 type(c_ptr),
value :: str_ptr
58 integer(kind=c_size_t) :: len
62 strlen = strlen_c(cptr)
63 CALL c_f_pointer(cptr, chars, [ strlen ])
64 allocate(
character(len=strlen) :: string)
66 string(i:i) = chars(i)
73 use,
intrinsic :: iso_c_binding, only: c_ptr, c_loc, c_null_ptr
75 character(len=*),
intent(in) :: routine
76 character(len=*),
intent(in) :: ptr_name
80 if (
SIZE(dble_ptr%p) > 0)
then
81 yac_fassert(is_contiguous(dble_ptr%p),
"ERROR(" // trim(routine) //
"): " // trim(ptr_name) //
" is not contiguous")
112 use,
intrinsic :: iso_c_binding, only: c_ptr, c_f_pointer, c_int, c_associated
118 function yac_get_field_put_mask_c2f_c ( field_id ) &
119 bind( c, name=
'yac_get_field_put_mask_c2f' )
121 use,
intrinsic :: iso_c_binding, only : c_int, c_ptr
123 integer ( kind=c_int ),
value :: field_id
124 type(c_ptr) :: yac_get_field_put_mask_c2f_c
126 end function yac_get_field_put_mask_c2f_c
130 integer,
intent (in) :: field_id
131 integer,
intent (in) :: nbr_hor_points
132 integer,
intent (in) :: nbr_pointsets
133 integer,
intent (in) :: collection_size
134 real,
intent (in) :: send_field(nbr_hor_points, &
137 double precision,
intent (out) :: send_field_dble(nbr_hor_points, &
140 real,
optional,
intent (in) :: send_frac_mask(nbr_hor_points, &
143 double precision,
optional,
intent (out) :: send_frac_mask_dble(nbr_hor_points, &
148 type(c_ptr) :: put_mask_
149 type(c_ptr),
pointer :: put_mask(:)
150 integer(kind=c_int),
pointer :: pointset_put_mask(:)
154 put_mask_ = yac_get_field_put_mask_c2f_c(field_id)
155 if (c_associated(put_mask_))
then
156 call c_f_pointer(put_mask_, put_mask, shape=[nbr_pointsets])
157 do i = 1, collection_size
158 do j = 1, nbr_pointsets
160 put_mask(j), pointset_put_mask, shape=[nbr_hor_points])
161 do k = 1, nbr_hor_points
162 if (pointset_put_mask(k) /= 0)
then
163 send_field_dble(k, j, i) = dble(send_field(k, j, i))
165 send_field_dble(k, j, i) = 0d0
170 if (
present(send_frac_mask))
then
171 do i = 1, collection_size
172 do j = 1, nbr_pointsets
174 put_mask(j), pointset_put_mask, shape=[nbr_hor_points])
175 do k = 1, nbr_hor_points
176 if (pointset_put_mask(k) /= 0)
then
177 send_frac_mask_dble(k, j, i) = dble(send_frac_mask(k, j, i))
179 send_frac_mask_dble(k, j, i) = 0d0
186 send_field_dble = dble(send_field)
187 if (
present(send_frac_mask))
then
188 send_frac_mask_dble = dble(send_frac_mask)
192 send_field_dble = 0d0
193 if (
present(send_frac_mask))
then
194 send_frac_mask_dble = 0d0
208 use,
intrinsic :: iso_c_binding, only: c_ptr, c_f_pointer, c_int, c_associated
214 function yac_get_field_put_mask_c2f_c ( field_id ) &
215 bind( c, name=
'yac_get_field_put_mask_c2f' )
217 use,
intrinsic :: iso_c_binding, only : c_int, c_ptr
219 integer ( kind=c_int ),
value :: field_id
220 type(c_ptr) :: yac_get_field_put_mask_c2f_c
222 end function yac_get_field_put_mask_c2f_c
226 integer,
intent (in) :: field_id
227 integer,
intent (in) :: nbr_hor_points
228 integer,
intent (in) :: collection_size
229 real,
intent (in) :: send_field(nbr_hor_points, &
231 double precision,
intent (out) :: send_field_dble(nbr_hor_points, &
233 real,
optional,
intent (in) :: send_frac_mask(nbr_hor_points, &
235 double precision,
optional,
intent (out) :: send_frac_mask_dble(nbr_hor_points, &
239 type(c_ptr) :: put_mask_
240 type(c_ptr),
pointer :: put_mask(:)
241 integer(kind=c_int),
pointer :: pointset_put_mask(:)
245 put_mask_ = yac_get_field_put_mask_c2f_c(field_id)
246 if (c_associated(put_mask_))
then
247 call c_f_pointer(put_mask_, put_mask, shape=[1])
248 do i = 1, collection_size
250 put_mask(1), pointset_put_mask, shape=[nbr_hor_points])
251 do j = 1, nbr_hor_points
252 if (pointset_put_mask(j) /= 0)
then
253 send_field_dble(j, i) = dble(send_field(j, i))
255 send_field_dble(j, i) = 0d0
259 if (
present(send_frac_mask))
then
260 do i = 1, collection_size
262 put_mask(1), pointset_put_mask, shape=[nbr_hor_points])
263 do j = 1, nbr_hor_points
264 if (pointset_put_mask(j) /= 0)
then
265 send_frac_mask_dble(j, i) = dble(send_frac_mask(j, i))
267 send_frac_mask_dble(j, i) = 0d0
273 send_field_dble = dble(send_field)
274 if (
present(send_frac_mask))
then
275 send_frac_mask_dble = dble(send_frac_mask)
279 send_field_dble = 0d0
280 if (
present(send_frac_mask))
then
281 send_frac_mask_dble = 0d0
295 use,
intrinsic :: iso_c_binding, only: c_ptr, c_f_pointer, c_int, c_associated
301 function yac_get_field_put_mask_c2f_c ( field_id ) &
302 bind( c, name=
'yac_get_field_put_mask_c2f' )
304 use,
intrinsic :: iso_c_binding, only : c_int, c_ptr
306 integer ( kind=c_int ),
value :: field_id
307 type(c_ptr) :: yac_get_field_put_mask_c2f_c
309 end function yac_get_field_put_mask_c2f_c
313 integer,
intent (in) :: field_id
314 integer,
intent (in) :: nbr_pointsets
315 integer,
intent (in) :: collection_size
316 type(
yac_real_ptr),
intent (in) :: send_field(nbr_pointsets, &
318 type(
yac_dble_ptr),
intent (out) :: send_field_dble(nbr_pointsets, &
320 type(
yac_real_ptr),
optional,
intent (in) :: send_frac_mask(nbr_pointsets, &
322 type(
yac_dble_ptr),
optional,
intent (out) :: send_frac_mask_dble(nbr_pointsets, &
325 integer :: i, j, k, nbr_hor_points
326 type(c_ptr) :: put_mask_
327 type(c_ptr),
pointer :: put_mask(:)
328 integer(kind=c_int),
pointer :: pointset_put_mask(:)
332 put_mask_ = yac_get_field_put_mask_c2f_c(field_id)
333 if (c_associated(put_mask_))
then
334 call c_f_pointer(put_mask_, put_mask, shape=[nbr_pointsets])
335 do i = 1, collection_size
336 do j = 1, nbr_pointsets
337 nbr_hor_points =
size(send_field(j,i)%p)
338 allocate(send_field_dble(j,i)%p(nbr_hor_points))
340 put_mask(j), pointset_put_mask, shape=[nbr_hor_points])
341 do k = 1, nbr_hor_points
342 if (pointset_put_mask(k) /= 0)
then
343 send_field_dble(j, i)%p(k) = dble(send_field(j, i)%p(k))
345 send_field_dble(j, i)%p(k) = 0d0
350 if (
present(send_frac_mask))
then
351 do i = 1, collection_size
352 do j = 1, nbr_pointsets
353 nbr_hor_points =
size(send_frac_mask(j,i)%p)
354 allocate(send_frac_mask_dble(j,i)%p(nbr_hor_points))
356 put_mask(j), pointset_put_mask, shape=[nbr_hor_points])
357 do k = 1, nbr_hor_points
358 if (pointset_put_mask(k) /= 0)
then
359 send_frac_mask_dble(j, i)%p(k) = dble(send_frac_mask(j, i)%p(k))
361 send_frac_mask_dble(j, i)%p(k) = 0d0
368 do i = 1, collection_size
369 do j = 1, nbr_pointsets
370 nbr_hor_points =
size(send_field(j,i)%p)
371 allocate(send_field_dble(j,i)%p(nbr_hor_points))
372 send_field_dble(j,i)%p = dble(send_field(j,i)%p)
375 if (
present(send_frac_mask))
then
376 do i = 1, collection_size
377 do j = 1, nbr_pointsets
378 nbr_hor_points =
size(send_frac_mask(j,i)%p)
379 allocate(send_frac_mask_dble(j,i)%p(nbr_hor_points))
380 send_frac_mask_dble(j,i)%p = dble(send_frac_mask(j,i)%p)
386 do i = 1, collection_size
387 do j = 1, nbr_pointsets
388 nbr_hor_points =
size(send_field(j,i)%p)
389 allocate(send_field_dble(j,i)%p(nbr_hor_points))
390 send_field_dble(j,i)%p = 0d0
393 if (
present(send_frac_mask))
then
394 do i = 1, collection_size
395 do j = 1, nbr_pointsets
396 nbr_hor_points =
size(send_frac_mask(j,i)%p)
397 allocate(send_frac_mask_dble(j,i)%p(nbr_hor_points))
398 send_frac_mask_dble(j,i)%p = 0d0
414 use,
intrinsic :: iso_c_binding, only: c_ptr, c_f_pointer, c_int, c_associated
420 function yac_get_field_get_mask_c2f_c ( field_id ) &
421 bind( c, name=
'yac_get_field_get_mask_c2f' )
423 use,
intrinsic :: iso_c_binding, only : c_int, c_ptr
425 integer ( kind=c_int ),
value :: field_id
426 type(c_ptr) :: yac_get_field_get_mask_c2f_c
428 end function yac_get_field_get_mask_c2f_c
432 integer,
intent (in) :: field_id
433 integer,
intent (in) :: nbr_hor_points
434 integer,
intent (in) :: collection_size
435 real,
intent (in) :: recv_field(nbr_hor_points, &
437 double precision,
intent (out) :: recv_field_dble(nbr_hor_points, &
441 type(c_ptr) :: get_mask_
442 integer(kind=c_int),
pointer :: get_mask(:)
446 get_mask_ = yac_get_field_get_mask_c2f_c(field_id)
447 if (c_associated(get_mask_))
then
448 call c_f_pointer(get_mask_, get_mask, shape=[nbr_hor_points])
449 do i = 1, collection_size
450 do j = 1, nbr_hor_points
451 if (get_mask(j) /= 0)
then
452 recv_field_dble(j, i) = dble(recv_field(j, i))
454 recv_field_dble(j, i) = 0d0
459 recv_field_dble = dble(recv_field)
462 recv_field_dble = 0d0
472 use,
intrinsic :: iso_c_binding, only: c_ptr, c_f_pointer, c_int, c_associated
478 function yac_get_field_get_mask_c2f_c ( field_id ) &
479 bind( c, name=
'yac_get_field_get_mask_c2f' )
481 use,
intrinsic :: iso_c_binding, only : c_int, c_ptr
483 integer ( kind=c_int ),
value :: field_id
484 type(c_ptr) :: yac_get_field_get_mask_c2f_c
486 end function yac_get_field_get_mask_c2f_c
490 integer,
intent (in) :: field_id
491 integer,
intent (in) :: collection_size
492 type(
yac_real_ptr),
intent (in) :: recv_field(collection_size)
493 type(
yac_dble_ptr),
intent (out) :: recv_field_dble(collection_size)
495 integer :: i, j, nbr_hor_points
496 type(c_ptr) :: get_mask_
497 integer(kind=c_int),
pointer :: get_mask(:)
501 get_mask_ = yac_get_field_get_mask_c2f_c(field_id)
502 if (c_associated(get_mask_) .and. (collection_size > 0))
then
503 nbr_hor_points =
size(recv_field(1)%p)
504 call c_f_pointer(get_mask_, get_mask, shape=[nbr_hor_points])
505 do i = 1, collection_size
506 nbr_hor_points =
size(recv_field(i)%p)
507 allocate(recv_field_dble(i)%p(nbr_hor_points))
508 do j = 1, nbr_hor_points
509 if (get_mask(j) /= 0)
then
510 recv_field_dble(i)%p(j) = dble(recv_field(i)%p(j))
512 recv_field_dble(i)%p(j) = 0d0
517 do i = 1, collection_size
518 nbr_hor_points =
size(recv_field(i)%p)
519 allocate(recv_field_dble(i)%p(nbr_hor_points))
520 recv_field_dble(i)%p = dble(recv_field(i)%p)
524 do i = 1, collection_size
525 nbr_hor_points =
size(recv_field(i)%p)
526 allocate(recv_field_dble(i)%p(nbr_hor_points))
527 recv_field_dble(i)%p = 0d0
541 use,
intrinsic :: iso_c_binding, only: c_ptr, c_f_pointer, c_int, c_associated
547 function yac_get_field_get_mask_c2f_c ( field_id ) &
548 bind( c, name=
'yac_get_field_get_mask_c2f' )
550 use,
intrinsic :: iso_c_binding, only : c_int, c_ptr
552 integer ( kind=c_int ),
value :: field_id
553 type(c_ptr) :: yac_get_field_get_mask_c2f_c
555 end function yac_get_field_get_mask_c2f_c
559 integer,
intent (in) :: field_id
560 integer,
intent (in) :: nbr_hor_points
561 integer,
intent (in) :: collection_size
562 double precision,
intent (in) :: recv_field_dble(nbr_hor_points, &
564 real,
intent (inout) :: recv_field(nbr_hor_points, &
568 type(c_ptr) :: get_mask_
569 integer(kind=c_int),
pointer :: get_mask(:)
573 get_mask_ = yac_get_field_get_mask_c2f_c(field_id)
574 if (c_associated(get_mask_))
then
575 call c_f_pointer(get_mask_, get_mask, shape=[nbr_hor_points])
576 do i = 1, collection_size
577 do j = 1, nbr_hor_points
578 if (get_mask(j) /= 0)
then
579 recv_field(j, i) = real(recv_field_dble(j, i))
584 recv_field = real(recv_field_dble)
595 use,
intrinsic :: iso_c_binding, only: c_ptr, c_f_pointer, c_int, c_associated
601 function yac_get_field_get_mask_c2f_c ( field_id ) &
602 bind( c, name=
'yac_get_field_get_mask_c2f' )
604 use,
intrinsic :: iso_c_binding, only : c_int, c_ptr
606 integer ( kind=c_int ),
value :: field_id
607 type(c_ptr) :: yac_get_field_get_mask_c2f_c
609 end function yac_get_field_get_mask_c2f_c
613 integer,
intent (in) :: field_id
614 integer,
intent (in) :: collection_size
615 type(
yac_dble_ptr),
intent (inout) :: recv_field_dble(collection_size)
616 type(
yac_real_ptr),
intent (inout) :: recv_field(collection_size)
618 integer :: i, j, nbr_hor_points
619 type(c_ptr) :: get_mask_
620 integer(kind=c_int),
pointer :: get_mask(:)
624 get_mask_ = yac_get_field_get_mask_c2f_c(field_id)
625 if (c_associated(get_mask_) .and. (collection_size > 0))
then
626 nbr_hor_points =
size(recv_field(1)%p)
627 call c_f_pointer(get_mask_, get_mask, shape=[nbr_hor_points])
628 do i = 1, collection_size
629 nbr_hor_points =
size(recv_field(i)%p)
630 do j = 1, nbr_hor_points
631 if (get_mask(j) /= 0)
then
632 recv_field(i)%p(j) = real(recv_field_dble(i)%p(j))
635 deallocate(recv_field_dble(i)%p)
638 do i = 1, collection_size
639 recv_field(i)%p = real(recv_field_dble(i)%p)
640 deallocate(recv_field_dble(i)%p)
651 use,
intrinsic :: iso_c_binding, only : c_ptr, c_null_char, c_loc
654 use,
intrinsic :: iso_c_binding, only : c_char
659 subroutine yac_cmpi_handshake_c (comm, n, group_names, group_comms) &
660 bind( c, name=
'yac_cmpi_handshake_f2c')
661 use,
intrinsic :: iso_c_binding, only : c_ptr, c_int
663 integer (kind = YAC_MPI_FINT_KIND ),
intent(in),
value :: comm
664 integer(c_int),
intent(in),
value :: n
665 type (c_ptr) ,
intent(in) :: group_names(n)
666 integer (kind = YAC_MPI_FINT_KIND ),
intent(out) :: group_comms(n)
667 end subroutine yac_cmpi_handshake_c
670 integer,
intent(in) :: comm
671 character(len=YAC_MAX_CHARLEN),
intent(in) :: group_names(:)
672 integer,
intent(out) :: group_comms(SIZE(group_names))
674 CHARACTER (kind=c_char, len=YAC_MAX_CHARLEN+1),
TARGET,
allocatable :: &
676 type( c_ptr ),
allocatable :: group_name_ptr(:)
678 allocate(group_names_cpy(
SIZE(group_names)))
679 allocate(group_name_ptr(
SIZE(group_names)))
680 DO i=1,
SIZE(group_names)
681 group_names_cpy(i) = trim(group_names(i)) // c_null_char
682 group_name_ptr(i) = c_loc(group_names_cpy(i))
685 call yac_cmpi_handshake_c( &
686 comm,
SIZE(group_names), group_name_ptr, group_comms)
688 deallocate(group_names_cpy)
689 deallocate(group_name_ptr)
702 function yac_cyaml_get_emitter_flag_default () &
703 bind( c, name=
'yac_cyaml_get_emitter_flag_default_c2f' )
705 use,
intrinsic :: iso_c_binding, only : c_int
707 integer ( kind=c_int) :: yac_cyaml_get_emitter_flag_default
709 end function yac_cyaml_get_emitter_flag_default
711 function yac_cyaml_get_emitter_flag_json () &
712 bind( c, name=
'yac_cyaml_get_emitter_flag_json_c2f' )
714 use,
intrinsic :: iso_c_binding, only : c_int
716 integer ( kind=c_int) :: yac_cyaml_get_emitter_flag_json
718 end function yac_cyaml_get_emitter_flag_json
735 subroutine yac_cinit_comm_c ( comm ) &
736 bind( c, name=
'yac_cinit_comm_f2c' )
740 integer ( kind=YAC_MPI_FINT_KIND ),
value :: comm
742 end subroutine yac_cinit_comm_c
749 integer,
intent(in) :: comm
752 call yac_cinit_comm_c ( comm )
764 subroutine yac_cinit_comm_instance_c ( comm, yac_instance_id) &
765 bind( c, name=
'yac_cinit_comm_instance_f2c' )
767 use,
intrinsic :: iso_c_binding, only : c_int
770 integer ( kind=YAC_MPI_FINT_KIND ),
value :: comm
771 integer (kind=c_int) :: yac_instance_id
773 end subroutine yac_cinit_comm_instance_c
780 integer,
intent(in) :: comm
781 integer,
intent(out) :: yac_instance_id
784 call yac_cinit_comm_instance_c ( comm, yac_instance_id )
796 subroutine yac_cinit_c ( ) &
797 bind( c, name=
'yac_cinit' )
799 end subroutine yac_cinit_c
819 subroutine yac_cinit_instance_c ( yac_instance_id ) &
820 bind( c, name=
'yac_cinit_instance' )
822 use,
intrinsic :: iso_c_binding, only : c_int
824 integer (kind=c_int) :: yac_instance_id
826 end subroutine yac_cinit_instance_c
833 integer,
intent(out) :: yac_instance_id
836 call yac_cinit_instance_c ( yac_instance_id )
848 subroutine yac_cinit_comm_dummy_c ( world_comm ) &
849 bind( c, name=
'yac_cinit_comm_dummy_f2c' )
853 integer ( kind=YAC_MPI_FINT_KIND ),
value :: world_comm
855 end subroutine yac_cinit_comm_dummy_c
862 integer,
intent(in) :: world_comm
865 call yac_cinit_comm_dummy_c ( world_comm )
877 subroutine yac_cinit_dummy_c ( ) &
878 bind( c, name=
'yac_cinit_dummy' )
880 end subroutine yac_cinit_dummy_c
888 call yac_cinit_dummy_c ( )
902 function yac_cget_default_instance_id_c ( ) &
903 bind( c, name=
'yac_cget_default_instance_id' )
904 use,
intrinsic :: iso_c_binding, only : c_int
906 integer(kind=c_int) :: yac_cget_default_instance_id_c
908 end function yac_cget_default_instance_id_c
923 use,
intrinsic :: iso_c_binding, only : c_int
929 function yac_cdefault_instance_defined_c ( ) &
930 bind( c, name=
'yac_cdefault_instance_defined' )
931 use,
intrinsic :: iso_c_binding, only : c_int
933 integer(kind=c_int) :: yac_cdefault_instance_defined_c
935 end function yac_cdefault_instance_defined_c
942 yac_cdefault_instance_defined_c( ) /= 0_c_int
950 use,
intrinsic :: iso_c_binding, only : c_null_char
956 subroutine yac_cread_config_yaml_c(yaml_filename) &
957 bind( c, name=
'yac_cread_config_yaml' )
958 use,
intrinsic :: iso_c_binding, only : c_char
959 character (kind=c_char),
dimension(*) :: yaml_filename
960 end subroutine yac_cread_config_yaml_c
963 character(len=*),
intent(in) :: yaml_filename
965 call yac_cread_config_yaml_c(trim(yaml_filename) // c_null_char)
971 use,
intrinsic :: iso_c_binding, only : c_null_char
977 subroutine yac_cread_config_yaml_instance_c( &
978 yac_instance_id, yaml_filename) &
979 bind( c, name=
'yac_cread_config_yaml_instance' )
980 use,
intrinsic :: iso_c_binding, only : c_char, c_int
981 integer (kind=c_int),
value :: yac_instance_id
982 character (kind=c_char),
dimension(*) :: yaml_filename
983 end subroutine yac_cread_config_yaml_instance_c
986 integer,
intent(in) :: yac_instance_id
987 character(len=*),
intent(in) :: yaml_filename
989 call yac_cread_config_yaml_instance_c(yac_instance_id, &
990 & trim(yaml_filename) // c_null_char)
996 use,
intrinsic :: iso_c_binding, only : c_null_char
1002 subroutine yac_cread_config_json_c(json_filename) &
1003 bind( c, name=
'yac_cread_config_json' )
1004 use,
intrinsic :: iso_c_binding, only : c_char
1005 character (kind=c_char),
dimension(*) :: json_filename
1006 end subroutine yac_cread_config_json_c
1009 character(len=*),
intent(in) :: json_filename
1011 call yac_cread_config_json_c(trim(json_filename) // c_null_char)
1017 use,
intrinsic :: iso_c_binding, only : c_null_char
1023 subroutine yac_cread_config_json_instance_c( &
1024 yac_instance_id, json_filename) &
1025 bind( c, name=
'yac_cread_config_json_instance' )
1026 use,
intrinsic :: iso_c_binding, only : c_char, c_int
1027 integer (kind=c_int),
value :: yac_instance_id
1028 character (kind=c_char),
dimension(*) :: json_filename
1029 end subroutine yac_cread_config_json_instance_c
1032 integer,
intent(in) :: yac_instance_id
1033 character(len=*),
intent(in) :: json_filename
1035 call yac_cread_config_json_instance_c(yac_instance_id, &
1036 & trim(json_filename) // c_null_char)
1043 filename, fileformat, sync_location, include_definitions)
1045 use,
intrinsic :: iso_c_binding, only : c_null_char, c_int
1051 subroutine yac_cset_config_output_file_c(&
1052 filename, fileformat, sync_location, include_definitions) &
1053 bind( c, name=
'yac_cset_config_output_file' )
1054 use,
intrinsic :: iso_c_binding, only : c_char, c_int
1055 character (kind=c_char),
dimension(*) :: filename
1056 integer (kind=c_int),
value :: fileformat
1057 integer (kind=c_int),
value :: sync_location
1058 integer (kind=c_int),
value :: include_definitions
1059 end subroutine yac_cset_config_output_file_c
1062 character(len=*),
intent(in) :: filename
1063 integer,
intent(in) :: fileformat
1064 integer,
intent(in) :: sync_location
1065 logical,
intent(in),
optional :: include_definitions
1067 integer(kind=c_int) :: c_include_definitions
1069 if (
present(include_definitions))
then
1070 c_include_definitions =
merge(1_c_int, 0_c_int, include_definitions)
1072 c_include_definitions = 0_c_int
1075 call yac_cset_config_output_file_c( &
1076 trim(filename) // c_null_char, fileformat, sync_location, &
1077 c_include_definitions)
1082 yac_instance_id, filename, fileformat, sync_location, include_definitions)
1084 use,
intrinsic :: iso_c_binding, only : c_null_char
1090 subroutine yac_cset_config_output_file_instance_c(&
1091 yac_instance_id, filename, fileformat, sync_location, &
1092 include_definitions) &
1093 bind( c, name=
'yac_cset_config_output_file_instance' )
1094 use,
intrinsic :: iso_c_binding, only : c_char, c_int
1095 integer (kind=c_int),
value :: yac_instance_id
1096 character (kind=c_char),
dimension(*) :: filename
1097 integer (kind=c_int),
value :: fileformat
1098 integer (kind=c_int),
value :: sync_location
1099 integer (kind=c_int),
value :: include_definitions
1100 end subroutine yac_cset_config_output_file_instance_c
1103 integer,
intent(in) :: yac_instance_id
1104 character(len=*),
intent(in) :: filename
1105 integer,
intent(in) :: fileformat
1106 integer,
intent(in) :: sync_location
1107 logical,
intent(in),
optional :: include_definitions
1109 integer(kind=c_int) :: c_include_definitions
1111 if (
present(include_definitions))
then
1112 c_include_definitions =
merge(1_c_int, 0_c_int, include_definitions)
1114 c_include_definitions = 0_c_int
1117 call yac_cset_config_output_file_instance_c( &
1118 yac_instance_id, trim(filename) // c_null_char, fileformat, sync_location, &
1119 c_include_definitions)
1128 use,
intrinsic :: iso_c_binding, only : c_null_char
1134 subroutine yac_cset_grid_output_file_c(&
1135 gridname, filename) &
1136 bind( c, name=
'yac_cset_grid_output_file' )
1137 use,
intrinsic :: iso_c_binding, only : c_char
1138 character (kind=c_char),
dimension(*) :: gridname
1139 character (kind=c_char),
dimension(*) :: filename
1140 end subroutine yac_cset_grid_output_file_c
1143 character(len=*),
intent(in) :: gridname
1144 character(len=*),
intent(in) :: filename
1146 call yac_cset_grid_output_file_c( &
1147 trim(gridname) // c_null_char, trim(filename) // c_null_char)
1152 yac_instance_id, gridname, filename)
1154 use,
intrinsic :: iso_c_binding, only : c_null_char
1160 subroutine yac_cset_grid_output_file_instance_c(&
1161 yac_instance_id, gridname, filename) &
1162 bind( c, name=
'yac_cset_grid_output_file_instance' )
1163 use,
intrinsic :: iso_c_binding, only : c_char, c_int
1164 integer (kind=c_int),
value :: yac_instance_id
1165 character (kind=c_char),
dimension(*) :: gridname
1166 character (kind=c_char),
dimension(*) :: filename
1167 end subroutine yac_cset_grid_output_file_instance_c
1170 integer,
intent(in) :: yac_instance_id
1171 character(len=*),
intent(in) :: gridname
1172 character(len=*),
intent(in) :: filename
1174 call yac_cset_grid_output_file_instance_c( &
1175 yac_instance_id, trim(gridname) // c_null_char, &
1176 trim(filename) // c_null_char)
1183 use,
intrinsic :: iso_c_binding, only : c_null_char
1189 subroutine yac_cset_grids_output_file_c(&
1191 bind( c, name=
'yac_cset_grids_output_file' )
1192 use,
intrinsic :: iso_c_binding, only : c_char
1193 character (kind=c_char),
dimension(*) :: filename
1194 end subroutine yac_cset_grids_output_file_c
1197 character(len=*),
intent(in) :: filename
1199 call yac_cset_grids_output_file_c(trim(filename) // c_null_char)
1204 yac_instance_id, filename)
1206 use,
intrinsic :: iso_c_binding, only : c_null_char
1212 subroutine yac_cset_grids_output_file_instance_c(&
1213 yac_instance_id, filename) &
1214 bind( c, name=
'yac_cset_grids_output_file_instance' )
1215 use,
intrinsic :: iso_c_binding, only : c_char, c_int
1216 integer (kind=c_int),
value :: yac_instance_id
1217 character (kind=c_char),
dimension(*) :: filename
1218 end subroutine yac_cset_grids_output_file_instance_c
1221 integer,
intent(in) :: yac_instance_id
1222 character(len=*),
intent(in) :: filename
1224 call yac_cset_grids_output_file_instance_c( &
1225 yac_instance_id, trim(filename) // c_null_char)
1233 use,
intrinsic :: iso_c_binding, only : c_int
1239 subroutine yac_cset_coordinates_check_c( apply_check ) &
1240 bind( c, name=
'yac_cset_coordinates_check' )
1241 use,
intrinsic :: iso_c_binding, only : c_int
1242 integer (kind=c_int),
value :: apply_check
1243 end subroutine yac_cset_coordinates_check_c
1247 logical,
intent(in) :: apply_check
1249 call yac_cset_coordinates_check_c(
merge(1_c_int, 0_c_int, apply_check) )
1255 use,
intrinsic :: iso_c_binding, only : c_int
1261 subroutine yac_cset_coordinates_check_instance_c( &
1262 yac_instance_id, apply_check ) &
1263 bind( c, name=
'yac_cset_coordinates_check_instance' )
1264 use,
intrinsic :: iso_c_binding, only : c_int
1265 integer (kind=c_int),
value :: yac_instance_id
1266 integer (kind=c_int),
value :: apply_check
1267 end subroutine yac_cset_coordinates_check_instance_c
1271 integer,
intent(in) :: yac_instance_id
1273 logical,
intent(in) :: apply_check
1275 call yac_cset_coordinates_check_instance_c( &
1276 yac_instance_id,
merge(1_c_int, 0_c_int, apply_check) )
1284 use,
intrinsic :: iso_c_binding, only : c_int
1290 subroutine yac_cset_coordinates_mismatch_is_fatal_c( is_fatal ) &
1291 bind( c, name=
'yac_cset_coordinates_mismatch_is_fatal' )
1292 use,
intrinsic :: iso_c_binding, only : c_int
1293 integer (kind=c_int),
value :: is_fatal
1294 end subroutine yac_cset_coordinates_mismatch_is_fatal_c
1298 logical,
intent(in) :: is_fatal
1300 call yac_cset_coordinates_mismatch_is_fatal_c( &
1301 merge(1_c_int, 0_c_int, is_fatal) )
1306 yac_instance_id, is_fatal )
1308 use,
intrinsic :: iso_c_binding, only : c_int
1314 subroutine yac_cset_coordinates_mismatch_is_fatal_instance_c( &
1315 yac_instance_id, is_fatal ) &
1316 bind( c, name=
'yac_cset_coordinates_mismatch_is_fatal_instance' )
1317 use,
intrinsic :: iso_c_binding, only : c_int
1318 integer (kind=c_int),
value :: yac_instance_id
1319 integer (kind=c_int),
value :: is_fatal
1320 end subroutine yac_cset_coordinates_mismatch_is_fatal_instance_c
1324 integer,
intent(in) :: yac_instance_id
1326 logical,
intent(in) :: is_fatal
1328 call yac_cset_coordinates_mismatch_is_fatal_instance_c( &
1329 yac_instance_id,
merge(1_c_int, 0_c_int, is_fatal) )
1343 subroutine yac_ccleanup_c () bind ( c, name='yac_ccleanup' )
1344 end subroutine yac_ccleanup_c
1348 call yac_ccleanup_c ( )
1360 subroutine yac_ccleanup_instance_c ( yac_instance_id ) &
1361 bind( c, name=
'yac_ccleanup_instance' )
1363 use,
intrinsic :: iso_c_binding, only : c_int
1365 integer (kind=c_int),
value :: yac_instance_id
1367 end subroutine yac_ccleanup_instance_c
1371 integer,
intent(in) :: yac_instance_id
1373 call yac_ccleanup_instance_c ( yac_instance_id )
1386 subroutine yac_cfinalize_c () bind ( c, name='yac_cfinalize' )
1387 end subroutine yac_cfinalize_c
1390 call yac_cfinalize_c ( )
1401 subroutine yac_cfinalize_instance_c ( yac_instance_id ) &
1402 bind( c, name=
'yac_cfinalize_instance' )
1404 use,
intrinsic :: iso_c_binding, only : c_int
1406 integer (kind=c_int),
value :: yac_instance_id
1408 end subroutine yac_cfinalize_instance_c
1411 integer,
intent(in) :: yac_instance_id
1413 call yac_cfinalize_instance_c ( yac_instance_id )
1421 use,
intrinsic :: iso_c_binding, only : c_ptr
1428 function yac_cget_version_c () bind ( c, name='yac_cget_version' )
1430 use,
intrinsic :: iso_c_binding, only : c_ptr
1431 type(c_ptr) :: yac_cget_version_c
1433 end function yac_cget_version_c
1436 type (c_ptr) :: c_string_ptr
1437 character (len=:),
allocatable :: version_string
1439 c_string_ptr = yac_cget_version_c()
1448 use,
intrinsic :: iso_c_binding, only : c_ptr
1455 function yac_cget_mpi_handshake_group_name_c () &
1456 bind( c, name=
'yac_cget_mpi_handshake_group_name' )
1458 use,
intrinsic :: iso_c_binding, only : c_ptr
1459 type(c_ptr) :: yac_cget_mpi_handshake_group_name_c
1461 end function yac_cget_mpi_handshake_group_name_c
1464 type (c_ptr) :: c_string_ptr
1465 character (len=:),
allocatable :: mpi_handshake_group_name
1467 c_string_ptr = yac_cget_mpi_handshake_group_name_c()
1476 use,
intrinsic :: iso_c_binding, only : c_char, c_null_char
1484 subroutine yac_cdef_datetime_c ( start_datetime, end_datetime ) &
1485 & bind( c, name=
'yac_cdef_datetime' )
1487 use,
intrinsic :: iso_c_binding, only : c_char
1489 character ( kind=c_char),
dimension(*) :: start_datetime
1490 character ( kind=c_char),
dimension(*) :: end_datetime
1492 end subroutine yac_cdef_datetime_c
1496 character(len=*),
intent(in),
optional :: start_datetime
1497 character(len=*),
intent(in),
optional :: end_datetime
1499 character(kind=c_char, len=YAC_MAX_CHARLEN+1) :: start_datetime_c
1500 character(kind=c_char, len=YAC_MAX_CHARLEN+1) :: end_datetime_c
1502 if (
present(start_datetime))
then
1503 yac_check_string_len(
"yac_fdef_datetime", start_datetime )
1504 start_datetime_c = trim(start_datetime) // c_null_char
1506 start_datetime_c = c_null_char
1509 if (
present(end_datetime))
then
1510 yac_check_string_len(
"yac_fdef_datetime", end_datetime )
1511 end_datetime_c = trim(end_datetime) // c_null_char
1513 end_datetime_c = c_null_char
1516 call yac_cdef_datetime_c ( start_datetime_c, end_datetime_c )
1521 yac_instance_id, start_datetime, end_datetime )
1523 use,
intrinsic :: iso_c_binding, only : c_char, c_null_char
1531 subroutine yac_cdef_datetime_instance_c ( yac_instance_id, &
1534 bind( c, name=
'yac_cdef_datetime_instance' )
1536 use,
intrinsic :: iso_c_binding, only : c_char, c_int
1538 integer (kind=c_int),
value :: yac_instance_id
1539 character ( kind=c_char),
dimension(*) :: start_datetime
1540 character ( kind=c_char),
dimension(*) :: end_datetime
1542 end subroutine yac_cdef_datetime_instance_c
1546 integer,
intent(in) :: yac_instance_id
1547 character(len=*),
intent(in),
optional :: start_datetime
1548 character(len=*),
intent(in),
optional :: end_datetime
1550 character(kind=c_char, len=YAC_MAX_CHARLEN+1) :: start_datetime_c
1551 character(kind=c_char, len=YAC_MAX_CHARLEN+1) :: end_datetime_c
1553 if (
present(start_datetime))
then
1554 yac_check_string_len(
"yac_fdef_datetime_instance", start_datetime )
1555 start_datetime_c = trim(start_datetime) // c_null_char
1557 start_datetime_c = c_null_char
1560 if (
present(end_datetime))
then
1561 yac_check_string_len(
"yac_fdef_datetime_instance", end_datetime )
1562 end_datetime_c = trim(end_datetime) // c_null_char
1564 end_datetime_c = c_null_char
1567 call yac_cdef_datetime_instance_c ( yac_instance_id, &
1581 subroutine yac_cdef_calendar_c ( calendar ) &
1582 bind( c, name=
'yac_cdef_calendar' )
1583 use,
intrinsic :: iso_c_binding, only : c_int
1585 integer ( kind=c_int ),
value :: calendar
1587 end subroutine yac_cdef_calendar_c
1591 integer,
intent(in) :: calendar
1593 call yac_cdef_calendar_c ( calendar )
1605 function yac_cget_calendar_c ( ) &
1606 bind( c, name=
'yac_cget_calendar' )
1607 use,
intrinsic :: iso_c_binding, only : c_int
1609 integer ( kind=c_int ) :: yac_cget_calendar_c
1611 end function yac_cget_calendar_c
1615 integer,
intent(out) :: calendar
1617 calendar = yac_cget_calendar_c()
1625 use,
intrinsic :: iso_c_binding, only : c_null_char
1633 SUBROUTINE yac_cpredef_comp_c ( comp_name, comp_id ) &
1634 bind( c, name=
'yac_cpredef_comp' )
1636 use,
intrinsic :: iso_c_binding, only : c_int, c_char
1638 character ( kind=c_char),
dimension(*) :: comp_name
1639 integer ( kind=c_int ) :: comp_id
1641 END SUBROUTINE yac_cpredef_comp_c
1645 character(len=*),
intent(in) :: comp_name
1646 integer,
intent(out) :: comp_id
1648 yac_check_string_len(
"yac_fpredef_comp", comp_name )
1650 call yac_cpredef_comp_c ( trim(comp_name) // c_null_char, comp_id )
1656 use,
intrinsic :: iso_c_binding, only : c_null_char
1664 SUBROUTINE yac_cpredef_comp_instance_c ( yac_instance_id, &
1667 bind( c, name=
'yac_cpredef_comp_instance' )
1669 use,
intrinsic :: iso_c_binding, only : c_int, c_char
1671 integer (kind=c_int),
value :: yac_instance_id
1672 character ( kind=c_char),
dimension(*) :: comp_name
1673 integer ( kind=c_int ) :: comp_id
1675 END SUBROUTINE yac_cpredef_comp_instance_c
1679 integer,
intent(in) :: yac_instance_id
1680 character(len=*),
intent(in) :: comp_name
1681 integer,
intent(out) :: comp_id
1683 yac_check_string_len(
"yac_fpredef_comp_instance", comp_name )
1685 call yac_cpredef_comp_instance_c( yac_instance_id, &
1686 trim(comp_name) // c_null_char, &
1695 use,
intrinsic :: iso_c_binding, only : c_null_char
1703 subroutine yac_cdef_comp_c ( comp_name, comp_id ) &
1704 bind( c, name=
'yac_cdef_comp' )
1706 use,
intrinsic :: iso_c_binding, only : c_int, c_char
1708 character ( kind=c_char),
dimension(*) :: comp_name
1709 integer ( kind=c_int ) :: comp_id
1711 end subroutine yac_cdef_comp_c
1715 character(len=*),
intent(in) :: comp_name
1716 integer,
intent(out) :: comp_id
1718 yac_check_string_len(
"yac_fdef_comp", comp_name )
1720 call yac_cdef_comp_c ( trim(comp_name) // c_null_char, comp_id )
1726 use,
intrinsic :: iso_c_binding, only : c_null_char
1734 subroutine yac_cdef_comp_instance_c ( yac_instance_id, &
1737 bind( c, name=
'yac_cdef_comp_instance' )
1739 use,
intrinsic :: iso_c_binding, only : c_int, c_char
1741 integer (kind=c_int),
value :: yac_instance_id
1742 character ( kind=c_char),
dimension(*) :: comp_name
1743 integer ( kind=c_int ) :: comp_id
1745 end subroutine yac_cdef_comp_instance_c
1749 integer,
intent(in) :: yac_instance_id
1750 character(len=*),
intent(in) :: comp_name
1751 integer,
intent(out) :: comp_id
1753 yac_check_string_len(
"yac_fdef_comp_instance", comp_name )
1755 call yac_cdef_comp_instance_c( yac_instance_id, &
1756 trim(comp_name) // c_null_char, &
1765 use,
intrinsic :: iso_c_binding, only : c_null_char, c_ptr, c_loc, c_char
1773 subroutine yac_cdef_comps_c ( comp_names, num_comps, comp_ids ) &
1774 bind( c, name=
'yac_cdef_comps' )
1776 use,
intrinsic :: iso_c_binding, only : c_int, c_ptr
1778 type ( c_ptr ),
value :: comp_names
1779 integer ( kind=c_int ),
value :: num_comps
1780 integer ( kind=c_int ) :: comp_ids(*)
1782 end subroutine yac_cdef_comps_c
1786 integer,
intent(in) :: num_comps
1787 character(kind=c_char, len=*),
intent(in) :: &
1788 comp_names(num_comps)
1789 integer,
intent(out) :: comp_ids(num_comps)
1792 character(kind=c_char),
target,
allocatable :: comp_names_cpy(:,:)
1793 type(c_ptr),
target,
allocatable :: comp_name_ptrs(:)
1796 allocate(comp_name_ptrs(num_comps))
1797 comp_names_cpy = c_null_char
1800 yac_check_string_len(
"yac_fdef_comps", comp_names(i))
1801 do j = 1, len_trim(comp_names(i))
1802 comp_names_cpy(j,i) = comp_names(i)(j:j)
1804 comp_name_ptrs(i) = c_loc(comp_names_cpy(1,i))
1807 call yac_cdef_comps_c ( c_loc(comp_name_ptrs), num_comps, comp_ids )
1809 deallocate(comp_names_cpy)
1810 deallocate(comp_name_ptrs)
1819 use,
intrinsic :: iso_c_binding, only : c_null_char, c_ptr, c_loc, c_char
1827 subroutine yac_cdef_comps_instance_c ( yac_instance_id, &
1831 bind( c, name=
'yac_cdef_comps_instance' )
1833 use,
intrinsic :: iso_c_binding, only : c_int, c_ptr
1835 integer (kind=c_int),
value :: yac_instance_id
1836 type ( c_ptr ),
value :: comp_names
1837 integer ( kind=c_int ),
value :: num_comps
1838 integer ( kind=c_int ) :: comp_ids(*)
1840 end subroutine yac_cdef_comps_instance_c
1844 integer,
intent(in) :: yac_instance_id
1845 integer,
intent(in) :: num_comps
1846 character(kind=c_char, len=*),
intent(in) :: &
1847 comp_names(num_comps)
1848 integer,
intent(out) :: comp_ids(num_comps)
1851 character(kind=c_char),
target,
allocatable :: comp_names_cpy(:,:)
1852 type(c_ptr),
target,
allocatable :: comp_name_ptrs(:)
1855 allocate(comp_name_ptrs(num_comps))
1856 comp_names_cpy = c_null_char
1859 yac_check_string_len(
"yac_fdef_comps_instance", comp_names(i))
1860 do j = 1, len_trim(comp_names(i))
1861 comp_names_cpy(j,i) = comp_names(i)(j:j)
1863 comp_name_ptrs(i) = c_loc(comp_names_cpy(1,i))
1866 call yac_cdef_comps_instance_c ( yac_instance_id, &
1867 c_loc(comp_name_ptrs), &
1871 deallocate(comp_names_cpy)
1872 deallocate(comp_name_ptrs)
1881 use,
intrinsic :: iso_c_binding, only : c_null_ptr, c_int
1888 subroutine yac_cdef_comps_dummy_c ( comp_names, num_comps, comp_ids ) &
1889 bind( c, name=
'yac_cdef_comps' )
1891 use,
intrinsic :: iso_c_binding, only : c_int, c_ptr
1893 type ( c_ptr ),
value :: comp_names
1894 integer ( kind=c_int ),
value :: num_comps
1895 integer ( kind=c_int ) :: comp_ids(*)
1897 end subroutine yac_cdef_comps_dummy_c
1901 call yac_cdef_comps_dummy_c ( c_null_ptr, 0_c_int, [
integer( kind=c_int ) :: ] )
1907 use,
intrinsic :: iso_c_binding, only : c_null_ptr, c_int
1914 subroutine yac_cdef_comps_dummy_instance_c ( &
1915 yac_instance_id, comp_names, num_comps, comp_ids ) &
1916 bind( c, name=
'yac_cdef_comps_instance' )
1918 use,
intrinsic :: iso_c_binding, only : c_int, c_ptr
1920 integer (kind=c_int),
value :: yac_instance_id
1921 type ( c_ptr ),
value :: comp_names
1922 integer ( kind=c_int ),
value :: num_comps
1923 integer ( kind=c_int ) :: comp_ids(*)
1925 end subroutine yac_cdef_comps_dummy_instance_c
1929 integer,
intent(in) :: yac_instance_id
1931 call yac_cdef_comps_dummy_instance_c( yac_instance_id, &
1934 [
integer( kind=c_int ) :: ] )
1951 integer,
intent(in) :: grid_id
1952 integer,
intent(in) :: nbr_points(2)
1953 integer,
intent(in) :: location
1954 real,
intent(in) :: x_points_real(nbr_points(1))
1955 real,
intent(in) :: y_points_real(nbr_points(2))
1956 integer,
intent(out) :: point_id
1958 double precision,
allocatable :: x_points(:)
1959 double precision,
allocatable :: y_points(:)
1961 allocate(x_points(nbr_points(1)))
1962 allocate(y_points(nbr_points(2)))
1963 x_points(:) = dble(x_points_real(:))
1964 y_points(:) = dble(y_points_real(:))
1973 deallocate(x_points)
1974 deallocate(y_points)
1991 subroutine yac_cdef_points_reg2d_c ( grid_id, &
1997 & bind( c, name=
'yac_cdef_points_reg2d' )
1999 use,
intrinsic :: iso_c_binding, only : c_int, c_double
2001 integer ( kind=c_int ),
value :: grid_id
2002 integer ( kind=c_int ) :: nbr_points(2)
2003 integer ( kind=c_int ),
value :: location
2005 real ( kind=c_double ) :: x_points(nbr_points(1))
2006 real ( kind=c_double ) :: y_points(nbr_points(2))
2008 integer ( kind=c_int ) :: point_id
2010 end subroutine yac_cdef_points_reg2d_c
2014 integer,
intent(in) :: grid_id
2015 integer,
intent(in) :: nbr_points(2)
2016 integer,
intent(in) :: location
2018 double precision,
intent(in) :: x_points(nbr_points(1))
2019 double precision,
intent(in) :: y_points(nbr_points(2))
2021 integer,
intent(out) :: point_id
2023 call yac_cdef_points_reg2d_c ( grid_id, &
2043 integer,
intent(in) :: grid_id
2044 integer,
intent(in) :: nbr_points(2)
2045 integer,
intent(in) :: location
2046 real,
intent(in) :: &
2047 x_points_real(nbr_points(1),nbr_points(2))
2048 real,
intent(in) :: &
2049 y_points_real(nbr_points(1),nbr_points(2))
2050 integer,
intent(out) :: point_id
2052 double precision,
allocatable :: x_points(:,:)
2053 double precision,
allocatable :: y_points(:,:)
2055 allocate(x_points(nbr_points(1),nbr_points(2)))
2056 allocate(y_points(nbr_points(1),nbr_points(2)))
2057 x_points(:,:) = dble(x_points_real(:,:))
2058 y_points(:,:) = dble(y_points_real(:,:))
2067 deallocate(x_points)
2068 deallocate(y_points)
2085 subroutine yac_cdef_points_curve2d_c ( grid_id, &
2091 bind( c, name=
'yac_cdef_points_curve2d' )
2093 use,
intrinsic :: iso_c_binding, only : c_int, c_double
2095 integer ( kind=c_int ),
value :: grid_id
2096 integer ( kind=c_int ) :: nbr_points(2)
2097 integer ( kind=c_int ),
value :: location
2099 real ( kind=c_double ) :: x_points(nbr_points(1),nbr_points(2))
2100 real ( kind=c_double ) :: y_points(nbr_points(1),nbr_points(2))
2102 integer ( kind=c_int ) :: point_id
2104 end subroutine yac_cdef_points_curve2d_c
2108 integer,
intent(in) :: grid_id
2109 integer,
intent(in) :: nbr_points(2)
2110 integer,
intent(in) :: location
2112 double precision,
intent(in) :: &
2113 x_points(nbr_points(1),nbr_points(2))
2114 double precision,
intent(in) :: &
2115 y_points(nbr_points(1),nbr_points(2))
2117 integer,
intent(out) :: point_id
2119 call yac_cdef_points_curve2d_c ( grid_id, &
2139 integer,
intent(in) :: grid_id
2140 integer,
intent(in) :: nbr_points
2141 integer,
intent(in) :: location
2143 real,
intent(in) :: x_points_real(nbr_points)
2144 real,
intent(in) :: y_points_real(nbr_points)
2146 integer,
intent(out) :: point_id
2148 double precision,
allocatable :: x_points(:)
2149 double precision,
allocatable :: y_points(:)
2151 allocate(x_points(nbr_points))
2152 allocate(y_points(nbr_points))
2153 x_points(:) = dble(x_points_real(:))
2154 y_points(:) = dble(y_points_real(:))
2163 deallocate(x_points)
2164 deallocate(y_points)
2181 subroutine yac_cdef_points_unstruct_c ( grid_id, &
2187 bind( c, name=
'yac_cdef_points_unstruct' )
2189 use,
intrinsic :: iso_c_binding, only : c_int, c_double
2191 integer (kind=c_int),
value :: grid_id
2192 integer (kind=c_int),
value :: nbr_points
2193 integer (kind=c_int),
value :: location
2195 real (kind=c_double) :: x_points(nbr_points)
2196 real (kind=c_double) :: y_points(nbr_points)
2198 integer (kind=c_int) :: point_id
2200 end subroutine yac_cdef_points_unstruct_c
2204 integer,
intent(in) :: grid_id
2205 integer,
intent(in) :: nbr_points
2206 integer,
intent(in) :: location
2208 double precision,
intent(in) :: x_points(nbr_points)
2209 double precision,
intent(in) :: y_points(nbr_points)
2211 integer,
intent(out) :: point_id
2213 call yac_cdef_points_unstruct_c ( grid_id, &
2227 x_north_pole_real, &
2228 y_north_pole_real, &
2235 integer,
intent(in) :: grid_id
2236 integer,
intent(in) :: nbr_points(2)
2237 integer,
intent(in) :: location
2238 real,
intent(in) :: x_points_real(nbr_points(1))
2239 real,
intent(in) :: y_points_real(nbr_points(2))
2240 real,
intent(in) :: x_north_pole_real
2241 real,
intent(in) :: y_north_pole_real
2242 integer,
intent(out) :: point_id
2244 double precision,
allocatable :: x_points(:)
2245 double precision,
allocatable :: y_points(:)
2246 double precision :: x_north_pole
2247 double precision :: y_north_pole
2249 allocate(x_points(nbr_points(1)))
2250 allocate(y_points(nbr_points(2)))
2251 x_points(:) = dble(x_points_real(:))
2252 y_points(:) = dble(y_points_real(:))
2254 x_north_pole = dble(x_north_pole_real)
2255 y_north_pole = dble(y_north_pole_real)
2266 deallocate(x_points)
2267 deallocate(y_points)
2286 subroutine yac_cdef_points_reg2d_rot_c ( grid_id, &
2294 & bind( c, name=
'yac_cdef_points_reg2d_rot' )
2296 use,
intrinsic :: iso_c_binding, only : c_int, c_double
2298 integer ( kind=c_int ),
value :: grid_id
2299 integer ( kind=c_int ) :: nbr_points(2)
2300 integer ( kind=c_int ),
value :: location
2302 real ( kind=c_double ) :: x_points(nbr_points(1))
2303 real ( kind=c_double ) :: y_points(nbr_points(2))
2305 real ( kind=c_double ),
value :: x_north_pole
2306 real ( kind=c_double ),
value :: y_north_pole
2308 integer ( kind=c_int ) :: point_id
2310 end subroutine yac_cdef_points_reg2d_rot_c
2314 integer,
intent(in) :: grid_id
2315 integer,
intent(in) :: nbr_points(2)
2316 integer,
intent(in) :: location
2318 double precision,
intent(in) :: x_points(nbr_points(1))
2319 double precision,
intent(in) :: y_points(nbr_points(2))
2320 double precision,
intent(in) :: x_north_pole
2321 double precision,
intent(in) :: y_north_pole
2323 integer,
intent(out) :: point_id
2325 call yac_cdef_points_reg2d_rot_c ( grid_id, &
2350 integer,
intent(in) :: grid_id
2351 integer,
intent(in) :: nbr_points(2)
2352 integer,
intent(in) :: location
2353 real,
intent(in) :: x_points_real(nbr_points(1))
2354 real,
intent(in) :: y_points_real(nbr_points(2))
2355 character(len=*),
intent(in) :: name
2356 integer,
intent(out) :: point_id
2358 double precision,
allocatable :: x_points(:)
2359 double precision,
allocatable :: y_points(:)
2361 allocate(x_points(nbr_points(1)))
2362 allocate(y_points(nbr_points(2)))
2363 x_points(:) = dble(x_points_real(:))
2364 y_points(:) = dble(y_points_real(:))
2374 deallocate(x_points)
2375 deallocate(y_points)
2387 use,
intrinsic :: iso_c_binding, only : c_null_char
2395 subroutine yac_cdef_points_reg2d_named_c ( grid_id, &
2402 bind( c, name=
'yac_cdef_points_reg2d_named' )
2404 use,
intrinsic :: iso_c_binding, only : c_int, c_double, c_char
2406 integer ( kind=c_int ),
value :: grid_id
2407 integer ( kind=c_int ) :: nbr_points(2)
2408 integer ( kind=c_int ),
value :: location
2409 real ( kind=c_double ) :: x_points(nbr_points(1))
2410 real ( kind=c_double ) :: y_points(nbr_points(2))
2411 character ( kind=c_char ),
dimension(*) :: name
2412 integer ( kind=c_int ) :: point_id
2414 end subroutine yac_cdef_points_reg2d_named_c
2418 integer,
intent(in) :: grid_id
2419 integer,
intent(in) :: nbr_points(2)
2420 integer,
intent(in) :: location
2421 double precision,
intent(in) :: x_points(nbr_points(1))
2422 double precision,
intent(in) :: y_points(nbr_points(2))
2423 character(len=*),
intent(in) :: name
2424 integer,
intent(out) :: point_id
2426 yac_check_string_len(
"yac_fdef_points_reg2d_named_dble", name )
2428 call yac_cdef_points_reg2d_named_c ( grid_id, &
2433 trim(name) // c_null_char, &
2450 integer,
intent(in) :: grid_id
2451 integer,
intent(in) :: nbr_points(2)
2452 integer,
intent(in) :: location
2453 real,
intent(in) :: x_points_real(nbr_points(1),nbr_points(2))
2454 real,
intent(in) :: y_points_real(nbr_points(1),nbr_points(2))
2455 character(len=*),
intent(in) :: name
2456 integer,
intent(out) :: point_id
2458 double precision,
allocatable :: x_points(:,:)
2459 double precision,
allocatable :: y_points(:,:)
2461 allocate(x_points(nbr_points(1),nbr_points(2)))
2462 allocate(y_points(nbr_points(1),nbr_points(2)))
2463 x_points(:,:) = dble(x_points_real(:,:))
2464 y_points(:,:) = dble(y_points_real(:,:))
2474 deallocate(x_points)
2475 deallocate(y_points)
2487 use,
intrinsic :: iso_c_binding, only : c_null_char
2495 subroutine yac_cdef_points_curve2d_named_c ( grid_id, &
2502 bind( c, name=
'yac_cdef_points_curve2d_named' )
2504 use,
intrinsic :: iso_c_binding, only : c_int, c_double, c_char
2506 integer ( kind=c_int ),
value :: grid_id
2507 integer ( kind=c_int ) :: nbr_points(2)
2508 integer ( kind=c_int ),
value :: location
2509 real ( kind=c_double ) :: x_points(nbr_points(1),nbr_points(2))
2510 real ( kind=c_double ) :: y_points(nbr_points(1),nbr_points(2))
2511 character ( kind=c_char ),
dimension(*) :: name
2512 integer ( kind=c_int ) :: point_id
2514 end subroutine yac_cdef_points_curve2d_named_c
2518 integer,
intent(in) :: grid_id
2519 integer,
intent(in) :: nbr_points(2)
2520 integer,
intent(in) :: location
2521 double precision,
intent(in) :: x_points(nbr_points(1),nbr_points(2))
2522 double precision,
intent(in) :: y_points(nbr_points(1),nbr_points(2))
2523 character(len=*),
intent(in) :: name
2524 integer,
intent(out) :: point_id
2526 yac_check_string_len(
"yac_fdef_points_curve2d_named_dble", name )
2528 call yac_cdef_points_curve2d_named_c ( grid_id, &
2533 trim(name) // c_null_char, &
2550 integer,
intent(in) :: grid_id
2551 integer,
intent(in) :: nbr_points
2552 integer,
intent(in) :: location
2553 real,
intent(in) :: x_points_real(nbr_points)
2554 real,
intent(in) :: y_points_real(nbr_points)
2555 character(len=*),
intent(in) :: name
2556 integer,
intent(out) :: point_id
2558 double precision,
allocatable :: x_points(:)
2559 double precision,
allocatable :: y_points(:)
2561 allocate(x_points(nbr_points))
2562 allocate(y_points(nbr_points))
2563 x_points(:) = dble(x_points_real(:))
2564 y_points(:) = dble(y_points_real(:))
2574 deallocate(x_points)
2575 deallocate(y_points)
2587 use,
intrinsic :: iso_c_binding, only : c_null_char
2595 subroutine yac_cdef_points_unstruct_named_c ( grid_id, &
2602 bind( c, name=
'yac_cdef_points_unstruct_named' )
2604 use,
intrinsic :: iso_c_binding, only : c_int, c_double, c_char
2606 integer ( kind=c_int ),
value :: grid_id
2607 integer ( kind=c_int ),
value :: nbr_points
2608 integer ( kind=c_int ),
value :: location
2609 real ( kind=c_double ) :: x_points(nbr_points)
2610 real ( kind=c_double ) :: y_points(nbr_points)
2611 character ( kind=c_char ),
dimension(*) :: name
2612 integer ( kind=c_int ) :: point_id
2614 end subroutine yac_cdef_points_unstruct_named_c
2618 integer,
intent(in) :: grid_id
2619 integer,
intent(in) :: nbr_points
2620 integer,
intent(in) :: location
2621 double precision,
intent(in) :: x_points(nbr_points)
2622 double precision,
intent(in) :: y_points(nbr_points)
2623 character(len=*),
intent(in) :: name
2624 integer,
intent(out) :: point_id
2626 yac_check_string_len(
"yac_fdef_points_unstruct_named_dble", name )
2628 call yac_cdef_points_unstruct_named_c ( grid_id, &
2633 trim(name) // c_null_char, &
2643 x_north_pole_real, &
2644 y_north_pole_real, &
2652 integer,
intent(in) :: grid_id
2653 integer,
intent(in) :: nbr_points(2)
2654 integer,
intent(in) :: location
2655 real,
intent(in) :: x_points_real(nbr_points(1))
2656 real,
intent(in) :: y_points_real(nbr_points(2))
2657 real,
intent(in) :: x_north_pole_real
2658 real,
intent(in) :: y_north_pole_real
2659 character(len=*),
intent(in) :: name
2660 integer,
intent(out) :: point_id
2662 double precision,
allocatable :: x_points(:)
2663 double precision,
allocatable :: y_points(:)
2664 double precision :: x_north_pole
2665 double precision :: y_north_pole
2667 allocate(x_points(nbr_points(1)))
2668 allocate(y_points(nbr_points(2)))
2669 x_points(:) = dble(x_points_real(:))
2670 y_points(:) = dble(y_points_real(:))
2671 x_north_pole = dble(x_north_pole_real)
2672 y_north_pole = dble(y_north_pole_real)
2684 deallocate(x_points)
2685 deallocate(y_points)
2699 use,
intrinsic :: iso_c_binding, only : c_null_char
2707 subroutine yac_cdef_points_reg2d_rot_named_c ( grid_id, &
2716 bind( c, name=
'yac_cdef_points_reg2d_rot_named' )
2718 use,
intrinsic :: iso_c_binding, only : c_int, c_double, c_char
2720 integer ( kind=c_int ),
value :: grid_id
2721 integer ( kind=c_int ) :: nbr_points(2)
2722 integer ( kind=c_int ),
value :: location
2723 real ( kind=c_double ) :: x_points(nbr_points(1))
2724 real ( kind=c_double ) :: y_points(nbr_points(2))
2725 real ( kind=c_double ),
value :: x_north_pole
2726 real ( kind=c_double ),
value :: y_north_pole
2727 character ( kind=c_char ),
dimension(*) :: name
2728 integer ( kind=c_int ) :: point_id
2730 end subroutine yac_cdef_points_reg2d_rot_named_c
2734 integer,
intent(in) :: grid_id
2735 integer,
intent(in) :: nbr_points(2)
2736 integer,
intent(in) :: location
2737 double precision,
intent(in) :: x_points(nbr_points(1))
2738 double precision,
intent(in) :: y_points(nbr_points(2))
2739 double precision,
intent(in) :: x_north_pole
2740 double precision,
intent(in) :: y_north_pole
2741 character(len=*),
intent(in) :: name
2742 integer,
intent(out) :: point_id
2744 yac_check_string_len(
"yac_fdef_points_reg2d_rot_named_dble", name )
2746 call yac_cdef_points_reg2d_rot_named_c ( grid_id, &
2753 trim(name) // c_null_char, &
2783 nbr_vertices_per_cell, &
2786 cell_to_vertex_in, &
2794 character(len=*),
intent(in) :: grid_name
2795 integer,
intent(in) :: nbr_vertices
2796 integer,
intent(in) :: nbr_cells
2797 integer,
intent(in) :: nbr_connections
2798 integer,
intent(in) :: nbr_vertices_per_cell(nbr_cells)
2800 real,
intent(in) :: x_vertices_real(nbr_vertices)
2801 real,
intent(in) :: y_vertices_real(nbr_vertices)
2803 integer,
intent(in) :: cell_to_vertex_in(nbr_connections)
2805 integer,
intent(out) :: grid_id
2807 logical,
optional,
intent(in) :: use_ll_edges
2809 double precision,
allocatable :: x_vertices(:)
2810 double precision,
allocatable :: y_vertices(:)
2812 allocate(x_vertices(nbr_vertices))
2813 allocate(y_vertices(nbr_vertices))
2814 x_vertices(:) = dble(x_vertices_real(:))
2815 y_vertices(:) = dble(y_vertices_real(:))
2821 nbr_vertices_per_cell, &
2824 cell_to_vertex_in, &
2828 deallocate(x_vertices)
2829 deallocate(y_vertices)
2856 nbr_vertices_per_cell, &
2859 cell_to_vertex_in, &
2863 use,
intrinsic :: iso_c_binding, only : c_null_char
2870 subroutine yac_cdef_grid_unstruct_c ( grid_name, &
2873 nbr_vertices_per_cell, &
2878 bind( c, name=
'yac_cdef_grid_unstruct' )
2880 use,
intrinsic :: iso_c_binding, only : c_int, c_char, c_double
2882 character ( kind=c_char ),
dimension(*) :: grid_name
2883 integer ( kind=c_int ),
value :: nbr_vertices
2884 integer ( kind=c_int ),
value :: nbr_cells
2885 integer ( kind=c_int ) :: nbr_vertices_per_cell(nbr_cells)
2886 real ( kind=c_double ) :: x_vertices(nbr_vertices)
2887 real ( kind=c_double ) :: y_vertices(nbr_vertices)
2888 integer ( kind=c_int ) :: cell_to_vertex(*)
2889 integer ( kind=c_int ) :: grid_id
2891 end subroutine yac_cdef_grid_unstruct_c
2893 subroutine yac_cdef_grid_unstruct_ll_c ( grid_name, &
2896 nbr_vertices_per_cell, &
2901 bind( c, name=
'yac_cdef_grid_unstruct_ll' )
2903 use,
intrinsic :: iso_c_binding, only : c_int, c_char, c_double
2905 character ( kind=c_char ),
dimension(*) :: grid_name
2906 integer ( kind=c_int ),
value :: nbr_vertices
2907 integer ( kind=c_int ),
value :: nbr_cells
2908 integer ( kind=c_int ) :: nbr_vertices_per_cell(nbr_cells)
2909 real ( kind=c_double ) :: x_vertices(nbr_vertices)
2910 real ( kind=c_double ) :: y_vertices(nbr_vertices)
2911 integer ( kind=c_int ) :: cell_to_vertex(*)
2912 integer ( kind=c_int ) :: grid_id
2914 end subroutine yac_cdef_grid_unstruct_ll_c
2918 character(len=*),
intent(in) :: grid_name
2919 integer,
intent(in) :: nbr_vertices
2920 integer,
intent(in) :: nbr_cells
2921 integer,
intent(in) :: nbr_connections
2922 integer,
intent(in) :: nbr_vertices_per_cell(nbr_cells)
2924 double precision,
intent(in) :: x_vertices(nbr_vertices)
2925 double precision,
intent(in) :: y_vertices(nbr_vertices)
2927 integer,
intent(in) :: cell_to_vertex_in(nbr_connections)
2929 integer,
intent(out) :: grid_id
2931 logical,
optional,
intent(in) :: use_ll_edges
2934 integer,
allocatable :: cell_to_vertex(:)
2936 logical :: use_ll_edges_
2938 yac_fassert(all(cell_to_vertex_in > 0),
"ERROR(yac_fdef_grid_nonuniform_dble): all entries of cell_to_vertex have to be > 0")
2940 yac_fassert(all(cell_to_vertex_in <= nbr_vertices),
"ERROR(yac_fdef_grid_nonuniform_dble): all entries of cell_to_vertex have to be <= nbr_vertices")
2942 allocate(cell_to_vertex(nbr_connections))
2943 cell_to_vertex(:) = cell_to_vertex_in(:) - 1
2945 if (
present(use_ll_edges))
then
2946 use_ll_edges_ = use_ll_edges
2948 use_ll_edges_ = .false.
2951 if (use_ll_edges_)
then
2952 call yac_cdef_grid_unstruct_ll_c ( trim(grid_name) // c_null_char, &
2955 nbr_vertices_per_cell, &
2961 call yac_cdef_grid_unstruct_c ( trim(grid_name) // c_null_char, &
2964 nbr_vertices_per_cell, &
2971 deallocate(cell_to_vertex)
2996 nbr_vertices_per_cell_in, &
2999 cell_to_vertex_in, &
3007 character(len=*),
intent(in) :: grid_name
3008 integer,
intent(in) :: nbr_vertices
3009 integer,
intent(in) :: nbr_cells
3010 integer,
intent(in) :: nbr_vertices_per_cell_in
3012 real,
intent(in) :: x_vertices_real(nbr_vertices)
3013 real,
intent(in) :: y_vertices_real(nbr_vertices)
3015 integer,
intent(in) :: cell_to_vertex_in(nbr_vertices_per_cell_in,nbr_cells)
3017 integer,
intent(out) :: grid_id
3019 logical,
optional,
intent(in) :: use_ll_edges
3021 double precision,
allocatable :: x_vertices(:)
3022 double precision,
allocatable :: y_vertices(:)
3024 allocate(x_vertices(nbr_vertices))
3025 allocate(y_vertices(nbr_vertices))
3026 x_vertices(:) = dble(x_vertices_real(:))
3027 y_vertices(:) = dble(y_vertices_real(:))
3032 nbr_vertices_per_cell_in, &
3035 cell_to_vertex_in, &
3039 deallocate(x_vertices)
3040 deallocate(y_vertices)
3065 nbr_vertices_per_cell_in, &
3068 cell_to_vertex_in, &
3072 use,
intrinsic :: iso_c_binding, only : c_null_char
3079 subroutine yac_cdef_grid_unstruct_c ( grid_name, &
3082 nbr_vertices_per_cell, &
3087 bind( c, name=
'yac_cdef_grid_unstruct' )
3089 use,
intrinsic :: iso_c_binding, only : c_int, c_char, c_double
3091 character ( kind=c_char ),
dimension(*) :: grid_name
3092 integer ( kind=c_int ),
value :: nbr_vertices
3093 integer ( kind=c_int ),
value :: nbr_cells
3094 integer ( kind=c_int ) :: nbr_vertices_per_cell(nbr_cells)
3095 real ( kind=c_double ) :: x_vertices(nbr_vertices)
3096 real ( kind=c_double ) :: y_vertices(nbr_vertices)
3097 integer ( kind=c_int ) :: cell_to_vertex(*)
3098 integer ( kind=c_int ) :: grid_id
3100 end subroutine yac_cdef_grid_unstruct_c
3102 subroutine yac_cdef_grid_unstruct_ll_c ( grid_name, &
3105 nbr_vertices_per_cell, &
3110 bind( c, name=
'yac_cdef_grid_unstruct_ll' )
3112 use,
intrinsic :: iso_c_binding, only : c_int, c_char, c_double
3114 character ( kind=c_char ),
dimension(*) :: grid_name
3115 integer ( kind=c_int ),
value :: nbr_vertices
3116 integer ( kind=c_int ),
value :: nbr_cells
3117 integer ( kind=c_int ) :: nbr_vertices_per_cell(nbr_cells)
3118 real ( kind=c_double ) :: x_vertices(nbr_vertices)
3119 real ( kind=c_double ) :: y_vertices(nbr_vertices)
3120 integer ( kind=c_int ) :: cell_to_vertex(*)
3121 integer ( kind=c_int ) :: grid_id
3123 end subroutine yac_cdef_grid_unstruct_ll_c
3127 character(len=*),
intent(in) :: grid_name
3128 integer,
intent(in) :: nbr_vertices
3129 integer,
intent(in) :: nbr_cells
3130 integer,
intent(in) :: nbr_vertices_per_cell_in
3132 double precision,
intent(in) :: x_vertices(nbr_vertices)
3133 double precision,
intent(in) :: y_vertices(nbr_vertices)
3135 integer,
intent(in) :: cell_to_vertex_in( &
3136 nbr_vertices_per_cell_in, &
3139 integer,
intent(out) :: grid_id
3141 logical,
optional,
intent(in) :: use_ll_edges
3143 integer,
allocatable :: nbr_vertices_per_cell(:)
3144 integer,
allocatable :: cell_to_vertex(:,:)
3145 logical :: use_ll_edges_
3147 allocate(nbr_vertices_per_cell(nbr_cells))
3148 allocate(cell_to_vertex(nbr_vertices_per_cell_in,nbr_cells))
3149 nbr_vertices_per_cell(:) = nbr_vertices_per_cell_in
3151 yac_fassert(all(cell_to_vertex_in > 0),
"ERROR(yac_fdef_grid_unstruct_dble): all entries of cell_to_vertex have to be > 0")
3153 yac_fassert(all(cell_to_vertex_in <= nbr_vertices),
"ERROR(yac_fdef_grid_unstruct_dble): all entries of cell_to_vertex have to be <= nbr_vertices")
3155 cell_to_vertex(:,:) = cell_to_vertex_in(:,:) - 1
3157 if (
present(use_ll_edges))
then
3158 use_ll_edges_ = use_ll_edges
3160 use_ll_edges_ = .false.
3163 if (use_ll_edges_)
then
3164 call yac_cdef_grid_unstruct_ll_c ( trim(grid_name) // c_null_char, &
3167 nbr_vertices_per_cell, &
3173 call yac_cdef_grid_unstruct_c ( trim(grid_name) // c_null_char, &
3176 nbr_vertices_per_cell, &
3183 deallocate(nbr_vertices_per_cell)
3184 deallocate(cell_to_vertex)
3214 nbr_edges_per_cell, &
3226 character(len=*),
intent(in) :: grid_name
3227 integer,
intent(in) :: nbr_vertices
3228 integer,
intent(in) :: nbr_cells
3229 integer,
intent(in) :: nbr_edges
3230 integer,
intent(in) :: nbr_connections
3231 integer,
intent(in) :: nbr_edges_per_cell(nbr_cells)
3233 real,
intent(in) :: x_vertices_real(nbr_vertices)
3234 real,
intent(in) :: y_vertices_real(nbr_vertices)
3236 integer,
intent(in) :: cell_to_edge(nbr_connections)
3237 integer,
intent(in) :: edge_to_vertex(2,nbr_edges)
3239 integer,
intent(out) :: grid_id
3241 logical,
optional,
intent(in) :: use_ll_edges
3243 double precision,
allocatable :: x_vertices(:)
3244 double precision,
allocatable :: y_vertices(:)
3246 allocate(x_vertices(nbr_vertices))
3247 allocate(y_vertices(nbr_vertices))
3248 x_vertices(:) = dble(x_vertices_real(:))
3249 y_vertices(:) = dble(y_vertices_real(:))
3256 nbr_edges_per_cell, &
3264 deallocate(x_vertices)
3265 deallocate(y_vertices)
3295 nbr_edges_per_cell, &
3299 edge_to_vertex_in, &
3303 use,
intrinsic :: iso_c_binding, only : c_null_char
3310 subroutine yac_cdef_grid_unstruct_edge_c ( grid_name, &
3314 nbr_edges_per_cell, &
3320 bind( c, name=
'yac_cdef_grid_unstruct_edge' )
3322 use,
intrinsic :: iso_c_binding, only : c_int, c_char, c_double
3324 character ( kind=c_char ),
dimension(*) :: grid_name
3325 integer ( kind=c_int ),
value :: nbr_vertices
3326 integer ( kind=c_int ),
value :: nbr_cells
3327 integer ( kind=c_int ),
value :: nbr_edges
3328 integer ( kind=c_int ) :: nbr_edges_per_cell(nbr_cells)
3329 real ( kind=c_double ) :: x_vertices(nbr_vertices)
3330 real ( kind=c_double ) :: y_vertices(nbr_vertices)
3331 integer ( kind=c_int ) :: cell_to_edge(*)
3332 integer ( kind=c_int ) :: edge_to_vertex(2,nbr_edges)
3333 integer ( kind=c_int ) :: grid_id
3335 end subroutine yac_cdef_grid_unstruct_edge_c
3337 subroutine yac_cdef_grid_unstruct_edge_ll_c ( grid_name, &
3341 nbr_edges_per_cell, &
3347 bind( c, name=
'yac_cdef_grid_unstruct_edge_ll' )
3349 use,
intrinsic :: iso_c_binding, only : c_int, c_char, c_double
3351 character ( kind=c_char ),
dimension(*) :: grid_name
3352 integer ( kind=c_int ),
value :: nbr_vertices
3353 integer ( kind=c_int ),
value :: nbr_cells
3354 integer ( kind=c_int ),
value :: nbr_edges
3355 integer ( kind=c_int ) :: nbr_edges_per_cell(nbr_cells)
3356 real ( kind=c_double ) :: x_vertices(nbr_vertices)
3357 real ( kind=c_double ) :: y_vertices(nbr_vertices)
3358 integer ( kind=c_int ) :: cell_to_edge(*)
3359 integer ( kind=c_int ) :: edge_to_vertex(2,nbr_edges)
3360 integer ( kind=c_int ) :: grid_id
3362 end subroutine yac_cdef_grid_unstruct_edge_ll_c
3366 character(len=*),
intent(in) :: grid_name
3367 integer,
intent(in) :: nbr_vertices
3368 integer,
intent(in) :: nbr_cells
3369 integer,
intent(in) :: nbr_edges
3370 integer,
intent(in) :: nbr_connections
3371 integer,
intent(in) :: nbr_edges_per_cell(nbr_cells)
3373 double precision,
intent(in) :: x_vertices(nbr_vertices)
3374 double precision,
intent(in) :: y_vertices(nbr_vertices)
3376 integer,
intent(in) :: cell_to_edge_in(nbr_connections)
3377 integer,
intent(in) :: edge_to_vertex_in(2,nbr_edges)
3379 integer,
intent(out) :: grid_id
3381 logical,
optional,
intent(in) :: use_ll_edges
3384 integer,
allocatable :: cell_to_edge(:)
3385 integer,
allocatable :: edge_to_vertex(:,:)
3387 logical :: use_ll_edges_
3389 yac_fassert(all(cell_to_edge_in > 0),
"ERROR(yac_fdef_grid_nonuniform_edge_dble): all entries of cell_to_edge have to be > 0")
3391 yac_fassert(all(cell_to_edge_in <= nbr_edges),
"ERROR(yac_fdef_grid_nonuniform_edge_dble): all entries of cell_to_edge have to be <= nbr_edges")
3393 yac_fassert(all(edge_to_vertex_in > 0),
"ERROR(yac_fdef_grid_nonuniform_edge_dble): all entries of edge_to_vertex have to be > 0")
3395 yac_fassert(all(edge_to_vertex_in <= nbr_vertices),
"ERROR(yac_fdef_grid_nonuniform_edge_dble): all entries of edge_to_vertex have to be <= nbr_vertices")
3397 allocate(cell_to_edge(nbr_connections))
3398 allocate(edge_to_vertex(2,nbr_edges))
3399 cell_to_edge(:) = cell_to_edge_in(:) - 1
3400 edge_to_vertex(:,:) = edge_to_vertex_in(:,:) - 1
3402 if (
present(use_ll_edges))
then
3403 use_ll_edges_ = use_ll_edges
3405 use_ll_edges_ = .false.
3408 if (use_ll_edges_)
then
3409 call yac_cdef_grid_unstruct_edge_ll_c ( trim(grid_name) // c_null_char, &
3413 nbr_edges_per_cell, &
3420 call yac_cdef_grid_unstruct_edge_c ( trim(grid_name) // c_null_char, &
3424 nbr_edges_per_cell, &
3432 deallocate(cell_to_edge)
3433 deallocate(edge_to_vertex)
3461 nbr_edges_per_cell_in, &
3465 edge_to_vertex_in, &
3473 character(len=*),
intent(in) :: grid_name
3474 integer,
intent(in) :: nbr_vertices
3475 integer,
intent(in) :: nbr_cells
3476 integer,
intent(in) :: nbr_edges
3477 integer,
intent(in) :: nbr_edges_per_cell_in
3479 real,
intent(in) :: x_vertices_real(nbr_vertices)
3480 real,
intent(in) :: y_vertices_real(nbr_vertices)
3482 integer,
intent(in) :: cell_to_edge_in(nbr_edges_per_cell_in,nbr_cells)
3483 integer,
intent(in) :: edge_to_vertex_in(2,nbr_edges)
3485 integer,
intent(out) :: grid_id
3487 logical,
optional,
intent(in) :: use_ll_edges
3489 double precision,
allocatable :: x_vertices(:)
3490 double precision,
allocatable :: y_vertices(:)
3492 allocate(x_vertices(nbr_vertices))
3493 allocate(y_vertices(nbr_vertices))
3494 x_vertices(:) = dble(x_vertices_real(:))
3495 y_vertices(:) = dble(y_vertices_real(:))
3501 nbr_edges_per_cell_in, &
3505 edge_to_vertex_in, &
3509 deallocate(x_vertices)
3510 deallocate(y_vertices)
3538 nbr_edges_per_cell_in, &
3542 edge_to_vertex_in, &
3546 use,
intrinsic :: iso_c_binding, only : c_null_char
3553 subroutine yac_cdef_grid_unstruct_edge_c ( grid_name, &
3557 nbr_edges_per_cell, &
3563 bind( c, name=
'yac_cdef_grid_unstruct_edge' )
3565 use,
intrinsic :: iso_c_binding, only : c_int, c_char, c_double
3567 character ( kind=c_char ),
dimension(*) :: grid_name
3568 integer ( kind=c_int ),
value :: nbr_vertices
3569 integer ( kind=c_int ),
value :: nbr_cells
3570 integer ( kind=c_int ),
value :: nbr_edges
3571 integer ( kind=c_int ) :: nbr_edges_per_cell(nbr_cells)
3572 real ( kind=c_double ) :: x_vertices(nbr_vertices)
3573 real ( kind=c_double ) :: y_vertices(nbr_vertices)
3574 integer ( kind=c_int ) :: cell_to_edge(*)
3575 integer ( kind=c_int ) :: edge_to_vertex(2,nbr_edges)
3576 integer ( kind=c_int ) :: grid_id
3578 end subroutine yac_cdef_grid_unstruct_edge_c
3580 subroutine yac_cdef_grid_unstruct_edge_ll_c ( grid_name, &
3584 nbr_edges_per_cell, &
3590 bind( c, name=
'yac_cdef_grid_unstruct_edge_ll' )
3592 use,
intrinsic :: iso_c_binding, only : c_int, c_char, c_double
3594 character ( kind=c_char ),
dimension(*) :: grid_name
3595 integer ( kind=c_int ),
value :: nbr_vertices
3596 integer ( kind=c_int ),
value :: nbr_cells
3597 integer ( kind=c_int ),
value :: nbr_edges
3598 integer ( kind=c_int ) :: nbr_edges_per_cell(nbr_cells)
3599 real ( kind=c_double ) :: x_vertices(nbr_vertices)
3600 real ( kind=c_double ) :: y_vertices(nbr_vertices)
3601 integer ( kind=c_int ) :: cell_to_edge(*)
3602 integer ( kind=c_int ) :: edge_to_vertex(2,nbr_edges)
3603 integer ( kind=c_int ) :: grid_id
3605 end subroutine yac_cdef_grid_unstruct_edge_ll_c
3609 character(len=*),
intent(in) :: grid_name
3610 integer,
intent(in) :: nbr_vertices
3611 integer,
intent(in) :: nbr_cells
3612 integer,
intent(in) :: nbr_edges
3613 integer,
intent(in) :: nbr_edges_per_cell_in
3615 double precision,
intent(in) :: x_vertices(nbr_vertices)
3616 double precision,
intent(in) :: y_vertices(nbr_vertices)
3618 integer,
intent(in) :: cell_to_edge_in(nbr_edges_per_cell_in, nbr_cells)
3619 integer,
intent(in) :: edge_to_vertex_in(2, nbr_edges)
3621 integer,
intent(out) :: grid_id
3623 logical,
optional,
intent(in) :: use_ll_edges
3625 integer,
allocatable :: nbr_edges_per_cell(:)
3626 integer,
allocatable :: cell_to_edge(:,:)
3627 integer,
allocatable :: edge_to_vertex(:,:)
3628 logical :: use_ll_edges_
3630 allocate(nbr_edges_per_cell(nbr_cells))
3631 allocate(cell_to_edge(nbr_edges_per_cell_in,nbr_cells))
3632 allocate(edge_to_vertex(2,nbr_edges))
3633 nbr_edges_per_cell(:) = nbr_edges_per_cell_in
3635 yac_fassert(all(cell_to_edge_in > 0),
"ERROR(yac_fdef_grid_unstruct_edge_dble): all entries of cell_to_edge have to be > 0")
3637 yac_fassert(all(cell_to_edge_in <= nbr_edges),
"ERROR(yac_fdef_grid_unstruct_edge_dble): all entries of cell_to_edge have to be <= nbr_edges")
3639 yac_fassert(all(edge_to_vertex_in > 0),
"ERROR(yac_fdef_grid_unstruct_edge_dble): all entries of edge_to_vertex have to be > 0")
3641 yac_fassert(all(edge_to_vertex_in <= nbr_vertices),
"ERROR(yac_fdef_grid_unstruct_edge_dble): all entries of edge_to_vertex have to be <= nbr_vertices")
3643 cell_to_edge(:,:) = cell_to_edge_in(:,:) - 1
3644 edge_to_vertex(:,:) = edge_to_vertex_in(:,:) - 1
3646 if (
present(use_ll_edges))
then
3647 use_ll_edges_ = use_ll_edges
3649 use_ll_edges_ = .false.
3652 if (use_ll_edges_)
then
3653 call yac_cdef_grid_unstruct_edge_ll_c ( trim(grid_name) // c_null_char, &
3657 nbr_edges_per_cell, &
3664 call yac_cdef_grid_unstruct_edge_c ( trim(grid_name) // c_null_char, &
3668 nbr_edges_per_cell, &
3676 deallocate(nbr_edges_per_cell)
3677 deallocate(cell_to_edge)
3678 deallocate(edge_to_vertex)
3700 character(len=*),
intent(in) :: grid_name
3701 integer,
intent(in) :: nbr_vertices(2)
3702 integer,
intent(in) :: cyclic(2)
3703 real,
intent(in) :: &
3704 x_vertices_real(nbr_vertices(1),nbr_vertices(2))
3705 real,
intent(in) :: &
3706 y_vertices_real(nbr_vertices(1),nbr_vertices(2))
3707 integer,
intent(out) :: grid_id
3709 double precision,
allocatable :: x_vertices(:,:)
3710 double precision,
allocatable :: y_vertices(:,:)
3712 allocate(x_vertices(nbr_vertices(1),nbr_vertices(2)))
3713 allocate(y_vertices(nbr_vertices(1),nbr_vertices(2)))
3714 x_vertices(:,:) = dble(x_vertices_real(:,:))
3715 y_vertices(:,:) = dble(y_vertices_real(:,:))
3724 deallocate(x_vertices)
3725 deallocate(y_vertices)
3743 use,
intrinsic :: iso_c_binding, only : c_null_char
3750 subroutine yac_cdef_grid_curve2d_c ( grid_name, &
3756 bind( c, name=
'yac_cdef_grid_curve2d' )
3758 use,
intrinsic :: iso_c_binding, only : c_int, c_char, c_double
3760 character ( kind=c_char ),
dimension(*) :: grid_name
3761 integer ( kind=c_int ) :: nbr_vertices(2)
3762 integer ( kind=c_int ) :: cyclic(2)
3763 real ( kind=c_double ) :: x_vertices(nbr_vertices(1),nbr_vertices(2))
3764 real ( kind=c_double ) :: y_vertices(nbr_vertices(1),nbr_vertices(2))
3765 integer ( kind=c_int ) :: grid_id
3767 end subroutine yac_cdef_grid_curve2d_c
3771 character(len=*),
intent(in) :: grid_name
3772 integer,
intent(in) :: nbr_vertices(2)
3773 integer,
intent(in) :: cyclic(2)
3774 double precision,
intent(in) :: &
3775 x_vertices(nbr_vertices(1),nbr_vertices(2))
3776 double precision,
intent(in) :: &
3777 y_vertices(nbr_vertices(1),nbr_vertices(2))
3778 integer,
intent(out) :: grid_id
3780 call yac_cdef_grid_curve2d_c ( trim(grid_name) // c_null_char, &
3807 character(len=*),
intent(in) :: grid_name
3808 integer,
intent(in) :: nbr_vertices(2)
3809 integer,
intent(in) :: cyclic(2)
3810 real,
intent(in) :: x_vertices_real(nbr_vertices(1))
3811 real,
intent(in) :: y_vertices_real(nbr_vertices(2))
3812 integer,
intent(out) :: grid_id
3814 double precision,
allocatable :: x_vertices(:)
3815 double precision,
allocatable :: y_vertices(:)
3817 allocate(x_vertices(nbr_vertices(1)))
3818 allocate(y_vertices(nbr_vertices(2)))
3819 x_vertices(:) = dble(x_vertices_real(:))
3820 y_vertices(:) = dble(y_vertices_real(:))
3829 deallocate(x_vertices)
3830 deallocate(y_vertices)
3848 use,
intrinsic :: iso_c_binding, only : c_null_char
3855 subroutine yac_cdef_grid_reg2d_c ( grid_name, &
3861 bind( c, name=
'yac_cdef_grid_reg2d' )
3863 use,
intrinsic :: iso_c_binding, only : c_int, c_char, c_double
3865 character ( kind=c_char ),
dimension(*) :: grid_name
3866 integer ( kind=c_int ) :: nbr_vertices(2)
3867 integer ( kind=c_int ) :: cyclic(2)
3868 real ( kind=c_double ) :: x_vertices(nbr_vertices(1))
3869 real ( kind=c_double ) :: y_vertices(nbr_vertices(2))
3870 integer ( kind=c_int ) :: grid_id
3872 end subroutine yac_cdef_grid_reg2d_c
3876 character(len=*),
intent(in) :: grid_name
3877 integer,
intent(in) :: nbr_vertices(2)
3878 integer,
intent(in) :: cyclic(2)
3879 double precision,
intent(in) :: x_vertices(nbr_vertices(1))
3880 double precision,
intent(in) :: y_vertices(nbr_vertices(2))
3881 integer,
intent(out) :: grid_id
3883 call yac_cdef_grid_reg2d_c ( trim(grid_name) // c_null_char, &
3908 character(len=*),
intent(in) :: grid_name
3909 integer,
intent(in) :: nbr_points
3910 real,
intent(in) :: x_points_real(nbr_points)
3911 real,
intent(in) :: y_points_real(nbr_points)
3912 integer,
intent(out) :: grid_id
3914 double precision,
allocatable :: x_points(:)
3915 double precision,
allocatable :: y_points(:)
3917 allocate(x_points(nbr_points))
3918 allocate(y_points(nbr_points))
3919 x_points(:) = dble(x_points_real(:))
3920 y_points(:) = dble(y_points_real(:))
3928 deallocate(x_points)
3929 deallocate(y_points)
3945 use,
intrinsic :: iso_c_binding, only : c_null_char
3952 subroutine yac_fdef_grid_cloud_c ( grid_name, &
3957 bind( c, name=
'yac_cdef_grid_cloud' )
3959 use,
intrinsic :: iso_c_binding, only : c_int, c_char, c_double
3961 character ( kind=c_char ),
dimension(*) :: grid_name
3962 integer ( kind=c_int ),
value :: nbr_points
3963 real ( kind=c_double ) :: x_points(nbr_points)
3964 real ( kind=c_double ) :: y_points(nbr_points)
3965 integer ( kind=c_int ) :: grid_id
3967 end subroutine yac_fdef_grid_cloud_c
3971 character(len=*),
intent(in) :: grid_name
3972 integer,
intent(in) :: nbr_points
3973 double precision,
intent(in) :: x_points(nbr_points)
3974 double precision,
intent(in) :: y_points(nbr_points)
3975 integer,
intent(out) :: grid_id
3977 call yac_fdef_grid_cloud_c ( trim(grid_name) // c_null_char, &
3999 x_north_pole_real, &
4000 y_north_pole_real, &
4007 character(len=*),
intent(in) :: grid_name
4008 integer,
intent(in) :: nbr_vertices(2)
4009 integer,
intent(in) :: cyclic(2)
4010 real,
intent(in) :: x_vertices_real(nbr_vertices(1))
4011 real,
intent(in) :: y_vertices_real(nbr_vertices(2))
4012 real,
intent(in) :: x_north_pole_real
4013 real,
intent(in) :: y_north_pole_real
4014 integer,
intent(out) :: grid_id
4016 double precision,
allocatable :: x_vertices(:)
4017 double precision,
allocatable :: y_vertices(:)
4018 double precision :: x_north_pole
4019 double precision :: y_north_pole
4021 allocate(x_vertices(nbr_vertices(1)))
4022 allocate(y_vertices(nbr_vertices(2)))
4023 x_vertices(:) = dble(x_vertices_real(:))
4024 y_vertices(:) = dble(y_vertices_real(:))
4026 x_north_pole = dble(x_north_pole_real)
4027 y_north_pole = dble(y_north_pole_real)
4038 deallocate(x_vertices)
4039 deallocate(y_vertices)
4061 use,
intrinsic :: iso_c_binding, only : c_null_char
4068 subroutine yac_cdef_grid_reg2d_rot_c ( grid_name, &
4076 bind( c, name=
'yac_cdef_grid_reg2d_rot' )
4078 use,
intrinsic :: iso_c_binding, only : c_int, c_char, c_double
4080 character ( kind=c_char ),
dimension(*) :: grid_name
4081 integer ( kind=c_int ) :: nbr_vertices(2)
4082 integer ( kind=c_int ) :: cyclic(2)
4083 real ( kind=c_double ) :: x_vertices(nbr_vertices(1))
4084 real ( kind=c_double ) :: y_vertices(nbr_vertices(2))
4085 real ( kind=c_double ),
value :: x_north_pole
4086 real ( kind=c_double ),
value :: y_north_pole
4087 integer ( kind=c_int ) :: grid_id
4089 end subroutine yac_cdef_grid_reg2d_rot_c
4093 character(len=*),
intent(in) :: grid_name
4094 integer,
intent(in) :: nbr_vertices(2)
4095 integer,
intent(in) :: cyclic(2)
4096 double precision,
intent(in) :: x_vertices(nbr_vertices(1))
4097 double precision,
intent(in) :: y_vertices(nbr_vertices(2))
4098 double precision,
intent(in) :: x_north_pole
4099 double precision,
intent(in) :: y_north_pole
4100 integer,
intent(out) :: grid_id
4102 call yac_cdef_grid_reg2d_rot_c ( trim(grid_name) // c_null_char, &
4125 subroutine yac_cset_global_index_c ( global_index, &
4128 bind( c, name=
'yac_cset_global_index' )
4130 use,
intrinsic :: iso_c_binding, only : c_int
4132 integer ( kind=c_int ) :: global_index(*)
4133 integer ( kind=c_int ),
value :: location
4134 integer ( kind=c_int ),
value :: grid_id
4136 end subroutine yac_cset_global_index_c
4140 integer,
intent(in) :: global_index(*)
4141 integer,
intent(in) :: location
4142 integer,
intent(in) :: grid_id
4144 call yac_cset_global_index_c ( global_index, &
4161 subroutine yac_cset_global_index_yac_int_c ( global_index, &
4164 bind( c, name=
'yac_cset_global_index_yac_int' )
4166 use,
intrinsic :: iso_c_binding, only : c_int
4169 integer ( kind=YAC_INT_KIND ) :: global_index(*)
4170 integer ( kind=c_int ),
value :: location
4171 integer ( kind=c_int ),
value :: grid_id
4173 end subroutine yac_cset_global_index_yac_int_c
4177 integer(kind=YAC_INT_KIND),
intent(in) :: global_index(*)
4178 integer,
intent(in) :: location
4179 integer,
intent(in) :: grid_id
4181 call yac_cset_global_index_yac_int_c ( global_index, &
4194 use,
intrinsic :: iso_c_binding, only : c_size_t
4198 logical,
intent(in) :: is_core(*)
4201 integer,
intent(in) :: location
4202 integer,
intent(in) :: grid_id
4204 integer (kind=c_size_t) :: i, count
4205 integer,
allocatable :: int_is_core(:)
4209 function yac_cget_grid_size_c ( location, &
4211 result( grid_size ) &
4212 bind( c, name=
'yac_cget_grid_size' )
4214 use,
intrinsic :: iso_c_binding, only : c_int, c_size_t
4216 integer ( kind=c_int ),
value :: location
4217 integer ( kind=c_int ),
value :: grid_id
4218 integer ( kind=c_size_t) :: grid_size
4220 end function yac_cget_grid_size_c
4224 count = yac_cget_grid_size_c(location, grid_id)
4225 allocate(int_is_core(count))
4228 if ( is_core(i) )
then
4251 subroutine yac_cset_core_mask_c ( mask, &
4254 bind( c, name=
'yac_cset_core_mask' )
4256 use,
intrinsic :: iso_c_binding, only : c_int
4258 integer ( kind=c_int ) :: mask(*)
4259 integer ( kind=c_int ),
value :: location
4260 integer ( kind=c_int ),
value :: grid_id
4262 end subroutine yac_cset_core_mask_c
4267 integer,
intent(in) :: is_core(*)
4270 integer,
intent(in) :: location
4271 integer,
intent(in) :: grid_id
4273 call yac_cset_core_mask_c ( is_core, &
4285 use,
intrinsic :: iso_c_binding, only : c_size_t
4289 logical,
intent(in) :: is_valid(*)
4292 integer,
intent(in) :: points_id
4294 integer ( kind=c_size_t) :: i, count
4295 integer,
allocatable :: int_is_valid(:)
4299 function yac_cget_points_size_c ( points_id ) &
4300 result( points_size ) &
4301 bind( c, name=
'yac_cget_points_size' )
4303 use,
intrinsic :: iso_c_binding, only : c_int, c_size_t
4305 integer ( kind=c_int ),
value :: points_id
4306 integer ( kind=c_size_t) :: points_size
4308 end function yac_cget_points_size_c
4312 count = yac_cget_points_size_c(points_id)
4313 allocate(int_is_valid(count))
4316 int_is_valid(i) =
merge(1,0,is_valid(i))
4332 subroutine yac_cset_mask_c ( is_valid, &
4334 bind( c, name=
'yac_cset_mask' )
4336 use,
intrinsic :: iso_c_binding, only : c_int
4338 integer ( kind=c_int ) :: is_valid(*)
4339 integer ( kind=c_int ),
value :: points_id
4341 end subroutine yac_cset_mask_c
4345 integer,
intent(in) :: is_valid(*)
4348 integer,
intent(in) :: points_id
4350 call yac_cset_mask_c ( is_valid, points_id )
4366 integer,
intent(in) :: grid_id
4367 integer,
intent(in) :: nbr_points
4368 integer,
intent(in) :: location
4369 logical,
intent(in) :: is_valid(*)
4372 integer,
intent(out) :: mask_id
4374 integer,
allocatable :: int_is_valid(:)
4376 allocate(int_is_valid(nbr_points))
4377 int_is_valid(:) =
merge(1,0,is_valid(1:nbr_points))
4385 deallocate(int_is_valid)
4401 subroutine yac_cdef_mask_c ( grid_id, &
4406 bind( c, name=
'yac_cdef_mask' )
4408 use,
intrinsic :: iso_c_binding, only : c_int
4410 integer ( kind=c_int ),
value :: grid_id
4411 integer ( kind=c_int ),
value :: nbr_points
4412 integer ( kind=c_int ),
value :: location
4413 integer ( kind=c_int ) :: is_valid(*)
4414 integer ( kind=c_int ) :: mask_id
4416 end subroutine yac_cdef_mask_c
4420 integer,
intent(in) :: grid_id
4421 integer,
intent(in) :: nbr_points
4422 integer,
intent(in) :: location
4423 integer,
intent(in) :: is_valid(*)
4426 integer,
intent(out) :: mask_id
4428 call yac_cdef_mask_c ( grid_id, &
4449 integer,
intent(in) :: grid_id
4450 integer,
intent(in) :: nbr_points
4451 integer,
intent(in) :: location
4452 logical,
intent(in) :: is_valid(*)
4455 character(len=*),
intent(in) :: name
4456 integer,
intent(out) :: mask_id
4458 integer,
allocatable :: int_is_valid(:)
4460 allocate(int_is_valid(nbr_points))
4462 int_is_valid(:) =
merge(1,0,is_valid(1:nbr_points))
4471 deallocate(int_is_valid)
4482 use,
intrinsic :: iso_c_binding, only : c_null_char
4490 subroutine yac_cdef_mask_named_c ( grid_id, &
4496 bind( c, name=
'yac_cdef_mask_named' )
4498 use,
intrinsic :: iso_c_binding, only : c_int, c_char
4500 integer ( kind=c_int ),
value :: grid_id
4501 integer ( kind=c_int ),
value :: nbr_points
4502 integer ( kind=c_int ),
value :: location
4503 integer ( kind=c_int ) :: is_valid(*)
4504 character ( kind=c_char ),
dimension(*) :: name
4505 integer ( kind=c_int ) :: mask_id
4507 end subroutine yac_cdef_mask_named_c
4511 integer,
intent(in) :: grid_id
4512 integer,
intent(in) :: nbr_points
4513 integer,
intent(in) :: location
4514 integer,
intent(in) :: is_valid(*)
4517 character(len=*),
intent(in) :: name
4518 integer,
intent(out) :: mask_id
4520 yac_check_string_len(
"yac_fdef_imask_named", name )
4522 call yac_cdef_mask_named_c ( grid_id, &
4526 trim(name) // c_null_char, &
4542 use,
intrinsic :: iso_c_binding, only : c_null_char
4550 subroutine yac_cdef_field_c ( field_name, &
4558 bind( c, name=
'yac_cdef_field' )
4560 use,
intrinsic :: iso_c_binding, only : c_int, c_char
4562 character ( kind=c_char ),
dimension(*) :: field_name
4563 integer ( kind=c_int ),
value :: component_id
4564 integer ( kind=c_int ) :: point_ids(*)
4565 integer ( kind=c_int ),
value :: num_pointsets
4566 integer ( kind=c_int ),
value :: collection_size
4567 character ( kind=c_char ),
dimension(*) :: timestep
4568 integer ( kind=c_int ),
value :: time_unit
4569 integer ( kind=c_int ) :: field_id
4571 end subroutine yac_cdef_field_c
4578 character(len=*),
intent (in) :: field_name
4579 integer,
intent (in) :: component_id
4580 integer,
intent (in) :: point_ids(*)
4581 integer,
intent (in) :: num_pointsets
4582 integer,
intent (in) :: collection_size
4583 character(len=*),
intent (in) :: timestep
4584 integer,
intent (in) :: time_unit
4585 integer,
intent (out) :: field_id
4587 yac_check_string_len(
"yac_fdef_field", field_name )
4588 yac_check_string_len(
"yac_fdef_field", timestep )
4591 call yac_cdef_field_c ( trim(field_name) // c_null_char, &
4596 trim(timestep) // c_null_char, &
4614 use,
intrinsic :: iso_c_binding, only : c_null_char
4622 subroutine yac_cdef_field_mask_c ( field_name, &
4631 bind( c, name=
'yac_cdef_field_mask' )
4633 use,
intrinsic :: iso_c_binding, only : c_int, c_char
4635 character ( kind=c_char ),
dimension(*) :: field_name
4636 integer ( kind=c_int ),
value :: component_id
4637 integer ( kind=c_int ) :: point_ids(*)
4638 integer ( kind=c_int ) :: mask_ids(*)
4639 integer ( kind=c_int ),
value :: num_pointsets
4640 integer ( kind=c_int ),
value :: collection_size
4641 character ( kind=c_char ),
dimension(*) :: timestep
4642 integer ( kind=c_int ),
value :: time_unit
4643 integer ( kind=c_int ) :: field_id
4645 end subroutine yac_cdef_field_mask_c
4653 character(len=*),
intent (in) :: field_name
4654 integer,
intent (in) :: component_id
4655 integer,
intent (in) :: point_ids(*)
4656 integer,
intent (in) :: mask_ids(*)
4657 integer,
intent (in) :: num_pointsets
4658 integer,
intent (in) :: collection_size
4659 character(len=*),
intent (in) :: timestep
4660 integer,
intent (in) :: time_unit
4661 integer,
intent (out) :: field_id
4663 yac_check_string_len(
"yac_fdef_field_mask", field_name )
4664 yac_check_string_len(
"yac_fdef_field_mask", timestep )
4666 call yac_cdef_field_mask_c ( trim(field_name) // c_null_char, &
4672 trim(timestep) // c_null_char, &
4682 num_interp_fields, &
4683 interp_field_sizes )
4691 subroutine yac_ccheck_field_dimensions_c ( field_id, &
4693 num_interp_fields, &
4694 interp_field_sizes ) &
4695 bind( c, name=
'yac_ccheck_field_dimensions' )
4697 use,
intrinsic :: iso_c_binding, only : c_int
4699 integer ( kind=c_int ),
value :: field_id
4700 integer ( kind=c_int ),
value :: collection_size
4701 integer ( kind=c_int ),
value :: num_interp_fields
4702 integer ( kind=c_int ),
dimension(*) :: interp_field_sizes
4704 end subroutine yac_ccheck_field_dimensions_c
4708 integer,
intent (in) :: field_id
4709 integer,
intent (in) :: collection_size
4710 integer,
intent (in) :: num_interp_fields
4712 integer,
intent (in) :: interp_field_sizes(num_interp_fields)
4715 call yac_ccheck_field_dimensions_c(field_id, &
4717 num_interp_fields, &
4724 src_field_buffer_size )
4732 subroutine yac_ccheck_src_field_buffer_size_c ( field_id, &
4734 src_field_buffer_size ) &
4735 bind( c, name=
'yac_ccheck_src_field_buffer_size' )
4737 use,
intrinsic :: iso_c_binding, only : c_int
4739 integer ( kind=c_int ),
value :: field_id
4740 integer ( kind=c_int ),
value :: collection_size
4741 integer ( kind=c_int ),
value :: src_field_buffer_size
4743 end subroutine yac_ccheck_src_field_buffer_size_c
4747 integer,
intent (in) :: field_id
4748 integer,
intent (in) :: collection_size
4749 integer,
intent (in) :: src_field_buffer_size
4752 call yac_ccheck_src_field_buffer_size_c(field_id, &
4754 src_field_buffer_size)
4761 src_field_buffer_sizes )
4769 subroutine yac_ccheck_src_field_buffer_sizes_c ( field_id, &
4772 src_field_buffer_sizes ) &
4773 bind( c, name=
'yac_ccheck_src_field_buffer_sizes' )
4775 use,
intrinsic :: iso_c_binding, only : c_int
4777 integer ( kind=c_int ),
value :: field_id
4778 integer ( kind=c_int ),
value :: num_src_fields
4779 integer ( kind=c_int ),
value :: collection_size
4780 integer ( kind=c_int ) :: src_field_buffer_sizes(*)
4782 end subroutine yac_ccheck_src_field_buffer_sizes_c
4786 integer,
intent (in) :: field_id
4787 integer,
intent (in) :: num_src_fields
4788 integer,
intent (in) :: collection_size
4789 integer,
intent (in) :: src_field_buffer_sizes(num_src_fields)
4793 call yac_ccheck_src_field_buffer_sizes_c(field_id, &
4796 src_field_buffer_sizes)
4804 frac_mask_fallback_value, &
4809 num_tgt_per_fixed_value, &
4818 src_field_buffer_size )
4822 use,
intrinsic :: iso_c_binding, only : &
4823 c_int, c_size_t, c_double, c_ptr, c_f_pointer
4827 integer,
intent (in) :: field_id
4828 double precision,
intent(out) :: frac_mask_fallback_value
4829 double precision,
intent(out) :: scaling_factor
4830 double precision,
intent(out) :: scaling_summand
4831 integer,
intent(out) :: num_fixed_values
4832 double precision,
allocatable,
intent(out) :: fixed_values(:)
4833 integer,
allocatable,
intent(out) :: num_tgt_per_fixed_value(:)
4834 integer,
allocatable,
intent(out) :: tgt_idx_fixed(:)
4835 integer,
intent(out) :: num_wgt_tgt
4836 integer,
allocatable,
intent(out) :: wgt_tgt_idx(:)
4837 integer,
allocatable,
intent(out) :: num_src_per_tgt(:)
4838 double precision,
allocatable,
intent(out) :: weights(:)
4839 integer,
allocatable,
intent(out) :: src_field_idx(:)
4840 integer,
allocatable,
intent(out) :: src_idx(:)
4841 integer,
intent(out) :: num_src_fields
4842 integer,
allocatable,
intent(out) :: src_field_buffer_size(:)
4844 integer :: total_num_fixed_tgt, total_num_weights
4846 real (kind=c_double) :: frac_mask_fallback_value_c
4847 real (kind=c_double) :: scaling_factor_c
4848 real (kind=c_double) :: scaling_summand_c
4849 integer ( kind=c_size_t ) :: num_fixed_values_c
4850 real (kind=c_double),
pointer :: fixed_values_c(:)
4851 integer ( kind=c_size_t ),
pointer :: num_tgt_per_fixed_value_c(:)
4852 integer ( kind=c_size_t ),
pointer :: tgt_idx_fixed_c(:)
4853 integer(kind=c_size_t) :: num_wgt_tgt_c
4854 integer ( kind=c_size_t ),
pointer :: wgt_tgt_idx_c(:)
4855 integer ( kind=c_size_t ),
pointer :: num_src_per_tgt_c(:)
4856 real (kind=c_double),
pointer :: weights_c(:)
4857 integer ( kind=c_size_t ),
pointer :: src_field_idx_c(:)
4858 integer ( kind=c_size_t ),
pointer :: src_idx_c(:)
4859 integer ( kind=c_size_t ) :: num_src_fields_c
4860 integer ( kind=c_size_t ),
pointer :: src_field_buffer_size_c(:)
4862 type(c_ptr) :: fixed_values_c_ptr
4863 type(c_ptr) :: num_tgt_per_fixed_value_c_ptr
4864 type(c_ptr) :: tgt_idx_fixed_c_ptr
4865 type(c_ptr) :: wgt_tgt_idx_c_ptr
4866 type(c_ptr) :: num_src_per_tgt_c_ptr
4867 type(c_ptr) :: weights_c_ptr
4868 type(c_ptr) :: src_field_idx_c_ptr
4869 type(c_ptr) :: src_idx_c_ptr
4870 type(c_ptr) :: src_field_buffer_size_c_ptr
4874 subroutine yac_cget_raw_interp_weights_data_c ( &
4876 frac_mask_fallback_value, &
4881 num_tgt_per_fixed_value, &
4890 src_field_buffer_size ) &
4891 bind( c, name=
'yac_cget_raw_interp_weights_data' )
4893 use,
intrinsic :: iso_c_binding, only : c_int, c_size_t, c_double, c_ptr
4895 integer ( kind=c_int ),
value :: field_id
4896 real (kind=c_double),
intent(out) :: frac_mask_fallback_value
4897 real (kind=c_double),
intent(out) :: scaling_factor
4898 real (kind=c_double),
intent(out) :: scaling_summand
4899 integer(kind=c_size_t),
intent(out) :: num_fixed_values
4900 type(c_ptr),
intent(out) :: fixed_values
4901 type(c_ptr),
intent(out) :: num_tgt_per_fixed_value
4902 type(c_ptr),
intent(out) :: tgt_idx_fixed
4903 integer(kind=c_size_t),
intent(out) :: num_wgt_tgt
4904 type(c_ptr),
intent(out) :: wgt_tgt_idx
4905 type(c_ptr),
intent(out) :: num_src_per_tgt
4906 type(c_ptr),
intent(out) :: weights
4907 type(c_ptr),
intent(out) :: src_field_idx
4908 type(c_ptr),
intent(out) :: src_idx
4909 integer(kind=c_size_t),
intent(out) :: num_src_fields
4910 type(c_ptr),
intent(out) :: src_field_buffer_size
4912 end subroutine yac_cget_raw_interp_weights_data_c
4914 subroutine free_c ( ptr ) bind ( c, NAME='free' )
4916 use,
intrinsic :: iso_c_binding, only : c_ptr
4918 type ( c_ptr ),
intent(in),
value :: ptr
4920 end subroutine free_c
4925 CALL yac_cget_raw_interp_weights_data_c ( &
4926 int(field_id, c_int), &
4927 frac_mask_fallback_value_c, &
4929 scaling_summand_c, &
4930 num_fixed_values_c, &
4931 fixed_values_c_ptr, &
4932 num_tgt_per_fixed_value_c_ptr, &
4933 tgt_idx_fixed_c_ptr, &
4935 wgt_tgt_idx_c_ptr, &
4936 num_src_per_tgt_c_ptr, &
4938 src_field_idx_c_ptr, &
4941 src_field_buffer_size_c_ptr )
4944 fixed_values_c_ptr, fixed_values_c, [int(num_fixed_values_c)])
4946 num_tgt_per_fixed_value_c_ptr, num_tgt_per_fixed_value_c, &
4947 [int(num_fixed_values_c)])
4948 total_num_fixed_tgt = int(sum(num_tgt_per_fixed_value_c))
4950 tgt_idx_fixed_c_ptr, tgt_idx_fixed_c, [int(total_num_fixed_tgt)])
4953 wgt_tgt_idx_c_ptr, wgt_tgt_idx_c, [int(num_wgt_tgt_c)])
4955 num_src_per_tgt_c_ptr, num_src_per_tgt_c, [int(num_wgt_tgt_c)])
4956 total_num_weights = int(sum(num_src_per_tgt_c))
4958 weights_c_ptr, weights_c, [int(total_num_weights)])
4960 src_field_idx_c_ptr, src_field_idx_c, [int(total_num_weights)])
4962 src_idx_c_ptr, src_idx_c, [int(total_num_weights)])
4965 src_field_buffer_size_c_ptr, src_field_buffer_size_c, &
4966 [int(num_src_fields_c)])
4969 frac_mask_fallback_value = dble(frac_mask_fallback_value_c)
4970 scaling_factor = dble(scaling_factor_c)
4971 scaling_summand = dble(scaling_summand_c)
4972 num_fixed_values = int(num_fixed_values_c)
4973 allocate(fixed_values, source=dble(fixed_values_c))
4974 allocate(num_tgt_per_fixed_value, source=int(num_tgt_per_fixed_value_c))
4975 allocate(tgt_idx_fixed, source=int(tgt_idx_fixed_c)+1)
4976 num_wgt_tgt = int(num_wgt_tgt_c)
4977 allocate(wgt_tgt_idx, source=int(wgt_tgt_idx_c)+1)
4978 allocate(num_src_per_tgt, source=int(num_src_per_tgt_c))
4979 allocate(weights, source=dble(weights_c))
4980 allocate(src_field_idx, source=int(src_field_idx_c)+1)
4981 allocate(src_idx, source=int(src_idx_c)+1)
4982 num_src_fields = int(num_src_fields_c)
4983 allocate(src_field_buffer_size, source=int(src_field_buffer_size_c))
4986 CALL free_c(fixed_values_c_ptr)
4987 CALL free_c(num_tgt_per_fixed_value_c_ptr)
4988 CALL free_c(tgt_idx_fixed_c_ptr)
4989 CALL free_c(wgt_tgt_idx_c_ptr)
4990 CALL free_c(num_src_per_tgt_c_ptr)
4991 CALL free_c(weights_c_ptr)
4992 CALL free_c(src_field_idx_c_ptr)
4993 CALL free_c(src_idx_c_ptr)
4994 CALL free_c(src_field_buffer_size_c_ptr)
5000 frac_mask_fallback_value, &
5005 num_tgt_per_fixed_value, &
5012 src_field_buffer_size )
5016 use,
intrinsic :: iso_c_binding, only : &
5017 c_int, c_size_t, c_double, c_ptr, c_f_pointer
5021 integer,
intent (in) :: field_id
5022 double precision,
intent(out) :: frac_mask_fallback_value
5023 double precision,
intent(out) :: scaling_factor
5024 double precision,
intent(out) :: scaling_summand
5025 integer,
intent(out) :: num_fixed_values
5026 double precision,
allocatable,
intent(out) :: fixed_values(:)
5027 integer,
allocatable,
intent(out) :: num_tgt_per_fixed_value(:)
5028 integer,
allocatable,
intent(out) :: tgt_idx_fixed(:)
5029 integer,
allocatable,
intent(out) :: src_indptr(:)
5030 double precision,
allocatable,
intent(out) :: weights(:)
5031 integer,
allocatable,
intent(out) :: src_field_idx(:)
5032 integer,
allocatable,
intent(out) :: src_idx(:)
5033 integer,
intent(out) :: num_src_fields
5034 integer,
allocatable,
intent(out) :: src_field_buffer_size(:)
5036 integer :: total_num_fixed_tgt, total_num_weights
5038 real (kind=c_double) :: frac_mask_fallback_value_c
5039 real (kind=c_double) :: scaling_factor_c
5040 real (kind=c_double) :: scaling_summand_c
5041 integer ( kind=c_size_t ) :: num_fixed_values_c
5042 real (kind=c_double),
pointer :: fixed_values_c(:)
5043 integer ( kind=c_size_t ),
pointer :: num_tgt_per_fixed_value_c(:)
5044 integer ( kind=c_size_t ),
pointer :: tgt_idx_fixed_c(:)
5045 integer ( kind=c_size_t ),
pointer :: src_indptr_c(:)
5046 real (kind=c_double),
pointer :: weights_c(:)
5047 integer ( kind=c_size_t ),
pointer :: src_field_idx_c(:)
5048 integer ( kind=c_size_t ),
pointer :: src_idx_c(:)
5049 integer ( kind=c_size_t ) :: num_src_fields_c
5050 integer ( kind=c_size_t ),
pointer :: src_field_buffer_size_c(:)
5051 integer ( kind=c_size_t ) :: tgt_field_data_size_c
5053 type(c_ptr) :: fixed_values_c_ptr
5054 type(c_ptr) :: num_tgt_per_fixed_value_c_ptr
5055 type(c_ptr) :: tgt_idx_fixed_c_ptr
5056 type(c_ptr) :: src_indptr_c_ptr
5057 type(c_ptr) :: weights_c_ptr
5058 type(c_ptr) :: src_field_idx_c_ptr
5059 type(c_ptr) :: src_idx_c_ptr
5060 type(c_ptr) :: src_field_buffer_size_c_ptr
5064 subroutine yac_cget_raw_interp_weights_data_csr_c2f_c ( &
5066 frac_mask_fallback_value, &
5071 num_tgt_per_fixed_value, &
5078 src_field_buffer_size, &
5079 tgt_field_data_size) &
5080 bind( c, name=
'yac_cget_raw_interp_weights_data_csr_c2f' )
5082 use,
intrinsic :: iso_c_binding, only : c_int, c_size_t, c_double, c_ptr
5084 integer ( kind=c_int ),
value :: field_id
5085 real (kind=c_double),
intent(out) :: frac_mask_fallback_value
5086 real (kind=c_double),
intent(out) :: scaling_factor
5087 real (kind=c_double),
intent(out) :: scaling_summand
5088 integer(kind=c_size_t),
intent(out) :: num_fixed_values
5089 type(c_ptr),
intent(out) :: fixed_values
5090 type(c_ptr),
intent(out) :: num_tgt_per_fixed_value
5091 type(c_ptr),
intent(out) :: tgt_idx_fixed
5092 type(c_ptr),
intent(out) :: src_indptr
5093 type(c_ptr),
intent(out) :: weights
5094 type(c_ptr),
intent(out) :: src_field_idx
5095 type(c_ptr),
intent(out) :: src_idx
5096 integer(kind=c_size_t),
intent(out) :: num_src_fields
5097 type(c_ptr),
intent(out) :: src_field_buffer_size
5098 integer(kind=c_size_t),
intent(out) :: tgt_field_data_size
5100 end subroutine yac_cget_raw_interp_weights_data_csr_c2f_c
5102 subroutine free_c ( ptr ) bind ( c, NAME='free' )
5104 use,
intrinsic :: iso_c_binding, only : c_ptr
5106 type ( c_ptr ),
intent(in),
value :: ptr
5108 end subroutine free_c
5113 CALL yac_cget_raw_interp_weights_data_csr_c2f_c ( &
5114 int(field_id, c_int), &
5115 frac_mask_fallback_value_c, &
5117 scaling_summand_c, &
5118 num_fixed_values_c, &
5119 fixed_values_c_ptr, &
5120 num_tgt_per_fixed_value_c_ptr, &
5121 tgt_idx_fixed_c_ptr, &
5124 src_field_idx_c_ptr, &
5127 src_field_buffer_size_c_ptr, &
5128 tgt_field_data_size_c)
5131 fixed_values_c_ptr, fixed_values_c, [int(num_fixed_values_c)])
5133 num_tgt_per_fixed_value_c_ptr, num_tgt_per_fixed_value_c, &
5134 [int(num_fixed_values_c)])
5135 total_num_fixed_tgt = int(sum(num_tgt_per_fixed_value_c))
5137 tgt_idx_fixed_c_ptr, tgt_idx_fixed_c, [int(total_num_fixed_tgt)])
5140 src_indptr_c_ptr, src_indptr_c, [int(tgt_field_data_size_c+1)])
5141 total_num_weights = int(src_indptr_c(tgt_field_data_size_c+1))
5143 weights_c_ptr, weights_c, [int(total_num_weights)])
5145 src_field_idx_c_ptr, src_field_idx_c, [int(total_num_weights)])
5147 src_idx_c_ptr, src_idx_c, [int(total_num_weights)])
5150 src_field_buffer_size_c_ptr, src_field_buffer_size_c, &
5151 [int(num_src_fields_c)])
5154 frac_mask_fallback_value = dble(frac_mask_fallback_value_c)
5155 scaling_factor = dble(scaling_factor_c)
5156 scaling_summand = dble(scaling_summand_c)
5157 num_fixed_values = int(num_fixed_values_c)
5158 allocate(fixed_values, source=dble(fixed_values_c))
5159 allocate(num_tgt_per_fixed_value, source=int(num_tgt_per_fixed_value_c))
5160 allocate(tgt_idx_fixed, source=int(tgt_idx_fixed_c)+1)
5161 allocate(src_indptr, source=int(src_indptr_c)+1)
5162 allocate(weights, source=dble(weights_c))
5163 allocate(src_field_idx, source=int(src_field_idx_c)+1)
5164 allocate(src_idx, source=int(src_idx_c)+1)
5165 num_src_fields = int(num_src_fields_c)
5166 allocate(src_field_buffer_size, source=int(src_field_buffer_size_c))
5169 CALL free_c(fixed_values_c_ptr)
5170 CALL free_c(num_tgt_per_fixed_value_c_ptr)
5171 CALL free_c(tgt_idx_fixed_c_ptr)
5172 CALL free_c(src_indptr_c_ptr)
5173 CALL free_c(weights_c_ptr)
5174 CALL free_c(src_field_idx_c_ptr)
5175 CALL free_c(src_idx_c_ptr)
5176 CALL free_c(src_field_buffer_size_c_ptr)
5202 integer,
intent (in) :: field_id
5203 integer,
intent (in) :: nbr_hor_points
5204 integer,
intent (in) :: nbr_pointsets
5205 integer,
intent (in) :: collection_size
5206 real,
intent (in) :: send_field(nbr_hor_points, &
5209 integer,
intent (out) :: info
5210 integer,
intent (out) :: ierror
5212 double precision,
allocatable :: send_field_dble(:,:,:)
5215 allocate(send_field_dble(nbr_hor_points, &
5219 field_id, collection_size, nbr_pointsets, &
5220 (/(nbr_hor_points,i=1,nbr_pointsets)/) )
5237 deallocate(send_field_dble)
5264 integer,
intent (in) :: field_id
5265 integer,
intent (in) :: nbr_hor_points
5266 integer,
intent (in) :: nbr_pointsets
5267 integer,
intent (in) :: collection_size
5268 real,
intent (in) :: send_field(nbr_hor_points, &
5271 real,
intent (in) :: send_frac_mask(nbr_hor_points, &
5274 integer,
intent (out) :: info
5275 integer,
intent (out) :: ierror
5277 double precision,
allocatable :: send_field_dble(:,:,:)
5278 double precision,
allocatable :: send_frac_mask_dble(:,:,:)
5281 allocate(send_field_dble(nbr_hor_points, &
5284 allocate(send_frac_mask_dble(nbr_hor_points, &
5288 field_id, collection_size, nbr_pointsets, &
5289 (/(nbr_hor_points,i=1,nbr_pointsets)/) )
5298 send_frac_mask_dble)
5305 send_frac_mask_dble, &
5309 deallocate(send_field_dble)
5310 deallocate(send_frac_mask_dble)
5333 integer,
intent (in) :: field_id
5334 integer,
intent (in) :: nbr_pointsets
5335 integer,
intent (in) :: collection_size
5336 type(
yac_real_ptr),
intent (in) :: send_field(nbr_pointsets, &
5338 integer,
intent (out) :: info
5339 integer,
intent (out) :: ierror
5342 type(
yac_dble_ptr),
allocatable :: send_field_dble(:,:)
5344 allocate(send_field_dble(nbr_pointsets, collection_size))
5346 field_id, collection_size, nbr_pointsets, &
5347 (/(
SIZE(send_field(i, 1)%p),i=1,nbr_pointsets)/) )
5362 do i = 1, collection_size
5363 do j = 1, nbr_pointsets
5364 deallocate(send_field_dble(j, i)%p)
5368 deallocate(send_field_dble)
5393 integer,
intent (in) :: field_id
5394 integer,
intent (in) :: nbr_pointsets
5395 integer,
intent (in) :: collection_size
5396 type(
yac_real_ptr),
intent (in) :: send_field(nbr_pointsets, &
5398 type(
yac_real_ptr),
intent (in) :: send_frac_mask(nbr_pointsets, &
5400 integer,
intent (out) :: info
5401 integer,
intent (out) :: ierror
5404 type(
yac_dble_ptr),
allocatable :: send_field_dble(:,:)
5405 type(
yac_dble_ptr),
allocatable :: send_frac_mask_dble(:,:)
5407 allocate(send_field_dble(nbr_pointsets, collection_size))
5408 allocate(send_frac_mask_dble(nbr_pointsets, collection_size))
5411 field_id, collection_size, nbr_pointsets, &
5412 (/(
SIZE(send_field(i, 1)%p),i=1,nbr_pointsets)/) )
5420 send_frac_mask_dble)
5426 send_frac_mask_dble, &
5430 do i = 1, collection_size
5431 do j = 1, nbr_pointsets
5432 deallocate(send_field_dble(j, i)%p)
5433 deallocate(send_frac_mask_dble(j, i)%p)
5437 deallocate(send_field_dble)
5438 deallocate(send_frac_mask_dble)
5461 integer,
intent (in) :: field_id
5462 integer,
intent (in) :: nbr_hor_points
5463 integer,
intent (in) :: collection_size
5464 real,
intent (in) :: send_field(nbr_hor_points, &
5466 integer,
intent (out) :: info
5467 integer,
intent (out) :: ierror
5469 double precision,
allocatable :: send_field_dble(:,:)
5472 field_id, collection_size, 1, (/nbr_hor_points/) )
5474 allocate(send_field_dble(nbr_hor_points, collection_size))
5489 deallocate(send_field_dble)
5514 integer,
intent (in) :: field_id
5515 integer,
intent (in) :: nbr_hor_points
5516 integer,
intent (in) :: collection_size
5517 real,
intent (in) :: send_field(nbr_hor_points, &
5519 real,
intent (in) :: send_frac_mask(nbr_hor_points, &
5521 integer,
intent (out) :: info
5522 integer,
intent (out) :: ierror
5524 double precision,
allocatable :: send_field_dble(:,:)
5525 double precision,
allocatable :: send_frac_mask_dble(:,:)
5527 allocate(send_field_dble(nbr_hor_points, collection_size))
5528 allocate(send_frac_mask_dble(nbr_hor_points, collection_size))
5531 field_id, collection_size, 1, (/nbr_hor_points/) )
5539 send_frac_mask_dble)
5545 send_frac_mask_dble, &
5549 deallocate(send_field_dble)
5550 deallocate(send_frac_mask_dble)
5576 subroutine yac_cput__c ( field_id, &
5580 ierror ) bind ( c, name='yac_cput_' )
5582 use,
intrinsic :: iso_c_binding, only : c_int, c_double
5584 integer ( kind=c_int ),
value :: field_id
5585 integer ( kind=c_int ),
value :: collection_size
5586 real ( kind=c_double ) :: send_field(*)
5587 integer ( kind=c_int ) :: info
5588 integer ( kind=c_int ) :: ierror
5590 end subroutine yac_cput__c
5594 integer,
intent (in) :: field_id
5595 integer,
intent (in) :: nbr_hor_points
5596 integer,
intent (in) :: nbr_pointsets
5597 integer,
intent (in) :: collection_size
5598 double precision,
intent (in) :: send_field(nbr_hor_points, &
5601 integer,
intent (out) :: info
5602 integer,
intent (out) :: ierror
5607 field_id, collection_size, nbr_pointsets, &
5608 (/(nbr_hor_points,i=1,nbr_pointsets)/) )
5610 call yac_cput__c ( field_id, &
5642 subroutine yac_cput_frac__c ( field_id, &
5648 bind( c, name=
'yac_cput_frac_' )
5650 use,
intrinsic :: iso_c_binding, only : c_int, c_double
5652 integer ( kind=c_int ),
value :: field_id
5653 integer ( kind=c_int ),
value :: collection_size
5654 real ( kind=c_double ) :: send_field(*)
5655 real ( kind=c_double ) :: send_frac_mask(*)
5656 integer ( kind=c_int ) :: info
5657 integer ( kind=c_int ) :: ierror
5659 end subroutine yac_cput_frac__c
5663 integer,
intent (in) :: field_id
5664 integer,
intent (in) :: nbr_hor_points
5665 integer,
intent (in) :: nbr_pointsets
5666 integer,
intent (in) :: collection_size
5667 double precision,
intent (in) :: send_field(nbr_hor_points, &
5670 double precision,
intent (in) :: send_frac_mask(nbr_hor_points, &
5673 integer,
intent (out) :: info
5674 integer,
intent (out) :: ierror
5679 field_id, collection_size, nbr_pointsets, &
5680 (/(nbr_hor_points,i=1,nbr_pointsets)/) )
5682 call yac_cput_frac__c ( field_id, &
5707 use,
intrinsic :: iso_c_binding, only: c_ptr
5713 subroutine yac_cput_ptr__c ( field_id, &
5718 bind( c, name=
'yac_cput_ptr_' )
5720 use,
intrinsic :: iso_c_binding, only : c_int, c_ptr
5722 integer ( kind=c_int ),
value :: field_id
5723 integer ( kind=c_int ),
value :: collection_size
5724 type(c_ptr) :: send_field(*)
5725 integer ( kind=c_int ) :: info
5726 integer ( kind=c_int ) :: ierror
5728 end subroutine yac_cput_ptr__c
5732 integer,
intent (in) :: field_id
5733 integer,
intent (in) :: nbr_pointsets
5734 integer,
intent (in) :: collection_size
5735 type(
yac_dble_ptr),
intent (in) :: send_field(nbr_pointsets, collection_size)
5736 integer,
intent (out) :: info
5737 integer,
intent (out) :: ierror
5740 type(c_ptr),
allocatable :: send_field_(:,:)
5742 allocate(send_field_(nbr_pointsets, collection_size))
5745 field_id, collection_size, nbr_pointsets, &
5746 (/(
SIZE(send_field(i, 1)%p),i=1,nbr_pointsets)/) )
5748 do i = 1, collection_size
5749 do j = 1, nbr_pointsets
5750 send_field_(j, i) = &
5751 yac_dble2cptr(
"yac_fput_dble_ptr",
"send_field", send_field(j, i))
5755 call yac_cput_ptr__c ( field_id, &
5761 deallocate(send_field_)
5783 use,
intrinsic :: iso_c_binding, only: c_ptr
5789 subroutine yac_cput_frac_ptr__c ( field_id, &
5795 bind( c, name=
'yac_cput_frac_ptr_' )
5797 use,
intrinsic :: iso_c_binding, only : c_int, c_ptr
5799 integer ( kind=c_int ),
value :: field_id
5800 integer ( kind=c_int ),
value :: collection_size
5801 type(c_ptr) :: send_field(*)
5802 type(c_ptr) :: send_frac_mask(*)
5803 integer ( kind=c_int ) :: info
5804 integer ( kind=c_int ) :: ierror
5806 end subroutine yac_cput_frac_ptr__c
5810 integer,
intent (in) :: field_id
5811 integer,
intent (in) :: nbr_pointsets
5812 integer,
intent (in) :: collection_size
5813 type(
yac_dble_ptr),
intent (in) :: send_field(nbr_pointsets, collection_size)
5814 type(
yac_dble_ptr),
intent (in) :: send_frac_mask(nbr_pointsets, collection_size)
5815 integer,
intent (out) :: info
5816 integer,
intent (out) :: ierror
5819 type(c_ptr),
allocatable :: send_field_(:,:)
5820 type(c_ptr),
allocatable :: send_frac_mask_(:,:)
5822 allocate(send_field_(nbr_pointsets, collection_size))
5823 allocate(send_frac_mask_(nbr_pointsets, collection_size))
5826 field_id, collection_size, nbr_pointsets, &
5827 (/(
SIZE(send_field(i, 1)%p),i=1,nbr_pointsets)/) )
5829 do i = 1, collection_size
5830 do j = 1, nbr_pointsets
5831 send_field_(j, i) = &
5833 "yac_fput_frac_dble_ptr",
"send_field", send_field(j, i))
5834 send_frac_mask_(j, i) = &
5836 "yac_fput_frac_dble_ptr",
"send_frac_mask", send_frac_mask(j, i))
5840 call yac_cput_frac_ptr__c ( field_id, &
5847 deallocate(send_field_)
5848 deallocate(send_frac_mask_)
5872 subroutine yac_cput__c ( field_id, &
5876 ierror ) bind ( c, name='yac_cput_' )
5878 use,
intrinsic :: iso_c_binding, only : c_int, c_double
5880 integer ( kind=c_int ),
value :: field_id
5881 integer ( kind=c_int ),
value :: collection_size
5882 real ( kind=c_double ) :: send_field(*)
5883 integer ( kind=c_int ) :: info
5884 integer ( kind=c_int ) :: ierror
5886 end subroutine yac_cput__c
5890 integer,
intent (in) :: field_id
5891 integer,
intent (in) :: nbr_hor_points
5892 integer,
intent (in) :: collection_size
5893 double precision,
intent (in) :: send_field(nbr_hor_points, &
5895 integer,
intent (out) :: info
5896 integer,
intent (out) :: ierror
5899 field_id, collection_size, 1, (/nbr_hor_points/) )
5901 call yac_cput__c ( field_id, &
5931 subroutine yac_cput_frac__c ( field_id, &
5937 bind( c, name=
'yac_cput_frac_' )
5939 use,
intrinsic :: iso_c_binding, only : c_int, c_double
5941 integer ( kind=c_int ),
value :: field_id
5942 integer ( kind=c_int ),
value :: collection_size
5943 real ( kind=c_double ) :: send_field(*)
5944 real ( kind=c_double ) :: send_frac_mask(*)
5945 integer ( kind=c_int ) :: info
5946 integer ( kind=c_int ) :: ierror
5948 end subroutine yac_cput_frac__c
5952 integer,
intent (in) :: field_id
5953 integer,
intent (in) :: nbr_hor_points
5954 integer,
intent (in) :: collection_size
5955 double precision,
intent (in) :: send_field(nbr_hor_points, &
5957 double precision,
intent (in) :: send_frac_mask(nbr_hor_points, &
5959 integer,
intent (out) :: info
5960 integer,
intent (out) :: ierror
5963 field_id, collection_size, 1, (/nbr_hor_points/) )
5965 call yac_cput_frac__c ( field_id, &
5988 integer,
intent (in) :: field_id
5989 integer,
intent (in) :: nbr_hor_points
5990 integer,
intent (in) :: collection_size
5991 real,
intent (inout) :: recv_field(nbr_hor_points, collection_size)
5993 integer,
intent (out) :: info
5994 integer,
intent (out) :: ierror
5996 double precision,
allocatable :: recv_field_dble(:,:)
5999 field_id, collection_size, 1, (/nbr_hor_points/) )
6001 allocate(recv_field_dble(nbr_hor_points, collection_size))
6022 deallocate(recv_field_dble)
6037 integer,
intent (in) :: field_id
6038 integer,
intent (in) :: collection_size
6040 integer,
intent (out) :: info
6041 integer,
intent (out) :: ierror
6045 allocate(recv_field_dble(collection_size))
6048 field_id, collection_size, 1, (/
SIZE(recv_field(1)%p, 1)/) )
6081 subroutine yac_cget__c ( field_id, &
6085 ierror ) bind ( c, name='yac_cget_' )
6087 use,
intrinsic :: iso_c_binding, only : c_int, c_double
6089 integer ( kind=c_int ),
value :: field_id
6090 integer ( kind=c_int ),
value :: collection_size
6091 real ( kind=c_double ) :: recv_field(*)
6092 integer ( kind=c_int ) :: info
6093 integer ( kind=c_int ) :: ierror
6095 end subroutine yac_cget__c
6099 integer,
intent (in) :: field_id
6100 integer,
intent (in) :: nbr_hor_points
6101 integer,
intent (in) :: collection_size
6102 double precision,
intent (inout):: recv_field(nbr_hor_points, collection_size)
6104 integer,
intent (out) :: info
6105 integer,
intent (out) :: ierror
6108 field_id, collection_size, 1, (/nbr_hor_points/) )
6110 call yac_cget__c ( field_id, &
6126 use,
intrinsic :: iso_c_binding, only: c_ptr
6132 subroutine yac_cget_c ( field_id, &
6136 ierror ) bind ( c, name='yac_cget' )
6138 use,
intrinsic :: iso_c_binding, only : c_int, c_ptr
6140 integer ( kind=c_int ),
value :: field_id
6141 integer ( kind=c_int ),
value :: collection_size
6142 type(c_ptr) :: recv_field(*)
6143 integer ( kind=c_int ) :: info
6144 integer ( kind=c_int ) :: ierror
6146 end subroutine yac_cget_c
6150 integer,
intent (in) :: field_id
6151 integer,
intent (in) :: collection_size
6153 integer,
intent (out) :: info
6154 integer,
intent (out) :: ierror
6157 type(c_ptr),
allocatable :: recv_field_(:)
6159 allocate(recv_field_(collection_size))
6162 field_id, collection_size, 1, (/
SIZE(recv_field(1)%p)/) )
6164 do i = 1, collection_size
6165 recv_field_(i) =
yac_dble2cptr(
"yac_fget_dble_ptr",
"recv_field", recv_field(i))
6168 call yac_cget_c ( field_id, &
6174 deallocate(recv_field_)
6181 src_field_buffer_size, &
6192 integer,
intent (in) :: field_id
6193 integer,
intent (in) :: src_field_buffer_size
6196 integer,
intent (in) :: collection_size
6197 real,
intent (out) :: &
6198 src_field_buffer(src_field_buffer_size, collection_size)
6200 integer,
intent (out) :: info
6201 integer,
intent (out) :: ierror
6203 double precision,
allocatable :: src_field_buffer_dble(:, :)
6205 allocate(src_field_buffer_dble(src_field_buffer_size, collection_size))
6208 src_field_buffer_size, &
6210 src_field_buffer_dble, &
6214 src_field_buffer = real(src_field_buffer_dble)
6216 deallocate(src_field_buffer_dble)
6228 use,
intrinsic :: iso_c_binding, only: c_null_char
6232 integer,
intent (in) :: field_id
6233 integer,
intent (in) :: num_src_fields
6234 integer,
intent (in) :: collection_size
6236 src_field_buffer(num_src_fields, collection_size)
6238 integer,
intent (out) :: info
6239 integer,
intent (out) :: ierror
6242 integer,
allocatable :: src_field_buffer_sizes(:)
6243 type(
yac_dble_ptr),
allocatable :: src_field_buffer_dble(:,:)
6245 allocate(src_field_buffer_sizes(num_src_fields))
6246 allocate(src_field_buffer_dble(num_src_fields, collection_size))
6248 do i = 1, num_src_fields
6249 src_field_buffer_sizes(i) =
size(src_field_buffer(i,1)%p(:))
6250 do j = 1, collection_size
6251 yac_fassert(src_field_buffer_sizes(i) ==
size(src_field_buffer(i,j)%p),
"ERROR(yac_fget_raw_real_ptr): inconsistent source buffer sizes")
6252 allocate(src_field_buffer_dble(i,j)%p(src_field_buffer_sizes(i)))
6257 field_id, num_src_fields, collection_size, src_field_buffer_sizes)
6262 src_field_buffer_dble, &
6266 do i = 1, num_src_fields
6267 do j = 1, collection_size
6268 src_field_buffer(i,j)%p = &
6269 real(src_field_buffer_dble(i,j)%p)
6270 deallocate(src_field_buffer_dble(i,j)%p)
6274deallocate(src_field_buffer_sizes)
6275deallocate(src_field_buffer_dble)
6280 src_field_buffer_size, &
6292 subroutine yac_cget_raw__c ( field_id, &
6297 bind( c, name=
'yac_cget_raw_' )
6299 use,
intrinsic :: iso_c_binding, only : c_int, c_double
6301 integer ( kind=c_int ),
value :: field_id
6302 integer ( kind=c_int ),
value :: collection_size
6303 real ( kind=c_double ) :: src_field_buffer(*)
6304 integer ( kind=c_int ) :: info
6305 integer ( kind=c_int ) :: ierror
6307 end subroutine yac_cget_raw__c
6311 integer,
intent (in) :: field_id
6312 integer,
intent (in) :: src_field_buffer_size
6314 integer,
intent (in) :: collection_size
6315 double precision,
intent (out) :: &
6316 src_field_buffer(src_field_buffer_size, collection_size)
6318 integer,
intent (out) :: info
6319 integer,
intent (out) :: ierror
6322 field_id, collection_size, src_field_buffer_size)
6324 call yac_cget_raw__c ( field_id, &
6342 use,
intrinsic :: iso_c_binding, only: c_ptr, c_null_char
6348 subroutine yac_cget_raw_ptr__c ( field_id, &
6353 bind( c, name=
'yac_cget_raw_ptr_' )
6355 use,
intrinsic :: iso_c_binding, only : c_int, c_ptr
6357 integer ( kind=c_int ),
value :: field_id
6358 integer ( kind=c_int ),
value :: collection_size
6359 type(c_ptr) :: src_field_buffer(*)
6360 integer ( kind=c_int ) :: info
6361 integer ( kind=c_int ) :: ierror
6363 end subroutine yac_cget_raw_ptr__c
6365 subroutine yac_cget_raw_async_ptr__c ( field_id, &
6370 bind( c, name=
'yac_cget_raw_async_ptr_' )
6372 use,
intrinsic :: iso_c_binding, only : c_int, c_ptr
6374 integer ( kind=c_int ),
value :: field_id
6375 integer ( kind=c_int ),
value :: collection_size
6376 type(c_ptr) :: src_field_buffer(*)
6377 integer ( kind=c_int ) :: info
6378 integer ( kind=c_int ) :: ierror
6380 end subroutine yac_cget_raw_async_ptr__c
6384 integer,
intent (in) :: field_id
6385 integer,
intent (in) :: num_src_fields
6386 integer,
intent (in) :: collection_size
6388 src_field_buffer(num_src_fields, collection_size)
6390 integer,
intent (out) :: info
6391 integer,
intent (out) :: ierror
6392 logical,
intent(in) :: use_async
6395 integer,
allocatable :: src_field_buffer_sizes(:)
6396 type(c_ptr),
allocatable :: src_field_buffer_(:,:)
6398 allocate(src_field_buffer_sizes(num_src_fields))
6399 allocate(src_field_buffer_(num_src_fields, collection_size))
6401 src_field_buffer_sizes = &
6402 (/(
SIZE(src_field_buffer(i, 1)%p),i=1,num_src_fields)/)
6405 field_id, num_src_fields, collection_size, src_field_buffer_sizes)
6407 do i = 1, collection_size
6408 do j = 1, num_src_fields
6409 yac_fassert(src_field_buffer_sizes(j) ==
size(src_field_buffer(j,i)%p),
"ERROR(yac_get_raw_dble_ptr): inconsistent source buffer sizes")
6410 src_field_buffer_(j, i) = &
6412 "yac_get_raw_dble_ptr",
"src_field_buffer", src_field_buffer(j, i))
6417 call yac_cget_raw_async_ptr__c ( field_id, &
6419 src_field_buffer_, &
6423 call yac_cget_raw_ptr__c ( field_id, &
6425 src_field_buffer_, &
6430 deallocate(src_field_buffer_sizes)
6431 deallocate(src_field_buffer_)
6455 integer,
intent (in) :: field_id
6456 integer,
intent (in) :: num_src_fields
6457 integer,
intent (in) :: collection_size
6459 src_field_buffer(num_src_fields, collection_size)
6460 integer,
intent (out) :: info
6461 integer,
intent (out) :: ierror
6462 logical,
intent(in) :: use_async
6466 integer,
intent (in) :: field_id
6467 integer,
intent (in) :: num_src_fields
6468 integer,
intent (in) :: collection_size
6470 src_field_buffer(num_src_fields, collection_size)
6472 integer,
intent (out) :: info
6473 integer,
intent (out) :: ierror
6476 field_id, num_src_fields, collection_size, &
6477 src_field_buffer, info, ierror, .false. )
6482 src_field_buffer_size, &
6485 src_frac_mask_buffer, &
6494 integer,
intent (in) :: field_id
6495 integer,
intent (in) :: src_field_buffer_size
6497 integer,
intent (in) :: collection_size
6498 real,
intent (out) :: &
6499 src_field_buffer(src_field_buffer_size, collection_size)
6501 real,
intent (out) :: &
6502 src_frac_mask_buffer(src_field_buffer_size, collection_size)
6504 integer,
intent (out) :: info
6505 integer,
intent (out) :: ierror
6507 double precision,
allocatable :: src_field_buffer_dble(:, :)
6508 double precision,
allocatable :: src_frac_mask_buffer_dble(:, :)
6510 allocate(src_field_buffer_dble(src_field_buffer_size, collection_size))
6511 allocate(src_frac_mask_buffer_dble(src_field_buffer_size, collection_size))
6514 src_field_buffer_size, &
6516 src_field_buffer_dble, &
6517 src_frac_mask_buffer_dble, &
6521 src_field_buffer = real(src_field_buffer_dble)
6522 src_frac_mask_buffer = real(src_frac_mask_buffer_dble)
6524 deallocate(src_field_buffer_dble)
6525 deallocate(src_frac_mask_buffer_dble)
6533 src_frac_mask_buffer, &
6538 use,
intrinsic :: iso_c_binding, only: c_null_char
6542 integer,
intent (in) :: field_id
6543 integer,
intent (in) :: num_src_fields
6544 integer,
intent (in) :: collection_size
6546 src_field_buffer(num_src_fields, collection_size)
6549 src_frac_mask_buffer(num_src_fields, collection_size)
6551 integer,
intent (out) :: info
6552 integer,
intent (out) :: ierror
6555 integer,
allocatable :: src_field_buffer_sizes(:)
6556 type(
yac_dble_ptr),
allocatable :: src_field_buffer_dble(:,:)
6557 type(
yac_dble_ptr),
allocatable :: src_frac_mask_buffer_dble(:,:)
6559 allocate(src_field_buffer_sizes(num_src_fields))
6560 allocate(src_field_buffer_dble(num_src_fields, collection_size))
6561 allocate(src_frac_mask_buffer_dble(num_src_fields, collection_size))
6563 do i = 1, num_src_fields
6564 src_field_buffer_sizes(i) =
size(src_field_buffer(i,1)%p(:))
6565 do j = 1, collection_size
6566 yac_fassert(src_field_buffer_sizes(i) ==
size(src_field_buffer(i,j)%p),
"ERROR(yac_fget_raw_frac_real_ptr): inconsistent source buffer sizes")
6567 allocate(src_field_buffer_dble(i,j)%p(src_field_buffer_sizes(i)))
6568 allocate(src_frac_mask_buffer_dble(i,j)%p(src_field_buffer_sizes(i)))
6573 field_id, num_src_fields, collection_size, src_field_buffer_sizes)
6578 src_field_buffer_dble, &
6579 src_frac_mask_buffer_dble, &
6583 do i = 1, num_src_fields
6584 do j = 1, collection_size
6585 src_field_buffer(i,j)%p = &
6586 real(src_field_buffer_dble(i,j)%p)
6587 deallocate(src_field_buffer_dble(i,j)%p)
6588 src_frac_mask_buffer(i,j)%p = &
6589 real(src_frac_mask_buffer_dble(i,j)%p)
6590 deallocate(src_frac_mask_buffer_dble(i,j)%p)
6594deallocate(src_field_buffer_sizes)
6595deallocate(src_field_buffer_dble)
6596deallocate(src_frac_mask_buffer_dble)
6601 src_field_buffer_size, &
6604 src_frac_mask_buffer, &
6614 subroutine yac_cget_raw_frac__c ( field_id, &
6617 src_frac_mask_buffer, &
6620 bind( c, name=
'yac_cget_raw_frac_' )
6622 use,
intrinsic :: iso_c_binding, only : c_int, c_double
6624 integer ( kind=c_int ),
value :: field_id
6625 integer ( kind=c_int ),
value :: collection_size
6626 real ( kind=c_double ) :: src_field_buffer(*)
6627 real ( kind=c_double ) :: src_frac_mask_buffer(*)
6628 integer ( kind=c_int ) :: info
6629 integer ( kind=c_int ) :: ierror
6631 end subroutine yac_cget_raw_frac__c
6635 integer,
intent (in) :: field_id
6636 integer,
intent (in) :: src_field_buffer_size
6638 integer,
intent (in) :: collection_size
6639 double precision,
intent (out) :: &
6640 src_field_buffer(src_field_buffer_size, collection_size)
6642 double precision,
intent (out) :: &
6643 src_frac_mask_buffer(src_field_buffer_size, collection_size)
6645 integer,
intent (out) :: info
6646 integer,
intent (out) :: ierror
6649 field_id, collection_size, src_field_buffer_size)
6651 call yac_cget_raw_frac__c ( field_id, &
6654 src_frac_mask_buffer, &
6664 src_frac_mask_buffer, &
6671 use,
intrinsic :: iso_c_binding, only: c_ptr, c_null_char
6677 subroutine yac_cget_raw_frac_ptr__c ( field_id, &
6680 src_frac_mask_buffer, &
6683 bind( c, name=
'yac_cget_raw_frac_ptr_' )
6685 use,
intrinsic :: iso_c_binding, only : c_int, c_ptr
6687 integer ( kind=c_int ),
value :: field_id
6688 integer ( kind=c_int ),
value :: collection_size
6689 type(c_ptr) :: src_field_buffer(*)
6690 type(c_ptr) :: src_frac_mask_buffer(*)
6691 integer ( kind=c_int ) :: info
6692 integer ( kind=c_int ) :: ierror
6694 end subroutine yac_cget_raw_frac_ptr__c
6696 subroutine yac_cget_raw_frac_async_ptr__c ( field_id, &
6699 src_frac_mask_buffer, &
6702 bind( c, name=
'yac_cget_raw_frac_async_ptr_' )
6704 use,
intrinsic :: iso_c_binding, only : c_int, c_ptr
6706 integer ( kind=c_int ),
value :: field_id
6707 integer ( kind=c_int ),
value :: collection_size
6708 type(c_ptr) :: src_field_buffer(*)
6709 type(c_ptr) :: src_frac_mask_buffer(*)
6710 integer ( kind=c_int ) :: info
6711 integer ( kind=c_int ) :: ierror
6713 end subroutine yac_cget_raw_frac_async_ptr__c
6717 integer,
intent (in) :: field_id
6718 integer,
intent (in) :: num_src_fields
6719 integer,
intent (in) :: collection_size
6721 src_field_buffer(num_src_fields, collection_size)
6724 src_frac_mask_buffer(num_src_fields, collection_size)
6726 integer,
intent (out) :: info
6727 integer,
intent (out) :: ierror
6728 logical,
intent(in) :: use_async
6731 integer,
allocatable :: src_field_buffer_sizes(:)
6732 type(c_ptr),
allocatable :: src_field_buffer_(:,:)
6733 type(c_ptr),
allocatable :: src_frac_mask_buffer_(:,:)
6735 allocate(src_field_buffer_sizes(num_src_fields))
6736 allocate(src_field_buffer_(num_src_fields, collection_size))
6737 allocate(src_frac_mask_buffer_(num_src_fields, collection_size))
6739 src_field_buffer_sizes = &
6740 (/(
SIZE(src_field_buffer(i, 1)%p),i=1,num_src_fields)/)
6743 field_id, num_src_fields, collection_size, src_field_buffer_sizes)
6745 do i = 1, collection_size
6746 do j = 1, num_src_fields
6747 yac_fassert(src_field_buffer_sizes(j) ==
size(src_field_buffer(j,i)%p),
"ERROR(yac_get_raw_frac_dble_ptr): inconsistent source buffer sizes")
6748 yac_fassert(src_field_buffer_sizes(j) ==
size(src_frac_mask_buffer(j,i)%p),
"ERROR(yac_get_raw_frac_dble_ptr): inconsistent source buffer sizes")
6749 src_field_buffer_(j, i) = &
6751 "yac_get_raw_frac_dble_ptr",
"src_field_buffer", src_field_buffer(j, i))
6752 src_frac_mask_buffer_(j, i) = &
6754 "yac_get_raw_frac_dble_ptr",
"src_frac_mask_buffer", src_frac_mask_buffer(j, i))
6759 call yac_cget_raw_frac_async_ptr__c ( field_id, &
6761 src_field_buffer_, &
6762 src_frac_mask_buffer_, &
6766 call yac_cget_raw_frac_ptr__c ( field_id, &
6768 src_field_buffer_, &
6769 src_frac_mask_buffer_, &
6774 deallocate(src_field_buffer_sizes)
6775 deallocate(src_field_buffer_)
6776 deallocate(src_frac_mask_buffer_)
6784 src_frac_mask_buffer, &
6797 src_frac_mask_buffer, &
6802 integer,
intent (in) :: field_id
6803 integer,
intent (in) :: num_src_fields
6804 integer,
intent (in) :: collection_size
6806 src_field_buffer(num_src_fields, collection_size)
6808 src_frac_mask_buffer(num_src_fields, collection_size)
6809 integer,
intent (out) :: info
6810 integer,
intent (out) :: ierror
6811 logical,
intent(in) :: use_async
6815 integer,
intent (in) :: field_id
6816 integer,
intent (in) :: num_src_fields
6817 integer,
intent (in) :: collection_size
6819 src_field_buffer(num_src_fields, collection_size)
6822 src_frac_mask_buffer(num_src_fields, collection_size)
6824 integer,
intent (out) :: info
6825 integer,
intent (out) :: ierror
6828 field_id, num_src_fields, collection_size, &
6829 src_field_buffer, src_frac_mask_buffer, &
6830 info, ierror, .false.)
6844 use,
intrinsic :: iso_c_binding, only: c_ptr
6850 subroutine yac_cget_async_c ( field_id, &
6854 ierror ) bind ( c, name='yac_cget_async' )
6856 use,
intrinsic :: iso_c_binding, only : c_int, c_ptr
6858 integer ( kind=c_int ),
value :: field_id
6859 integer ( kind=c_int ),
value :: collection_size
6860 type(c_ptr) :: recv_field(*)
6861 integer ( kind=c_int ) :: info
6862 integer ( kind=c_int ) :: ierror
6864 end subroutine yac_cget_async_c
6868 integer,
intent (in) :: field_id
6869 integer,
intent (in) :: collection_size
6871 integer,
intent (out) :: info
6872 integer,
intent (out) :: ierror
6875 type(c_ptr),
allocatable :: recv_field_(:)
6878 field_id, collection_size, 1, (/
SIZE(recv_field(1)%p)/) )
6880 allocate(recv_field_(collection_size))
6882 do i = 1, collection_size
6883 recv_field_(i) =
yac_dble2cptr(
"yac_fget_async_dble_ptr",
"recv_field", recv_field(i))
6886 call yac_cget_async_c ( field_id, &
6892 deallocate(recv_field_)
6918 integer,
intent (in) :: field_id
6919 integer,
intent (in) :: num_src_fields
6920 integer,
intent (in) :: collection_size
6922 src_field_buffer(num_src_fields, collection_size)
6923 integer,
intent (out) :: info
6924 integer,
intent (out) :: ierror
6925 logical,
intent(in) :: use_async
6929 integer,
intent (in) :: field_id
6930 integer,
intent (in) :: num_src_fields
6931 integer,
intent (in) :: collection_size
6933 src_field_buffer(num_src_fields, collection_size)
6935 integer,
intent (out) :: info
6936 integer,
intent (out) :: ierror
6939 field_id, num_src_fields, collection_size, src_field_buffer, &
6940 info, ierror, .true.)
6948 src_frac_mask_buffer, &
6961 src_frac_mask_buffer, &
6966 integer,
intent (in) :: field_id
6967 integer,
intent (in) :: num_src_fields
6968 integer,
intent (in) :: collection_size
6970 src_field_buffer(num_src_fields, collection_size)
6972 src_frac_mask_buffer(num_src_fields, collection_size)
6973 integer,
intent (out) :: info
6974 integer,
intent (out) :: ierror
6975 logical,
intent(in) :: use_async
6979 integer,
intent (in) :: field_id
6980 integer,
intent (in) :: num_src_fields
6981 integer,
intent (in) :: collection_size
6983 src_field_buffer(num_src_fields, collection_size)
6986 src_frac_mask_buffer(num_src_fields, collection_size)
6988 integer,
intent (out) :: info
6989 integer,
intent (out) :: ierror
6992 field_id, num_src_fields, collection_size, &
6993 src_field_buffer, src_frac_mask_buffer, &
6994 info, ierror, .true.)
7002 send_nbr_hor_points, &
7003 send_nbr_pointsets, &
7004 recv_nbr_hor_points, &
7017 integer,
intent (in) :: send_field_id
7018 integer,
intent (in) :: recv_field_id
7019 integer,
intent (in) :: send_nbr_hor_points
7020 integer,
intent (in) :: send_nbr_pointsets
7021 integer,
intent (in) :: recv_nbr_hor_points
7022 integer,
intent (in) :: collection_size
7023 real,
intent (in) :: send_field(send_nbr_hor_points, &
7024 send_nbr_pointsets, &
7027 real,
intent (inout) :: recv_field(recv_nbr_hor_points, &
7030 integer,
intent (out) :: send_info
7031 integer,
intent (out) :: recv_info
7032 integer,
intent (out) :: ierror
7034 double precision :: send_buffer(send_nbr_hor_points, &
7035 send_nbr_pointsets, &
7037 double precision :: recv_buffer(recv_nbr_hor_points, &
7043 send_field_id, collection_size, send_nbr_pointsets, &
7044 (/(send_nbr_hor_points,i=1,send_nbr_pointsets)/) )
7046 recv_field_id, collection_size, 1, (/recv_nbr_hor_points/) )
7049 send_nbr_hor_points, &
7050 send_nbr_pointsets, &
7055 recv_nbr_hor_points, &
7062 send_nbr_hor_points, &
7063 send_nbr_pointsets, &
7064 recv_nbr_hor_points, &
7073 recv_nbr_hor_points, &
7082 send_nbr_hor_points, &
7083 send_nbr_pointsets, &
7084 recv_nbr_hor_points, &
7098 integer,
intent (in) :: send_field_id
7099 integer,
intent (in) :: recv_field_id
7100 integer,
intent (in) :: send_nbr_hor_points
7101 integer,
intent (in) :: send_nbr_pointsets
7102 integer,
intent (in) :: recv_nbr_hor_points
7103 integer,
intent (in) :: collection_size
7104 real,
intent (in) :: send_field(send_nbr_hor_points, &
7105 send_nbr_pointsets, &
7108 real,
intent (in) :: send_frac_mask(send_nbr_hor_points, &
7109 send_nbr_pointsets, &
7112 real,
intent (inout) :: recv_field(recv_nbr_hor_points, &
7115 integer,
intent (out) :: send_info
7116 integer,
intent (out) :: recv_info
7117 integer,
intent (out) :: ierror
7119 double precision,
allocatable :: send_buffer(:,:,:)
7120 double precision,
allocatable :: send_frac_mask_buffer(:,:,:)
7121 double precision,
allocatable :: recv_buffer(:,:)
7126 send_field_id, collection_size, send_nbr_pointsets, &
7127 (/(send_nbr_hor_points,i=1,send_nbr_pointsets)/) )
7129 recv_field_id, collection_size, 1, (/recv_nbr_hor_points/) )
7131 allocate(send_buffer(send_nbr_hor_points, &
7132 send_nbr_pointsets, &
7134 allocate(send_frac_mask_buffer(send_nbr_hor_points, &
7135 send_nbr_pointsets, &
7137 allocate(recv_buffer(recv_nbr_hor_points, &
7141 send_nbr_hor_points, &
7142 send_nbr_pointsets, &
7147 send_frac_mask_buffer)
7149 recv_nbr_hor_points, &
7156 send_nbr_hor_points, &
7157 send_nbr_pointsets, &
7158 recv_nbr_hor_points, &
7161 send_frac_mask_buffer, &
7168 recv_nbr_hor_points, &
7173 deallocate(send_buffer)
7174 deallocate(send_frac_mask_buffer)
7175 deallocate(recv_buffer)
7181 send_nbr_hor_points, &
7182 send_nbr_pointsets, &
7183 src_field_buffer_size, &
7196 integer,
intent (in) :: send_field_id
7197 integer,
intent (in) :: recv_field_id
7198 integer,
intent (in) :: send_nbr_hor_points
7199 integer,
intent (in) :: send_nbr_pointsets
7200 integer,
intent (in) :: src_field_buffer_size
7202 integer,
intent (in) :: collection_size
7203 real,
intent (in) :: send_field(send_nbr_hor_points, &
7204 send_nbr_pointsets, &
7207 real,
intent (out) :: &
7208 src_field_buffer(src_field_buffer_size, collection_size)
7210 integer,
intent (out) :: send_info
7211 integer,
intent (out) :: recv_info
7212 integer,
intent (out) :: ierror
7214 double precision,
allocatable :: send_buffer(:,:,:)
7215 double precision,
allocatable :: src_field_buffer_dble(:,:)
7220 send_field_id, collection_size, send_nbr_pointsets, &
7221 (/(send_nbr_hor_points,i=1,send_nbr_pointsets)/) )
7223 recv_field_id, collection_size, src_field_buffer_size)
7225 allocate(send_buffer(send_nbr_hor_points, &
7226 send_nbr_pointsets, &
7228 allocate(src_field_buffer_dble(src_field_buffer_size, collection_size))
7231 send_nbr_hor_points, &
7232 send_nbr_pointsets, &
7239 send_nbr_hor_points, &
7240 send_nbr_pointsets, &
7241 src_field_buffer_size, &
7244 src_field_buffer_dble, &
7249 src_field_buffer = real(src_field_buffer_dble)
7251 deallocate(send_buffer)
7252 deallocate(src_field_buffer_dble)
7258 send_nbr_hor_points, &
7259 send_nbr_pointsets, &
7260 src_field_buffer_size, &
7265 src_frac_mask_buffer, &
7275 integer,
intent (in) :: send_field_id
7276 integer,
intent (in) :: recv_field_id
7277 integer,
intent (in) :: send_nbr_hor_points
7278 integer,
intent (in) :: send_nbr_pointsets
7279 integer,
intent (in) :: src_field_buffer_size
7281 integer,
intent (in) :: collection_size
7282 real,
intent (in) :: &
7283 send_field(send_nbr_hor_points, send_nbr_pointsets, collection_size)
7285 real,
intent (in) :: &
7286 send_frac_mask(send_nbr_hor_points, send_nbr_pointsets, collection_size)
7288 real,
intent (out) :: &
7289 src_field_buffer(src_field_buffer_size, collection_size)
7291 real,
intent (out) :: &
7292 src_frac_mask_buffer(src_field_buffer_size, collection_size)
7294 integer,
intent (out) :: send_info
7295 integer,
intent (out) :: recv_info
7296 integer,
intent (out) :: ierror
7298 double precision,
allocatable :: send_field_dble(:,:,:)
7299 double precision,
allocatable :: send_frac_mask_dble(:,:,:)
7300 double precision,
allocatable :: src_field_buffer_dble(:,:)
7301 double precision,
allocatable :: src_frac_mask_buffer_dble(:,:)
7306 send_field_id, collection_size, send_nbr_pointsets, &
7307 (/(send_nbr_hor_points,i=1,send_nbr_pointsets)/) )
7309 recv_field_id, collection_size, src_field_buffer_size)
7311 allocate(send_field_dble(send_nbr_hor_points, &
7312 send_nbr_pointsets, &
7314 allocate(send_frac_mask_dble(send_nbr_hor_points, &
7315 send_nbr_pointsets, &
7317 allocate(src_field_buffer_dble(src_field_buffer_size, collection_size))
7318 allocate(src_frac_mask_buffer_dble(src_field_buffer_size, collection_size))
7321 send_nbr_hor_points, &
7322 send_nbr_pointsets, &
7327 send_nbr_hor_points, &
7328 send_nbr_pointsets, &
7331 send_frac_mask_dble)
7335 send_nbr_hor_points, &
7336 send_nbr_pointsets, &
7337 src_field_buffer_size, &
7340 send_frac_mask_dble, &
7341 src_field_buffer_dble, &
7342 src_frac_mask_buffer_dble, &
7347 src_field_buffer = real(src_field_buffer_dble)
7348 src_frac_mask_buffer = real(src_frac_mask_buffer_dble)
7350 deallocate(send_field_dble)
7351 deallocate(send_frac_mask_dble)
7352 deallocate(src_field_buffer_dble)
7353 deallocate(src_frac_mask_buffer_dble)
7359 send_nbr_pointsets, &
7372 integer,
intent (in) :: send_field_id
7373 integer,
intent (in) :: recv_field_id
7374 integer,
intent (in) :: send_nbr_pointsets
7375 integer,
intent (in) :: collection_size
7377 send_field(send_nbr_pointsets, &
7382 integer,
intent (out) :: send_info
7383 integer,
intent (out) :: recv_info
7384 integer,
intent (out) :: ierror
7387 type(
yac_dble_ptr),
allocatable :: send_field_dble(:,:)
7390 allocate(send_field_dble(send_nbr_pointsets, collection_size))
7391 allocate(recv_field_dble(collection_size))
7394 send_field_id, collection_size, send_nbr_pointsets, &
7395 (/(
SIZE(send_field(i,1)%p),i=1,send_nbr_pointsets)/) )
7397 recv_field_id, collection_size, 1, (/
SIZE(recv_field(1)%p)/) )
7400 send_nbr_pointsets, &
7411 send_nbr_pointsets, &
7423 do i = 1, collection_size
7424 do j = 1, send_nbr_pointsets
7425 deallocate(send_field_dble(j, i)%p)
7429 deallocate(send_field_dble)
7430 deallocate(recv_field_dble)
7436 send_nbr_pointsets, &
7450 integer,
intent (in) :: send_field_id
7451 integer,
intent (in) :: recv_field_id
7452 integer,
intent (in) :: send_nbr_pointsets
7453 integer,
intent (in) :: collection_size
7455 send_field(send_nbr_pointsets, &
7459 send_frac_mask(send_nbr_pointsets, &
7464 integer,
intent (out) :: send_info
7465 integer,
intent (out) :: recv_info
7466 integer,
intent (out) :: ierror
7469 type(
yac_dble_ptr),
allocatable :: send_field_dble(:,:)
7470 type(
yac_dble_ptr),
allocatable :: send_frac_mask_dble(:,:)
7473 allocate(send_field_dble(send_nbr_pointsets, collection_size))
7474 allocate(send_frac_mask_dble(send_nbr_pointsets, collection_size))
7475 allocate(recv_field_dble(collection_size))
7478 send_field_id, collection_size, send_nbr_pointsets, &
7479 (/(
SIZE(send_field(i,1)%p),i=1,send_nbr_pointsets)/) )
7481 recv_field_id, collection_size, 1, (/
SIZE(recv_field(1)%p)/) )
7484 send_nbr_pointsets, &
7489 send_frac_mask_dble)
7497 send_nbr_pointsets, &
7500 send_frac_mask_dble, &
7510 do i = 1, collection_size
7511 do j = 1, send_nbr_pointsets
7512 deallocate(send_field_dble(j, i)%p)
7513 deallocate(send_frac_mask_dble(j, i)%p)
7517 deallocate(send_field_dble)
7518 deallocate(send_frac_mask_dble)
7519 deallocate(recv_field_dble)
7525 send_nbr_pointsets, &
7535 use,
intrinsic :: iso_c_binding, only: c_null_char
7539 integer,
intent (in) :: send_field_id
7540 integer,
intent (in) :: recv_field_id
7541 integer,
intent (in) :: send_nbr_pointsets
7542 integer,
intent (in) :: collection_size
7544 send_field(send_nbr_pointsets, collection_size)
7546 src_field_buffer(send_nbr_pointsets, collection_size)
7547 integer,
intent (out) :: send_info
7548 integer,
intent (out) :: recv_info
7549 integer,
intent (out) :: ierror
7552 integer,
allocatable :: src_field_buffer_sizes(:)
7553 type(
yac_dble_ptr),
allocatable :: send_field_dble(:,:)
7554 type(
yac_dble_ptr),
allocatable :: src_field_buffer_dble(:,:)
7556 allocate(src_field_buffer_sizes(send_nbr_pointsets))
7557 allocate(send_field_dble(send_nbr_pointsets, collection_size))
7558 allocate(src_field_buffer_dble(send_nbr_pointsets, collection_size))
7560 src_field_buffer_sizes = &
7561 (/(
SIZE(src_field_buffer(i, 1)%p),i=1,send_nbr_pointsets)/)
7564 send_field_id, collection_size, send_nbr_pointsets, &
7565 (/(
SIZE(send_field(i,1)%p),i=1,send_nbr_pointsets)/) )
7567 recv_field_id, send_nbr_pointsets, collection_size, src_field_buffer_sizes)
7570 send_nbr_pointsets, &
7575 do i = 1, send_nbr_pointsets
7576 do j = 1, collection_size
7577 yac_fassert(src_field_buffer_sizes(i) ==
size(src_field_buffer(i,j)%p),
"ERROR(yac_fexchange_raw_real_ptr): inconsistent source buffer sizes")
7578 allocate(src_field_buffer_dble(i,j)%p(src_field_buffer_sizes(i)))
7583 recv_field_id, send_nbr_pointsets, collection_size, src_field_buffer_sizes)
7587 send_nbr_pointsets, &
7590 src_field_buffer_dble, &
7595 do i = 1, send_nbr_pointsets
7596 do j = 1, collection_size
7597 src_field_buffer(i,j)%p = &
7598 real(src_field_buffer_dble(i,j)%p)
7599 deallocate(src_field_buffer_dble(i,j)%p)
7603 do i = 1, collection_size
7604 do j = 1, send_nbr_pointsets
7605 deallocate(send_field_dble(j, i)%p)
7609 deallocate(src_field_buffer_sizes)
7610 deallocate(send_field_dble)
7611 deallocate(src_field_buffer_dble)
7617 send_nbr_pointsets, &
7622 src_frac_mask_buffer, &
7629 use,
intrinsic :: iso_c_binding, only: c_null_char
7633 integer,
intent (in) :: send_field_id
7634 integer,
intent (in) :: recv_field_id
7635 integer,
intent (in) :: send_nbr_pointsets
7636 integer,
intent (in) :: collection_size
7638 send_field(send_nbr_pointsets, collection_size)
7640 send_frac_mask(send_nbr_pointsets, collection_size)
7642 src_field_buffer(send_nbr_pointsets, collection_size)
7644 src_frac_mask_buffer(send_nbr_pointsets, collection_size)
7646 integer,
intent (out) :: send_info
7647 integer,
intent (out) :: recv_info
7648 integer,
intent (out) :: ierror
7651 integer,
allocatable :: src_field_buffer_sizes(:)
7652 type(
yac_dble_ptr),
allocatable :: send_field_dble(:,:)
7653 type(
yac_dble_ptr),
allocatable :: send_frac_mask_dble(:,:)
7654 type(
yac_dble_ptr),
allocatable :: src_field_buffer_dble(:,:)
7655 type(
yac_dble_ptr),
allocatable :: src_frac_mask_buffer_dble(:,:)
7657 allocate(src_field_buffer_sizes(send_nbr_pointsets))
7658 allocate(send_field_dble(send_nbr_pointsets, collection_size))
7659 allocate(send_frac_mask_dble(send_nbr_pointsets, collection_size))
7660 allocate(src_field_buffer_dble(send_nbr_pointsets, collection_size))
7661 allocate(src_frac_mask_buffer_dble(send_nbr_pointsets, collection_size))
7663 src_field_buffer_sizes = &
7664 (/(
SIZE(src_field_buffer(i, 1)%p),i=1,send_nbr_pointsets)/)
7667 send_field_id, collection_size, send_nbr_pointsets, &
7668 (/(
SIZE(send_field(i,1)%p),i=1,send_nbr_pointsets)/) )
7670 recv_field_id, send_nbr_pointsets, collection_size, src_field_buffer_sizes)
7673 send_nbr_pointsets, &
7678 send_frac_mask_dble)
7680 do i = 1, send_nbr_pointsets
7681 do j = 1, collection_size
7682 yac_fassert(src_field_buffer_sizes(i) ==
size(src_field_buffer(i,j)%p),
"ERROR(yac_fexchange_raw_frac_real_ptr): inconsistent source buffer sizes")
7683 allocate(src_field_buffer_dble(i,j)%p(src_field_buffer_sizes(i)))
7684 allocate(src_frac_mask_buffer_dble(i,j)%p(src_field_buffer_sizes(i)))
7690 send_nbr_pointsets, &
7693 send_frac_mask_dble, &
7694 src_field_buffer_dble, &
7695 src_frac_mask_buffer_dble, &
7700 do i = 1, send_nbr_pointsets
7701 do j = 1, collection_size
7702 src_field_buffer(i,j)%p = &
7703 real(src_field_buffer_dble(i,j)%p)
7704 deallocate(src_field_buffer_dble(i,j)%p)
7705 src_frac_mask_buffer(i,j)%p = &
7706 real(src_frac_mask_buffer_dble(i,j)%p)
7707 deallocate(src_frac_mask_buffer_dble(i,j)%p)
7711 do i = 1, collection_size
7712 do j = 1, send_nbr_pointsets
7713 deallocate(send_field_dble(j, i)%p)
7714 deallocate(send_frac_mask_dble(j, i)%p)
7718 deallocate(src_field_buffer_sizes)
7719 deallocate(send_field_dble)
7720 deallocate(send_frac_mask_dble)
7721 deallocate(src_field_buffer_dble)
7722 deallocate(src_frac_mask_buffer_dble)
7728 send_nbr_hor_points, &
7729 recv_nbr_hor_points, &
7742 integer,
intent (in) :: send_field_id
7743 integer,
intent (in) :: recv_field_id
7744 integer,
intent (in) :: send_nbr_hor_points
7745 integer,
intent (in) :: recv_nbr_hor_points
7746 integer,
intent (in) :: collection_size
7747 real,
intent (in) :: send_field(send_nbr_hor_points, &
7750 real,
intent (inout) :: recv_field(recv_nbr_hor_points, &
7753 integer,
intent (out) :: send_info
7754 integer,
intent (out) :: recv_info
7755 integer,
intent (out) :: ierror
7757 double precision,
allocatable :: send_buffer(:,:)
7758 double precision,
allocatable :: recv_buffer(:,:)
7760 allocate(send_buffer(send_nbr_hor_points, collection_size))
7761 allocate(recv_buffer(recv_nbr_hor_points, collection_size))
7764 send_field_id, collection_size, 1, (/send_nbr_hor_points/) )
7766 recv_field_id, collection_size, 1, (/recv_nbr_hor_points/) )
7769 send_nbr_hor_points, &
7775 recv_nbr_hor_points, &
7782 send_nbr_hor_points, &
7783 recv_nbr_hor_points, &
7792 recv_nbr_hor_points, &
7797 deallocate(send_buffer)
7798 deallocate(recv_buffer)
7804 send_nbr_hor_points, &
7805 recv_nbr_hor_points, &
7819 integer,
intent (in) :: send_field_id
7820 integer,
intent (in) :: recv_field_id
7821 integer,
intent (in) :: send_nbr_hor_points
7822 integer,
intent (in) :: recv_nbr_hor_points
7823 integer,
intent (in) :: collection_size
7824 real,
intent (in) :: send_field(send_nbr_hor_points, &
7827 real,
intent (in) :: send_frac_mask(send_nbr_hor_points, &
7830 real,
intent (inout) :: recv_field(recv_nbr_hor_points, &
7833 integer,
intent (out) :: send_info
7834 integer,
intent (out) :: recv_info
7835 integer,
intent (out) :: ierror
7837 double precision,
allocatable :: send_buffer(:, :)
7838 double precision,
allocatable :: send_frac_mask_buffer(:, :)
7839 double precision,
allocatable :: recv_buffer(:, :)
7842 send_field_id, collection_size, 1, (/send_nbr_hor_points/) )
7844 recv_field_id, collection_size, 1, (/recv_nbr_hor_points/) )
7846 allocate(send_buffer(send_nbr_hor_points, collection_size))
7847 allocate(send_frac_mask_buffer(send_nbr_hor_points, collection_size))
7848 allocate(recv_buffer(recv_nbr_hor_points, collection_size))
7851 send_nbr_hor_points, &
7856 send_frac_mask_buffer)
7859 recv_nbr_hor_points, &
7866 send_nbr_hor_points, &
7867 recv_nbr_hor_points, &
7870 send_frac_mask_buffer, &
7877 recv_nbr_hor_points, &
7882 deallocate(send_buffer)
7883 deallocate(send_frac_mask_buffer)
7884 deallocate(recv_buffer)
7890 send_nbr_hor_points, &
7891 src_field_buffer_size, &
7904 integer,
intent (in) :: send_field_id
7905 integer,
intent (in) :: recv_field_id
7906 integer,
intent (in) :: send_nbr_hor_points
7907 integer,
intent (in) :: src_field_buffer_size
7908 integer,
intent (in) :: collection_size
7909 real,
intent (in) :: &
7910 send_field(send_nbr_hor_points, collection_size)
7912 real,
intent (out) :: &
7913 src_field_buffer(src_field_buffer_size, collection_size)
7915 integer,
intent (out) :: send_info
7916 integer,
intent (out) :: recv_info
7917 integer,
intent (out) :: ierror
7919 double precision,
allocatable :: send_buffer(:, :)
7920 double precision,
allocatable :: src_field_buffer_dble(:, :)
7923 send_field_id, collection_size, 1, (/send_nbr_hor_points/) )
7925 recv_field_id, collection_size, src_field_buffer_size)
7927 allocate(send_buffer(send_nbr_hor_points, collection_size))
7928 allocate(src_field_buffer_dble(src_field_buffer_size, collection_size))
7931 send_nbr_hor_points, &
7938 send_nbr_hor_points, &
7939 src_field_buffer_size, &
7942 src_field_buffer_dble, &
7947 src_field_buffer = real(src_field_buffer_dble)
7949 deallocate(send_buffer)
7950 deallocate(src_field_buffer_dble)
7956 send_nbr_hor_points, &
7957 src_field_buffer_size, &
7962 src_frac_mask_buffer, &
7972 integer,
intent (in) :: send_field_id
7973 integer,
intent (in) :: recv_field_id
7974 integer,
intent (in) :: send_nbr_hor_points
7975 integer,
intent (in) :: src_field_buffer_size
7977 integer,
intent (in) :: collection_size
7978 real,
intent (in) :: &
7979 send_field(send_nbr_hor_points, collection_size)
7981 real,
intent (in) :: &
7982 send_frac_mask(send_nbr_hor_points, collection_size)
7984 real,
intent (out) :: &
7985 src_field_buffer(src_field_buffer_size, collection_size)
7987 real,
intent (out) :: &
7988 src_frac_mask_buffer(src_field_buffer_size, collection_size)
7990 integer,
intent (out) :: send_info
7991 integer,
intent (out) :: recv_info
7992 integer,
intent (out) :: ierror
7994 double precision,
allocatable :: send_field_dble(:,:)
7995 double precision,
allocatable :: send_frac_mask_dble(:,:)
7996 double precision,
allocatable :: src_field_buffer_dble(:,:)
7997 double precision,
allocatable :: src_frac_mask_buffer_dble(:,:)
8000 send_field_id, collection_size, 1, (/send_nbr_hor_points/) )
8002 recv_field_id, collection_size, src_field_buffer_size)
8004 allocate(send_field_dble(send_nbr_hor_points, collection_size))
8005 allocate(send_frac_mask_dble(send_nbr_hor_points, collection_size))
8006 allocate(src_field_buffer_dble(src_field_buffer_size, collection_size))
8007 allocate(src_frac_mask_buffer_dble(src_field_buffer_size, collection_size))
8010 send_nbr_hor_points, &
8015 send_nbr_hor_points, &
8018 send_frac_mask_dble)
8022 send_nbr_hor_points, &
8023 src_field_buffer_size, &
8026 send_frac_mask_dble, &
8027 src_field_buffer_dble, &
8028 src_frac_mask_buffer_dble, &
8033 src_field_buffer = real(src_field_buffer_dble)
8034 src_frac_mask_buffer = real(src_frac_mask_buffer_dble)
8036 deallocate(send_field_dble)
8037 deallocate(send_frac_mask_dble)
8038 deallocate(src_field_buffer_dble)
8039 deallocate(src_frac_mask_buffer_dble)
8057 send_nbr_hor_points, &
8058 send_nbr_pointsets, &
8059 recv_nbr_hor_points, &
8073 subroutine yac_cexchange__c ( send_field_id, &
8081 bind( c, name=
'yac_cexchange_' )
8083 use,
intrinsic :: iso_c_binding, only : c_int, c_double
8085 integer ( kind=c_int ),
value :: send_field_id
8086 integer ( kind=c_int ),
value :: recv_field_id
8087 integer ( kind=c_int ),
value :: collection_size
8088 real ( kind=c_double ) :: send_field(*)
8089 real ( kind=c_double ) :: recv_field(*)
8090 integer ( kind=c_int ) :: send_info
8091 integer ( kind=c_int ) :: recv_info
8092 integer ( kind=c_int ) :: ierror
8094 end subroutine yac_cexchange__c
8098 integer,
intent (in) :: send_field_id
8099 integer,
intent (in) :: recv_field_id
8100 integer,
intent (in) :: send_nbr_hor_points
8101 integer,
intent (in) :: send_nbr_pointsets
8102 integer,
intent (in) :: recv_nbr_hor_points
8103 integer,
intent (in) :: collection_size
8104 double precision,
intent (in) :: &
8106 send_nbr_hor_points, &
8107 send_nbr_pointsets, &
8109 double precision,
intent (inout):: &
8111 recv_nbr_hor_points, &
8113 integer,
intent (out) :: send_info
8114 integer,
intent (out) :: recv_info
8115 integer,
intent (out) :: ierror
8120 send_field_id, collection_size, send_nbr_pointsets, &
8121 (/(send_nbr_hor_points,i=1,send_nbr_pointsets)/) )
8123 recv_field_id, collection_size, 1, (/recv_nbr_hor_points/) )
8125 call yac_cexchange__c ( send_field_id, &
8151 send_nbr_hor_points, &
8152 send_nbr_pointsets, &
8153 recv_nbr_hor_points, &
8168 subroutine yac_cexchange_frac__c ( send_field_id, &
8177 bind( c, name=
'yac_cexchange_frac_' )
8179 use,
intrinsic :: iso_c_binding, only : c_int, c_double
8181 integer ( kind=c_int ),
value :: send_field_id
8182 integer ( kind=c_int ),
value :: recv_field_id
8183 integer ( kind=c_int ),
value :: collection_size
8184 real ( kind=c_double ) :: send_field(*)
8185 real ( kind=c_double ) :: send_frac_mask(*)
8186 real ( kind=c_double ) :: recv_field(*)
8187 integer ( kind=c_int ) :: send_info
8188 integer ( kind=c_int ) :: recv_info
8189 integer ( kind=c_int ) :: ierror
8191 end subroutine yac_cexchange_frac__c
8195 integer,
intent (in) :: send_field_id
8196 integer,
intent (in) :: recv_field_id
8197 integer,
intent (in) :: send_nbr_hor_points
8198 integer,
intent (in) :: send_nbr_pointsets
8199 integer,
intent (in) :: recv_nbr_hor_points
8200 integer,
intent (in) :: collection_size
8201 double precision,
intent (in) :: &
8203 send_nbr_hor_points, &
8204 send_nbr_pointsets, &
8206 double precision,
intent (in) :: &
8208 send_nbr_hor_points, &
8209 send_nbr_pointsets, &
8211 double precision,
intent (inout):: &
8213 recv_nbr_hor_points, &
8215 integer,
intent (out) :: send_info
8216 integer,
intent (out) :: recv_info
8217 integer,
intent (out) :: ierror
8222 send_field_id, collection_size, send_nbr_pointsets, &
8223 (/(send_nbr_hor_points,i=1,send_nbr_pointsets)/) )
8225 recv_field_id, collection_size, 1, (/recv_nbr_hor_points/) )
8227 call yac_cexchange_frac__c ( send_field_id, &
8241 send_nbr_hor_points, &
8242 send_nbr_pointsets, &
8243 src_field_buffer_size, &
8257 subroutine yac_cexchange_raw__c ( send_field_id, &
8265 bind( c, name=
'yac_cexchange_raw_' )
8267 use,
intrinsic :: iso_c_binding, only : c_int, c_double
8269 integer ( kind=c_int ),
value :: send_field_id
8270 integer ( kind=c_int ),
value :: recv_field_id
8271 integer ( kind=c_int ),
value :: collection_size
8272 real ( kind=c_double ) :: send_field(*)
8273 real ( kind=c_double ) :: src_field_buffer(*)
8274 integer ( kind=c_int ) :: send_info
8275 integer ( kind=c_int ) :: recv_info
8276 integer ( kind=c_int ) :: ierror
8278 end subroutine yac_cexchange_raw__c
8282 integer,
intent (in) :: send_field_id
8283 integer,
intent (in) :: recv_field_id
8284 integer,
intent (in) :: send_nbr_hor_points
8285 integer,
intent (in) :: send_nbr_pointsets
8286 integer,
intent (in) :: src_field_buffer_size
8288 integer,
intent (in) :: collection_size
8289 double precision,
intent (in) :: &
8290 send_field(send_nbr_hor_points, send_nbr_pointsets, collection_size)
8292 double precision,
intent (out) :: &
8293 src_field_buffer(src_field_buffer_size, collection_size)
8295 integer,
intent (out) :: send_info
8296 integer,
intent (out) :: recv_info
8297 integer,
intent (out) :: ierror
8302 send_field_id, collection_size, send_nbr_pointsets, &
8303 (/(send_nbr_hor_points,i=1,send_nbr_pointsets)/) )
8305 recv_field_id, collection_size, src_field_buffer_size)
8307 call yac_cexchange_raw__c ( send_field_id, &
8320 send_nbr_hor_points, &
8321 send_nbr_pointsets, &
8322 src_field_buffer_size, &
8327 src_frac_mask_buffer, &
8338 subroutine yac_cexchange_raw_frac__c ( send_field_id, &
8344 src_frac_mask_buffer, &
8348 bind( c, name=
'yac_cexchange_raw_frac_' )
8350 use,
intrinsic :: iso_c_binding, only : c_int, c_double
8352 integer ( kind=c_int ),
value :: send_field_id
8353 integer ( kind=c_int ),
value :: recv_field_id
8354 integer ( kind=c_int ),
value :: collection_size
8355 real ( kind=c_double ) :: send_field(*)
8356 real ( kind=c_double ) :: send_frac_mask(*)
8357 real ( kind=c_double ) :: src_field_buffer(*)
8358 real ( kind=c_double ) :: src_frac_mask_buffer(*)
8359 integer ( kind=c_int ) :: send_info
8360 integer ( kind=c_int ) :: recv_info
8361 integer ( kind=c_int ) :: ierror
8363 end subroutine yac_cexchange_raw_frac__c
8367 integer,
intent (in) :: send_field_id
8368 integer,
intent (in) :: recv_field_id
8369 integer,
intent (in) :: send_nbr_hor_points
8370 integer,
intent (in) :: send_nbr_pointsets
8371 integer,
intent (in) :: src_field_buffer_size
8373 integer,
intent (in) :: collection_size
8374 double precision,
intent (in) :: &
8375 send_field(send_nbr_hor_points, send_nbr_pointsets, collection_size)
8377 double precision,
intent (in) :: &
8378 send_frac_mask(send_nbr_hor_points, send_nbr_pointsets, collection_size)
8380 double precision,
intent (out):: &
8381 src_field_buffer(src_field_buffer_size, collection_size)
8383 double precision,
intent (out):: &
8384 src_frac_mask_buffer(src_field_buffer_size, collection_size)
8386 integer,
intent (out) :: send_info
8387 integer,
intent (out) :: recv_info
8388 integer,
intent (out) :: ierror
8393 send_field_id, collection_size, send_nbr_pointsets, &
8394 (/(send_nbr_hor_points,i=1,send_nbr_pointsets)/) )
8396 recv_field_id, collection_size, src_field_buffer_size)
8398 call yac_cexchange_raw_frac__c ( send_field_id, &
8404 src_frac_mask_buffer, &
8423 send_nbr_pointsets, &
8433 use,
intrinsic :: iso_c_binding, only: c_ptr
8439 subroutine yac_cexchange_ptr__c ( send_field_id, &
8447 bind( c, name=
'yac_cexchange_ptr_' )
8449 use,
intrinsic :: iso_c_binding, only : c_int, c_ptr
8451 integer ( kind=c_int ),
value :: send_field_id
8452 integer ( kind=c_int ),
value :: recv_field_id
8453 integer ( kind=c_int ),
value :: collection_size
8454 type(c_ptr) :: send_field(*)
8455 type(c_ptr) :: recv_field(*)
8456 integer ( kind=c_int ) :: send_info
8457 integer ( kind=c_int ) :: recv_info
8458 integer ( kind=c_int ) :: ierror
8460 end subroutine yac_cexchange_ptr__c
8464 integer,
intent (in) :: send_field_id
8465 integer,
intent (in) :: recv_field_id
8466 integer,
intent (in) :: send_nbr_pointsets
8467 integer,
intent (in) :: collection_size
8469 send_field(send_nbr_pointsets, &
8472 integer,
intent (out) :: send_info
8473 integer,
intent (out) :: recv_info
8474 integer,
intent (out) :: ierror
8477 type(c_ptr),
allocatable :: send_field_(:,:)
8478 type(c_ptr),
allocatable :: recv_field_(:)
8481 send_field_id, collection_size, send_nbr_pointsets, &
8482 (/(
SIZE(send_field(i,1)%p),i=1,send_nbr_pointsets)/) )
8484 recv_field_id, collection_size, 1, (/
SIZE(recv_field(1)%p)/) )
8486 allocate(send_field_(send_nbr_pointsets, collection_size))
8487 allocate(recv_field_(collection_size))
8489 do i = 1, collection_size
8490 do j = 1, send_nbr_pointsets
8491 send_field_(j, i) =
yac_dble2cptr(
"yac_fexchange_dble_ptr",
"send_field", send_field(j, i))
8494 do i = 1, collection_size
8495 recv_field_(i) =
yac_dble2cptr(
"yac_fexchange_dble_ptr",
"recv_field", recv_field(i))
8498 call yac_cexchange_ptr__c ( send_field_id, &
8507 deallocate(send_field_)
8508 deallocate(recv_field_)
8525 send_nbr_pointsets, &
8536 use,
intrinsic :: iso_c_binding, only: c_ptr
8542 subroutine yac_cexchange_frac_ptr__c ( send_field_id, &
8551 bind( c, name=
'yac_cexchange_frac_ptr_' )
8553 use,
intrinsic :: iso_c_binding, only : c_int, c_ptr
8555 integer ( kind=c_int ),
value :: send_field_id
8556 integer ( kind=c_int ),
value :: recv_field_id
8557 integer ( kind=c_int ),
value :: collection_size
8558 type(c_ptr) :: send_field(*)
8559 type(c_ptr) :: send_frac_mask(*)
8560 type(c_ptr) :: recv_field(*)
8561 integer ( kind=c_int ) :: send_info
8562 integer ( kind=c_int ) :: recv_info
8563 integer ( kind=c_int ) :: ierror
8565 end subroutine yac_cexchange_frac_ptr__c
8569 integer,
intent (in) :: send_field_id
8570 integer,
intent (in) :: recv_field_id
8571 integer,
intent (in) :: send_nbr_pointsets
8572 integer,
intent (in) :: collection_size
8574 send_field(send_nbr_pointsets, &
8577 send_frac_mask(send_nbr_pointsets, &
8580 integer,
intent (out) :: send_info
8581 integer,
intent (out) :: recv_info
8582 integer,
intent (out) :: ierror
8585 type(c_ptr),
allocatable :: send_field_(:,:)
8586 type(c_ptr),
allocatable :: send_frac_mask_(:,:)
8587 type(c_ptr),
allocatable :: recv_field_(:)
8590 send_field_id, collection_size, send_nbr_pointsets, &
8591 (/(
SIZE(send_field(i,1)%p),i=1,send_nbr_pointsets)/) )
8593 send_field_id, collection_size, send_nbr_pointsets, &
8594 (/(
SIZE(send_frac_mask(i,1)%p),i=1,send_nbr_pointsets)/) )
8596 recv_field_id, collection_size, 1, (/
SIZE(recv_field(1)%p)/) )
8598 allocate(send_field_(send_nbr_pointsets, collection_size))
8599 allocate(send_frac_mask_(send_nbr_pointsets, collection_size))
8600 allocate(recv_field_(collection_size))
8602 do i = 1, collection_size
8603 do j = 1, send_nbr_pointsets
8604 send_field_(j, i) = &
8606 "yac_fexchange_frac_dble_ptr",
"send_field", send_field(j, i))
8607 send_frac_mask_(j, i) = &
8609 "yac_fexchange_frac_dble_ptr",
"send_frac_mask", send_frac_mask(j, i))
8612 do i = 1, collection_size
8614 yac_dble2cptr(
"yac_fexchange_frac_dble_ptr",
"recv_field", recv_field(i))
8617 call yac_cexchange_frac_ptr__c ( send_field_id, &
8627 deallocate(send_field_)
8628 deallocate(send_frac_mask_)
8629 deallocate(recv_field_)
8635 send_nbr_pointsets, &
8645 use,
intrinsic :: iso_c_binding, only: c_ptr, c_null_char
8651 subroutine yac_cexchange_raw_ptr__c ( send_field_id, &
8659 bind( c, name=
'yac_cexchange_raw_ptr_' )
8661 use,
intrinsic :: iso_c_binding, only : c_int, c_ptr
8663 integer ( kind=c_int ),
value :: send_field_id
8664 integer ( kind=c_int ),
value :: recv_field_id
8665 integer ( kind=c_int ),
value :: collection_size
8666 type(c_ptr) :: send_field(*)
8667 type(c_ptr) :: src_field_buffer(*)
8668 integer ( kind=c_int ) :: send_info
8669 integer ( kind=c_int ) :: recv_info
8670 integer ( kind=c_int ) :: ierror
8672 end subroutine yac_cexchange_raw_ptr__c
8676 integer,
intent (in) :: send_field_id
8677 integer,
intent (in) :: recv_field_id
8678 integer,
intent (in) :: send_nbr_pointsets
8679 integer,
intent (in) :: collection_size
8681 send_field(send_nbr_pointsets, collection_size)
8683 src_field_buffer(send_nbr_pointsets, collection_size)
8684 integer,
intent (out) :: send_info
8685 integer,
intent (out) :: recv_info
8686 integer,
intent (out) :: ierror
8689 integer,
allocatable :: src_field_buffer_sizes(:)
8690 type(c_ptr),
allocatable :: send_field_(:,:)
8691 type(c_ptr),
allocatable :: src_field_buffer_(:,:)
8693 allocate(src_field_buffer_sizes(send_nbr_pointsets))
8694 allocate(send_field_(send_nbr_pointsets, collection_size))
8695 allocate(src_field_buffer_(send_nbr_pointsets, collection_size))
8697 src_field_buffer_sizes = &
8698 (/(
SIZE(src_field_buffer(i, 1)%p),i=1,send_nbr_pointsets)/)
8701 send_field_id, collection_size, send_nbr_pointsets, &
8702 (/(
SIZE(send_field(i,1)%p),i=1,send_nbr_pointsets)/) )
8704 recv_field_id, send_nbr_pointsets, collection_size, src_field_buffer_sizes)
8706 do i = 1, collection_size
8707 do j = 1, send_nbr_pointsets
8708 send_field_(j, i) = &
8710 "yac_fexchange_raw_dble_ptr",
"send_field", send_field(j, i))
8713 do i = 1, collection_size
8714 do j = 1, send_nbr_pointsets
8715 yac_fassert(src_field_buffer_sizes(j) ==
size(src_field_buffer(j,i)%p),
"ERROR(yac_fexchange_raw_dble_ptr): inconsistent source buffer sizes")
8716 src_field_buffer_(j, i) = &
8718 "yac_fexchange_raw_dble_ptr",
"src_field_buffer", &
8719 src_field_buffer(j, i))
8723 call yac_cexchange_raw_ptr__c ( send_field_id, &
8727 src_field_buffer_, &
8732 deallocate(src_field_buffer_sizes)
8733 deallocate(send_field_)
8734 deallocate(src_field_buffer_)
8741 send_nbr_pointsets, &
8746 src_frac_mask_buffer, &
8753 use,
intrinsic :: iso_c_binding, only: c_ptr, c_null_char
8759 subroutine yac_cexchange_raw_frac_ptr__c ( send_field_id, &
8765 src_frac_mask_buffer, &
8769 bind( c, name=
'yac_cexchange_raw_frac_ptr_' )
8771 use,
intrinsic :: iso_c_binding, only : c_int, c_ptr
8773 integer ( kind=c_int ),
value :: send_field_id
8774 integer ( kind=c_int ),
value :: recv_field_id
8775 integer ( kind=c_int ),
value :: collection_size
8776 type(c_ptr) :: send_field(*)
8777 type(c_ptr) :: send_frac_mask(*)
8778 type(c_ptr) :: src_field_buffer(*)
8779 type(c_ptr) :: src_frac_mask_buffer(*)
8780 integer ( kind=c_int ) :: send_info
8781 integer ( kind=c_int ) :: recv_info
8782 integer ( kind=c_int ) :: ierror
8784 end subroutine yac_cexchange_raw_frac_ptr__c
8788 integer,
intent (in) :: send_field_id
8789 integer,
intent (in) :: recv_field_id
8790 integer,
intent (in) :: send_nbr_pointsets
8791 integer,
intent (in) :: collection_size
8793 send_field(send_nbr_pointsets, collection_size)
8795 send_frac_mask(send_nbr_pointsets, collection_size)
8797 src_field_buffer(send_nbr_pointsets, collection_size)
8799 src_frac_mask_buffer(send_nbr_pointsets, collection_size)
8801 integer,
intent (out) :: send_info
8802 integer,
intent (out) :: recv_info
8803 integer,
intent (out) :: ierror
8806 integer,
allocatable :: src_field_buffer_sizes(:)
8807 type(c_ptr),
allocatable :: send_field_(:,:)
8808 type(c_ptr),
allocatable :: send_frac_mask_(:,:)
8809 type(c_ptr),
allocatable :: src_field_buffer_(:,:)
8810 type(c_ptr),
allocatable :: src_frac_mask_buffer_(:,:)
8812 allocate(src_field_buffer_sizes(send_nbr_pointsets))
8813 allocate(send_field_(send_nbr_pointsets, collection_size))
8814 allocate(send_frac_mask_(send_nbr_pointsets, collection_size))
8815 allocate(src_field_buffer_(send_nbr_pointsets, collection_size))
8816 allocate(src_frac_mask_buffer_(send_nbr_pointsets, collection_size))
8818 src_field_buffer_sizes = &
8819 (/(
SIZE(src_field_buffer(i, 1)%p),i=1,send_nbr_pointsets)/)
8822 send_field_id, collection_size, send_nbr_pointsets, &
8823 (/(
SIZE(send_field(i,1)%p),i=1,send_nbr_pointsets)/) )
8825 send_field_id, collection_size, send_nbr_pointsets, &
8826 (/(
SIZE(send_frac_mask(i,1)%p),i=1,send_nbr_pointsets)/) )
8828 recv_field_id, send_nbr_pointsets, collection_size, src_field_buffer_sizes)
8830 do i = 1, collection_size
8831 do j = 1, send_nbr_pointsets
8832 send_field_(j, i) = &
8834 "yac_fexchange_raw_frac_dble_ptr",
"send_field", send_field(j, i))
8835 send_frac_mask_(j, i) = &
8837 "yac_fexchange_raw_frac_dble_ptr",
"send_frac_mask", send_frac_mask(j, i))
8841 do i = 1, collection_size
8842 do j = 1, send_nbr_pointsets
8843 yac_fassert(src_field_buffer_sizes(j) ==
size(src_field_buffer(j,i)%p),
"ERROR(yac_fexchange_raw_frac_dble_ptr): inconsistent source buffer sizes")
8844 yac_fassert(src_field_buffer_sizes(j) ==
size(src_frac_mask_buffer(j,i)%p),
"ERROR(yac_fexchange_raw_frac_dble_ptr): inconsistent source buffer sizes")
8845 src_field_buffer_(j, i) = &
8847 "yac_fexchange_raw_frac_dble_ptr",
"src_field_buffer", src_field_buffer(j, i))
8848 src_frac_mask_buffer_(j, i) = &
8850 "yac_fexchange_raw_frac_dble_ptr",
"src_frac_mask_buffer", src_frac_mask_buffer(j, i))
8854 call yac_cexchange_raw_frac_ptr__c ( send_field_id, &
8859 src_field_buffer_, &
8860 src_frac_mask_buffer_, &
8865 deallocate(src_field_buffer_sizes)
8866 deallocate(send_field_)
8867 deallocate(send_frac_mask_)
8868 deallocate(src_field_buffer_)
8869 deallocate(src_frac_mask_buffer_)
8886 send_nbr_hor_points, &
8887 recv_nbr_hor_points, &
8901 subroutine yac_cexchange__c ( send_field_id, &
8909 bind( c, name=
'yac_cexchange_' )
8911 use,
intrinsic :: iso_c_binding, only : c_int, c_double
8913 integer ( kind=c_int ),
value :: send_field_id
8914 integer ( kind=c_int ),
value :: recv_field_id
8915 integer ( kind=c_int ),
value :: collection_size
8916 real ( kind=c_double ) :: send_field(*)
8917 real ( kind=c_double ) :: recv_field(*)
8918 integer ( kind=c_int ) :: send_info
8919 integer ( kind=c_int ) :: recv_info
8920 integer ( kind=c_int ) :: ierror
8922 end subroutine yac_cexchange__c
8926 integer,
intent (in) :: send_field_id
8927 integer,
intent (in) :: recv_field_id
8928 integer,
intent (in) :: send_nbr_hor_points
8929 integer,
intent (in) :: recv_nbr_hor_points
8930 integer,
intent (in) :: collection_size
8931 double precision,
intent (in) :: &
8932 send_field(send_nbr_hor_points, &
8934 double precision,
intent (inout):: &
8935 recv_field(recv_nbr_hor_points, &
8937 integer,
intent (out) :: send_info
8938 integer,
intent (out) :: recv_info
8939 integer,
intent (out) :: ierror
8942 send_field_id, collection_size, 1, (/send_nbr_hor_points/) )
8944 recv_field_id, collection_size, 1, (/recv_nbr_hor_points/) )
8946 call yac_cexchange__c ( send_field_id, &
8971 send_nbr_hor_points, &
8972 recv_nbr_hor_points, &
8987 subroutine yac_cexchange_frac__c ( send_field_id, &
8996 bind( c, name=
'yac_cexchange_frac_' )
8998 use,
intrinsic :: iso_c_binding, only : c_int, c_double
9000 integer ( kind=c_int ),
value :: send_field_id
9001 integer ( kind=c_int ),
value :: recv_field_id
9002 integer ( kind=c_int ),
value :: collection_size
9003 real ( kind=c_double ) :: send_field(*)
9004 real ( kind=c_double ) :: send_frac_mask(*)
9005 real ( kind=c_double ) :: recv_field(*)
9006 integer ( kind=c_int ) :: send_info
9007 integer ( kind=c_int ) :: recv_info
9008 integer ( kind=c_int ) :: ierror
9010 end subroutine yac_cexchange_frac__c
9014 integer,
intent (in) :: send_field_id
9015 integer,
intent (in) :: recv_field_id
9016 integer,
intent (in) :: send_nbr_hor_points
9017 integer,
intent (in) :: recv_nbr_hor_points
9018 integer,
intent (in) :: collection_size
9019 double precision,
intent (in) :: &
9020 send_field(send_nbr_hor_points, &
9022 double precision,
intent (in) :: &
9023 send_frac_mask(send_nbr_hor_points, &
9025 double precision,
intent (inout):: &
9026 recv_field(recv_nbr_hor_points, &
9028 integer,
intent (out) :: send_info
9029 integer,
intent (out) :: recv_info
9030 integer,
intent (out) :: ierror
9033 send_field_id, collection_size, 1, (/send_nbr_hor_points/) )
9035 recv_field_id, collection_size, 1, (/recv_nbr_hor_points/) )
9037 call yac_cexchange_frac__c ( send_field_id, &
9051 send_nbr_hor_points, &
9052 src_field_buffer_size, &
9066 subroutine yac_cexchange_raw__c ( send_field_id, &
9074 bind( c, name=
'yac_cexchange_raw_' )
9076 use,
intrinsic :: iso_c_binding, only : c_int, c_double
9078 integer ( kind=c_int ),
value :: send_field_id
9079 integer ( kind=c_int ),
value :: recv_field_id
9080 integer ( kind=c_int ),
value :: collection_size
9081 real ( kind=c_double ) :: send_field(*)
9082 real ( kind=c_double ) :: src_field_buffer(*)
9083 integer ( kind=c_int ) :: send_info
9084 integer ( kind=c_int ) :: recv_info
9085 integer ( kind=c_int ) :: ierror
9087 end subroutine yac_cexchange_raw__c
9091 integer,
intent (in) :: send_field_id
9092 integer,
intent (in) :: recv_field_id
9093 integer,
intent (in) :: send_nbr_hor_points
9094 integer,
intent (in) :: src_field_buffer_size
9095 integer,
intent (in) :: collection_size
9096 double precision,
intent (in) :: &
9097 send_field(send_nbr_hor_points, collection_size)
9099 double precision,
intent(out) :: &
9100 src_field_buffer(src_field_buffer_size, collection_size)
9102 integer,
intent (out) :: send_info
9103 integer,
intent (out) :: recv_info
9104 integer,
intent (out) :: ierror
9107 send_field_id, collection_size, 1, (/send_nbr_hor_points/) )
9109 recv_field_id, collection_size, src_field_buffer_size)
9111 call yac_cexchange_raw__c ( send_field_id, &
9124 send_nbr_hor_points, &
9125 src_field_buffer_size, &
9130 src_frac_mask_buffer, &
9141 subroutine yac_cexchange_raw_frac__c ( send_field_id, &
9147 src_frac_mask_buffer, &
9151 bind( c, name=
'yac_cexchange_raw_frac_' )
9153 use,
intrinsic :: iso_c_binding, only : c_int, c_double
9155 integer ( kind=c_int ),
value :: send_field_id
9156 integer ( kind=c_int ),
value :: recv_field_id
9157 integer ( kind=c_int ),
value :: collection_size
9158 real ( kind=c_double ) :: send_field(*)
9159 real ( kind=c_double ) :: send_frac_mask(*)
9160 real ( kind=c_double ) :: src_field_buffer(*)
9161 real ( kind=c_double ) :: src_frac_mask_buffer(*)
9162 integer ( kind=c_int ) :: send_info
9163 integer ( kind=c_int ) :: recv_info
9164 integer ( kind=c_int ) :: ierror
9166 end subroutine yac_cexchange_raw_frac__c
9170 integer,
intent (in) :: send_field_id
9171 integer,
intent (in) :: recv_field_id
9172 integer,
intent (in) :: send_nbr_hor_points
9173 integer,
intent (in) :: src_field_buffer_size
9175 integer,
intent (in) :: collection_size
9176 double precision,
intent (in) :: &
9177 send_field(send_nbr_hor_points, collection_size)
9178 double precision,
intent (in) :: &
9179 send_frac_mask(send_nbr_hor_points, collection_size)
9180 double precision,
intent (out) :: &
9181 src_field_buffer(src_field_buffer_size, collection_size)
9183 double precision,
intent (out) :: &
9184 src_frac_mask_buffer(src_field_buffer_size, collection_size)
9186 integer,
intent (out) :: send_info
9187 integer,
intent (out) :: recv_info
9188 integer,
intent (out) :: ierror
9191 send_field_id, collection_size, 1, (/send_nbr_hor_points/) )
9193 recv_field_id, collection_size, src_field_buffer_size)
9195 call yac_cexchange_raw_frac__c ( send_field_id, &
9201 src_frac_mask_buffer, &
9218 subroutine yac_ctest_c ( field_id, flag ) &
9219 bind( c, name=
'yac_ctest' )
9221 use,
intrinsic :: iso_c_binding, only : c_int
9223 integer ( kind=c_int ),
value :: field_id
9224 integer ( kind=c_int ) :: flag
9226 end subroutine yac_ctest_c
9230 integer,
intent (in) :: field_id
9231 integer,
intent (out) :: flag
9233 call yac_ctest_c ( field_id, flag )
9245 subroutine yac_ctest_c ( field_id, flag ) &
9246 bind( c, name=
'yac_ctest' )
9248 use,
intrinsic :: iso_c_binding, only : c_int
9250 integer ( kind=c_int ),
value :: field_id
9251 integer ( kind=c_int ) :: flag
9253 end subroutine yac_ctest_c
9257 integer,
intent (in) :: field_id
9258 logical,
intent (out) :: flag
9262 call yac_ctest_c ( field_id, iflag )
9278 subroutine yac_cwait_c ( field_id ) &
9279 bind( c, name=
'yac_cwait' )
9281 use,
intrinsic :: iso_c_binding, only : c_int
9283 integer ( kind=c_int ),
value :: field_id
9285 end subroutine yac_cwait_c
9289 integer,
intent (in) :: field_id
9291 call yac_cwait_c ( field_id )
9305 subroutine yac_get_comp_comm_c ( comp_id, comp_comm ) &
9306 bind( c, name=
'yac_get_comp_comm_f2c' )
9308 use,
intrinsic :: iso_c_binding, only : c_int
9311 integer ( kind=c_int ),
value :: comp_id
9312 integer ( kind=YAC_MPI_FINT_KIND ) :: comp_comm
9314 end subroutine yac_get_comp_comm_c
9318 integer,
intent (in) :: comp_id
9319 integer,
intent (out) :: comp_comm
9321 call yac_get_comp_comm_c ( comp_id, comp_comm )
9329 use,
intrinsic :: iso_c_binding, only : c_null_char, c_ptr, c_loc, c_char
9337 subroutine yac_cget_comps_comm_c ( comp_names, &
9340 bind( c, name=
'yac_cget_comps_comm_f2c' )
9342 use,
intrinsic :: iso_c_binding, only : c_int, c_ptr
9345 type ( c_ptr ) :: comp_names(*)
9346 integer ( kind=c_int ),
value :: num_comps
9347 integer ( kind=YAC_MPI_FINT_KIND ) :: comps_comm
9349 end subroutine yac_cget_comps_comm_c
9353 integer,
intent(in) :: num_comps
9354 character(kind=c_char, len=*),
intent(in) :: &
9355 comp_names(num_comps)
9356 integer,
intent (out) :: comps_comm
9359 character(kind=c_char),
allocatable,
target :: comp_names_cpy(:,:)
9360 type(c_ptr),
allocatable :: comp_name_ptrs(:)
9362 allocate(comp_names_cpy(yac_max_charlen+1, num_comps))
9363 allocate(comp_name_ptrs(num_comps))
9365 comp_names_cpy = c_null_char
9368 yac_check_string_len(
"yac_fget_comps_comm", comp_names(i))
9369 do j = 1, len_trim(comp_names(i))
9370 comp_names_cpy(j,i) = comp_names(i)(j:j)
9372 comp_name_ptrs(i) = c_loc(comp_names_cpy(1,i))
9375 call yac_cget_comps_comm_c ( comp_name_ptrs, &
9379 deallocate(comp_names_cpy)
9380 deallocate(comp_name_ptrs)
9389 use,
intrinsic :: iso_c_binding, only : c_null_char, c_ptr, c_loc, c_char
9397 subroutine yac_cget_comps_comm_instance_c ( yac_instance_id, &
9401 bind( c, name=
'yac_cget_comps_comm_instance_f2c' )
9403 use,
intrinsic :: iso_c_binding, only : c_int, c_ptr
9406 integer ( kind=c_int ),
value :: yac_instance_id
9407 type ( c_ptr ) :: comp_names(*)
9408 integer ( kind=c_int ),
value :: num_comps
9409 integer ( kind=YAC_MPI_FINT_KIND ) :: comps_comm
9411 end subroutine yac_cget_comps_comm_instance_c
9415 integer,
intent(in) :: yac_instance_id
9416 integer,
intent(in) :: num_comps
9417 character(kind=c_char, len=*),
intent(in) :: &
9418 comp_names(num_comps)
9419 integer,
intent (out) :: comps_comm
9422 character(kind=c_char),
allocatable,
target :: comp_names_cpy(:,:)
9423 type(c_ptr),
allocatable :: comp_name_ptrs(:)
9425 allocate(comp_names_cpy(yac_max_charlen+1, num_comps))
9426 allocate(comp_name_ptrs(num_comps))
9428 comp_names_cpy = c_null_char
9431 yac_check_string_len(
"yac_fget_comps_comm_instance", comp_names(i))
9432 do j = 1, len_trim(comp_names(i))
9433 comp_names_cpy(j,i) = comp_names(i)(j:j)
9435 comp_name_ptrs(i) = c_loc(comp_names_cpy(1,i))
9438 call yac_cget_comps_comm_instance_c ( yac_instance_id, &
9443 deallocate(comp_names_cpy)
9444 deallocate(comp_name_ptrs)
9458 subroutine yac_csync_def_c ( ) bind ( c, name='yac_csync_def' )
9460 end subroutine yac_csync_def_c
9464 call yac_csync_def_c ( )
9476 subroutine yac_csync_def_instance_c ( yac_instance_id ) &
9477 bind( c, name=
'yac_csync_def_instance' )
9479 use,
intrinsic :: iso_c_binding, only : c_int
9481 integer ( kind=c_int ),
value :: yac_instance_id
9483 end subroutine yac_csync_def_instance_c
9487 integer,
intent(in) :: yac_instance_id
9489 call yac_csync_def_instance_c ( yac_instance_id )
9495 use,
intrinsic :: iso_c_binding, only : c_null_char, c_ptr, c_loc, c_char
9503 subroutine yac_csync_def_comps_c ( comp_names, num_comp_names ) &
9504 bind( c, name=
'yac_csync_def_comps' )
9506 use,
intrinsic :: iso_c_binding, only : c_ptr, c_int
9508 type ( c_ptr ) :: comp_names(*)
9509 integer ( kind=c_int ),
value :: num_comp_names
9511 end subroutine yac_csync_def_comps_c
9515 integer,
intent(in) :: num_comp_names
9516 character(kind=c_char, len=YAC_MAX_CHARLEN),
intent(in) :: &
9517 comp_names(num_comp_names)
9520 character(kind=c_char),
allocatable,
target :: comp_names_cpy(:,:)
9521 type(c_ptr),
allocatable :: comp_name_ptrs(:)
9524 allocate(comp_name_ptrs(num_comp_names))
9526 comp_names_cpy = c_null_char
9528 do i = 1, num_comp_names
9529 yac_check_string_len(
"yac_fsync_def_comps", comp_names(i))
9530 do j = 1, len_trim(comp_names(i))
9531 comp_names_cpy(j,i) = comp_names(i)(j:j)
9533 comp_name_ptrs(i) = c_loc(comp_names_cpy(1,i))
9536 call yac_csync_def_comps_c ( comp_name_ptrs, &
9537 int(num_comp_names, c_int) )
9539 deallocate(comp_names_cpy)
9540 deallocate(comp_name_ptrs)
9548 use,
intrinsic :: iso_c_binding, only : c_null_char, c_ptr, c_loc, &
9557 subroutine yac_csync_def_comps_instance_c ( yac_instance_id, &
9560 bind( c, name=
'yac_csync_def_comps_instance' )
9562 use,
intrinsic :: iso_c_binding, only : c_int, c_ptr
9564 integer ( kind=c_int ),
value :: yac_instance_id
9565 type ( c_ptr ) :: comp_names(*)
9566 integer ( kind=c_int ),
value :: num_comp_names
9568 end subroutine yac_csync_def_comps_instance_c
9572 integer,
intent(in) :: yac_instance_id
9573 integer,
intent(in) :: num_comp_names
9574 character(kind=c_char, len=YAC_MAX_CHARLEN),
intent(in) :: &
9575 comp_names(num_comp_names)
9578 character(kind=c_char),
allocatable,
target :: comp_names_cpy(:,:)
9579 type(c_ptr),
allocatable :: comp_name_ptrs(:)
9582 allocate(comp_name_ptrs(num_comp_names))
9584 comp_names_cpy = c_null_char
9586 do i = 1, num_comp_names
9587 yac_check_string_len(
"yac_fsync_def_comps_instance", comp_names(i))
9588 do j = 1, len_trim(comp_names(i))
9589 comp_names_cpy(j,i) = comp_names(i)(j:j)
9591 comp_name_ptrs(i) = c_loc(comp_names_cpy(1,i))
9594 call yac_csync_def_comps_instance_c ( yac_instance_id, &
9596 int(num_comp_names, c_int) )
9598 deallocate(comp_names_cpy)
9599 deallocate(comp_name_ptrs)
9612 subroutine yac_cenddef_c ( ) bind ( c, name='yac_cenddef' )
9614 end subroutine yac_cenddef_c
9618 call yac_cenddef_c ( )
9630 subroutine yac_cenddef_instance_c ( yac_instance_id ) &
9631 bind( c, name=
'yac_cenddef_instance' )
9633 use,
intrinsic :: iso_c_binding, only : c_int
9635 integer ( kind=c_int ),
value :: yac_instance_id
9637 end subroutine yac_cenddef_instance_c
9641 integer,
intent(in) :: yac_instance_id
9643 call yac_cenddef_instance_c ( yac_instance_id )
9649 use,
intrinsic :: iso_c_binding, only : c_ptr
9656 subroutine yac_fenddef_and_emit_config_c ( &
9657 emit_flags, config) &
9658 bind( c, name=
'yac_cenddef_and_emit_config' )
9660 use,
intrinsic :: iso_c_binding, only : c_int, c_ptr
9661 integer ( kind=c_int ),
value :: emit_flags
9662 type(c_ptr) :: config
9664 end subroutine yac_fenddef_and_emit_config_c
9666 subroutine free_c ( ptr ) bind ( c, NAME='free' )
9668 use,
intrinsic :: iso_c_binding, only : c_ptr
9670 type ( c_ptr ),
intent(in),
value :: ptr
9672 end subroutine free_c
9675 integer,
intent (in) :: emit_flags
9676 character (len=:),
allocatable :: config
9678 type (c_ptr) :: c_string_ptr
9680 call yac_fenddef_and_emit_config_c(emit_flags, c_string_ptr)
9682 call free_c(c_string_ptr)
9687 yac_instance_id, emit_flags, config)
9689 use,
intrinsic :: iso_c_binding, only : c_ptr
9696 subroutine yac_fenddef_and_emit_config_instance_c ( &
9697 yac_instance_id, emit_flags, config) &
9698 bind( c, name=
'yac_cenddef_and_emit_config_instance' )
9700 use,
intrinsic :: iso_c_binding, only : c_int, c_ptr
9701 integer ( kind=c_int ),
value :: yac_instance_id
9702 integer ( kind=c_int ),
value :: emit_flags
9703 type(c_ptr) :: config
9705 end subroutine yac_fenddef_and_emit_config_instance_c
9707 subroutine free_c ( ptr ) bind ( c, NAME='free' )
9709 use,
intrinsic :: iso_c_binding, only : c_ptr
9711 type ( c_ptr ),
intent(in),
value :: ptr
9713 end subroutine free_c
9716 integer,
intent (in) :: yac_instance_id
9717 integer,
intent (in) :: emit_flags
9718 character (len=:),
allocatable :: config
9720 type (c_ptr) :: c_string_ptr
9722 call yac_fenddef_and_emit_config_instance_c( &
9723 yac_instance_id, emit_flags, c_string_ptr)
9725 call free_c(c_string_ptr)
9735 use,
intrinsic :: iso_c_binding, only: c_size_t, c_int, c_null_char
9739 function yac_cget_grid_size_c(location, grid_id)
result (grid_size) &
9740 bind(c, name=
'yac_cget_grid_size')
9741 use,
intrinsic :: iso_c_binding, only: c_size_t, c_int
9742 integer(kind=c_int),
value :: location
9743 integer(kind=c_int),
value :: grid_id
9744 integer(kind=c_size_t) :: grid_size
9745 end function yac_cget_grid_size_c
9748 integer,
intent(in) :: location
9749 integer,
intent(in) :: grid_id
9750 integer :: grid_size
9752 integer(kind=c_size_t) :: c_grid_size
9755 yac_cget_grid_size_c(int(location, c_int), int(grid_id, c_int))
9757 yac_fassert(int(huge(grid_size), c_size_t) >= c_grid_size,
"ERROR(yac_fget_grid_size): grid size exceeds HUGE(grid_size)")
9759 grid_size = int(c_grid_size)
9766 grid_id, nbr_cells, cell_areas )
9768 use,
intrinsic :: iso_c_binding, only: c_int, c_double, c_null_char
9775 subroutine yac_ccompute_grid_cell_areas_c ( grid_id, cell_areas )&
9776 bind( c, name=
'yac_ccompute_grid_cell_areas' )
9778 use,
intrinsic :: iso_c_binding, only : c_int, c_double
9780 integer ( kind=c_int),
value :: grid_id
9781 real ( kind=c_double) :: cell_areas(*)
9783 end subroutine yac_ccompute_grid_cell_areas_c
9787 integer,
intent(in) :: grid_id
9788 integer,
intent(in) :: nbr_cells
9789 real,
intent(out) :: cell_areas(nbr_cells)
9791 real(kind=c_double),
allocatable :: c_cell_areas(:)
9792 integer :: ref_nbr_cells
9796 yac_fassert(nbr_cells == ref_nbr_cells,
"ERROR(yac_fcompute_grid_cell_areas_real): wrong number of cells for provided grid")
9798 allocate(c_cell_areas(nbr_cells))
9800 CALL yac_ccompute_grid_cell_areas_c(int(grid_id, c_int), c_cell_areas)
9802 cell_areas(:) = real(c_cell_areas(:))
9804 deallocate(c_cell_areas)
9810 grid_id, nbr_cells, cell_areas )
9812 use,
intrinsic :: iso_c_binding, only: c_int, c_double, c_null_char
9819 subroutine yac_ccompute_grid_cell_areas_c ( grid_id, cell_areas )&
9820 bind( c, name=
'yac_ccompute_grid_cell_areas' )
9822 use,
intrinsic :: iso_c_binding, only : c_int, c_double
9824 integer ( kind=c_int),
value :: grid_id
9825 real ( kind=c_double) :: cell_areas(*)
9827 end subroutine yac_ccompute_grid_cell_areas_c
9831 integer,
intent(in) :: grid_id
9832 integer,
intent(in) :: nbr_cells
9833 double precision,
intent(out) :: cell_areas(nbr_cells)
9835 real(kind=c_double),
allocatable :: c_cell_areas(:)
9836 integer :: ref_nbr_cells
9840 yac_fassert(nbr_cells == ref_nbr_cells,
"ERROR(yac_fcompute_grid_cell_areas_dble): wrong number of cells for provided grid")
9842 allocate(c_cell_areas(nbr_cells))
9844 CALL yac_ccompute_grid_cell_areas_c(int(grid_id, c_int), c_cell_areas)
9846 cell_areas(:) = dble(c_cell_areas(:))
9848 deallocate(c_cell_areas)
9858 use,
intrinsic :: iso_c_binding, only: c_size_t, c_int, c_null_char
9862 function yac_cget_points_size_c(point_id)
result (points_size) &
9863 bind(c, name=
'yac_cget_points_size')
9864 use,
intrinsic :: iso_c_binding, only: c_size_t, c_int
9865 integer(kind=c_int),
value :: point_id
9866 integer(kind=c_size_t) :: points_size
9867 end function yac_cget_points_size_c
9870 integer,
intent(in) :: point_id
9871 integer :: points_size
9873 integer(kind=c_size_t) :: c_points_size
9875 c_points_size = yac_cget_points_size_c(int(point_id, c_int))
9877 yac_fassert(int(huge(points_size), c_size_t) >= c_points_size,
"ERROR(yac_fget_point_size): point size exceeds HUGE(point_size)")
9879 points_size = int(c_points_size)
9890 use,
intrinsic :: iso_c_binding, only: c_ptr
9894 function yac_cget_nbr_comps_c()
result( nbr_comps ) &
9895 bind(c, name=
'yac_cget_nbr_comps')
9896 use,
intrinsic :: iso_c_binding, only: c_int
9897 integer(kind=c_int) :: nbr_comps
9899 end function yac_cget_nbr_comps_c
9901 subroutine yac_cget_comp_names_c( nbr_comps, comp_names ) &
9902 bind(c, name=
'yac_cget_comp_names')
9903 use,
intrinsic :: iso_c_binding, only: c_int, c_ptr
9904 integer(kind=c_int),
intent(in),
value :: nbr_comps
9905 TYPE(c_ptr),
intent(out) :: comp_names(nbr_comps)
9906 end subroutine yac_cget_comp_names_c
9909 type(
yac_string),
allocatable :: comp_names(:)
9910 integer :: nbr_comps
9912 TYPE(c_ptr),
allocatable :: comp_ptr(:)
9914 nbr_comps = yac_cget_nbr_comps_c()
9915 allocate(comp_ptr(nbr_comps))
9916 allocate(comp_names(nbr_comps))
9917 CALL yac_cget_comp_names_c(nbr_comps, comp_ptr)
9927 use,
intrinsic :: iso_c_binding, only: c_ptr
9931 function yac_cget_nbr_comps_instance_c( yac_instance_id ) &
9932 result( nbr_comps ) &
9933 bind(c, name=
'yac_cget_nbr_comps_instance')
9934 use,
intrinsic :: iso_c_binding, only: c_int
9935 integer(kind=c_int),
value,
intent(in) :: yac_instance_id
9936 integer(kind=c_int) :: nbr_comps
9937 end function yac_cget_nbr_comps_instance_c
9939 subroutine yac_cget_comp_names_instance_c( yac_instance_id, &
9942 bind(c, name=
'yac_cget_comp_names_instance')
9943 use,
intrinsic :: iso_c_binding, only: c_int, c_ptr
9944 integer(kind=c_int),
intent(in),
value :: yac_instance_id
9945 integer(kind=c_int),
intent(in),
value :: nbr_comps
9946 TYPE(c_ptr),
intent(out) :: comp_names(nbr_comps)
9947 end subroutine yac_cget_comp_names_instance_c
9950 integer,
intent(in) :: yac_instance_id
9951 type(
yac_string),
allocatable :: comp_names(:)
9952 integer :: nbr_comps
9954 TYPE(c_ptr),
allocatable :: comp_ptr(:)
9956 nbr_comps = yac_cget_nbr_comps_instance_c(yac_instance_id)
9957 allocate(comp_names(nbr_comps))
9958 allocate(comp_ptr(nbr_comps))
9959 CALL yac_cget_comp_names_instance_c(yac_instance_id, &
9973 use,
intrinsic :: iso_c_binding, only: c_ptr
9978 function yac_cget_nbr_grids_c()
result( nbr_grids ) &
9979 bind(c, name=
'yac_cget_nbr_grids')
9980 use,
intrinsic :: iso_c_binding, only: c_int
9981 integer(kind=c_int) :: nbr_grids
9982 end function yac_cget_nbr_grids_c
9984 subroutine yac_cget_grid_names_c( nbr_grids, grid_names ) &
9985 bind(c, name=
'yac_cget_grid_names')
9986 use,
intrinsic :: iso_c_binding, only: c_int, c_ptr
9987 integer(kind=c_int),
intent(in),
value :: nbr_grids
9988 TYPE(c_ptr),
intent(out) :: grid_names(nbr_grids)
9989 end subroutine yac_cget_grid_names_c
9992 type(
yac_string),
allocatable :: grid_names(:)
9993 integer :: nbr_grids
9995 TYPE(c_ptr),
allocatable :: grid_ptr(:)
9997 nbr_grids = yac_cget_nbr_grids_c()
9998 allocate(grid_ptr(nbr_grids))
9999 CALL yac_cget_grid_names_c(nbr_grids, grid_ptr)
10000 allocate(grid_names(nbr_grids))
10010 use,
intrinsic :: iso_c_binding, only: c_ptr
10015 function yac_cget_nbr_grids_instance_c( yac_instance_id ) &
10016 result( nbr_grids ) &
10017 bind(c, name=
'yac_cget_nbr_grids_instance')
10018 use,
intrinsic :: iso_c_binding, only: c_int
10019 integer(kind=c_int),
value,
intent(in) :: yac_instance_id
10020 integer(kind=c_int) :: nbr_grids
10022 end function yac_cget_nbr_grids_instance_c
10024 subroutine yac_cget_grid_names_instance_c( yac_instance_id, &
10027 bind(c, name=
'yac_cget_grid_names_instance')
10028 use,
intrinsic :: iso_c_binding, only: c_int, c_ptr
10029 integer(kind=c_int),
intent(in),
value :: yac_instance_id
10030 integer(kind=c_int),
intent(in),
value :: nbr_grids
10031 TYPE(c_ptr),
intent(out) :: grid_names(nbr_grids)
10032 end subroutine yac_cget_grid_names_instance_c
10035 integer,
intent(in) :: yac_instance_id
10036 type(
yac_string),
allocatable :: grid_names(:)
10037 integer :: nbr_grids
10039 TYPE(c_ptr),
allocatable :: grid_ptr(:)
10041 nbr_grids = yac_cget_nbr_grids_instance_c(yac_instance_id)
10042 allocate(grid_ptr(nbr_grids))
10043 CALL yac_cget_grid_names_instance_c(yac_instance_id, &
10046 allocate(grid_names(nbr_grids))
10058 use,
intrinsic :: iso_c_binding, only: c_ptr, c_null_char
10063 function yac_cget_comp_nbr_grids_c( comp_name )
result( nbr_grids ) &
10064 bind(c, name=
'yac_cget_comp_nbr_grids')
10065 use,
intrinsic :: iso_c_binding, only: c_int, c_char
10066 character(kind=c_char),
dimension(*),
intent(in) :: comp_name
10067 integer(kind=c_int) :: nbr_grids
10069 end function yac_cget_comp_nbr_grids_c
10071 subroutine yac_cget_comp_grid_names_c( comp_name, &
10074 bind(c, name=
'yac_cget_comp_grid_names')
10075 use,
intrinsic :: iso_c_binding, only: c_int, c_ptr, c_char
10076 character(kind=c_char),
dimension(*),
intent(in) :: comp_name
10077 integer(kind=c_int),
intent(in),
value :: nbr_grids
10078 TYPE(c_ptr),
intent(out) :: grid_names(nbr_grids)
10079 end subroutine yac_cget_comp_grid_names_c
10082 type(
yac_string),
allocatable :: grid_names(:)
10083 CHARACTER(len=*),
intent(in) :: comp_name
10084 integer :: nbr_grids
10086 TYPE(c_ptr),
allocatable :: grid_ptr(:)
10088 nbr_grids = yac_cget_comp_nbr_grids_c(trim(comp_name) // c_null_char)
10089 allocate(grid_ptr(nbr_grids))
10090 CALL yac_cget_comp_grid_names_c(trim(comp_name) // c_null_char, &
10093 allocate(grid_names(nbr_grids))
10103 use,
intrinsic :: iso_c_binding, only: c_ptr, c_null_char
10108 function yac_cget_comp_nbr_grids_instance_c( yac_instance_id, &
10110 result( nbr_grids ) &
10111 bind(c, name=
'yac_cget_comp_nbr_grids_instance')
10112 use,
intrinsic :: iso_c_binding, only: c_int, c_char
10113 character(kind=c_char),
dimension(*),
intent(in) :: comp_name
10114 integer(kind=c_int),
value,
intent(in) :: yac_instance_id
10115 integer(kind=c_int) :: nbr_grids
10116 end function yac_cget_comp_nbr_grids_instance_c
10118 subroutine yac_cget_comp_grid_names_instance_c( yac_instance_id, &
10122 bind(c, name=
'yac_cget_comp_grid_names_instance')
10123 use,
intrinsic :: iso_c_binding, only: c_int, c_ptr, c_char
10124 character(kind=c_char),
dimension(*),
intent(in) :: comp_name
10125 integer(kind=c_int),
intent(in),
value :: yac_instance_id
10126 integer(kind=c_int),
intent(in),
value :: nbr_grids
10127 TYPE(c_ptr),
intent(out) :: grid_names(nbr_grids)
10128 end subroutine yac_cget_comp_grid_names_instance_c
10131 integer,
intent(in) :: yac_instance_id
10132 character(len=*),
intent(in) :: comp_name
10133 type(
yac_string),
allocatable :: grid_names(:)
10134 integer :: nbr_grids
10136 TYPE(c_ptr),
allocatable :: grid_ptr(:)
10139 yac_cget_comp_nbr_grids_instance_c(yac_instance_id, &
10140 trim(comp_name) // c_null_char)
10141 allocate(grid_ptr(nbr_grids))
10142 CALL yac_cget_comp_grid_names_instance_c(yac_instance_id, &
10143 trim(comp_name) // c_null_char, &
10146 allocate(grid_names(nbr_grids))
10158 use,
intrinsic :: iso_c_binding, only: c_ptr, c_null_char
10163 function yac_cget_nbr_fields_c(comp_name, grid_name) &
10164 result( nbr_fields ) &
10165 bind(c, name=
'yac_cget_nbr_fields')
10166 use,
intrinsic :: iso_c_binding, only: c_int, c_char
10167 character(kind=c_char),
dimension(*),
intent(in) :: comp_name
10168 character(kind=c_char),
dimension(*),
intent(in) :: grid_name
10169 integer(kind=c_int) :: nbr_fields
10170 end function yac_cget_nbr_fields_c
10172 subroutine yac_cget_field_names_c( comp_name, &
10176 bind(c, name=
'yac_cget_field_names')
10177 use,
intrinsic :: iso_c_binding, only: c_int, c_ptr, c_char
10178 character(kind=c_char),
dimension(*),
intent(in) :: comp_name
10179 character(kind=c_char),
dimension(*),
intent(in) :: grid_name
10180 integer(kind=c_int),
intent(in),
value :: nbr_fields
10181 TYPE(c_ptr),
intent(out) :: field_names(nbr_fields)
10182 end subroutine yac_cget_field_names_c
10185 character(len=*),
intent(in) :: comp_name
10186 character(len=*),
intent(in) :: grid_name
10187 type(
yac_string),
allocatable :: field_names(:)
10188 integer :: nbr_fields
10190 TYPE(c_ptr),
allocatable :: field_ptr(:)
10192 nbr_fields = yac_cget_nbr_fields_c(trim(comp_name)//c_null_char, &
10193 trim(grid_name)//c_null_char)
10194 allocate(field_ptr(nbr_fields))
10195 CALL yac_cget_field_names_c(trim(comp_name)//c_null_char, &
10196 trim(grid_name)//c_null_char, &
10199 allocate(field_names(nbr_fields))
10208 result( field_names )
10212 use,
intrinsic :: iso_c_binding, only: c_ptr, c_null_char
10217 function yac_cget_nbr_fields_instance_c( yac_instance_id, &
10220 result( nbr_fields ) bind(c, name=
'yac_cget_nbr_fields_instance')
10221 use,
intrinsic :: iso_c_binding, only: c_int, c_char
10222 integer(kind=c_int),
value,
intent(in) :: yac_instance_id
10223 character(kind=c_char),
dimension(*),
intent(in) :: comp_name
10224 character(kind=c_char),
dimension(*),
intent(in) :: grid_name
10225 integer(kind=c_int) :: nbr_fields
10226 end function yac_cget_nbr_fields_instance_c
10228 subroutine yac_cget_field_names_instance_c( yac_instance_id, &
10233 bind(c, name=
'yac_cget_field_names_instance')
10234 use,
intrinsic :: iso_c_binding, only: c_int, c_ptr, c_char
10235 integer(kind=c_int),
intent(in),
value :: yac_instance_id
10236 character(kind=c_char),
dimension(*),
intent(in) :: comp_name
10237 character(kind=c_char),
dimension(*),
intent(in) :: grid_name
10238 integer(kind=c_int),
intent(in),
value :: nbr_fields
10239 TYPE(c_ptr),
intent(out) :: field_names(nbr_fields)
10240 end subroutine yac_cget_field_names_instance_c
10243 integer,
intent(in) :: yac_instance_id
10244 character(len=*),
intent(in) :: comp_name
10245 character(len=*),
intent(in) :: grid_name
10246 type(
yac_string),
allocatable :: field_names(:)
10247 integer :: nbr_fields
10249 TYPE(c_ptr),
allocatable :: field_ptr(:)
10252 yac_cget_nbr_fields_instance_c(yac_instance_id, &
10253 trim(comp_name)//c_null_char, &
10254 trim(grid_name)//c_null_char)
10255 allocate(field_ptr(nbr_fields))
10256 CALL yac_cget_field_names_instance_c(yac_instance_id, &
10257 trim(comp_name)//c_null_char, &
10258 trim(grid_name)//c_null_char, &
10261 allocate(field_names(nbr_fields))
10272 use,
intrinsic :: iso_c_binding, only : c_null_char
10278 function yac_cget_comp_id_c(comp_name)
result(comp_id) &
10279 bind( c, name=
'yac_cget_comp_id' )
10281 use,
intrinsic :: iso_c_binding, only : c_int, c_char
10283 character ( kind=c_char ),
dimension(*) :: comp_name
10284 integer ( kind=c_int ) :: comp_id
10286 end function yac_cget_comp_id_c
10290 character(len=*),
intent(in) :: comp_name
10293 comp_id = yac_cget_comp_id_c(trim(comp_name)//c_null_char)
10300 use,
intrinsic :: iso_c_binding, only : c_null_char
10306 function yac_cget_comp_id_instance_c(yac_id, comp_name)
result(comp_id) &
10307 bind( c, name=
'yac_cget_comp_id_instance' )
10309 use,
intrinsic :: iso_c_binding, only : c_int, c_char
10311 integer ( kind=c_int ),
value,
intent(in) :: yac_id
10312 character ( kind=c_char ),
dimension(*) :: comp_name
10313 integer ( kind=c_int ) :: comp_id
10315 end function yac_cget_comp_id_instance_c
10319 integer,
intent(in) :: yac_id
10320 character(len=*),
intent(in) :: comp_name
10323 comp_id = yac_cget_comp_id_instance_c(yac_id, trim(comp_name)//c_null_char)
10330 use,
intrinsic :: iso_c_binding, only : c_null_char
10336 function yac_cget_grid_id_c(grid_name)
result(grid_id) &
10337 bind( c, name=
'yac_cget_grid_id' )
10339 use,
intrinsic :: iso_c_binding, only : c_int, c_char
10341 character ( kind=c_char ),
dimension(*) :: grid_name
10342 integer ( kind=c_int ) :: grid_id
10344 end function yac_cget_grid_id_c
10348 character(len=*),
intent(in) :: grid_name
10351 grid_id = yac_cget_grid_id_c(trim(grid_name)//c_null_char)
10358 use,
intrinsic :: iso_c_binding, only : c_null_char
10364 function yac_cget_points_id_c(grid_id, location, point_name) &
10365 result(point_id) bind( c, name=
'yac_cget_points_id' )
10367 use,
intrinsic :: iso_c_binding, only : c_int, c_char
10369 integer ( kind=c_int ),
value,
intent(in) :: grid_id
10370 integer ( kind=c_int ),
value,
intent(in) :: location
10371 character ( kind=c_char ),
dimension(*) :: point_name
10372 integer ( kind=c_int ) :: point_id
10374 end function yac_cget_points_id_c
10378 integer,
intent(in) :: grid_id
10379 integer,
intent(in) :: location
10380 character(len=*),
intent(in) :: point_name
10381 integer :: point_id
10384 yac_cget_points_id_c(grid_id, location, trim(point_name)//c_null_char)
10391 use,
intrinsic :: iso_c_binding, only : c_null_char
10397 function yac_cget_mask_id_c(grid_id, location, mask_name)
result(mask_id) &
10398 bind( c, name=
'yac_cget_mask_id' )
10400 use,
intrinsic :: iso_c_binding, only : c_int, c_char
10402 integer ( kind=c_int ),
value,
intent(in) :: grid_id
10403 integer ( kind=c_int ),
value,
intent(in) :: location
10404 character ( kind=c_char ),
dimension(*) :: mask_name
10405 integer ( kind=c_int ) :: mask_id
10407 end function yac_cget_mask_id_c
10411 integer,
intent(in) :: grid_id
10412 integer,
intent(in) :: location
10413 character(len=*),
intent(in) :: mask_name
10416 mask_id = yac_cget_mask_id_c(grid_id, location, trim(mask_name)//c_null_char)
10423 result(field_is_defined)
10426 use,
intrinsic :: iso_c_binding, only : c_null_char, c_int
10432 function yac_cget_field_is_defined_c ( comp_name, grid_name, field_name ) &
10433 bind( c, name=
'yac_cget_field_is_defined' )
10435 use,
intrinsic :: iso_c_binding, only : c_int, c_char
10437 character ( kind=c_char ),
dimension(*) :: comp_name
10438 character ( kind=c_char ),
dimension(*) :: grid_name
10439 character ( kind=c_char ),
dimension(*) :: field_name
10440 integer ( kind=c_int ) :: yac_cget_field_is_defined_c
10442 end function yac_cget_field_is_defined_c
10446 character(len=*),
intent (in) :: comp_name
10447 character(len=*),
intent (in) :: grid_name
10448 character(len=*),
intent (in) :: field_name
10449 logical :: field_is_defined
10451 field_is_defined = &
10452 0_c_int /= yac_cget_field_is_defined_c( trim(comp_name)//c_null_char, &
10453 trim(grid_name)//c_null_char, &
10454 trim(field_name)//c_null_char )
10462 result(field_is_defined)
10465 use,
intrinsic :: iso_c_binding, only : c_null_char, c_int
10471 function yac_cget_field_is_defined_instance_c ( yac_id, &
10475 bind( c, name=
'yac_cget_field_is_defined_instance' )
10477 use,
intrinsic :: iso_c_binding, only : c_int, c_char
10479 integer( kind=c_int ),
value,
intent(in) :: yac_id
10480 character ( kind=c_char ),
dimension(*) :: comp_name
10481 character ( kind=c_char ),
dimension(*) :: grid_name
10482 character ( kind=c_char ),
dimension(*) :: field_name
10483 integer ( kind=c_int ) :: yac_cget_field_is_defined_instance_c
10485 end function yac_cget_field_is_defined_instance_c
10489 integer,
intent(in) :: yac_id
10490 character(len=*),
intent (in) :: comp_name
10491 character(len=*),
intent (in) :: grid_name
10492 character(len=*),
intent (in) :: field_name
10493 logical :: field_is_defined
10495 field_is_defined = &
10496 0_c_int /= yac_cget_field_is_defined_instance_c( yac_id, &
10497 trim(comp_name)//c_null_char, &
10498 trim(grid_name)//c_null_char, &
10499 trim(field_name)//c_null_char )
10509 use,
intrinsic :: iso_c_binding, only : c_null_char
10515 function yac_cget_field_id_c ( comp_name, grid_name, field_name ) &
10517 bind( c, name=
'yac_cget_field_id' )
10519 use,
intrinsic :: iso_c_binding, only : c_int, c_char
10521 character ( kind=c_char ),
dimension(*) :: comp_name
10522 character ( kind=c_char ),
dimension(*) :: grid_name
10523 character ( kind=c_char ),
dimension(*) :: field_name
10524 integer ( kind=c_int ) :: field_id
10526 end function yac_cget_field_id_c
10530 character(len=*),
intent (in) :: comp_name
10531 character(len=*),
intent (in) :: grid_name
10532 character(len=*),
intent (in) :: field_name
10533 integer :: field_id
10535 field_id = yac_cget_field_id_c( trim(comp_name)//c_null_char, &
10536 trim(grid_name)//c_null_char, &
10537 trim(field_name)//c_null_char )
10548 use,
intrinsic :: iso_c_binding, only : c_null_char
10554 function yac_cget_field_id_instance_c ( yac_id, &
10559 bind( c, name=
'yac_cget_field_id_instance' )
10561 use,
intrinsic :: iso_c_binding, only : c_int, c_char
10563 integer( kind=c_int ),
value,
intent(in) :: yac_id
10564 character ( kind=c_char ),
dimension(*) :: comp_name
10565 character ( kind=c_char ),
dimension(*) :: grid_name
10566 character ( kind=c_char ),
dimension(*) :: field_name
10567 integer ( kind=c_int ) :: field_id
10569 end function yac_cget_field_id_instance_c
10573 integer,
intent(in) :: yac_id
10574 character(len=*),
intent (in) :: comp_name
10575 character(len=*),
intent (in) :: grid_name
10576 character(len=*),
intent (in) :: field_name
10577 integer :: field_id
10580 yac_cget_field_id_instance_c( yac_id, &
10581 trim(comp_name)//c_null_char, &
10582 trim(grid_name)//c_null_char, &
10583 trim(field_name)//c_null_char )
10597 subroutine yac_cget_action_c ( field_id, action ) &
10598 bind( c, name=
'yac_cget_action' )
10600 use,
intrinsic :: iso_c_binding, only : c_int
10602 integer ( kind=c_int ),
value :: field_id
10603 integer ( kind=c_int) :: action
10605 end subroutine yac_cget_action_c
10609 integer,
intent (in) :: field_id
10610 integer,
intent (out) :: action
10617 call yac_cget_action_c(field_id, action)
10631 subroutine yac_cupdate_c ( field_id ) &
10632 bind( c, name=
'yac_cupdate' )
10634 use,
intrinsic :: iso_c_binding, only : c_int
10636 integer ( kind=c_int ),
value :: field_id
10638 end subroutine yac_cupdate_c
10642 integer,
intent (in) :: field_id
10644 call yac_cupdate_c(field_id)
10649 tgt_comp_name, tgt_grid_name, tgt_field_name, &
10650 coupling_timestep, time_unit, time_reduction, interp_stack_config_id, &
10651 src_lag, tgt_lag, weight_file, weight_file_on_existing, mapping_side, &
10652 scale_factor, scale_summand, src_mask_names, tgt_mask_name, &
10653 yaxt_exchanger_name, collection_indices, use_raw_exchange)
10655 use,
intrinsic :: iso_c_binding, only : c_null_char, c_ptr, c_null_ptr, &
10664 subroutine yac_cdef_couple__c( src_comp_name, &
10670 coupling_timestep, &
10673 interp_stack_config_id, &
10677 weight_file_on_existing, &
10681 num_src_mask_names, &
10684 yaxt_exchanger_name, &
10686 collection_indices, &
10687 use_raw_exchange) &
10688 bind( c, name=
'yac_cdef_couple_' )
10690 use,
intrinsic :: iso_c_binding, only : c_int, c_char, c_ptr, c_double
10692 character ( kind=c_char ),
dimension(*) :: src_comp_name
10693 character ( kind=c_char ),
dimension(*) :: src_grid_name
10694 character ( kind=c_char ),
dimension(*) :: src_field_name
10695 character ( kind=c_char ),
dimension(*) :: tgt_comp_name
10696 character ( kind=c_char ),
dimension(*) :: tgt_grid_name
10697 character ( kind=c_char ),
dimension(*) :: tgt_field_name
10698 character ( kind=c_char ),
dimension(*) :: coupling_timestep
10699 integer ( kind=c_int ),
value :: time_unit
10700 integer ( kind=c_int ),
value :: time_reduction
10701 integer ( kind=c_int ),
value :: interp_stack_config_id
10702 integer ( kind=c_int ),
value :: src_lag
10703 integer ( kind=c_int ),
value :: tgt_lag
10704 type ( c_ptr ),
value :: weight_file
10705 integer ( kind=c_int ),
value :: weight_file_on_existing
10706 integer ( kind=c_int ),
value :: mapping_side
10707 real ( kind=c_double ),
value :: scale_factor
10708 real ( kind=c_double ),
value :: scale_summand
10709 integer ( kind=c_int ),
value :: num_src_mask_names
10710 type ( c_ptr ) :: src_mask_names(*)
10711 type ( c_ptr ),
value :: tgt_mask_name
10712 type ( c_ptr ),
value :: yaxt_exchanger_name
10713 integer ( kind=c_int ),
value :: collection_size
10714 integer ( kind=c_int ) :: collection_indices(*)
10715 integer ( kind=c_int ),
value :: use_raw_exchange
10716 end subroutine yac_cdef_couple__c
10720 character ( len=* ),
intent(in) :: src_comp_name
10721 character ( len=* ),
intent(in) :: src_grid_name
10722 character ( len=* ),
intent(in) :: src_field_name
10723 character ( len=* ),
intent(in) :: tgt_comp_name
10724 character ( len=* ),
intent(in) :: tgt_grid_name
10725 character ( len=* ),
intent(in) :: tgt_field_name
10726 character ( len=* ),
intent(in) :: coupling_timestep
10727 integer,
intent(in) :: time_unit
10728 integer,
intent(in) :: time_reduction
10729 integer,
intent(in) :: interp_stack_config_id
10730 integer,
intent(in),
optional :: src_lag
10731 integer,
intent(in),
optional :: tgt_lag
10732 character ( len=* ),
intent(in),
optional :: weight_file
10733 integer,
intent(in),
optional :: weight_file_on_existing
10734 integer,
intent(in),
optional :: mapping_side
10735 double precision,
intent(in),
optional :: scale_factor
10736 double precision,
intent(in),
optional :: scale_summand
10737 type(
yac_string),
intent(in),
optional :: src_mask_names(:)
10738 character ( len=* ),
intent(in),
optional :: tgt_mask_name
10739 character ( len=* ),
intent(in),
optional :: yaxt_exchanger_name
10740 integer,
intent(in),
optional :: collection_indices(:)
10741 logical,
intent(in),
optional :: use_raw_exchange
10744 integer :: src_lag_cpy, tgt_lag_cpy, weight_file_on_existing_cpy, &
10746 character(kind=c_char),
allocatable,
target :: weight_file_cpy(:)
10747 type(c_ptr) :: weight_file_ptr
10748 double precision :: scale_factor_cpy, scale_summand_cpy
10749 integer :: num_src_mask_names
10750 character(kind=c_char),
allocatable,
target :: src_mask_names_cpy(:,:)
10751 type(c_ptr),
allocatable :: src_mask_names_ptr(:)
10752 character(kind=c_char),
allocatable,
target :: tgt_mask_name_cpy(:)
10753 type(c_ptr) :: tgt_mask_name_ptr
10754 character(kind=c_char),
allocatable,
target :: yaxt_exchanger_name_cpy(:)
10755 type(c_ptr) :: yaxt_exchanger_name_ptr
10756 integer(kind=c_int) :: collection_size
10757 integer(kind=c_int),
allocatable :: collection_indices_cpy(:)
10758 integer(kind=c_int) :: use_raw_exchange_cpy
10764 yac_check_string_len(
"yac_fdef_couple", src_comp_name )
10765 yac_check_string_len(
"yac_fdef_couple", src_grid_name )
10766 yac_check_string_len(
"yac_fdef_couple", src_field_name )
10767 yac_check_string_len(
"yac_fdef_couple", tgt_comp_name )
10768 yac_check_string_len(
"yac_fdef_couple", tgt_grid_name )
10769 yac_check_string_len(
"yac_fdef_couple", tgt_field_name )
10770 yac_check_string_len(
"yac_fdef_couple", coupling_timestep )
10771 if (
present(src_lag) )
then
10772 src_lag_cpy = src_lag
10776 if (
present(tgt_lag) )
then
10777 tgt_lag_cpy = tgt_lag
10781 if (
present(weight_file) )
then
10782 yac_check_string_len(
"yac_fdef_couple", weight_file )
10783 weight_file_cpy = c_null_char
10784 do i = 1, len_trim(weight_file)
10785 weight_file_cpy(i) = weight_file(i:i)
10787 weight_file_ptr = c_loc(weight_file_cpy(1))
10789 weight_file_ptr = c_null_ptr
10791 if (
present(weight_file_on_existing) )
then
10792 weight_file_on_existing_cpy = weight_file_on_existing
10796 if (
present(mapping_side) )
then
10797 mapping_side_cpy = mapping_side
10799 mapping_side_cpy = 1
10801 if (
present(scale_factor) )
then
10802 scale_factor_cpy = scale_factor
10804 scale_factor_cpy = 1.0
10806 if (
present(scale_summand) )
then
10807 scale_summand_cpy = scale_summand
10809 scale_summand_cpy = 0.0
10811 if (
present(src_mask_names) )
then
10812 num_src_mask_names =
size(src_mask_names)
10813 allocate(src_mask_names_ptr(num_src_mask_names))
10815 src_mask_names_cpy = c_null_char
10816 do i = 1, num_src_mask_names
10817 yac_fassert(
allocated(src_mask_names(i)%string),
"ERROR(yac_fdef_couple): source mask name not allocated")
10818 yac_check_string_len(
"yac_fdef_couple", src_mask_names(i)%string )
10819 do j = 1, len_trim(src_mask_names(i)%string)
10820 src_mask_names_cpy(j, i) = src_mask_names(i)%string(j:j)
10822 src_mask_names_ptr(i) = c_loc(src_mask_names_cpy(1,i))
10825 num_src_mask_names = 0
10826 allocate(src_mask_names_ptr(0))
10828 if (
present(tgt_mask_name) )
then
10829 yac_check_string_len(
"yac_fdef_couple", tgt_mask_name )
10830 tgt_mask_name_cpy = c_null_char
10831 do i = 1, len_trim(tgt_mask_name)
10832 tgt_mask_name_cpy(i) = tgt_mask_name(i:i)
10834 tgt_mask_name_ptr = c_loc(tgt_mask_name_cpy(1))
10836 tgt_mask_name_ptr = c_null_ptr
10838 if (
present(yaxt_exchanger_name) )
then
10839 yac_check_string_len(
"yac_fdef_couple", yaxt_exchanger_name )
10840 yaxt_exchanger_name_cpy = c_null_char
10841 do i = 1, len_trim(yaxt_exchanger_name)
10842 yaxt_exchanger_name_cpy(i) = yaxt_exchanger_name(i:i)
10844 yaxt_exchanger_name_ptr = c_loc(yaxt_exchanger_name_cpy(1))
10846 yaxt_exchanger_name_ptr = c_null_ptr
10848 if (
present(collection_indices) )
then
10849 collection_size =
size(collection_indices)
10850 allocate(collection_indices_cpy(collection_size))
10851 collection_indices_cpy = int(collection_indices, c_int)
10853 collection_size = 0
10854 allocate(collection_indices_cpy(0))
10856 if (
present(use_raw_exchange) )
then
10857 use_raw_exchange_cpy =
merge(1_c_int, 0_c_int, use_raw_exchange)
10859 use_raw_exchange_cpy = 0
10862 call yac_cdef_couple__c( trim(src_comp_name) // c_null_char, &
10863 trim(src_grid_name) // c_null_char, &
10864 trim(src_field_name) // c_null_char, &
10865 trim(tgt_comp_name) // c_null_char, &
10866 trim(tgt_grid_name) // c_null_char, &
10867 trim(tgt_field_name) // c_null_char, &
10868 trim(coupling_timestep) // c_null_char, &
10871 interp_stack_config_id, &
10875 weight_file_on_existing_cpy, &
10876 mapping_side_cpy, &
10877 scale_factor_cpy, &
10878 scale_summand_cpy, &
10879 num_src_mask_names, &
10880 src_mask_names_ptr, &
10881 tgt_mask_name_ptr, &
10882 yaxt_exchanger_name_ptr, &
10884 collection_indices_cpy, &
10885 use_raw_exchange_cpy)
10887 deallocate(weight_file_cpy)
10888 deallocate(tgt_mask_name_cpy)
10889 deallocate(yaxt_exchanger_name_cpy)
10894 src_comp_name, src_grid_name, src_field_name, &
10895 tgt_comp_name, tgt_grid_name, tgt_field_name, &
10896 coupling_timestep, time_unit, time_reduction, &
10897 interp_stack_config_id, src_lag, tgt_lag, &
10898 weight_file, weight_file_on_existing, &
10899 mapping_side, scale_factor, scale_summand, &
10900 src_mask_names, tgt_mask_name, &
10901 yaxt_exchanger_name, collection_indices, &
10904 use,
intrinsic :: iso_c_binding, only : c_null_char, c_ptr, &
10905 c_null_ptr, c_loc, c_char
10913 subroutine yac_cdef_couple_instance__c( instance_id, &
10920 coupling_timestep, &
10923 interp_stack_config_id, &
10927 weight_file_on_existing, &
10931 num_src_mask_names, &
10934 yaxt_exchanger_name, &
10936 collection_indices, &
10937 use_raw_exchange) &
10938 bind( c, name=
'yac_cdef_couple_instance_' )
10940 use,
intrinsic :: iso_c_binding, only : c_int, c_char, c_ptr, c_double
10942 integer ( kind=c_int ),
value :: instance_id
10943 character ( kind=c_char ),
dimension(*) :: src_comp_name
10944 character ( kind=c_char ),
dimension(*) :: src_grid_name
10945 character ( kind=c_char ),
dimension(*) :: src_field_name
10946 character ( kind=c_char ),
dimension(*) :: tgt_comp_name
10947 character ( kind=c_char ),
dimension(*) :: tgt_grid_name
10948 character ( kind=c_char ),
dimension(*) :: tgt_field_name
10949 character ( kind=c_char ),
dimension(*) :: coupling_timestep
10950 integer ( kind=c_int ),
value :: time_unit
10951 integer ( kind=c_int ),
value :: time_reduction
10952 integer ( kind=c_int ),
value :: interp_stack_config_id
10953 integer ( kind=c_int ),
value :: src_lag
10954 integer ( kind=c_int ),
value :: tgt_lag
10955 type ( c_ptr ),
value :: weight_file
10956 integer ( kind=c_int ),
value :: weight_file_on_existing
10957 integer ( kind=c_int ),
value :: mapping_side
10958 real ( kind=c_double ),
value :: scale_factor
10959 real ( kind=c_double ),
value :: scale_summand
10960 integer ( kind=c_int ),
value :: num_src_mask_names
10961 type ( c_ptr ) :: src_mask_names(*)
10962 type ( c_ptr ),
value :: tgt_mask_name
10963 type ( c_ptr ),
value :: yaxt_exchanger_name
10964 integer ( kind=c_int ),
value :: collection_size
10965 integer ( kind=c_int ) :: collection_indices(*)
10966 integer ( kind=c_int ),
value :: use_raw_exchange
10967 end subroutine yac_cdef_couple_instance__c
10971 integer,
intent(in) :: instance_id
10972 character ( len=* ),
intent(in) :: src_comp_name
10973 character ( len=* ),
intent(in) :: src_grid_name
10974 character ( len=* ),
intent(in) :: src_field_name
10975 character ( len=* ),
intent(in) :: tgt_comp_name
10976 character ( len=* ),
intent(in) :: tgt_grid_name
10977 character ( len=* ),
intent(in) :: tgt_field_name
10978 character ( len=* ),
intent(in) :: coupling_timestep
10979 integer,
intent(in) :: time_unit
10980 integer,
intent(in) :: time_reduction
10981 integer,
intent(in) :: interp_stack_config_id
10982 integer,
intent(in),
optional :: src_lag
10983 integer,
intent(in),
optional :: tgt_lag
10984 character ( len=* ),
intent(in),
optional :: weight_file
10985 integer,
intent(in),
optional :: weight_file_on_existing
10986 integer,
intent(in),
optional :: mapping_side
10987 double precision,
intent(in),
optional :: scale_factor
10988 double precision,
intent(in),
optional :: scale_summand
10989 type(
yac_string),
intent(in),
optional :: src_mask_names(:)
10990 character ( len=* ),
intent(in),
optional :: tgt_mask_name
10991 character ( len=* ),
intent(in),
optional :: yaxt_exchanger_name
10992 integer,
intent(in),
optional :: collection_indices(:)
10993 logical,
intent(in),
optional :: use_raw_exchange
10996 integer :: src_lag_cpy, tgt_lag_cpy, weight_file_on_existing_cpy, &
10998 character(kind=c_char),
allocatable,
target :: weight_file_cpy(:)
10999 type(c_ptr) :: weight_file_ptr
11000 double precision :: scale_factor_cpy, scale_summand_cpy
11001 integer :: num_src_mask_names
11002 character(kind=c_char),
allocatable,
target :: src_mask_names_cpy(:,:)
11003 type(c_ptr),
allocatable :: src_mask_names_ptr(:)
11004 character(kind=c_char),
allocatable,
target :: tgt_mask_name_cpy(:)
11005 type(c_ptr) :: tgt_mask_name_ptr
11006 character(kind=c_char),
allocatable,
target :: yaxt_exchanger_name_cpy(:)
11007 type(c_ptr) :: yaxt_exchanger_name_ptr
11008 integer(kind=c_int) :: collection_size
11009 integer(kind=c_int),
allocatable :: collection_indices_cpy(:)
11010 integer(kind=c_int) :: use_raw_exchange_cpy
11016 yac_check_string_len(
"yac_fdef_couple_instance", src_comp_name )
11017 yac_check_string_len(
"yac_fdef_couple_instance", src_grid_name )
11018 yac_check_string_len(
"yac_fdef_couple_instance", src_field_name )
11019 yac_check_string_len(
"yac_fdef_couple_instance", tgt_comp_name )
11020 yac_check_string_len(
"yac_fdef_couple_instance", tgt_grid_name )
11021 yac_check_string_len(
"yac_fdef_couple_instance", tgt_field_name )
11022 yac_check_string_len(
"yac_fdef_couple_instance", coupling_timestep )
11023 if (
present(src_lag) )
then
11024 src_lag_cpy = src_lag
11028 if (
present(tgt_lag) )
then
11029 tgt_lag_cpy = tgt_lag
11033 if (
present(weight_file) )
then
11034 yac_check_string_len(
"yac_fdef_couple_instance", weight_file )
11035 weight_file_cpy = c_null_char
11036 do i = 1, len_trim(weight_file)
11037 weight_file_cpy(i) = weight_file(i:i)
11039 weight_file_ptr = c_loc(weight_file_cpy(1))
11041 weight_file_ptr = c_null_ptr
11043 if (
present(weight_file_on_existing) )
then
11044 weight_file_on_existing_cpy = weight_file_on_existing
11048 if (
present(mapping_side) )
then
11049 mapping_side_cpy = mapping_side
11051 mapping_side_cpy = 1
11053 if (
present(scale_factor) )
then
11054 scale_factor_cpy = scale_factor
11056 scale_factor_cpy = 1.0
11058 if (
present(scale_summand) )
then
11059 scale_summand_cpy = scale_summand
11061 scale_summand_cpy = 0.0
11063 if (
present(src_mask_names) )
then
11064 num_src_mask_names =
size(src_mask_names)
11065 allocate(src_mask_names_ptr(num_src_mask_names))
11067 src_mask_names_cpy = c_null_char
11068 do i = 1, num_src_mask_names
11069 yac_fassert(
allocated(src_mask_names(i)%string),
"ERROR(yac_fdef_couple): source mask name not allocated")
11070 yac_check_string_len(
"yac_fdef_couple_instance", src_mask_names(i)%string )
11071 do j = 1, len_trim(src_mask_names(i)%string)
11072 src_mask_names_cpy(j, i) = src_mask_names(i)%string(j:j)
11074 src_mask_names_ptr(i) = c_loc(src_mask_names_cpy(1,i))
11077 num_src_mask_names = 0
11078 allocate(src_mask_names_ptr(0))
11080 if (
present(tgt_mask_name) )
then
11081 yac_check_string_len(
"yac_fdef_couple_instance", tgt_mask_name )
11082 tgt_mask_name_cpy = c_null_char
11083 do i = 1, len_trim(tgt_mask_name)
11084 tgt_mask_name_cpy(i) = tgt_mask_name(i:i)
11086 tgt_mask_name_ptr = c_loc(tgt_mask_name_cpy(1))
11088 tgt_mask_name_ptr = c_null_ptr
11090 if (
present(yaxt_exchanger_name) )
then
11091 yac_check_string_len(
"yac_fdef_couple_instance", yaxt_exchanger_name )
11092 yaxt_exchanger_name_cpy = c_null_char
11093 do i = 1, len_trim(yaxt_exchanger_name)
11094 yaxt_exchanger_name_cpy(i) = yaxt_exchanger_name(i:i)
11096 yaxt_exchanger_name_ptr = c_loc(yaxt_exchanger_name_cpy(1))
11098 yaxt_exchanger_name_ptr = c_null_ptr
11100 if (
present(collection_indices) )
then
11101 collection_size =
size(collection_indices)
11102 allocate(collection_indices_cpy(collection_size))
11103 collection_indices_cpy = int(collection_indices, c_int)
11105 collection_size = 0
11106 allocate(collection_indices_cpy(0))
11108 if (
present(use_raw_exchange) )
then
11109 use_raw_exchange_cpy =
merge(1_c_int, 0_c_int, use_raw_exchange)
11111 use_raw_exchange_cpy = 0
11114 call yac_cdef_couple_instance__c( instance_id, &
11115 trim(src_comp_name) // c_null_char, &
11116 trim(src_grid_name) // c_null_char, &
11117 trim(src_field_name) // c_null_char, &
11118 trim(tgt_comp_name) // c_null_char, &
11119 trim(tgt_grid_name) // c_null_char, &
11120 trim(tgt_field_name) // c_null_char, &
11121 trim(coupling_timestep) // c_null_char, &
11124 interp_stack_config_id, &
11128 weight_file_on_existing_cpy, &
11129 mapping_side_cpy, &
11130 scale_factor_cpy, &
11131 scale_summand_cpy, &
11132 num_src_mask_names, &
11133 src_mask_names_ptr, &
11134 tgt_mask_name_ptr, &
11135 yaxt_exchanger_name_ptr, &
11137 collection_indices_cpy, &
11138 use_raw_exchange_cpy )
11140 deallocate(weight_file_cpy)
11141 deallocate(tgt_mask_name_cpy)
11142 deallocate(yaxt_exchanger_name_cpy)
11158 function yac_cget_component_name_from_field_id_c ( field_id ) &
11159 result(comp_name) &
11160 bind( c, name=
'yac_cget_component_name_from_field_id' )
11162 use,
intrinsic :: iso_c_binding, only : c_int, c_ptr
11164 integer ( kind=c_int ),
value :: field_id
11165 TYPE(c_ptr) :: comp_name
11167 end function yac_cget_component_name_from_field_id_c
11171 integer,
intent (in) :: field_id
11172 character (len=:),
allocatable :: comp_name
11175 yac_cget_component_name_from_field_id_c( field_id ))
11191 function yac_cget_grid_name_from_field_id_c ( field_id ) &
11192 result(grid_name) &
11193 bind( c, name=
'yac_cget_grid_name_from_field_id' )
11195 use,
intrinsic :: iso_c_binding, only : c_int, c_ptr
11197 integer ( kind=c_int ),
value :: field_id
11198 TYPE(c_ptr) :: grid_name
11200 end function yac_cget_grid_name_from_field_id_c
11204 integer,
intent (in) :: field_id
11205 character (len=:),
allocatable :: grid_name
11208 yac_cget_grid_name_from_field_id_c( field_id ))
11224 function yac_cget_field_name_from_field_id_c ( field_id ) &
11225 result(field_name) &
11226 bind( c, name=
'yac_cget_field_name_from_field_id' )
11228 use,
intrinsic :: iso_c_binding, only : c_int, c_ptr
11230 integer ( kind=c_int ),
value :: field_id
11231 TYPE(c_ptr) :: field_name
11233 end function yac_cget_field_name_from_field_id_c
11237 integer,
intent (in) :: field_id
11238 character (len=:),
allocatable :: field_name
11241 yac_cget_field_name_from_field_id_c( field_id ))
11255 function yac_cget_role_from_field_id_c ( field_id ) &
11256 bind( c, name=
'yac_cget_role_from_field_id' )
11258 use,
intrinsic :: iso_c_binding, only : c_int
11260 integer ( kind=c_int ),
value :: field_id
11261 integer ( kind=c_int ) :: yac_cget_role_from_field_id_c
11263 end function yac_cget_role_from_field_id_c
11267 integer,
intent (in) :: field_id
11271 yac_cget_role_from_field_id_c( field_id )
11282 use,
intrinsic :: iso_c_binding, only: c_null_char
11288 function yac_cget_field_role_c ( comp_name, grid_name, field_name ) &
11289 bind( c, name=
'yac_cget_field_role' )
11291 use,
intrinsic :: iso_c_binding, only : c_int, c_char
11293 character( kind=c_char),
dimension(*),
intent(in) :: comp_name
11294 character( kind=c_char),
dimension(*),
intent(in) :: grid_name
11295 character( kind=c_char),
dimension(*),
intent(in) :: field_name
11296 integer ( kind=c_int ) :: yac_cget_field_role_c
11298 end function yac_cget_field_role_c
11302 character(len=*),
intent(in) :: comp_name
11303 character(len=*),
intent(in) :: grid_name
11304 character(len=*),
intent(in) :: field_name
11307 res = yac_cget_field_role_c( &
11308 trim(comp_name) // c_null_char, &
11309 trim(grid_name) // c_null_char, &
11310 trim(field_name) // c_null_char )
11317 use,
intrinsic :: iso_c_binding, only: c_null_char
11323 function yac_cget_field_role_instance_c ( yac_instance_id, &
11327 bind( c, name=
'yac_cget_field_role_instance' )
11329 use,
intrinsic :: iso_c_binding, only : c_int, c_char
11331 integer( kind=c_int ),
intent(in),
value :: yac_instance_id
11332 character( kind=c_char),
dimension(*),
intent(in) :: comp_name
11333 character( kind=c_char),
dimension(*),
intent(in) :: grid_name
11334 character( kind=c_char),
dimension(*),
intent(in) :: field_name
11335 integer ( kind=c_int ) :: yac_cget_field_role_instance_c
11337 end function yac_cget_field_role_instance_c
11341 integer,
intent(in) :: yac_instance_id
11342 character(len=*),
intent(in) :: comp_name
11343 character(len=*),
intent(in) :: grid_name
11344 character(len=*),
intent(in) :: field_name
11348 yac_cget_field_role_instance_c( &
11350 trim(comp_name) // c_null_char, &
11351 trim(grid_name) // c_null_char, &
11352 trim(field_name) // c_null_char )
11366 use,
intrinsic :: iso_c_binding, only: c_null_char, c_ptr
11373 subroutine yac_cget_field_source_c ( tgt_comp_name, &
11379 bind( c, name=
'yac_cget_field_source' )
11381 use,
intrinsic :: iso_c_binding, only : c_ptr, c_char
11383 character( kind=c_char),
dimension(*),
intent(in) :: tgt_comp_name
11384 character( kind=c_char),
dimension(*),
intent(in) :: tgt_grid_name
11385 character( kind=c_char),
dimension(*),
intent(in) :: tgt_field_name
11386 type(c_ptr) :: src_comp_name
11387 type(c_ptr) :: src_grid_name
11388 type(c_ptr) :: src_field_name
11390 end subroutine yac_cget_field_source_c
11394 character(len=*),
intent(in) :: tgt_comp_name
11395 character(len=*),
intent(in) :: tgt_grid_name
11396 character(len=*),
intent(in) :: tgt_field_name
11397 character(len=:),
allocatable :: src_comp_name
11398 character(len=:),
allocatable :: src_grid_name
11399 character(len=:),
allocatable :: src_field_name
11401 type(c_ptr) :: src_comp_name_c
11402 type(c_ptr) :: src_grid_name_c
11403 type(c_ptr) :: src_field_name_c
11405 CALL yac_cget_field_source_c ( trim(tgt_comp_name) // c_null_char, &
11406 trim(tgt_grid_name) // c_null_char, &
11407 trim(tgt_field_name) // c_null_char, &
11427 use,
intrinsic :: iso_c_binding, only: c_null_char, c_ptr
11434 subroutine yac_cget_field_source_instance_c ( yac_instance_id, &
11441 bind( c, name=
'yac_cget_field_source_instance' )
11443 use,
intrinsic :: iso_c_binding, only : c_ptr, c_char, c_int
11445 integer( kind=c_int ),
intent(in),
value :: yac_instance_id
11446 character( kind=c_char),
dimension(*),
intent(in) :: tgt_comp_name
11447 character( kind=c_char),
dimension(*),
intent(in) :: tgt_grid_name
11448 character( kind=c_char),
dimension(*),
intent(in) :: tgt_field_name
11449 type(c_ptr) :: src_comp_name
11450 type(c_ptr) :: src_grid_name
11451 type(c_ptr) :: src_field_name
11453 end subroutine yac_cget_field_source_instance_c
11457 integer,
intent(in) :: yac_instance_id
11458 character(len=*),
intent(in) :: tgt_comp_name
11459 character(len=*),
intent(in) :: tgt_grid_name
11460 character(len=*),
intent(in) :: tgt_field_name
11461 character(len=:),
allocatable :: src_comp_name
11462 character(len=:),
allocatable :: src_grid_name
11463 character(len=:),
allocatable :: src_field_name
11465 type(c_ptr) :: src_comp_name_c
11466 type(c_ptr) :: src_grid_name_c
11467 type(c_ptr) :: src_field_name_c
11469 CALL yac_cget_field_source_instance_c ( yac_instance_id, &
11470 trim(tgt_comp_name) // c_null_char, &
11471 trim(tgt_grid_name) // c_null_char, &
11472 trim(tgt_field_name) // c_null_char, &
11494 function yac_cget_timestep_from_field_id_c ( field_id ) &
11496 bind( c, name=
'yac_cget_timestep_from_field_id' )
11498 use,
intrinsic :: iso_c_binding, only : c_int, c_ptr
11500 integer ( kind=c_int ),
value :: field_id
11501 type(c_ptr) :: string
11503 end function yac_cget_timestep_from_field_id_c
11507 integer,
intent (in) :: field_id
11508 character (len=:),
allocatable :: string
11519 use,
intrinsic :: iso_c_binding, only: c_ptr, c_null_char, c_associated
11525 function yac_cget_field_timestep_c ( comp_name, grid_name, field_name) &
11526 result( timestep ) &
11527 bind( c, name=
'yac_cget_field_timestep' )
11529 use,
intrinsic :: iso_c_binding, only : c_char, c_ptr
11531 character( kind=c_char),
dimension(*),
intent(in) :: comp_name
11532 character( kind=c_char),
dimension(*),
intent(in) :: grid_name
11533 character( kind=c_char),
dimension(*),
intent(in) :: field_name
11534 type(c_ptr) :: timestep
11535 end function yac_cget_field_timestep_c
11539 character(len=*),
intent(in) :: comp_name
11540 character(len=*),
intent(in) :: grid_name
11541 character(len=*),
intent(in) :: field_name
11542 character(len=:),
allocatable :: timestep
11543 TYPE(c_ptr) :: c_char_ptr
11546 yac_cget_field_timestep_c( &
11547 trim(comp_name) // c_null_char, &
11548 trim(grid_name) // c_null_char, &
11549 trim(field_name) // c_null_char)
11551 yac_fassert(c_associated(c_char_ptr),
"ERROR(yac_fget_field_timestep): no timestep defined for field " // trim(comp_name) //
"::" // trim(grid_name) //
"::" // trim(field_name))
11557 yac_instance_id, comp_name, grid_name, field_name ) &
11562 use,
intrinsic :: iso_c_binding, only: c_ptr, c_null_char, c_associated
11568 function yac_cget_field_timestep_instance_c ( &
11569 yac_instance_id, comp_name, grid_name, field_name ) &
11570 result( timestep ) &
11571 bind( c, name=
'yac_cget_field_timestep_instance' )
11573 use,
intrinsic :: iso_c_binding, only : c_int, c_char, c_ptr
11575 integer( kind=c_int ),
intent(in),
value :: yac_instance_id
11576 character( kind=c_char),
dimension(*),
intent(in) :: comp_name
11577 character( kind=c_char),
dimension(*),
intent(in) :: grid_name
11578 character( kind=c_char),
dimension(*),
intent(in) :: field_name
11579 type(c_ptr) :: timestep
11581 end function yac_cget_field_timestep_instance_c
11585 integer,
intent(in) :: yac_instance_id
11586 character(len=*),
intent(in) :: comp_name
11587 character(len=*),
intent(in) :: grid_name
11588 character(len=*),
intent(in) :: field_name
11589 character(len=:),
allocatable :: timestep
11590 type(c_ptr) :: c_char_ptr
11593 yac_cget_field_timestep_instance_c( &
11595 trim(comp_name) // c_null_char, &
11596 trim(grid_name) // c_null_char, &
11597 trim(field_name) // c_null_char)
11599 yac_fassert(c_associated(c_char_ptr),
"ERROR(yac_fget_field_timestep_instance): no timestep defined for field " // trim(comp_name) //
"::" // trim(grid_name) //
"::" // trim(field_name))
11615 function yac_cget_field_datetime_c( field_id ) &
11617 bind ( c, name="yac_cget_field_datetime" )
11618 use,
intrinsic :: iso_c_binding, only : c_int, c_ptr
11619 integer (kind=c_int ),
intent(in),
value :: field_id
11620 type(c_ptr) :: datetime
11621 end function yac_cget_field_datetime_c
11624 integer,
intent(in) :: field_id
11625 character(len=:),
allocatable :: datetime
11632 comp_name, grid_name, field_name, frac_mask_fallback_value)
11634 use,
intrinsic :: iso_c_binding, only: c_null_char
11640 subroutine yac_cenable_field_frac_mask_c (comp_name, &
11643 frac_mask_fallback_value) &
11644 bind( c, name="yac_cenable_field_frac_mask" )
11645 use,
intrinsic :: iso_c_binding, only: c_char, c_double
11646 character(kind=c_char),
dimension(*),
intent(in) :: comp_name
11647 character(kind=c_char),
dimension(*),
intent(in) :: grid_name
11648 character(kind=c_char),
dimension(*),
intent(in) :: field_name
11649 real(kind=c_double),
value :: frac_mask_fallback_value
11650 end subroutine yac_cenable_field_frac_mask_c
11653 character(len=*),
intent(in) :: comp_name
11654 character(len=*),
intent(in) :: grid_name
11655 character(len=*),
intent(in) :: field_name
11656 double precision,
intent(in) :: frac_mask_fallback_value
11658 CALL yac_cenable_field_frac_mask_c ( &
11659 trim(comp_name) // c_null_char, &
11660 trim(grid_name) // c_null_char, &
11661 trim(field_name) // c_null_char, &
11662 frac_mask_fallback_value)
11666 grid_name, field_name, frac_mask_fallback_value)
11668 use,
intrinsic :: iso_c_binding, only: c_null_char
11674 subroutine yac_cenable_field_frac_mask_instance_c ( &
11675 yac_instance_id, comp_name, grid_name, field_name, &
11676 frac_mask_fallback_value) &
11677 bind( c, name="yac_cenable_field_frac_mask_instance" )
11678 use,
intrinsic :: iso_c_binding, only: c_char, c_double, c_int
11679 integer(kind=c_int),
intent(in),
value :: yac_instance_id
11680 character(kind=c_char),
dimension(*),
intent(in) :: comp_name
11681 character(kind=c_char),
dimension(*),
intent(in) :: grid_name
11682 character(kind=c_char),
dimension(*),
intent(in) :: field_name
11683 real(kind=c_double),
value :: frac_mask_fallback_value
11684 end subroutine yac_cenable_field_frac_mask_instance_c
11687 integer,
intent(in) :: yac_instance_id
11688 character(len=*),
intent(in) :: comp_name
11689 character(len=*),
intent(in) :: grid_name
11690 character(len=*),
intent(in) :: field_name
11691 double precision,
intent(in) :: frac_mask_fallback_value
11693 CALL yac_cenable_field_frac_mask_instance_c ( &
11695 trim(comp_name) // c_null_char, &
11696 trim(grid_name) // c_null_char, &
11697 trim(field_name) // c_null_char, &
11698 frac_mask_fallback_value)
11708 comp_name, grid_name, field_name )
result( res )
11711 use,
intrinsic :: iso_c_binding, only: c_null_char
11717 function yac_cget_field_frac_mask_fallback_value_c ( &
11718 comp_name, grid_name, field_name ) &
11719 bind( c, name=
'yac_cget_field_frac_mask_fallback_value' )
11721 use,
intrinsic :: iso_c_binding, only : c_double, c_char
11723 character( kind=c_char),
dimension(*),
intent(in) :: comp_name
11724 character( kind=c_char),
dimension(*),
intent(in) :: grid_name
11725 character( kind=c_char),
dimension(*),
intent(in) :: field_name
11726 real ( kind=c_double ) :: yac_cget_field_frac_mask_fallback_value_c
11728 end function yac_cget_field_frac_mask_fallback_value_c
11732 character(len=*),
intent(in) :: comp_name
11733 character(len=*),
intent(in) :: grid_name
11734 character(len=*),
intent(in) :: field_name
11735 double precision :: res
11737 res = yac_cget_field_frac_mask_fallback_value_c( &
11738 trim(comp_name) // c_null_char, &
11739 trim(grid_name) // c_null_char, &
11740 trim(field_name) // c_null_char )
11745 yac_instance_id, comp_name, grid_name, field_name )
11748 use,
intrinsic :: iso_c_binding, only: c_null_char
11754 function yac_cget_field_frac_mask_fallback_value_instance_c ( &
11755 yac_instance_id, comp_name, grid_name, field_name ) &
11756 bind( c, name=
'yac_cget_field_frac_mask_fallback_value_instance' )
11758 use,
intrinsic :: iso_c_binding, only : c_int, c_char, c_double
11760 integer( kind=c_int ),
intent(in),
value :: yac_instance_id
11761 character( kind=c_char),
dimension(*),
intent(in) :: comp_name
11762 character( kind=c_char),
dimension(*),
intent(in) :: grid_name
11763 character( kind=c_char),
dimension(*),
intent(in) :: field_name
11764 real ( kind=c_double ) :: yac_cget_field_frac_mask_fallback_value_instance_c
11766 end function yac_cget_field_frac_mask_fallback_value_instance_c
11770 integer,
intent(in) :: yac_instance_id
11771 character(len=*),
intent(in) :: comp_name
11772 character(len=*),
intent(in) :: grid_name
11773 character(len=*),
intent(in) :: field_name
11777 yac_cget_field_frac_mask_fallback_value_instance_c( &
11779 trim(comp_name) // c_null_char, &
11780 trim(grid_name) // c_null_char, &
11781 trim(field_name) // c_null_char )
11788 result(collection_size)
11797 function yac_cget_collection_size_from_field_id_c ( field_id ) &
11798 result(collection_size) &
11799 bind( c, name=
'yac_cget_collection_size_from_field_id' )
11801 use,
intrinsic :: iso_c_binding, only : c_int
11803 integer ( kind=c_int ),
value :: field_id
11804 integer ( kind=c_int ) :: collection_size
11806 end function yac_cget_collection_size_from_field_id_c
11810 integer,
intent (in) :: field_id
11811 integer :: collection_size
11813 collection_size = &
11814 yac_cget_collection_size_from_field_id_c( field_id )
11825 use,
intrinsic :: iso_c_binding, only: c_null_char
11831 function yac_cget_field_collection_size_c ( comp_name, &
11834 bind( c, name=
'yac_cget_field_collection_size' )
11836 use,
intrinsic :: iso_c_binding, only : c_int, c_char
11838 character( kind=c_char),
dimension(*),
intent(in) :: comp_name
11839 character( kind=c_char),
dimension(*),
intent(in) :: grid_name
11840 character( kind=c_char),
dimension(*),
intent(in) :: field_name
11841 integer ( kind=c_int ) :: yac_cget_field_collection_size_c
11843 end function yac_cget_field_collection_size_c
11847 character(len=*),
intent(in) :: comp_name
11848 character(len=*),
intent(in) :: grid_name
11849 character(len=*),
intent(in) :: field_name
11852 res = yac_cget_field_collection_size_c( &
11853 trim(comp_name) // c_null_char, &
11854 trim(grid_name) // c_null_char, &
11855 trim(field_name) // c_null_char )
11857 yac_fassert(res >= 0,
"ERROR(yac_fget_field_collection_size): collection size undefined for field " // trim(comp_name) //
"::" // trim(grid_name) //
"::" // trim(field_name))
11864 use,
intrinsic :: iso_c_binding, only: c_null_char
11870 function yac_cget_field_collection_size_instance_c ( yac_instance_id, &
11874 bind( c, name=
'yac_cget_field_collection_size_instance' )
11876 use,
intrinsic :: iso_c_binding, only : c_int, c_char
11878 integer( kind=c_int ),
intent(in),
value :: yac_instance_id
11879 character( kind=c_char),
dimension(*),
intent(in) :: comp_name
11880 character( kind=c_char),
dimension(*),
intent(in) :: grid_name
11881 character( kind=c_char),
dimension(*),
intent(in) :: field_name
11882 integer ( kind=c_int ) :: yac_cget_field_collection_size_instance_c
11884 end function yac_cget_field_collection_size_instance_c
11888 integer,
intent(in) :: yac_instance_id
11889 character(len=*),
intent(in) :: comp_name
11890 character(len=*),
intent(in) :: grid_name
11891 character(len=*),
intent(in) :: field_name
11895 yac_cget_field_collection_size_instance_c( &
11897 trim(comp_name) // c_null_char, &
11898 trim(grid_name) // c_null_char, &
11899 trim(field_name) // c_null_char )
11901 yac_fassert(
yac_fget_field_collection_size_instance >= 0,
"ERROR(yac_fget_field_collection_size_instance): collection size undefined for field " // trim(comp_name) //
"::" // trim(grid_name) //
"::" // trim(field_name))
11909 use,
intrinsic :: iso_c_binding, only: c_null_char
11915 subroutine yac_cdef_component_metadata_c (comp_name, metadata) &
11916 bind( c, name="yac_cdef_component_metadata" )
11917 use,
intrinsic :: iso_c_binding, only: c_char
11918 character(kind=c_char),
dimension(*),
intent(in) :: comp_name
11919 character(kind=c_char),
dimension(*),
intent(in) :: metadata
11920 end subroutine yac_cdef_component_metadata_c
11923 character(len=*),
intent(in) :: comp_name
11924 character(len=*),
intent(in) :: metadata
11925 CALL yac_cdef_component_metadata_c (trim(comp_name) // c_null_char, &
11926 trim(metadata) // c_null_char)
11932 use,
intrinsic :: iso_c_binding, only: c_null_char
11938 subroutine yac_cdef_component_metadata_instance_c (yac_instance_id, &
11941 bind( c, name="yac_cdef_component_metadata_instance" )
11942 use,
intrinsic :: iso_c_binding, only: c_char, c_int
11943 integer(kind=c_int),
intent(in),
value :: yac_instance_id
11944 character(kind=c_char),
dimension(*),
intent(in) :: comp_name
11945 character(kind=c_char),
dimension(*),
intent(in) :: metadata
11946 end subroutine yac_cdef_component_metadata_instance_c
11949 integer,
intent(in) :: yac_instance_id
11950 character(len=*),
intent(in) :: comp_name
11951 character(len=*),
intent(in) :: metadata
11952 CALL yac_cdef_component_metadata_instance_c ( &
11954 trim(comp_name) // c_null_char, &
11955 trim(metadata) // c_null_char)
11960 use,
intrinsic :: iso_c_binding, only: c_null_char
11966 subroutine yac_cdef_grid_metadata_c (grid_name, metadata) &
11967 bind( c, name="yac_cdef_grid_metadata" )
11968 use,
intrinsic :: iso_c_binding, only: c_char
11969 character(kind=c_char),
dimension(*),
intent(in) :: grid_name
11970 character(kind=c_char),
dimension(*),
intent(in) :: metadata
11971 end subroutine yac_cdef_grid_metadata_c
11974 character(len=*),
intent(in) :: grid_name
11975 character(len=*),
intent(in) :: metadata
11976 CALL yac_cdef_grid_metadata_c ( trim(grid_name) // c_null_char, &
11977 trim(metadata) // c_null_char)
11982 use,
intrinsic :: iso_c_binding, only: c_null_char
11988 subroutine yac_cdef_grid_metadata_instance_c (yac_instance_id, &
11991 bind( c, name="yac_cdef_grid_metadata_instance" )
11992 use,
intrinsic :: iso_c_binding, only: c_char, c_int
11993 integer(kind=c_int),
intent(in),
value :: yac_instance_id
11994 character(kind=c_char),
dimension(*),
intent(in) :: grid_name
11995 character(kind=c_char),
dimension(*),
intent(in) :: metadata
11996 end subroutine yac_cdef_grid_metadata_instance_c
11999 integer,
intent(in) :: yac_instance_id
12000 character(len=*),
intent(in) :: grid_name
12001 character(len=*),
intent(in) :: metadata
12002 CALL yac_cdef_grid_metadata_instance_c ( &
12004 trim(grid_name) // c_null_char, &
12005 trim(metadata) // c_null_char)
12010 use,
intrinsic :: iso_c_binding, only: c_null_char
12016 subroutine yac_cdef_field_metadata_c (comp_name, &
12020 bind( c, name="yac_cdef_field_metadata" )
12021 use,
intrinsic :: iso_c_binding, only: c_char
12022 character(kind=c_char),
dimension(*),
intent(in) :: comp_name
12023 character(kind=c_char),
dimension(*),
intent(in) :: grid_name
12024 character(kind=c_char),
dimension(*),
intent(in) :: field_name
12025 character(kind=c_char),
dimension(*),
intent(in) :: metadata
12026 end subroutine yac_cdef_field_metadata_c
12029 character(len=*),
intent(in) :: comp_name
12030 character(len=*),
intent(in) :: grid_name
12031 character(len=*),
intent(in) :: field_name
12032 character(len=*),
intent(in) :: metadata
12033 CALL yac_cdef_field_metadata_c ( &
12034 trim(comp_name) // c_null_char, &
12035 trim(grid_name) // c_null_char, &
12036 trim(field_name) // c_null_char, &
12037 trim(metadata) // c_null_char)
12041 grid_name, field_name, metadata)
12043 use,
intrinsic :: iso_c_binding, only: c_null_char
12049 subroutine yac_cdef_field_metadata_instance_c (yac_instance_id, &
12054 bind( c, name="yac_cdef_field_metadata_instance" )
12055 use,
intrinsic :: iso_c_binding, only: c_char, c_int
12056 integer(kind=c_int),
intent(in),
value :: yac_instance_id
12057 character(kind=c_char),
dimension(*),
intent(in) :: comp_name
12058 character(kind=c_char),
dimension(*),
intent(in) :: grid_name
12059 character(kind=c_char),
dimension(*),
intent(in) :: field_name
12060 character(kind=c_char),
dimension(*),
intent(in) :: metadata
12061 end subroutine yac_cdef_field_metadata_instance_c
12064 integer,
intent(in) :: yac_instance_id
12065 character(len=*),
intent(in) :: comp_name
12066 character(len=*),
intent(in) :: grid_name
12067 character(len=*),
intent(in) :: field_name
12068 character(len=*),
intent(in) :: metadata
12069 CALL yac_cdef_field_metadata_instance_c ( &
12071 trim(comp_name) // c_null_char, &
12072 trim(grid_name) // c_null_char, &
12073 trim(field_name) // c_null_char, &
12074 trim(metadata) // c_null_char)
12078 use,
intrinsic :: iso_c_binding, only: c_null_char, c_associated
12084 function yac_cget_component_metadata_c (comp_name) &
12086 bind( c, name="yac_cget_component_metadata")
12087 use,
intrinsic :: iso_c_binding, only: c_char, c_ptr
12088 character(kind=c_char),
dimension(*),
intent(in) :: comp_name
12089 type(c_ptr) :: metadata
12090 end function yac_cget_component_metadata_c
12092 character(len=*),
intent(in) :: comp_name
12093 logical :: has_metadata
12096 yac_cget_component_metadata_c(trim(comp_name) // c_null_char))
12100 result( has_metadata )
12101 use,
intrinsic :: iso_c_binding, only: c_null_char, c_associated
12107 function yac_cget_component_metadata_instance_c(yac_instance_id, &
12110 bind( c, name="yac_cget_component_metadata_instance")
12111 use,
intrinsic :: iso_c_binding, only: c_char, c_ptr, c_int
12112 integer(kind=c_int),
intent(in),
value :: yac_instance_id
12113 character(kind=c_char),
dimension(*),
intent(in) :: comp_name
12114 type(c_ptr) :: metadata
12115 end function yac_cget_component_metadata_instance_c
12117 integer,
intent(in) :: yac_instance_id
12118 character(len=*),
intent(in) :: comp_name
12119 logical :: has_metadata
12122 yac_cget_component_metadata_instance_c( &
12123 yac_instance_id, trim(comp_name) // c_null_char))
12127 use,
intrinsic :: iso_c_binding, only: c_null_char, c_associated
12133 function yac_cget_grid_metadata_c(grid_name)
result(metadata) &
12134 bind( c, name="yac_cget_grid_metadata")
12135 use,
intrinsic :: iso_c_binding, only: c_char, c_ptr
12136 character(kind=c_char),
dimension(*),
intent(in) :: grid_name
12137 type(c_ptr) :: metadata
12138 end function yac_cget_grid_metadata_c
12140 character(len=*),
intent(in) :: grid_name
12141 logical :: has_metadata
12143 c_associated(yac_cget_grid_metadata_c(trim(grid_name) // c_null_char))
12147 result( has_metadata )
12148 use,
intrinsic :: iso_c_binding, only: c_null_char, c_associated
12154 function yac_cget_grid_metadata_instance_c(yac_instance_id, grid_name) &
12156 bind( c, name="yac_cget_grid_metadata_instance")
12157 use,
intrinsic :: iso_c_binding, only: c_char, c_ptr, c_int
12158 integer(kind=c_int),
intent(in),
value :: yac_instance_id
12159 character(kind=c_char),
dimension(*),
intent(in) :: grid_name
12160 type(c_ptr) :: metadata
12161 end function yac_cget_grid_metadata_instance_c
12163 integer,
intent(in) :: yac_instance_id
12164 character(len=*),
intent(in) :: grid_name
12165 logical :: has_metadata
12168 yac_cget_grid_metadata_instance_c( &
12169 yac_instance_id, trim(grid_name) // c_null_char))
12173 result( has_metadata )
12174 use,
intrinsic :: iso_c_binding, only: c_null_char, c_associated
12180 function yac_cget_field_metadata_c(comp_name, grid_name, field_name) &
12182 bind( c, name="yac_cget_field_metadata")
12183 use,
intrinsic :: iso_c_binding, only: c_char, c_ptr
12184 character(kind=c_char),
dimension(*),
intent(in) :: comp_name
12185 character(kind=c_char),
dimension(*),
intent(in) :: grid_name
12186 character(kind=c_char),
dimension(*),
intent(in) :: field_name
12187 type(c_ptr) :: metadata
12188 end function yac_cget_field_metadata_c
12190 character(len=*),
intent(in) :: comp_name
12191 character(len=*),
intent(in) :: grid_name
12192 character(len=*),
intent(in) :: field_name
12193 logical :: has_metadata
12196 yac_cget_field_metadata_c( &
12197 trim(comp_name) // c_null_char, &
12198 trim(grid_name) // c_null_char, &
12199 trim(field_name) // c_null_char))
12203 yac_instance_id, comp_name, grid_name, field_name) &
12204 result( has_metadata )
12205 use,
intrinsic :: iso_c_binding, only: c_null_char, c_associated
12211 function yac_cget_field_metadata_instance_c(yac_instance_id, &
12216 bind( c, name="yac_cget_field_metadata_instance")
12217 use,
intrinsic :: iso_c_binding, only: c_char, c_ptr, c_int
12218 integer(kind=c_int),
intent(in),
value :: yac_instance_id
12219 character(kind=c_char),
dimension(*),
intent(in) :: comp_name
12220 character(kind=c_char),
dimension(*),
intent(in) :: grid_name
12221 character(kind=c_char),
dimension(*),
intent(in) :: field_name
12222 type(c_ptr) :: metadata
12223 end function yac_cget_field_metadata_instance_c
12225 integer,
intent(in) :: yac_instance_id
12226 character(len=*),
intent(in) :: comp_name
12227 character(len=*),
intent(in) :: grid_name
12228 character(len=*),
intent(in) :: field_name
12229 logical :: has_metadata
12232 yac_cget_field_metadata_instance_c( &
12234 trim(comp_name) // c_null_char, &
12235 trim(grid_name) // c_null_char, &
12236 trim(field_name) // c_null_char))
12240 use,
intrinsic :: iso_c_binding, only: c_null_char, c_ptr, c_associated
12246 function yac_cget_component_metadata_c(comp_name)
result(metadata) &
12247 bind( c, name="yac_cget_component_metadata")
12248 use,
intrinsic :: iso_c_binding, only: c_char, c_ptr
12249 character(kind=c_char),
dimension(*),
intent(in) :: comp_name
12250 type(c_ptr) :: metadata
12251 end function yac_cget_component_metadata_c
12253 character(len=*),
intent(in) :: comp_name
12254 character(len=:),
allocatable :: metadata
12255 type(c_ptr) :: c_metadata
12256 c_metadata = yac_cget_component_metadata_c(trim(comp_name) // c_null_char)
12257 yac_fassert(c_associated(c_metadata),
"ERROR(yac_fget_component_metadata): no metadata defined for component " // trim(comp_name) //
yac_component_has_metadata_hint )
12264 use,
intrinsic :: iso_c_binding, only: c_null_char, c_ptr, c_associated
12270 function yac_cget_component_metadata_instance_c(yac_instance_id, &
12273 bind( c, name="yac_cget_component_metadata_instance")
12274 use,
intrinsic :: iso_c_binding, only: c_char, c_ptr, c_int
12275 integer(kind=c_int),
intent(in),
value :: yac_instance_id
12276 character(kind=c_char),
dimension(*),
intent(in) :: comp_name
12277 type(c_ptr) :: metadata
12278 end function yac_cget_component_metadata_instance_c
12280 integer,
intent(in) :: yac_instance_id
12281 character(len=*),
intent(in) :: comp_name
12282 character(len=:),
allocatable :: metadata
12283 type(c_ptr) :: c_metadata
12285 yac_cget_component_metadata_instance_c( &
12286 yac_instance_id, trim(comp_name) // c_null_char)
12287 yac_fassert(c_associated(c_metadata),
"ERROR(yac_fget_component_metadata_instance): no metadata defined for component " // trim(comp_name) //
yac_component_has_metadata_hint )
12292 use,
intrinsic :: iso_c_binding, only: c_null_char, c_ptr, c_associated
12298 function yac_cget_grid_metadata_c(grid_name)
result(metadata) &
12299 bind( c, name="yac_cget_grid_metadata")
12300 use,
intrinsic :: iso_c_binding, only: c_char, c_ptr
12301 character(kind=c_char),
dimension(*),
intent(in) :: grid_name
12302 type(c_ptr) :: metadata
12303 end function yac_cget_grid_metadata_c
12305 character(len=*),
intent(in) :: grid_name
12306 character(len=:),
allocatable :: metadata
12307 type(c_ptr) :: c_metadata
12308 c_metadata = yac_cget_grid_metadata_c(trim(grid_name) // c_null_char)
12309 yac_fassert(c_associated(c_metadata),
"ERROR(yac_fget_grid_metadata): no metadata defined for grid " // trim(grid_name) //
yac_grid_has_metadata_hint )
12316 use,
intrinsic :: iso_c_binding, only: c_null_char, c_ptr, c_associated
12322 function yac_cget_grid_metadata_instance_c(yac_instance_id, &
12325 bind( c, name="yac_cget_grid_metadata_instance")
12326 use,
intrinsic :: iso_c_binding, only: c_char, c_ptr, c_int
12327 integer(kind=c_int),
intent(in),
value :: yac_instance_id
12328 character(kind=c_char),
dimension(*),
intent(in) :: grid_name
12329 type(c_ptr) :: metadata
12330 end function yac_cget_grid_metadata_instance_c
12332 integer,
intent(in) :: yac_instance_id
12333 character(len=*),
intent(in) :: grid_name
12334 character(len=:),
allocatable :: metadata
12335 type(c_ptr) :: c_metadata
12337 yac_cget_grid_metadata_instance_c( &
12338 yac_instance_id, trim(grid_name) // c_null_char)
12339 yac_fassert(c_associated(c_metadata),
"ERROR(yac_fget_grid_metadata_instance): no metadata defined for grid " // trim(grid_name) //
yac_grid_has_metadata_hint )
12345 use,
intrinsic :: iso_c_binding, only: c_null_char, c_ptr, c_associated
12351 function yac_cget_field_metadata_c(comp_name, grid_name, field_name) &
12353 bind( c, name="yac_cget_field_metadata")
12354 use,
intrinsic :: iso_c_binding, only: c_char, c_ptr
12355 character(kind=c_char),
dimension(*),
intent(in) :: comp_name
12356 character(kind=c_char),
dimension(*),
intent(in) :: grid_name
12357 character(kind=c_char),
dimension(*),
intent(in) :: field_name
12358 type(c_ptr) :: metadata
12359 end function yac_cget_field_metadata_c
12361 character(len=*),
intent(in) :: comp_name
12362 character(len=*),
intent(in) :: grid_name
12363 character(len=*),
intent(in) :: field_name
12364 character(len=:),
allocatable :: metadata
12365 type(c_ptr) :: c_metadata
12368 yac_cget_field_metadata_c( &
12369 trim(comp_name) // c_null_char, &
12370 trim(grid_name) // c_null_char, &
12371 trim(field_name) // c_null_char)
12372 yac_fassert(c_associated(c_metadata),
"ERROR(yac_fget_field_metadata): no metadata defined for field " // trim(comp_name) //
"::" // trim(grid_name) //
"::" // trim(field_name) //
yac_field_has_metadata_hint )
12378 grid_name, field_name)
result( metadata )
12380 use,
intrinsic :: iso_c_binding, only: c_null_char, c_ptr, c_associated
12386 function yac_cget_field_metadata_instance_c(yac_instance_id, &
12391 bind( c, name="yac_cget_field_metadata_instance")
12392 use,
intrinsic :: iso_c_binding, only: c_char, c_ptr, c_int
12393 integer(kind=c_int),
intent(in),
value :: yac_instance_id
12394 character(kind=c_char),
dimension(*),
intent(in) :: comp_name
12395 character(kind=c_char),
dimension(*),
intent(in) :: grid_name
12396 character(kind=c_char),
dimension(*),
intent(in) :: field_name
12397 type(c_ptr) :: metadata
12398 end function yac_cget_field_metadata_instance_c
12400 integer,
intent(in) :: yac_instance_id
12401 character(len=*),
intent(in) :: comp_name
12402 character(len=*),
intent(in) :: grid_name
12403 character(len=*),
intent(in) :: field_name
12404 character(len=:),
allocatable :: metadata
12405 type(c_ptr) :: c_metadata
12408 yac_cget_field_metadata_instance_c( &
12410 trim(comp_name) // c_null_char, &
12411 trim(grid_name) // c_null_char, &
12412 trim(field_name) // c_null_char)
12413 yac_fassert(c_associated(c_metadata),
"ERROR(yac_fget_field_metadata_instance): no metadata defined for field " // trim(comp_name) //
"::" // trim(grid_name) //
"::" // trim(field_name) //
yac_field_has_metadata_hint )
12422 use,
intrinsic :: iso_c_binding, only : c_ptr
12429 function yac_cget_start_datetime_c() &
12430 bind( c, name=
'yac_cget_start_datetime' )
12432 use,
intrinsic :: iso_c_binding, only : c_ptr
12433 type(c_ptr) :: yac_cget_start_datetime_c
12435 end function yac_cget_start_datetime_c
12437 subroutine free_c ( ptr ) bind ( c, NAME='free' )
12439 use,
intrinsic :: iso_c_binding, only : c_ptr
12441 type ( c_ptr ),
intent(in),
value :: ptr
12443 end subroutine free_c
12446 type (c_ptr) :: c_string_ptr
12447 character (len=:),
allocatable :: start_datetime_string
12449 c_string_ptr = yac_cget_start_datetime_c()
12451 CALL free_c(c_string_ptr)
12456 result(start_datetime_string)
12458 use,
intrinsic :: iso_c_binding, only : c_ptr
12465 function yac_cget_start_datetime_instance_c(yac_instance_id) &
12466 bind( c, name=
'yac_cget_start_datetime_instance' )
12468 use,
intrinsic :: iso_c_binding, only : c_ptr, c_int
12469 integer ( kind=c_int ),
value :: yac_instance_id
12470 type(c_ptr) :: yac_cget_start_datetime_instance_c
12472 end function yac_cget_start_datetime_instance_c
12474 subroutine free_c ( ptr ) bind ( c, NAME='free' )
12476 use,
intrinsic :: iso_c_binding, only : c_ptr
12478 type ( c_ptr ),
intent(in),
value :: ptr
12480 end subroutine free_c
12483 integer,
intent(in) :: yac_instance_id
12485 type (c_ptr) :: c_string_ptr
12486 character (len=:),
allocatable :: start_datetime_string
12488 c_string_ptr = yac_cget_start_datetime_instance_c(yac_instance_id)
12490 CALL free_c(c_string_ptr)
12498 use,
intrinsic :: iso_c_binding, only : c_ptr
12505 function yac_cget_end_datetime_c() &
12506 bind( c, name=
'yac_cget_end_datetime' )
12508 use,
intrinsic :: iso_c_binding, only : c_ptr
12509 type(c_ptr) :: yac_cget_end_datetime_c
12511 end function yac_cget_end_datetime_c
12513 subroutine free_c ( ptr ) bind ( c, NAME='free' )
12515 use,
intrinsic :: iso_c_binding, only : c_ptr
12517 type ( c_ptr ),
intent(in),
value :: ptr
12519 end subroutine free_c
12522 type (c_ptr) :: c_string_ptr
12523 character (len=:),
allocatable :: end_datetime_string
12525 c_string_ptr = yac_cget_end_datetime_c()
12527 CALL free_c(c_string_ptr)
12532 result(end_datetime_string)
12534 use,
intrinsic :: iso_c_binding, only : c_ptr
12541 function yac_cget_end_datetime_instance_c(yac_instance_id) &
12542 bind( c, name=
'yac_cget_end_datetime_instance' )
12544 use,
intrinsic :: iso_c_binding, only : c_ptr, c_int
12545 integer ( kind=c_int ),
value :: yac_instance_id
12546 type(c_ptr) :: yac_cget_end_datetime_instance_c
12548 end function yac_cget_end_datetime_instance_c
12550 subroutine free_c ( ptr ) bind ( c, NAME='free' )
12552 use,
intrinsic :: iso_c_binding, only : c_ptr
12554 type ( c_ptr ),
intent(in),
value :: ptr
12556 end subroutine free_c
12559 integer,
intent(in) :: yac_instance_id
12561 type (c_ptr) :: c_string_ptr
12562 character (len=:),
allocatable :: end_datetime_string
12564 c_string_ptr = yac_cget_end_datetime_instance_c(yac_instance_id)
12566 CALL free_c(c_string_ptr)
12580 subroutine yac_cget_interp_stack_config_c ( interp_stack_config_id ) &
12581 bind( c, name=
'yac_cget_interp_stack_config' )
12582 use,
intrinsic :: iso_c_binding, only : c_int
12584 integer ( kind=c_int ) :: interp_stack_config_id
12586 end subroutine yac_cget_interp_stack_config_c
12590 integer,
intent(out) :: interp_stack_config_id
12592 call yac_cget_interp_stack_config_c ( interp_stack_config_id )
12604 subroutine yac_cfree_interp_stack_config_c ( interp_stack_config_id ) &
12605 bind( c, name=
'yac_cfree_interp_stack_config' )
12606 use,
intrinsic :: iso_c_binding, only : c_int
12608 integer ( kind=c_int ),
value :: interp_stack_config_id
12610 end subroutine yac_cfree_interp_stack_config_c
12614 integer,
intent(in) :: interp_stack_config_id
12616 call yac_cfree_interp_stack_config_c ( interp_stack_config_id )
12621 reduction_type, partial_coverage)
12629 subroutine yac_cadd_interp_stack_config_average_c ( &
12630 interp_stack_config_id, reduction_type, partial_coverage ) &
12631 bind( c, name=
'yac_cadd_interp_stack_config_average' )
12632 use,
intrinsic :: iso_c_binding, only : c_int
12634 integer ( kind=c_int ),
value :: interp_stack_config_id
12635 integer ( kind=c_int ),
value :: reduction_type
12636 integer ( kind=c_int ),
value :: partial_coverage
12638 end subroutine yac_cadd_interp_stack_config_average_c
12642 integer,
intent(in) :: interp_stack_config_id
12643 integer,
intent(in) :: reduction_type
12644 integer,
intent(in) :: partial_coverage
12646 call yac_cadd_interp_stack_config_average_c ( &
12647 interp_stack_config_id, reduction_type, partial_coverage )
12652 weight_type, partial_coverage)
12660 subroutine yac_cadd_interp_stack_config_ncc_c ( &
12661 interp_stack_config_id, weight_type, partial_coverage ) &
12662 bind( c, name=
'yac_cadd_interp_stack_config_ncc' )
12663 use,
intrinsic :: iso_c_binding, only : c_int
12665 integer ( kind=c_int ),
value :: interp_stack_config_id
12666 integer ( kind=c_int ),
value :: weight_type
12667 integer ( kind=c_int ),
value :: partial_coverage
12669 end subroutine yac_cadd_interp_stack_config_ncc_c
12673 integer,
intent(in) :: interp_stack_config_id
12674 integer,
intent(in) :: weight_type
12675 integer,
intent(in) :: partial_coverage
12677 call yac_cadd_interp_stack_config_ncc_c ( &
12678 interp_stack_config_id, weight_type, partial_coverage )
12683 type, n, max_search_distance, scale)
12686 use,
intrinsic :: iso_c_binding, only : c_size_t
12692 subroutine yac_cadd_interp_stack_config_nnn_c( &
12693 interp_stack_config_id, type, n, max_search_distance, scale) &
12694 bind( c, name=
'yac_cadd_interp_stack_config_nnn' )
12695 use,
intrinsic :: iso_c_binding, only : c_int, c_double, c_size_t
12697 integer ( kind=c_int ),
value :: interp_stack_config_id
12698 integer ( kind=c_int ),
value :: type
12699 integer ( kind=c_size_t ),
value :: n
12700 real ( kind=c_double ),
value :: max_search_distance
12701 real ( kind=c_double ),
value :: scale
12703 end subroutine yac_cadd_interp_stack_config_nnn_c
12707 integer,
intent(in) :: interp_stack_config_id
12708 integer,
intent(in) :: type
12709 integer,
intent(in) :: n
12710 double precision,
intent(in) :: max_search_distance
12711 double precision,
intent(in) :: scale
12713 call yac_cadd_interp_stack_config_nnn_c( &
12714 interp_stack_config_id,
type, int(n, c_size_t), &
12715 max_search_distance, scale)
12720 weight_type, search_distance_type, search_distance, scale)
12728 subroutine yac_cadd_interp_stack_config_dnn_c( &
12729 interp_stack_config_id, weight_type, search_distance_type, &
12730 search_distance, scale) &
12731 bind( c, name=
'yac_cadd_interp_stack_config_dnn' )
12733 use,
intrinsic :: iso_c_binding, only : c_int, c_double
12735 integer ( kind=c_int ),
value :: interp_stack_config_id
12736 integer ( kind=c_int ),
value :: weight_type
12737 integer ( kind=c_int ),
value :: search_distance_type
12738 real ( kind=c_double ),
value :: search_distance
12739 real ( kind=c_double ),
value :: scale
12741 end subroutine yac_cadd_interp_stack_config_dnn_c
12745 integer,
intent(in) :: interp_stack_config_id
12746 integer,
intent(in) :: weight_type
12747 integer,
intent(in) :: search_distance_type
12748 double precision,
intent(in) :: search_distance
12749 double precision,
intent(in) :: scale
12751 call yac_cadd_interp_stack_config_dnn_c( &
12752 interp_stack_config_id, weight_type, search_distance_type, &
12753 search_distance, scale)
12758 n, max_search_distance, scale)
12761 use,
intrinsic :: iso_c_binding, only : c_size_t
12770 subroutine yac_cadd_interp_stack_config_rbf_c( &
12771 interp_stack_config_id, n, max_search_distance, scale) &
12772 bind( c, name=
'yac_cadd_interp_stack_config_rbf' )
12773 use,
intrinsic :: iso_c_binding, only : c_int, c_double, c_size_t
12775 integer ( kind=c_int ),
value :: interp_stack_config_id
12776 integer ( kind=c_size_t ),
value :: n
12777 real ( kind=c_double ),
value :: max_search_distance
12778 real ( kind=c_double ),
value :: scale
12780 end subroutine yac_cadd_interp_stack_config_rbf_c
12784 integer,
intent(in) :: interp_stack_config_id
12785 integer,
optional,
intent(in) :: n
12786 double precision,
optional,
intent(in) :: max_search_distance
12787 double precision,
optional,
intent(in) :: scale
12790 double precision :: max_search_distance_
12791 double precision :: scale_
12793 if (
present(n))
then
12798 if (
present(max_search_distance))
then
12799 max_search_distance_ = max_search_distance
12803 if (
present(scale))
then
12809 call yac_cadd_interp_stack_config_rbf_c( &
12810 interp_stack_config_id, int(n_, c_size_t), &
12811 max_search_distance_, scale_)
12816 interp_stack_config_id, order, enforced_conserv, &
12817 partial_coverage, normalization)
12825 subroutine yac_cadd_interp_stack_config_conservative_c( &
12826 interp_stack_config_id, order, enforced_conserv, &
12827 partial_coverage, normalization) &
12828 bind( c, name=
'yac_cadd_interp_stack_config_conservative' )
12829 use,
intrinsic :: iso_c_binding, only : c_int
12831 integer ( kind=c_int ),
value :: interp_stack_config_id
12832 integer ( kind=c_int ),
value :: order
12833 integer ( kind=c_int ),
value :: enforced_conserv
12834 integer ( kind=c_int ),
value :: partial_coverage
12835 integer ( kind=c_int ),
value :: normalization
12837 end subroutine yac_cadd_interp_stack_config_conservative_c
12841 integer,
intent(in) :: interp_stack_config_id
12842 integer,
intent(in) :: order
12843 integer,
intent(in) :: enforced_conserv
12844 integer,
intent(in) :: partial_coverage
12845 integer,
intent(in) :: normalization
12847 call yac_cadd_interp_stack_config_conservative_c( &
12848 interp_stack_config_id, order, enforced_conserv, &
12849 partial_coverage, normalization)
12854 center_lon, center_lat, inc_angle, overwrite_config_id, &
12855 spread_distance, max_search_distance, weight_type)
12863 subroutine yac_cget_spmap_overwrite_config_c(overwrite_config_id) &
12864 bind( c, name=
'yac_cget_spmap_overwrite_config' )
12865 use,
intrinsic :: iso_c_binding, only : c_int
12867 integer ( kind=c_int ) :: overwrite_config_id
12869 end subroutine yac_cget_spmap_overwrite_config_c
12871 subroutine yac_cset_spmap_overwrite_config_src_point_selection_c( &
12872 overwrite_config_id, center_lon, center_lat, inc_angle) &
12873 bind( c, name=
'yac_cset_spmap_overwrite_config_src_point_selection_bnd_circle' )
12874 use,
intrinsic :: iso_c_binding, only : c_int, c_double
12876 integer ( kind=c_int ),
value :: overwrite_config_id
12877 real ( kind=c_double ),
value :: center_lon
12878 real ( kind=c_double ),
value :: center_lat
12879 real ( kind=c_double ),
value :: inc_angle
12881 end subroutine yac_cset_spmap_overwrite_config_src_point_selection_c
12883 subroutine yac_cset_spmap_overwrite_config_spread_distance_c( &
12884 overwrite_config_id, spread_distance) &
12885 bind( c, name=
'yac_cset_spmap_overwrite_config_spread_distance' )
12886 use,
intrinsic :: iso_c_binding, only : c_int, c_double
12888 integer ( kind=c_int ),
value :: overwrite_config_id
12889 real ( kind=c_double ),
value :: spread_distance
12891 end subroutine yac_cset_spmap_overwrite_config_spread_distance_c
12893 subroutine yac_cset_spmap_overwrite_config_max_search_distance_c( &
12894 overwrite_config_id, max_search_distance) &
12895 bind( c, name=
'yac_cset_spmap_overwrite_config_max_search_distance' )
12896 use,
intrinsic :: iso_c_binding, only : c_int, c_double
12898 integer ( kind=c_int ),
value :: overwrite_config_id
12899 real ( kind=c_double ),
value :: max_search_distance
12901 end subroutine yac_cset_spmap_overwrite_config_max_search_distance_c
12903 subroutine yac_cset_spmap_overwrite_config_weight_type_c( &
12904 overwrite_config_id, weight_type) &
12905 bind( c, name=
'yac_cset_spmap_overwrite_config_weight_type' )
12906 use,
intrinsic :: iso_c_binding, only : c_int
12908 integer ( kind=c_int ),
value :: overwrite_config_id
12909 integer ( kind=c_int ),
value :: weight_type
12911 end subroutine yac_cset_spmap_overwrite_config_weight_type_c
12915 double precision,
intent(in) :: center_lon
12916 double precision,
intent(in) :: center_lat
12917 double precision,
intent(in) :: inc_angle
12918 integer,
intent(out) :: overwrite_config_id
12919 double precision,
intent(in),
optional :: spread_distance
12920 double precision,
intent(in),
optional :: max_search_distance
12921 integer,
intent(in),
optional :: weight_type
12923 integer ( kind = c_int ) :: c_overwrite_config_id
12925 call yac_cget_spmap_overwrite_config_c(c_overwrite_config_id)
12927 call yac_cset_spmap_overwrite_config_src_point_selection_c( &
12928 c_overwrite_config_id, center_lon, center_lat, inc_angle)
12929 if (
present(spread_distance))
then
12930 call yac_cset_spmap_overwrite_config_spread_distance_c( &
12931 c_overwrite_config_id, spread_distance)
12933 if (
present(max_search_distance))
then
12934 call yac_cset_spmap_overwrite_config_max_search_distance_c( &
12935 c_overwrite_config_id, max_search_distance)
12937 if (
present(weight_type))
then
12938 call yac_cset_spmap_overwrite_config_weight_type_c( &
12939 c_overwrite_config_id, weight_type)
12942 overwrite_config_id = int(c_overwrite_config_id)
12947 overwrite_config_id )
12955 subroutine yac_cfree_spmap_overwrite_config_c(overwrite_config_id) &
12956 bind( c, name=
'yac_cfree_spmap_overwrite_config' )
12957 use,
intrinsic :: iso_c_binding, only : c_int
12959 integer ( kind=c_int ),
value :: overwrite_config_id
12961 end subroutine yac_cfree_spmap_overwrite_config_c
12965 integer,
intent(in) :: overwrite_config_id
12967 CALL yac_cfree_spmap_overwrite_config_c(overwrite_config_id)
12972 spread_distance, max_search_distance, weight_type, scale_type, &
12973 src_sphere_radius, src_filename, src_varname, src_min_global_id, &
12974 tgt_sphere_radius, tgt_filename, tgt_varname, tgt_min_global_id, &
12975 overwrite_config_ids)
12977 use,
intrinsic :: iso_c_binding, only : c_ptr, c_null_ptr, c_loc
12984 subroutine yac_cadd_interp_stack_config_spmap_c( &
12985 interp_stack_config_id, spread_distance, &
12986 max_search_distance, weight_type, scale_type, &
12987 src_sphere_radius, src_filename, src_varname, src_min_global_id, &
12988 tgt_sphere_radius, tgt_filename, tgt_varname, tgt_min_global_id, &
12989 overwrite_config_ids, overwrite_config_count) &
12990 bind( c, name=
'yac_cadd_interp_stack_config_spmap_f2c' )
12991 use,
intrinsic :: iso_c_binding, only : c_int, c_double, c_char, c_ptr
12993 integer ( kind=c_int ),
value :: interp_stack_config_id
12994 real ( kind=c_double ),
value :: spread_distance
12995 real ( kind=c_double ),
value :: max_search_distance
12996 integer ( kind=c_int ),
value :: weight_type
12997 integer ( kind=c_int ),
value :: scale_type
12998 real ( kind=c_double ),
value :: src_sphere_radius
12999 character (kind=c_char),
dimension(*) :: src_filename
13000 character (kind=c_char),
dimension(*) :: src_varname
13001 integer ( kind=c_int ),
value :: src_min_global_id
13002 real ( kind=c_double ),
value :: tgt_sphere_radius
13003 character (kind=c_char),
dimension(*) :: tgt_filename
13004 character (kind=c_char),
dimension(*) :: tgt_varname
13005 integer ( kind=c_int ),
value :: tgt_min_global_id
13006 type ( c_ptr ),
value :: overwrite_config_ids
13007 integer ( kind=c_int ),
value :: overwrite_config_count
13009 end subroutine yac_cadd_interp_stack_config_spmap_c
13013 integer,
intent(in) :: interp_stack_config_id
13014 double precision,
intent(in) :: spread_distance
13015 double precision,
intent(in) :: max_search_distance
13016 integer,
intent(in) :: weight_type
13017 integer,
intent(in) :: scale_type
13018 double precision,
intent(in) :: src_sphere_radius
13019 character (len=*),
intent(in) :: src_filename
13020 character (len=*),
intent(in) :: src_varname
13021 integer,
intent(in) :: src_min_global_id
13022 double precision,
intent(in) :: tgt_sphere_radius
13023 character (len=*),
intent(in) :: tgt_filename
13024 character (len=*),
intent(in) :: tgt_varname
13025 integer,
intent(in) :: tgt_min_global_id
13026 integer,
optional,
intent(in) :: overwrite_config_ids(:)
13028 integer (kind=c_int),
allocatable,
target :: c_overwrite_config_ids(:)
13029 type ( c_ptr ) :: ptr_overwrite_config_ids
13030 integer :: overwrite_config_count
13032 if (
present(overwrite_config_ids))
then
13033 overwrite_config_count =
SIZE(overwrite_config_ids)
13034 allocate(c_overwrite_config_ids(overwrite_config_count))
13035 c_overwrite_config_ids = int(overwrite_config_ids, c_int)
13037 overwrite_config_count = 0;
13040 if (overwrite_config_count > 0)
then
13041 ptr_overwrite_config_ids = c_loc(c_overwrite_config_ids(1))
13043 ptr_overwrite_config_ids = c_null_ptr
13046 call yac_cadd_interp_stack_config_spmap_c( &
13047 interp_stack_config_id, spread_distance, &
13048 max_search_distance, weight_type, scale_type, &
13049 src_sphere_radius, src_filename, src_varname, src_min_global_id, &
13050 tgt_sphere_radius, tgt_filename, tgt_varname, tgt_min_global_id, &
13051 ptr_overwrite_config_ids, overwrite_config_count)
13063 subroutine yac_cadd_interp_stack_config_hcsbb_c( &
13064 interp_stack_config_id) &
13065 bind( c, name=
'yac_cadd_interp_stack_config_hcsbb' )
13066 use,
intrinsic :: iso_c_binding, only : c_int
13068 integer ( kind=c_int ),
value :: interp_stack_config_id
13070 end subroutine yac_cadd_interp_stack_config_hcsbb_c
13074 integer,
intent(in) :: interp_stack_config_id
13076 call yac_cadd_interp_stack_config_hcsbb_c(interp_stack_config_id)
13081 interp_stack_config_id, filename, on_missing_file, on_success)
13084 use,
intrinsic :: iso_c_binding, only : c_null_char
13090 subroutine yac_cadd_interp_stack_config_user_file_2_c( &
13091 interp_stack_config_id, filename, on_missing_file, on_success) &
13092 bind( c, name=
'yac_cadd_interp_stack_config_user_file_2' )
13093 use,
intrinsic :: iso_c_binding, only : c_int, c_char
13095 integer ( kind=c_int ),
value :: interp_stack_config_id
13096 character (kind=c_char),
dimension(*) :: filename
13097 integer ( kind=c_int ),
value :: on_missing_file
13098 integer ( kind=c_int ),
value :: on_success
13100 end subroutine yac_cadd_interp_stack_config_user_file_2_c
13104 integer,
intent(in) :: interp_stack_config_id
13105 character (len=*),
intent(in) :: filename
13106 integer,
optional,
intent(in) :: on_missing_file
13107 integer,
optional,
intent(in) :: on_success
13109 integer :: on_missing_file_cpy, on_success_cpy
13111 if (
present(on_missing_file))
then
13112 on_missing_file_cpy = on_missing_file
13117 if (
present(on_success))
then
13118 on_success_cpy = on_success
13123 call yac_cadd_interp_stack_config_user_file_2_c( &
13124 interp_stack_config_id, &
13125 trim(filename) // c_null_char, &
13126 on_missing_file_cpy, on_success_cpy)
13138 subroutine yac_cadd_interp_stack_config_fixed_c( &
13139 interp_stack_config_id, val) &
13140 bind( c, name=
'yac_cadd_interp_stack_config_fixed' )
13141 use,
intrinsic :: iso_c_binding, only : c_int, c_double
13143 integer ( kind=c_int ),
value :: interp_stack_config_id
13144 real ( kind=c_double ),
value :: val
13146 end subroutine yac_cadd_interp_stack_config_fixed_c
13150 integer,
intent(in) :: interp_stack_config_id
13151 double precision,
intent(in) :: val
13153 call yac_cadd_interp_stack_config_fixed_c( &
13154 interp_stack_config_id, val)
13167 subroutine yac_cadd_interp_stack_config_creep_c( &
13168 interp_stack_config_id, creep_distance) &
13169 bind( c, name=
'yac_cadd_interp_stack_config_creep' )
13170 use,
intrinsic :: iso_c_binding, only : c_int
13172 integer ( kind=c_int ),
value :: interp_stack_config_id
13173 integer ( kind=c_int ),
value :: creep_distance
13175 end subroutine yac_cadd_interp_stack_config_creep_c
13179 integer,
intent(in) :: interp_stack_config_id
13180 integer,
intent(in) :: creep_distance
13182 call yac_cadd_interp_stack_config_creep_c( &
13183 interp_stack_config_id, creep_distance)
13188 interp_stack_config, interp_stack_config_id )
13190 use,
intrinsic :: iso_c_binding, only : c_null_char
13197 subroutine yac_cget_interp_stack_config_from_string_yaml_c ( &
13198 interp_stack_config, interp_stack_config_id ) &
13199 bind( c, name=
'yac_cget_interp_stack_config_from_string_yaml' )
13200 use,
intrinsic :: iso_c_binding, only : c_char, c_int
13202 character (kind=c_char),
dimension(*) :: interp_stack_config
13203 integer ( kind=c_int ) :: interp_stack_config_id
13205 end subroutine yac_cget_interp_stack_config_from_string_yaml_c
13209 character ( len=* ),
intent(in) :: interp_stack_config
13210 integer,
intent(out) :: interp_stack_config_id
13212 call yac_cget_interp_stack_config_from_string_yaml_c ( &
13213 trim(interp_stack_config) // c_null_char, &
13214 interp_stack_config_id )
13219 interp_stack_config, interp_stack_config_id )
13221 use,
intrinsic :: iso_c_binding, only : c_null_char
13228 subroutine yac_cget_interp_stack_config_from_string_json_c ( &
13229 interp_stack_config, interp_stack_config_id ) &
13230 bind( c, name=
'yac_cget_interp_stack_config_from_string_json' )
13231 use,
intrinsic :: iso_c_binding, only : c_char, c_int
13233 character (kind=c_char),
dimension(*) :: interp_stack_config
13234 integer ( kind=c_int ) :: interp_stack_config_id
13236 end subroutine yac_cget_interp_stack_config_from_string_json_c
13240 character ( len=* ),
intent(in) :: interp_stack_config
13241 integer,
intent(out) :: interp_stack_config_id
13243 call yac_cget_interp_stack_config_from_string_json_c ( &
13244 trim(interp_stack_config) // c_null_char, &
13245 interp_stack_config_id )
Fortran interface for checking the dimensions of a field.
Fortran interface for checking the source field buffer sizes.
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 checking if default instance is defined.
Fortran interface for invoking the end of the definition phase.
Fortran interface for the coupler termination.
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 mpi_handshake group name.
Get interpolation information for raw data exchange.
Fortran interface for getting interpolation information for raw data exchange.
Fortran interface for getting the start- and end datetime.
Fortran interface for getting the YAC version.
Fortran interface for the coupler initialisation.
Fortran2C interface for YAC collective routines.
Fortran interface for the component definition.
Fortran interface for the reading of configuration files.
Fortran interface for the writing of configuration files.
Fortran interface for enabling/disabling of coordinate checks.
Fortran interface for enabling/disabling of coordinates mismatch fatality.
Fortran interface for the setting of grid global ids.
Fortran interface for the writing of grid files.
Fortran interface for the writing of grid files for all grids.
Fortran interface for invoking the end of the definition phase.
Fortran interface for testing fields for active communicaitons.
static void merge(char *base_a, size_t num_a, int a_ascending, char *base_b, size_t num_b, int b_ascending, size_t size, int(*compar)(const void *, const void *), char *target)
character(len= *), parameter, public yac_grid_has_metadata_hint
character(len= *), parameter, public yac_field_has_metadata_hint
character(len=:) function, allocatable, public yac_internal_cptr2char(cptr)
Convertes a C-pointer to a C-string to a Fortran string.
type(c_ptr) function, public yac_dble2cptr(routine, ptr_name, dble_ptr)
character(len= *), parameter, public yac_component_has_metadata_hint
subroutine, public send_field_to_dble_single(field_id, nbr_hor_points, collection_size, send_field, send_field_dble, send_frac_mask, send_frac_mask_dble)
subroutine, public recv_field_from_dble_ptr(field_id, collection_size, recv_field_dble, recv_field)
subroutine, public recv_field_from_dble(field_id, nbr_hor_points, collection_size, recv_field_dble, recv_field)
subroutine, public recv_field_to_dble_ptr(field_id, collection_size, recv_field, recv_field_dble)
subroutine, public send_field_to_dble_ptr(field_id, nbr_pointsets, collection_size, send_field, send_field_dble, send_frac_mask, send_frac_mask_dble)
subroutine, public recv_field_to_dble(field_id, nbr_hor_points, collection_size, recv_field, recv_field_dble)
subroutine, public send_field_to_dble(field_id, nbr_hor_points, nbr_pointsets, collection_size, send_field, send_field_dble, send_frac_mask, send_frac_mask_dble)
integer(kind=c_size_t), parameter yac_interp_rbf_n_default_f
real(kind=c_double), parameter yac_interp_rbf_scale_default_f
real(kind=c_double), parameter yac_interp_rbf_max_search_distance_default_f
integer, parameter yac_max_charlen
Constants.
integer yac_yaml_emitter_default_f
Flag paramters for emitting of coupling configurations.
@ yac_file_missing_error
abort on missing file
@ yac_wgt_on_existing_overwrite
integer, parameter yac_int_kind
@ yac_file_success_cont
continue weight computation with following interpolation methods
integer, parameter yac_mpi_fint_kind
@ yac_exchange_type_target
@ yac_exchange_type_source
integer yac_yaml_emitter_json_f
subroutine yac_fcompute_grid_cell_areas_real(grid_id, nbr_cells, cell_areas)
subroutine yac_fset_grids_output_file_instance(yac_instance_id, filename)
subroutine yac_fadd_interp_stack_config_nnn(interp_stack_config_id, type, n, max_search_distance, scale)
subroutine yac_fupdate(field_id)
subroutine yac_fset_grid_output_file_instance(yac_instance_id, gridname, filename)
subroutine yac_fexchange_raw_frac_dble(send_field_id, recv_field_id, send_nbr_hor_points, send_nbr_pointsets, src_field_buffer_size, collection_size, send_field, send_frac_mask, src_field_buffer, src_frac_mask_buffer, send_info, recv_info, ierror)
subroutine yac_fexchange_raw_frac_real_ptr(send_field_id, recv_field_id, send_nbr_pointsets, collection_size, send_field, send_frac_mask, src_field_buffer, src_frac_mask_buffer, send_info, recv_info, ierror)
subroutine yac_fmpi_handshake(comm, group_names, group_comms)
subroutine yac_fadd_interp_stack_config_rbf(interp_stack_config_id, n, max_search_distance, scale)
subroutine yac_fget_comp_comm(comp_id, comp_comm)
subroutine yac_fset_grid_output_file(gridname, filename)
subroutine yac_fset_config_output_file(filename, fileformat, sync_location, include_definitions)
subroutine yac_fdef_points_curve2d_named_dble(grid_id, nbr_points, location, x_points, y_points, name, point_id)
subroutine yac_fsync_def_instance(yac_instance_id)
subroutine yac_fcompute_grid_cell_areas_dble(grid_id, nbr_cells, cell_areas)
integer function yac_fget_field_role(comp_name, grid_name, field_name)
subroutine yac_fset_config_output_file_instance(yac_instance_id, filename, fileformat, sync_location, include_definitions)
subroutine yac_fadd_interp_stack_config_average(interp_stack_config_id, reduction_type, partial_coverage)
character(len=:) function, allocatable yac_fget_field_metadata_instance(yac_instance_id, comp_name, grid_name, field_name)
subroutine yac_fdef_comp(comp_name, comp_id)
character(len=:) function, allocatable yac_fget_start_datetime()
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)
subroutine yac_fget_interp_stack_config(interp_stack_config_id)
subroutine yac_fadd_interp_stack_config_user_file(interp_stack_config_id, filename, on_missing_file, on_success)
integer function yac_fget_field_role_instance(yac_instance_id, comp_name, grid_name, field_name)
subroutine yac_fset_coordinates_mismatch_is_fatal(is_fatal)
subroutine yac_fexchange_raw_single_pointset_real(send_field_id, recv_field_id, send_nbr_hor_points, src_field_buffer_size, collection_size, send_field, src_field_buffer, send_info, recv_info, ierror)
logical function yac_fgrid_has_metadata_instance(yac_instance_id, grid_name)
subroutine yac_fget_raw_frac_real(field_id, src_field_buffer_size, collection_size, src_field_buffer, src_frac_mask_buffer, info, ierror)
subroutine yac_fenddef_and_emit_config_instance(yac_instance_id, emit_flags, config)
subroutine yac_ffree_spmap_overwrite_config(overwrite_config_id)
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_fget_raw_dble(field_id, src_field_buffer_size, collection_size, src_field_buffer, info, ierror)
subroutine yac_fdef_comp_dummy_instance(yac_instance_id)
subroutine yac_fexchange_raw_real(send_field_id, recv_field_id, send_nbr_hor_points, send_nbr_pointsets, src_field_buffer_size, collection_size, send_field, src_field_buffer, send_info, recv_info, ierror)
character(len=:) function, allocatable yac_fget_component_name_from_field_id(field_id)
subroutine yac_finit_dummy()
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)
character(len=:) function, allocatable yac_fget_field_metadata(comp_name, grid_name, field_name)
subroutine yac_fdef_points_reg2d_rot_named_real(grid_id, nbr_points, location, x_points_real, y_points_real, x_north_pole_real, y_north_pole_real, name, point_id)
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_fdef_field(field_name, component_id, point_ids, num_pointsets, collection_size, timestep, time_unit, field_id)
subroutine yac_fread_config_yaml(yaml_filename)
subroutine yac_fget_interp_stack_config_from_string_yaml(interp_stack_config, interp_stack_config_id)
integer function yac_fget_default_instance_id()
subroutine yac_fput_single_pointset_dble(field_id, nbr_hor_points, collection_size, send_field, info, ierror)
subroutine yac_fset_coordinates_check_instance(yac_instance_id, apply_check)
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)
integer function yac_fget_mask_id(grid_id, location, mask_name)
subroutine yac_fget_raw_real(field_id, src_field_buffer_size, collection_size, src_field_buffer, info, ierror)
type(yac_string) function, dimension(:), allocatable yac_fget_comp_names()
subroutine yac_fget_raw_dble_ptr(field_id, num_src_fields, collection_size, src_field_buffer, info, ierror)
subroutine yac_fcleanup()
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, weight_file_on_existing, mapping_side, scale_factor, scale_summand, src_mask_names, tgt_mask_name, yaxt_exchanger_name, collection_indices, use_raw_exchange)
subroutine yac_fdef_couple(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, weight_file_on_existing, mapping_side, scale_factor, scale_summand, src_mask_names, tgt_mask_name, yaxt_exchanger_name, collection_indices, use_raw_exchange)
character(len=:) function, allocatable yac_fget_grid_name_from_field_id(field_id)
subroutine yac_fexchange_raw_dble_ptr(send_field_id, recv_field_id, send_nbr_pointsets, collection_size, send_field, src_field_buffer, send_info, recv_info, ierror)
subroutine yac_fdef_grid_metadata(grid_name, metadata)
integer function yac_fget_field_collection_size(comp_name, grid_name, field_name)
integer function yac_fget_comp_id_instance(yac_id, comp_name)
logical function yac_fdefault_instance_defined()
subroutine yac_fexchange_raw_frac_real(send_field_id, recv_field_id, send_nbr_hor_points, send_nbr_pointsets, src_field_buffer_size, collection_size, send_field, send_frac_mask, src_field_buffer, src_frac_mask_buffer, send_info, recv_info, ierror)
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_fadd_interp_stack_config_ncc(interp_stack_config_id, weight_type, partial_coverage)
subroutine yac_fdef_datetime_instance(yac_instance_id, start_datetime, end_datetime)
subroutine yac_fget_raw_frac_real_ptr(field_id, num_src_fields, collection_size, src_field_buffer, src_frac_mask_buffer, info, ierror)
subroutine yac_fput_frac_dble(field_id, nbr_hor_points, nbr_pointsets, collection_size, send_field, send_frac_mask, info, ierror)
subroutine yac_fcheck_src_field_buffer_size(field_id, collection_size, src_field_buffer_size)
subroutine yac_fget_field_source(tgt_comp_name, tgt_grid_name, tgt_field_name, src_comp_name, src_grid_name, src_field_name)
logical function yac_fcomponent_has_metadata(comp_name)
subroutine yac_fput_frac_single_pointset_dble(field_id, nbr_hor_points, collection_size, send_field, send_frac_mask, info, ierror)
subroutine yac_finit_emitter_flags()
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_fdef_field_mask(field_name, component_id, point_ids, mask_ids, num_pointsets, collection_size, timestep, time_unit, field_id)
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_fdef_points_curve2d_named_real(grid_id, nbr_points, location, x_points_real, y_points_real, name, point_id)
subroutine yac_fdef_grid_reg2d_rot_real(grid_name, nbr_vertices, cyclic, x_vertices_real, y_vertices_real, x_north_pole_real, y_north_pole_real, grid_id)
Definition of a 2d regular rotated grid.
subroutine yac_fdef_points_unstruct_named_real(grid_id, nbr_points, location, x_points_real, y_points_real, name, point_id)
subroutine yac_fcleanup_instance(yac_instance_id)
subroutine yac_fget_dble(field_id, nbr_hor_points, collection_size, recv_field, info, ierror)
subroutine yac_get_raw_dble_ptr(field_id, num_src_fields, collection_size, src_field_buffer, info, ierror, use_async)
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_points_unstruct_named_dble(grid_id, nbr_points, location, x_points, y_points, name, point_id)
subroutine yac_fadd_interp_stack_config_conservative(interp_stack_config_id, order, enforced_conserv, partial_coverage, normalization)
subroutine yac_fexchange_raw_frac_single_pointset_dble(send_field_id, recv_field_id, send_nbr_hor_points, src_field_buffer_size, collection_size, send_field, send_frac_mask, src_field_buffer, src_frac_mask_buffer, send_info, recv_info, ierror)
subroutine yac_fget_action(field_id, action)
subroutine yac_fset_grids_output_file(filename)
subroutine yac_fexchange_raw_frac_dble_ptr(send_field_id, recv_field_id, send_nbr_pointsets, collection_size, send_field, send_frac_mask, src_field_buffer, src_frac_mask_buffer, send_info, recv_info, ierror)
logical function yac_fget_field_is_defined(comp_name, grid_name, field_name)
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_fdef_comps(comp_names, num_comps, comp_ids)
subroutine yac_fget_raw_frac_async_dble_ptr(field_id, num_src_fields, collection_size, src_field_buffer, src_frac_mask_buffer, info, ierror)
subroutine yac_fset_coordinates_mismatch_is_fatal_instance(yac_instance_id, is_fatal)
subroutine yac_finit_comm_dummy(world_comm)
type(yac_string) function, dimension(:), allocatable yac_fget_grid_names_instance(yac_instance_id)
subroutine yac_fdef_points_reg2d_named_real(grid_id, nbr_points, location, x_points_real, y_points_real, name, point_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(comm)
subroutine yac_finit_comm_instance(comm, yac_instance_id)
logical function yac_fcomponent_has_metadata_instance(yac_instance_id, comp_name)
subroutine yac_ffinalize()
subroutine yac_fadd_interp_stack_config_spmap(interp_stack_config_id, spread_distance, max_search_distance, weight_type, scale_type, src_sphere_radius, src_filename, src_varname, src_min_global_id, tgt_sphere_radius, tgt_filename, tgt_varname, tgt_min_global_id, overwrite_config_ids)
subroutine yac_fset_lmask(is_valid, points_id)
subroutine yac_fdef_grid_unstruct_edge_real(grid_name, nbr_vertices, nbr_cells, nbr_edges, nbr_edges_per_cell_in, x_vertices_real, y_vertices_real, cell_to_edge_in, edge_to_vertex_in, grid_id, use_ll_edges)
Definition of a uniform unstructured grid (all cells have the number of vertices) with explicit edge ...
subroutine yac_fdef_imask_named(grid_id, nbr_points, location, is_valid, name, mask_id)
subroutine yac_fenable_field_frac_mask(comp_name, grid_name, field_name, frac_mask_fallback_value)
subroutine yac_fget_calendar(calendar)
subroutine yac_fset_coordinates_check(apply_check)
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_ffree_interp_stack_config(interp_stack_config_id)
subroutine yac_fget_spmap_overwrite_config_bnd_circle(center_lon, center_lat, inc_angle, overwrite_config_id, spread_distance, max_search_distance, weight_type)
character(len=:) function, allocatable yac_fget_version()
type(yac_string) function, dimension(:), allocatable yac_fget_field_names(comp_name, grid_name)
subroutine yac_fadd_interp_stack_config_fixed(interp_stack_config_id, val)
subroutine yac_fdef_comp_instance(yac_instance_id, comp_name, comp_id)
subroutine yac_fget_raw_async_dble_ptr(field_id, num_src_fields, collection_size, src_field_buffer, info, ierror)
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_fcheck_src_field_buffer_sizes(field_id, num_src_fields, collection_size, src_field_buffer_sizes)
character(len=:) function, allocatable yac_fget_component_metadata(comp_name)
integer function yac_fget_points_size(point_id)
subroutine yac_fdef_points_reg2d_rot_dble(grid_id, nbr_points, location, x_points, y_points, x_north_pole, y_north_pole, point_id)
subroutine yac_fset_global_index_yac_int(global_index, location, grid_id)
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)
integer function yac_fget_grid_size(location, grid_id)
subroutine yac_fget_raw_interp_weights_data(field_id, frac_mask_fallback_value, scaling_factor, scaling_summand, num_fixed_values, fixed_values, num_tgt_per_fixed_value, tgt_idx_fixed, num_wgt_tgt, wgt_tgt_idx, num_src_per_tgt, weights, src_field_idx, src_idx, num_src_fields, src_field_buffer_size)
subroutine yac_fexchange_raw_single_pointset_dble(send_field_id, recv_field_id, send_nbr_hor_points, src_field_buffer_size, collection_size, send_field, src_field_buffer, send_info, recv_info, ierror)
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_fdef_comp_dummy()
subroutine yac_fdef_calendar(calendar)
subroutine yac_fdef_component_metadata(comp_name, metadata)
subroutine yac_ffinalize_instance(yac_instance_id)
subroutine yac_fadd_interp_stack_config_hcsbb(interp_stack_config_id)
integer function yac_fget_points_id(grid_id, location, point_name)
integer function yac_fget_collection_size_from_field_id(field_id)
subroutine yac_fset_core_imask(is_core, location, grid_id)
subroutine yac_fdef_grid_reg2d_rot_dble(grid_name, nbr_vertices, cyclic, x_vertices, y_vertices, x_north_pole, y_north_pole, grid_id)
Definition of a 2d regular rotated grid.
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_fdef_points_reg2d_rot_real(grid_id, nbr_points, location, x_points_real, y_points_real, x_north_pole_real, y_north_pole_real, point_id)
logical function yac_fgrid_has_metadata(grid_name)
subroutine yac_fdef_datetime(start_datetime, end_datetime)
subroutine yac_fget_raw_frac_dble_ptr(field_id, num_src_fields, collection_size, src_field_buffer, src_frac_mask_buffer, info, ierror)
character(len=:) function, allocatable yac_fget_field_timestep(comp_name, grid_name, field_name)
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_fget_raw_real_ptr(field_id, num_src_fields, collection_size, src_field_buffer, info, ierror)
subroutine yac_fexchange_raw_dble(send_field_id, recv_field_id, send_nbr_hor_points, send_nbr_pointsets, src_field_buffer_size, collection_size, send_field, src_field_buffer, send_info, recv_info, ierror)
subroutine yac_fread_config_yaml_instance(yac_instance_id, yaml_filename)
subroutine yac_get_raw_frac_dble_ptr(field_id, num_src_fields, collection_size, src_field_buffer, src_frac_mask_buffer, info, ierror, use_async)
subroutine yac_fput_frac_dble_ptr(field_id, nbr_pointsets, collection_size, send_field, send_frac_mask, info, ierror)
integer function yac_fget_comp_id(comp_name)
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_fdef_points_reg2d_named_dble(grid_id, nbr_points, location, x_points, y_points, name, point_id)
subroutine yac_fput_frac_real(field_id, nbr_hor_points, nbr_pointsets, collection_size, send_field, send_frac_mask, info, ierror)
type(yac_string) function, dimension(:), allocatable yac_fget_comp_grid_names(comp_name)
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)
subroutine yac_fsync_def_comps(comp_names, num_comp_names)
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_fdef_grid_unstruct_edge_dble(grid_name, nbr_vertices, nbr_cells, nbr_edges, nbr_edges_per_cell_in, x_vertices, y_vertices, cell_to_edge_in, edge_to_vertex_in, grid_id, use_ll_edges)
Definition of a uniform unstructured grid (all cells have the number of vertices) with explicit edge ...
subroutine yac_fget_field_source_instance(yac_instance_id, tgt_comp_name, tgt_grid_name, tgt_field_name, src_comp_name, src_grid_name, src_field_name)
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)
character(len=:) function, allocatable yac_fget_mpi_handshake_group_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_fsync_def()
subroutine yac_fget_comps_comm(comp_names, num_comps, comps_comm)
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)
logical function yac_fget_field_is_defined_instance(yac_id, comp_name, grid_name, field_name)
subroutine yac_fread_config_json(json_filename)
subroutine yac_fdef_grid_nonuniform_edge_dble(grid_name, nbr_vertices, nbr_cells, nbr_edges, nbr_connections, nbr_edges_per_cell, x_vertices, y_vertices, cell_to_edge_in, edge_to_vertex_in, grid_id, use_ll_edges)
Definition of a non-uniform unstructured grid (cells have varying numbers of vertices) with explicit ...
integer function yac_fget_field_id(comp_name, grid_name, field_name)
subroutine yac_fadd_interp_stack_config_creep(interp_stack_config_id, creep_distance)
subroutine yac_fsync_def_comps_instance(yac_instance_id, comp_names, num_comp_names)
character(len=:) function, allocatable yac_fget_grid_metadata(grid_name)
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_field_datetime(field_id)
subroutine yac_fdef_grid_cloud_real(grid_name, nbr_points, x_points_real, y_points_real, grid_id)
Definition of a grid consisting of a cloud of points.
character(len=:) function, allocatable yac_fget_component_metadata_instance(yac_instance_id, comp_name)
subroutine yac_fcheck_field_dimensions(field_id, collection_size, num_interp_fields, interp_field_sizes)
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)
integer function yac_fget_grid_id(grid_name)
subroutine yac_fpredef_comp(comp_name, comp_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_fdef_points_reg2d_rot_named_dble(grid_id, nbr_points, location, x_points, y_points, x_north_pole, y_north_pole, name, point_id)
subroutine yac_fdef_grid_nonuniform_edge_real(grid_name, nbr_vertices, nbr_cells, nbr_edges, nbr_connections, nbr_edges_per_cell, x_vertices_real, y_vertices_real, cell_to_edge, edge_to_vertex, grid_id, use_ll_edges)
Definition of a non-uniform unstructured grid (cells have varying numbers of vertices) with explicit ...
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)
logical function yac_ffield_has_metadata(comp_name, grid_name, field_name)
subroutine yac_fdef_field_metadata_instance(yac_instance_id, comp_name, grid_name, field_name, metadata)
subroutine yac_fexchange_raw_frac_single_pointset_real(send_field_id, recv_field_id, send_nbr_hor_points, src_field_buffer_size, collection_size, send_field, send_frac_mask, src_field_buffer, src_frac_mask_buffer, send_info, recv_info, ierror)
subroutine yac_fread_config_json_instance(yac_instance_id, json_filename)
subroutine yac_fset_global_index(global_index, location, grid_id)
subroutine yac_fexchange_raw_real_ptr(send_field_id, recv_field_id, send_nbr_pointsets, collection_size, send_field, src_field_buffer, send_info, recv_info, ierror)
subroutine yac_fdef_field_metadata(comp_name, grid_name, field_name, metadata)
subroutine yac_fget_interp_stack_config_from_string_json(interp_stack_config, interp_stack_config_id)
subroutine yac_fwait(field_id)
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_grid_cloud_dble(grid_name, nbr_points, x_points, y_points, grid_id)
Definition of a grid consisting of a cloud of points.
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)
type(yac_string) function, dimension(:), allocatable yac_fget_grid_names()
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.
double precision function yac_fget_field_frac_mask_fallback_value(comp_name, grid_name, field_name)
subroutine yac_fget_raw_frac_dble(field_id, src_field_buffer_size, collection_size, src_field_buffer, src_frac_mask_buffer, info, ierror)
subroutine yac_fadd_interp_stack_config_dnn(interp_stack_config_id, weight_type, search_distance_type, search_distance, scale)
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)