11#define YAC_FASSERT(exp, msg) IF (.NOT. exp) call yac_abort_message(msg, __FILE__, __LINE__)
12#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")
19 use,
intrinsic :: iso_c_binding, only: c_ptr, c_char, &
24 TYPE(c_ptr),
intent(in) :: cptr
25 CHARACTER(len=:),
allocatable :: string
26 CHARACTER(kind=c_char),
dimension(:),
pointer :: chars
27 INTEGER(kind=c_size_t) :: i, strlen
30 function strlen_c(str_ptr)
bind ( C, name = "strlen" ) result(len)
31 use,
intrinsic :: iso_c_binding
32 type(c_ptr),
value :: str_ptr
33 integer(kind=c_size_t) :: len
37 strlen = strlen_c(cptr)
38 CALL c_f_pointer(cptr, chars, [ strlen ])
39 ALLOCATE(
character(len=strlen) :: string)
41 string(i:i) = chars(i)
48 use iso_c_binding,
only: c_ptr, c_loc, c_null_ptr
50 character(len=*),
intent(in) :: routine
51 character(len=*),
intent(in) :: ptr_name
55 if (
SIZE(dble_ptr%p) > 0)
then
56 yac_fassert(is_contiguous(dble_ptr%p),
"ERROR(" // trim(routine) //
"): " // trim(ptr_name) //
" is not contiguous")
87 use iso_c_binding,
only: c_ptr, c_f_pointer, c_int, c_associated
93 function yac_get_field_put_mask_c2f_c ( field_id ) &
94 bind( c, name=
'yac_get_field_put_mask_c2f' )
96 use,
intrinsic :: iso_c_binding, only : c_int, c_ptr
98 integer ( kind=c_int ),
value :: field_id
99 type(c_ptr) :: yac_get_field_put_mask_c2f_c
101 end function yac_get_field_put_mask_c2f_c
105 integer,
intent (in) :: field_id
106 integer,
intent (in) :: nbr_hor_points
107 integer,
intent (in) :: nbr_pointsets
108 integer,
intent (in) :: collection_size
109 real,
intent (in) :: send_field(nbr_hor_points, &
112 double precision,
intent (out) :: send_field_dble(nbr_hor_points, &
115 real,
optional,
intent (in) :: send_frac_mask(nbr_hor_points, &
118 double precision,
optional,
intent (out) :: send_frac_mask_dble(nbr_hor_points, &
123 type(c_ptr) :: put_mask_
124 type(c_ptr),
pointer :: put_mask(:)
125 integer(kind=c_int),
pointer :: pointset_put_mask(:)
129 put_mask_ = yac_get_field_put_mask_c2f_c(field_id)
130 if (c_associated(put_mask_))
then
131 call c_f_pointer(put_mask_, put_mask, shape=[nbr_pointsets])
132 do i = 1, collection_size
133 do j = 1, nbr_pointsets
135 put_mask(j), pointset_put_mask, shape=[nbr_hor_points])
136 do k = 1, nbr_hor_points
137 if (pointset_put_mask(k) /= 0)
then
138 send_field_dble(k, j, i) = dble(send_field(k, j, i))
140 send_field_dble(k, j, i) = 0d0
145 if (
present(send_frac_mask))
then
146 do i = 1, collection_size
147 do j = 1, nbr_pointsets
149 put_mask(j), pointset_put_mask, shape=[nbr_hor_points])
150 do k = 1, nbr_hor_points
151 if (pointset_put_mask(k) /= 0)
then
152 send_frac_mask_dble(k, j, i) = dble(send_frac_mask(k, j, i))
154 send_frac_mask_dble(k, j, i) = 0d0
161 send_field_dble = dble(send_field)
162 if (
present(send_frac_mask))
then
163 send_frac_mask_dble = dble(send_frac_mask)
167 send_field_dble = 0d0
168 if (
present(send_frac_mask))
then
169 send_frac_mask_dble = 0d0
183 use iso_c_binding,
only: c_ptr, c_f_pointer, c_int, c_associated
189 function yac_get_field_put_mask_c2f_c ( field_id ) &
190 bind( c, name=
'yac_get_field_put_mask_c2f' )
192 use,
intrinsic :: iso_c_binding, only : c_int, c_ptr
194 integer ( kind=c_int ),
value :: field_id
195 type(c_ptr) :: yac_get_field_put_mask_c2f_c
197 end function yac_get_field_put_mask_c2f_c
201 integer,
intent (in) :: field_id
202 integer,
intent (in) :: nbr_hor_points
203 integer,
intent (in) :: collection_size
204 real,
intent (in) :: send_field(nbr_hor_points, &
206 double precision,
intent (out) :: send_field_dble(nbr_hor_points, &
208 real,
optional,
intent (in) :: send_frac_mask(nbr_hor_points, &
210 double precision,
optional,
intent (out) :: send_frac_mask_dble(nbr_hor_points, &
214 type(c_ptr) :: put_mask_
215 type(c_ptr),
pointer :: put_mask(:)
216 integer(kind=c_int),
pointer :: pointset_put_mask(:)
220 put_mask_ = yac_get_field_put_mask_c2f_c(field_id)
221 if (c_associated(put_mask_))
then
222 call c_f_pointer(put_mask_, put_mask, shape=[1])
223 do i = 1, collection_size
225 put_mask(1), pointset_put_mask, shape=[nbr_hor_points])
226 do j = 1, nbr_hor_points
227 if (pointset_put_mask(j) /= 0)
then
228 send_field_dble(j, i) = dble(send_field(j, i))
230 send_field_dble(j, i) = 0d0
234 if (
present(send_frac_mask))
then
235 do i = 1, collection_size
237 put_mask(1), pointset_put_mask, shape=[nbr_hor_points])
238 do j = 1, nbr_hor_points
239 if (pointset_put_mask(j) /= 0)
then
240 send_frac_mask_dble(j, i) = dble(send_frac_mask(j, i))
242 send_frac_mask_dble(j, i) = 0d0
248 send_field_dble = dble(send_field)
249 if (
present(send_frac_mask))
then
250 send_frac_mask_dble = dble(send_frac_mask)
254 send_field_dble = 0d0
255 if (
present(send_frac_mask))
then
256 send_frac_mask_dble = 0d0
270 use iso_c_binding,
only: c_ptr, c_f_pointer, c_int, c_associated
276 function yac_get_field_put_mask_c2f_c ( field_id ) &
277 bind( c, name=
'yac_get_field_put_mask_c2f' )
279 use,
intrinsic :: iso_c_binding, only : c_int, c_ptr
281 integer ( kind=c_int ),
value :: field_id
282 type(c_ptr) :: yac_get_field_put_mask_c2f_c
284 end function yac_get_field_put_mask_c2f_c
288 integer,
intent (in) :: field_id
289 integer,
intent (in) :: nbr_pointsets
290 integer,
intent (in) :: collection_size
291 type(
yac_real_ptr),
intent (in) :: send_field(nbr_pointsets, &
293 type(
yac_dble_ptr),
intent (out) :: send_field_dble(nbr_pointsets, &
295 type(
yac_real_ptr),
optional,
intent (in) :: send_frac_mask(nbr_pointsets, &
297 type(
yac_dble_ptr),
optional,
intent (out) :: send_frac_mask_dble(nbr_pointsets, &
300 integer :: i, j, k, nbr_hor_points
301 type(c_ptr) :: put_mask_
302 type(c_ptr),
pointer :: put_mask(:)
303 integer(kind=c_int),
pointer :: pointset_put_mask(:)
307 put_mask_ = yac_get_field_put_mask_c2f_c(field_id)
308 if (c_associated(put_mask_))
then
309 call c_f_pointer(put_mask_, put_mask, shape=[nbr_pointsets])
310 do i = 1, collection_size
311 do j = 1, nbr_pointsets
312 nbr_hor_points =
size(send_field(j,i)%p)
313 allocate(send_field_dble(j,i)%p(nbr_hor_points))
315 put_mask(j), pointset_put_mask, shape=[nbr_hor_points])
316 do k = 1, nbr_hor_points
317 if (pointset_put_mask(k) /= 0)
then
318 send_field_dble(j, i)%p(k) = dble(send_field(j, i)%p(k))
320 send_field_dble(j, i)%p(k) = 0d0
325 if (
present(send_frac_mask))
then
326 do i = 1, collection_size
327 do j = 1, nbr_pointsets
328 nbr_hor_points =
size(send_frac_mask(j,i)%p)
329 allocate(send_frac_mask_dble(j,i)%p(nbr_hor_points))
331 put_mask(j), pointset_put_mask, shape=[nbr_hor_points])
332 do k = 1, nbr_hor_points
333 if (pointset_put_mask(k) /= 0)
then
334 send_frac_mask_dble(j, i)%p(k) = dble(send_frac_mask(j, i)%p(k))
336 send_frac_mask_dble(j, i)%p(k) = 0d0
343 do i = 1, collection_size
344 do j = 1, nbr_pointsets
345 nbr_hor_points =
size(send_field(j,i)%p)
346 allocate(send_field_dble(j,i)%p(nbr_hor_points))
347 send_field_dble(j,i)%p = dble(send_field(j,i)%p)
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))
355 send_frac_mask_dble(j,i)%p = dble(send_frac_mask(j,i)%p)
361 do i = 1, collection_size
362 do j = 1, nbr_pointsets
363 nbr_hor_points =
size(send_field(j,i)%p)
364 allocate(send_field_dble(j,i)%p(nbr_hor_points))
365 send_field_dble(j,i)%p = 0d0
368 if (
present(send_frac_mask))
then
369 do i = 1, collection_size
370 do j = 1, nbr_pointsets
371 nbr_hor_points =
size(send_frac_mask(j,i)%p)
372 allocate(send_frac_mask_dble(j,i)%p(nbr_hor_points))
373 send_frac_mask_dble(j,i)%p = 0d0
389 use iso_c_binding,
only: c_ptr, c_f_pointer, c_int, c_associated
395 function yac_get_field_get_mask_c2f_c ( field_id ) &
396 bind( c, name=
'yac_get_field_get_mask_c2f' )
398 use,
intrinsic :: iso_c_binding, only : c_int, c_ptr
400 integer ( kind=c_int ),
value :: field_id
401 type(c_ptr) :: yac_get_field_get_mask_c2f_c
403 end function yac_get_field_get_mask_c2f_c
407 integer,
intent (in) :: field_id
408 integer,
intent (in) :: nbr_hor_points
409 integer,
intent (in) :: collection_size
410 real,
intent (in) :: recv_field(nbr_hor_points, &
412 double precision,
intent (out) :: recv_field_dble(nbr_hor_points, &
416 type(c_ptr) :: get_mask_
417 integer(kind=c_int),
pointer :: get_mask(:)
421 get_mask_ = yac_get_field_get_mask_c2f_c(field_id)
422 if (c_associated(get_mask_))
then
423 call c_f_pointer(get_mask_, get_mask, shape=[nbr_hor_points])
424 do i = 1, collection_size
425 do j = 1, nbr_hor_points
426 if (get_mask(j) /= 0)
then
427 recv_field_dble(j, i) = dble(recv_field(j, i))
429 recv_field_dble(j, i) = 0d0
434 recv_field_dble = dble(recv_field)
437 recv_field_dble = 0d0
447 use iso_c_binding,
only: c_ptr, c_f_pointer, c_int, c_associated
453 function yac_get_field_get_mask_c2f_c ( field_id ) &
454 bind( c, name=
'yac_get_field_get_mask_c2f' )
456 use,
intrinsic :: iso_c_binding, only : c_int, c_ptr
458 integer ( kind=c_int ),
value :: field_id
459 type(c_ptr) :: yac_get_field_get_mask_c2f_c
461 end function yac_get_field_get_mask_c2f_c
465 integer,
intent (in) :: field_id
466 integer,
intent (in) :: collection_size
467 type(
yac_real_ptr),
intent (in) :: recv_field(collection_size)
468 type(
yac_dble_ptr),
intent (out) :: recv_field_dble(collection_size)
470 integer :: i, j, nbr_hor_points
471 type(c_ptr) :: get_mask_
472 integer(kind=c_int),
pointer :: get_mask(:)
476 get_mask_ = yac_get_field_get_mask_c2f_c(field_id)
477 if (c_associated(get_mask_) .and. (collection_size > 0))
then
478 nbr_hor_points =
size(recv_field(1)%p)
479 call c_f_pointer(get_mask_, get_mask, shape=[nbr_hor_points])
480 do i = 1, collection_size
481 nbr_hor_points =
size(recv_field(i)%p)
482 allocate(recv_field_dble(i)%p(nbr_hor_points))
483 do j = 1, nbr_hor_points
484 if (get_mask(j) /= 0)
then
485 recv_field_dble(i)%p(j) = dble(recv_field(i)%p(j))
487 recv_field_dble(i)%p(j) = 0d0
492 do i = 1, collection_size
493 nbr_hor_points =
size(recv_field(i)%p)
494 allocate(recv_field_dble(i)%p(nbr_hor_points))
495 recv_field_dble(i)%p = dble(recv_field(i)%p)
499 do i = 1, collection_size
500 nbr_hor_points =
size(recv_field(i)%p)
501 allocate(recv_field_dble(i)%p(nbr_hor_points))
502 recv_field_dble(i)%p = 0d0
516 use iso_c_binding,
only: c_ptr, c_f_pointer, c_int, c_associated
522 function yac_get_field_get_mask_c2f_c ( field_id ) &
523 bind( c, name=
'yac_get_field_get_mask_c2f' )
525 use,
intrinsic :: iso_c_binding, only : c_int, c_ptr
527 integer ( kind=c_int ),
value :: field_id
528 type(c_ptr) :: yac_get_field_get_mask_c2f_c
530 end function yac_get_field_get_mask_c2f_c
534 integer,
intent (in) :: field_id
535 integer,
intent (in) :: nbr_hor_points
536 integer,
intent (in) :: collection_size
537 double precision,
intent (in) :: recv_field_dble(nbr_hor_points, &
539 real,
intent (inout) :: recv_field(nbr_hor_points, &
543 type(c_ptr) :: get_mask_
544 integer(kind=c_int),
pointer :: get_mask(:)
548 get_mask_ = yac_get_field_get_mask_c2f_c(field_id)
549 if (c_associated(get_mask_))
then
550 call c_f_pointer(get_mask_, get_mask, shape=[nbr_hor_points])
551 do i = 1, collection_size
552 do j = 1, nbr_hor_points
553 if (get_mask(j) /= 0)
then
554 recv_field(j, i) = real(recv_field_dble(j, i))
559 recv_field = real(recv_field_dble)
570 use iso_c_binding,
only: c_ptr, c_f_pointer, c_int, c_associated
576 function yac_get_field_get_mask_c2f_c ( field_id ) &
577 bind( c, name=
'yac_get_field_get_mask_c2f' )
579 use,
intrinsic :: iso_c_binding, only : c_int, c_ptr
581 integer ( kind=c_int ),
value :: field_id
582 type(c_ptr) :: yac_get_field_get_mask_c2f_c
584 end function yac_get_field_get_mask_c2f_c
588 integer,
intent (in) :: field_id
589 integer,
intent (in) :: collection_size
590 type(
yac_dble_ptr),
intent (inout) :: recv_field_dble(collection_size)
591 type(
yac_real_ptr),
intent (inout) :: recv_field(collection_size)
593 integer :: i, j, nbr_hor_points
594 type(c_ptr) :: get_mask_
595 integer(kind=c_int),
pointer :: get_mask(:)
599 get_mask_ = yac_get_field_get_mask_c2f_c(field_id)
600 if (c_associated(get_mask_) .and. (collection_size > 0))
then
601 nbr_hor_points =
size(recv_field(1)%p)
602 call c_f_pointer(get_mask_, get_mask, shape=[nbr_hor_points])
603 do i = 1, collection_size
604 nbr_hor_points =
size(recv_field(i)%p)
605 do j = 1, nbr_hor_points
606 if (get_mask(j) /= 0)
then
607 recv_field(i)%p(j) = real(recv_field_dble(i)%p(j))
610 deallocate(recv_field_dble(i)%p)
613 do i = 1, collection_size
614 recv_field(i)%p = real(recv_field_dble(i)%p)
615 deallocate(recv_field_dble(i)%p)
626 use,
intrinsic :: iso_c_binding, only : c_ptr, c_null_char, c_loc
632 subroutine yac_cmpi_handshake_c (comm, n, group_names, group_comms) &
633 bind( c, name=
'yac_cmpi_handshake_f2c')
634 use,
intrinsic :: iso_c_binding, only : c_ptr, c_int
636 integer (kind = YAC_MPI_FINT_KIND ),
intent(in),
value :: comm
637 integer(c_int),
intent(in),
value :: n
638 type (c_ptr) ,
intent(in) :: group_names(n)
639 integer (kind = YAC_MPI_FINT_KIND ),
intent(out) :: group_comms(n)
640 end subroutine yac_cmpi_handshake_c
643 integer,
intent(in) :: comm
644 character(len=YAC_MAX_CHARLEN),
intent(in) :: group_names(:)
645 integer,
intent(out) :: group_comms(SIZE(group_names))
647 CHARACTER (kind=c_char, len=YAC_MAX_CHARLEN+1),
TARGET :: &
648 group_names_cpy(SIZE(group_names))
649 type( c_ptr ) :: group_name_ptr(SIZE(group_names))
651 DO i=1,
SIZE(group_names)
652 group_names_cpy(i) = trim(group_names(i)) // c_null_char
653 group_name_ptr(i) = c_loc(group_names_cpy(i))
656 call yac_cmpi_handshake_c( &
657 comm,
SIZE(group_names), group_name_ptr, group_comms)
670 function yac_cyaml_get_emitter_flag_default () &
671 bind( c, name=
'yac_cyaml_get_emitter_flag_default_c2f' )
673 use,
intrinsic :: iso_c_binding, only : c_int
675 integer ( kind=c_int) :: yac_cyaml_get_emitter_flag_default
677 end function yac_cyaml_get_emitter_flag_default
679 function yac_cyaml_get_emitter_flag_json () &
680 bind( c, name=
'yac_cyaml_get_emitter_flag_json_c2f' )
682 use,
intrinsic :: iso_c_binding, only : c_int
684 integer ( kind=c_int) :: yac_cyaml_get_emitter_flag_json
686 end function yac_cyaml_get_emitter_flag_json
703 subroutine yac_cinit_comm_c ( comm ) &
704 bind( c, name=
'yac_cinit_comm_f2c' )
708 integer ( kind=YAC_MPI_FINT_KIND ),
value :: comm
710 end subroutine yac_cinit_comm_c
717 integer,
intent(in) :: comm
720 call yac_cinit_comm_c ( comm )
732 subroutine yac_cinit_comm_instance_c ( comm, yac_instance_id) &
733 bind( c, name=
'yac_cinit_comm_instance_f2c' )
735 use,
intrinsic :: iso_c_binding, only : c_int
738 integer ( kind=YAC_MPI_FINT_KIND ),
value :: comm
739 integer (kind=c_int) :: yac_instance_id
741 end subroutine yac_cinit_comm_instance_c
748 integer,
intent(in) :: comm
749 integer,
intent(out) :: yac_instance_id
752 call yac_cinit_comm_instance_c ( comm, yac_instance_id )
764 subroutine yac_cinit_c ( ) &
765 bind( c, name=
'yac_cinit' )
767 end subroutine yac_cinit_c
787 subroutine yac_cinit_instance_c ( yac_instance_id ) &
788 bind( c, name=
'yac_cinit_instance' )
790 use,
intrinsic :: iso_c_binding, only : c_int
792 integer (kind=c_int) :: yac_instance_id
794 end subroutine yac_cinit_instance_c
801 integer,
intent(out) :: yac_instance_id
804 call yac_cinit_instance_c ( yac_instance_id )
816 subroutine yac_cinit_comm_dummy_c ( world_comm ) &
817 bind( c, name=
'yac_cinit_comm_dummy_f2c' )
821 integer ( kind=YAC_MPI_FINT_KIND ),
value :: world_comm
823 end subroutine yac_cinit_comm_dummy_c
830 integer,
intent(in) :: world_comm
833 call yac_cinit_comm_dummy_c ( world_comm )
845 subroutine yac_cinit_dummy_c ( ) &
846 bind( c, name=
'yac_cinit_dummy' )
848 end subroutine yac_cinit_dummy_c
856 call yac_cinit_dummy_c ( )
870 function yac_cget_default_instance_id_c ( ) &
871 bind( c, name=
'yac_cget_default_instance_id' )
872 use,
intrinsic :: iso_c_binding, only : c_int
874 integer(kind=c_int) :: yac_cget_default_instance_id_c
876 end function yac_cget_default_instance_id_c
890 use,
intrinsic :: iso_c_binding, only : c_null_char
896 subroutine yac_cread_config_yaml_c(yaml_filename) &
897 bind( c, name=
'yac_cread_config_yaml' )
898 use,
intrinsic :: iso_c_binding, only : c_char
899 character (kind=c_char),
dimension(*) :: yaml_filename
900 end subroutine yac_cread_config_yaml_c
903 character(len=*),
intent(in) :: yaml_filename
905 call yac_cread_config_yaml_c(trim(yaml_filename) // c_null_char)
911 use,
intrinsic :: iso_c_binding, only : c_null_char
917 subroutine yac_cread_config_yaml_instance_c( &
918 yac_instance_id, yaml_filename) &
919 bind( c, name=
'yac_cread_config_yaml_instance' )
920 use,
intrinsic :: iso_c_binding, only : c_char, c_int
921 integer (kind=c_int),
value :: yac_instance_id
922 character (kind=c_char),
dimension(*) :: yaml_filename
923 end subroutine yac_cread_config_yaml_instance_c
926 integer,
intent(in) :: yac_instance_id
927 character(len=*),
intent(in) :: yaml_filename
929 call yac_cread_config_yaml_instance_c(yac_instance_id, &
930 & trim(yaml_filename) // c_null_char)
936 use,
intrinsic :: iso_c_binding, only : c_null_char
942 subroutine yac_cread_config_json_c(json_filename) &
943 bind( c, name=
'yac_cread_config_json' )
944 use,
intrinsic :: iso_c_binding, only : c_char
945 character (kind=c_char),
dimension(*) :: json_filename
946 end subroutine yac_cread_config_json_c
949 character(len=*),
intent(in) :: json_filename
951 call yac_cread_config_json_c(trim(json_filename) // c_null_char)
957 use,
intrinsic :: iso_c_binding, only : c_null_char
963 subroutine yac_cread_config_json_instance_c( &
964 yac_instance_id, json_filename) &
965 bind( c, name=
'yac_cread_config_json_instance' )
966 use,
intrinsic :: iso_c_binding, only : c_char, c_int
967 integer (kind=c_int),
value :: yac_instance_id
968 character (kind=c_char),
dimension(*) :: json_filename
969 end subroutine yac_cread_config_json_instance_c
972 integer,
intent(in) :: yac_instance_id
973 character(len=*),
intent(in) :: json_filename
975 call yac_cread_config_json_instance_c(yac_instance_id, &
976 & trim(json_filename) // c_null_char)
990 subroutine yac_ccleanup_c () bind ( c, name='yac_ccleanup' )
991 end subroutine yac_ccleanup_c
995 call yac_ccleanup_c ( )
1007 subroutine yac_ccleanup_instance_c ( yac_instance_id ) &
1008 bind( c, name=
'yac_ccleanup_instance' )
1010 use,
intrinsic :: iso_c_binding, only : c_int
1012 integer (kind=c_int),
value :: yac_instance_id
1014 end subroutine yac_ccleanup_instance_c
1018 integer,
intent(in) :: yac_instance_id
1020 call yac_ccleanup_instance_c ( yac_instance_id )
1033 subroutine yac_cfinalize_c () bind ( c, name='yac_cfinalize' )
1034 end subroutine yac_cfinalize_c
1037 call yac_cfinalize_c ( )
1048 subroutine yac_cfinalize_instance_c ( yac_instance_id ) &
1049 bind( c, name=
'yac_cfinalize_instance' )
1051 use,
intrinsic :: iso_c_binding, only : c_int
1053 integer (kind=c_int),
value :: yac_instance_id
1055 end subroutine yac_cfinalize_instance_c
1058 integer,
intent(in) :: yac_instance_id
1060 call yac_cfinalize_instance_c ( yac_instance_id )
1068 use,
intrinsic :: iso_c_binding, only : c_ptr
1075 function yac_cget_version_c () bind ( c, name='yac_cget_version' )
1077 use,
intrinsic :: iso_c_binding, only : c_ptr
1078 type(c_ptr) :: yac_cget_version_c
1080 end function yac_cget_version_c
1083 type (c_ptr) :: c_string_ptr
1084 character (len=:),
ALLOCATABLE :: version_string
1086 c_string_ptr = yac_cget_version_c()
1095 use,
intrinsic :: iso_c_binding, only : c_null_char
1103 subroutine yac_cdef_datetime_c ( start_datetime, end_datetime ) &
1104 & bind( c, name=
'yac_cdef_datetime' )
1106 use,
intrinsic :: iso_c_binding, only : c_char
1108 character ( kind=c_char),
dimension(*) :: start_datetime
1109 character ( kind=c_char),
dimension(*) :: end_datetime
1111 end subroutine yac_cdef_datetime_c
1115 character(len=*),
intent(in),
optional :: start_datetime
1116 character(len=*),
intent(in),
optional :: end_datetime
1123 if (
present(start_datetime))
then
1124 yac_check_string_len(
"yac_fdef_datetime", start_datetime )
1128 if (
present(end_datetime))
then
1129 yac_check_string_len(
"yac_fdef_datetime", end_datetime )
1133 select case ( index )
1136 call yac_cdef_datetime_c ( trim(start_datetime) // c_null_char, &
1137 trim(end_datetime) // c_null_char )
1139 call yac_cdef_datetime_c ( c_null_char, &
1140 trim(end_datetime) // c_null_char )
1142 call yac_cdef_datetime_c ( trim(start_datetime) // c_null_char, &
1149 yac_instance_id, start_datetime, end_datetime )
1151 use,
intrinsic :: iso_c_binding, only : c_null_char
1159 subroutine yac_cdef_datetime_instance_c ( yac_instance_id, &
1162 bind( c, name=
'yac_cdef_datetime_instance' )
1164 use,
intrinsic :: iso_c_binding, only : c_char, c_int
1166 integer (kind=c_int),
value :: yac_instance_id
1167 character ( kind=c_char),
dimension(*) :: start_datetime
1168 character ( kind=c_char),
dimension(*) :: end_datetime
1170 end subroutine yac_cdef_datetime_instance_c
1174 integer,
intent(in) :: yac_instance_id
1175 character(len=*),
intent(in),
optional :: start_datetime
1176 character(len=*),
intent(in),
optional :: end_datetime
1183 if (
present(start_datetime))
then
1184 yac_check_string_len(
"yac_fdef_datetime_instance", start_datetime )
1188 if (
present(end_datetime))
then
1189 yac_check_string_len(
"yac_fdef_datetime_instance", end_datetime )
1193 select case ( index )
1196 call yac_cdef_datetime_instance_c ( yac_instance_id, &
1197 trim(start_datetime) // c_null_char, &
1198 trim(end_datetime) // c_null_char )
1200 call yac_cdef_datetime_instance_c ( yac_instance_id, &
1202 trim(end_datetime) // c_null_char )
1204 call yac_cdef_datetime_instance_c ( yac_instance_id, &
1205 trim(start_datetime) // c_null_char, &
1219 subroutine yac_cdef_calendar_c ( calendar ) &
1220 bind( c, name=
'yac_cdef_calendar' )
1221 use,
intrinsic :: iso_c_binding, only : c_int
1223 integer ( kind=c_int ),
value :: calendar
1225 end subroutine yac_cdef_calendar_c
1229 integer,
intent(in) :: calendar
1231 call yac_cdef_calendar_c ( calendar )
1239 use,
intrinsic :: iso_c_binding, only : c_null_char
1247 SUBROUTINE yac_cpredef_comp_c ( comp_name, comp_id ) &
1248 bind( c, name=
'yac_cpredef_comp' )
1250 use,
intrinsic :: iso_c_binding, only : c_int, c_char
1252 character ( kind=c_char),
dimension(*) :: comp_name
1253 integer ( kind=c_int ) :: comp_id
1255 END SUBROUTINE yac_cpredef_comp_c
1259 character(len=*),
intent(in) :: comp_name
1260 integer,
intent(out) :: comp_id
1262 yac_check_string_len(
"yac_fpredef_comp", comp_name )
1264 call yac_cpredef_comp_c ( trim(comp_name) // c_null_char, comp_id )
1270 use,
intrinsic :: iso_c_binding, only : c_null_char
1278 SUBROUTINE yac_cpredef_comp_instance_c ( yac_instance_id, &
1281 bind( c, name=
'yac_cpredef_comp_instance' )
1283 use,
intrinsic :: iso_c_binding, only : c_int, c_char
1285 integer (kind=c_int),
value :: yac_instance_id
1286 character ( kind=c_char),
dimension(*) :: comp_name
1287 integer ( kind=c_int ) :: comp_id
1289 END SUBROUTINE yac_cpredef_comp_instance_c
1293 integer,
intent(in) :: yac_instance_id
1294 character(len=*),
intent(in) :: comp_name
1295 integer,
intent(out) :: comp_id
1297 yac_check_string_len(
"yac_fpredef_comp_instance", comp_name )
1299 call yac_cpredef_comp_instance_c( yac_instance_id, &
1300 trim(comp_name) // c_null_char, &
1309 use,
intrinsic :: iso_c_binding, only : c_null_char
1317 subroutine yac_cdef_comp_c ( comp_name, comp_id ) &
1318 bind( c, name=
'yac_cdef_comp' )
1320 use,
intrinsic :: iso_c_binding, only : c_int, c_char
1322 character ( kind=c_char),
dimension(*) :: comp_name
1323 integer ( kind=c_int ) :: comp_id
1325 end subroutine yac_cdef_comp_c
1329 character(len=*),
intent(in) :: comp_name
1330 integer,
intent(out) :: comp_id
1332 yac_check_string_len(
"yac_fdef_comp", comp_name )
1334 call yac_cdef_comp_c ( trim(comp_name) // c_null_char, comp_id )
1340 use,
intrinsic :: iso_c_binding, only : c_null_char
1348 subroutine yac_cdef_comp_instance_c ( yac_instance_id, &
1351 bind( c, name=
'yac_cdef_comp_instance' )
1353 use,
intrinsic :: iso_c_binding, only : c_int, c_char
1355 integer (kind=c_int),
value :: yac_instance_id
1356 character ( kind=c_char),
dimension(*) :: comp_name
1357 integer ( kind=c_int ) :: comp_id
1359 end subroutine yac_cdef_comp_instance_c
1363 integer,
intent(in) :: yac_instance_id
1364 character(len=*),
intent(in) :: comp_name
1365 integer,
intent(out) :: comp_id
1367 yac_check_string_len(
"yac_fdef_comp_instance", comp_name )
1369 call yac_cdef_comp_instance_c( yac_instance_id, &
1370 trim(comp_name) // c_null_char, &
1379 use,
intrinsic :: iso_c_binding, only : c_null_char, c_ptr, c_loc, c_char
1387 subroutine yac_cdef_comps_c ( comp_names, num_comps, comp_ids ) &
1388 bind( c, name=
'yac_cdef_comps' )
1390 use,
intrinsic :: iso_c_binding, only : c_int, c_ptr
1392 type ( c_ptr ),
value :: comp_names
1393 integer ( kind=c_int ),
value :: num_comps
1394 integer ( kind=c_int ) :: comp_ids(*)
1396 end subroutine yac_cdef_comps_c
1400 integer,
intent(in) :: num_comps
1401 character(kind=c_char, len=*),
intent(in) :: &
1402 comp_names(num_comps)
1403 integer,
intent(out) :: comp_ids(num_comps)
1406 character(kind=c_char),
target :: comp_names_cpy(YAC_MAX_CHARLEN+1, num_comps)
1407 type(c_ptr),
target :: comp_name_ptrs(num_comps)
1409 comp_names_cpy = c_null_char
1412 yac_check_string_len(
"yac_fdef_comps", comp_names(i))
1413 do j = 1, len_trim(comp_names(i))
1414 comp_names_cpy(j,i) = comp_names(i)(j:j)
1416 comp_name_ptrs(i) = c_loc(comp_names_cpy(1,i))
1419 call yac_cdef_comps_c ( c_loc(comp_name_ptrs), num_comps, comp_ids )
1428 use,
intrinsic :: iso_c_binding, only : c_null_char, c_ptr, c_loc, c_char
1436 subroutine yac_cdef_comps_instance_c ( yac_instance_id, &
1440 bind( c, name=
'yac_cdef_comps_instance' )
1442 use,
intrinsic :: iso_c_binding, only : c_int, c_ptr
1444 integer (kind=c_int),
value :: yac_instance_id
1445 type ( c_ptr ),
value :: comp_names
1446 integer ( kind=c_int ),
value :: num_comps
1447 integer ( kind=c_int ) :: comp_ids(*)
1449 end subroutine yac_cdef_comps_instance_c
1453 integer,
intent(in) :: yac_instance_id
1454 integer,
intent(in) :: num_comps
1455 character(kind=c_char, len=*),
intent(in) :: &
1456 comp_names(num_comps)
1457 integer,
intent(out) :: comp_ids(num_comps)
1460 character(kind=c_char),
target :: comp_names_cpy(YAC_MAX_CHARLEN+1, num_comps)
1461 type(c_ptr),
target :: comp_name_ptrs(num_comps)
1463 comp_names_cpy = c_null_char
1466 yac_check_string_len(
"yac_fdef_comps_instance", comp_names(i))
1467 do j = 1, len_trim(comp_names(i))
1468 comp_names_cpy(j,i) = comp_names(i)(j:j)
1470 comp_name_ptrs(i) = c_loc(comp_names_cpy(1,i))
1473 call yac_cdef_comps_instance_c ( yac_instance_id, &
1474 c_loc(comp_name_ptrs), &
1485 use,
intrinsic :: iso_c_binding, only : c_null_ptr, c_int
1492 subroutine yac_cdef_comps_dummy_c ( comp_names, num_comps, comp_ids ) &
1493 bind( c, name=
'yac_cdef_comps' )
1495 use,
intrinsic :: iso_c_binding, only : c_int, c_ptr
1497 type ( c_ptr ),
value :: comp_names
1498 integer ( kind=c_int ),
value :: num_comps
1499 integer ( kind=c_int ) :: comp_ids(*)
1501 end subroutine yac_cdef_comps_dummy_c
1505 call yac_cdef_comps_dummy_c ( c_null_ptr, 0_c_int, [
integer( kind=c_int ) :: ] )
1511 use,
intrinsic :: iso_c_binding, only : c_null_ptr, c_int
1518 subroutine yac_cdef_comps_dummy_instance_c ( &
1519 yac_instance_id, comp_names, num_comps, comp_ids ) &
1520 bind( c, name=
'yac_cdef_comps_instance' )
1522 use,
intrinsic :: iso_c_binding, only : c_int, c_ptr
1524 integer (kind=c_int),
value :: yac_instance_id
1525 type ( c_ptr ),
value :: comp_names
1526 integer ( kind=c_int ),
value :: num_comps
1527 integer ( kind=c_int ) :: comp_ids(*)
1529 end subroutine yac_cdef_comps_dummy_instance_c
1533 integer,
intent(in) :: yac_instance_id
1535 call yac_cdef_comps_dummy_instance_c( yac_instance_id, &
1538 [
integer( kind=c_int ) :: ] )
1555 integer,
intent(in) :: grid_id
1556 integer,
intent(in) :: nbr_points(2)
1557 integer,
intent(in) :: location
1558 real,
intent(in) :: x_points_real(nbr_points(1))
1559 real,
intent(in) :: y_points_real(nbr_points(2))
1560 integer,
intent(out) :: point_id
1562 double precision :: x_points(nbr_points(1))
1563 double precision :: y_points(nbr_points(2))
1565 x_points(:) = dble(x_points_real(:))
1566 y_points(:) = dble(y_points_real(:))
1590 subroutine yac_cdef_points_reg2d_c ( grid_id, &
1596 & bind( c, name=
'yac_cdef_points_reg2d' )
1598 use,
intrinsic :: iso_c_binding, only : c_int, c_double
1600 integer ( kind=c_int ),
value :: grid_id
1601 integer ( kind=c_int ) :: nbr_points(2)
1602 integer ( kind=c_int ),
value :: location
1604 real ( kind=c_double ) :: x_points(nbr_points(1))
1605 real ( kind=c_double ) :: y_points(nbr_points(2))
1607 integer ( kind=c_int ) :: point_id
1609 end subroutine yac_cdef_points_reg2d_c
1613 integer,
intent(in) :: grid_id
1614 integer,
intent(in) :: nbr_points(2)
1615 integer,
intent(in) :: location
1617 double precision,
intent(in) :: x_points(nbr_points(1))
1618 double precision,
intent(in) :: y_points(nbr_points(2))
1620 integer,
intent(out) :: point_id
1622 call yac_cdef_points_reg2d_c ( grid_id, &
1642 integer,
intent(in) :: grid_id
1643 integer,
intent(in) :: nbr_points(2)
1644 integer,
intent(in) :: location
1645 real,
intent(in) :: &
1646 x_points_real(nbr_points(1),nbr_points(2))
1647 real,
intent(in) :: &
1648 y_points_real(nbr_points(1),nbr_points(2))
1649 integer,
intent(out) :: point_id
1651 double precision :: x_points(nbr_points(1),nbr_points(2))
1652 double precision :: y_points(nbr_points(1),nbr_points(2))
1654 x_points(:,:) = dble(x_points_real(:,:))
1655 y_points(:,:) = dble(y_points_real(:,:))
1679 subroutine yac_cdef_points_curve2d_c ( grid_id, &
1685 bind( c, name=
'yac_cdef_points_curve2d' )
1687 use,
intrinsic :: iso_c_binding, only : c_int, c_double
1689 integer ( kind=c_int ),
value :: grid_id
1690 integer ( kind=c_int ) :: nbr_points(2)
1691 integer ( kind=c_int ),
value :: location
1693 real ( kind=c_double ) :: x_points(nbr_points(1),nbr_points(2))
1694 real ( kind=c_double ) :: y_points(nbr_points(1),nbr_points(2))
1696 integer ( kind=c_int ) :: point_id
1698 end subroutine yac_cdef_points_curve2d_c
1702 integer,
intent(in) :: grid_id
1703 integer,
intent(in) :: nbr_points(2)
1704 integer,
intent(in) :: location
1706 double precision,
intent(in) :: &
1707 x_points(nbr_points(1),nbr_points(2))
1708 double precision,
intent(in) :: &
1709 y_points(nbr_points(1),nbr_points(2))
1711 integer,
intent(out) :: point_id
1713 call yac_cdef_points_curve2d_c ( grid_id, &
1733 integer,
intent(in) :: grid_id
1734 integer,
intent(in) :: nbr_points
1735 integer,
intent(in) :: location
1737 real,
intent(in) :: x_points_real(nbr_points)
1738 real,
intent(in) :: y_points_real(nbr_points)
1740 integer,
intent(out) :: point_id
1742 double precision :: x_points(nbr_points)
1743 double precision :: y_points(nbr_points)
1745 x_points(:) = dble(x_points_real(:))
1746 y_points(:) = dble(y_points_real(:))
1770 subroutine yac_cdef_points_unstruct_c ( grid_id, &
1776 bind( c, name=
'yac_cdef_points_unstruct' )
1778 use,
intrinsic :: iso_c_binding, only : c_int, c_double
1780 integer (kind=c_int),
value :: grid_id
1781 integer (kind=c_int),
value :: nbr_points
1782 integer (kind=c_int),
value :: location
1784 real (kind=c_double) :: x_points(nbr_points)
1785 real (kind=c_double) :: y_points(nbr_points)
1787 integer (kind=c_int) :: point_id
1789 end subroutine yac_cdef_points_unstruct_c
1793 integer,
intent(in) :: grid_id
1794 integer,
intent(in) :: nbr_points
1795 integer,
intent(in) :: location
1797 double precision,
intent(in) :: x_points(nbr_points)
1798 double precision,
intent(in) :: y_points(nbr_points)
1800 integer,
intent(out) :: point_id
1802 call yac_cdef_points_unstruct_c ( grid_id, &
1836 nbr_vertices_per_cell, &
1839 cell_to_vertex_in, &
1847 character(len=*),
intent(in) :: grid_name
1848 integer,
intent(in) :: nbr_vertices
1849 integer,
intent(in) :: nbr_cells
1850 integer,
intent(in) :: nbr_connections
1851 integer,
intent(in) :: nbr_vertices_per_cell(nbr_cells)
1853 real,
intent(in) :: x_vertices_real(nbr_vertices)
1854 real,
intent(in) :: y_vertices_real(nbr_vertices)
1856 integer,
intent(in) :: cell_to_vertex_in(nbr_connections)
1858 integer,
intent(out) :: grid_id
1860 logical,
optional,
intent(in) :: use_ll_edges
1862 double precision :: x_vertices(nbr_vertices)
1863 double precision :: y_vertices(nbr_vertices)
1865 x_vertices(:) = dble(x_vertices_real(:))
1866 y_vertices(:) = dble(y_vertices_real(:))
1872 nbr_vertices_per_cell, &
1875 cell_to_vertex_in, &
1904 nbr_vertices_per_cell, &
1907 cell_to_vertex_in, &
1911 use,
intrinsic :: iso_c_binding, only : c_null_char
1918 subroutine yac_cdef_grid_unstruct_c ( grid_name, &
1921 nbr_vertices_per_cell, &
1926 bind( c, name=
'yac_cdef_grid_unstruct' )
1928 use,
intrinsic :: iso_c_binding, only : c_int, c_char, c_double
1930 character ( kind=c_char ),
dimension(*) :: grid_name
1931 integer ( kind=c_int ),
value :: nbr_vertices
1932 integer ( kind=c_int ),
value :: nbr_cells
1933 integer ( kind=c_int ) :: nbr_vertices_per_cell(nbr_cells)
1934 real ( kind=c_double ) :: x_vertices(nbr_vertices)
1935 real ( kind=c_double ) :: y_vertices(nbr_vertices)
1936 integer ( kind=c_int ) :: cell_to_vertex(nbr_cells,nbr_vertices)
1937 integer ( kind=c_int ) :: grid_id
1939 end subroutine yac_cdef_grid_unstruct_c
1941 subroutine yac_cdef_grid_unstruct_ll_c ( grid_name, &
1944 nbr_vertices_per_cell, &
1949 bind( c, name=
'yac_cdef_grid_unstruct_ll' )
1951 use,
intrinsic :: iso_c_binding, only : c_int, c_char, c_double
1953 character ( kind=c_char ),
dimension(*) :: grid_name
1954 integer ( kind=c_int ),
value :: nbr_vertices
1955 integer ( kind=c_int ),
value :: nbr_cells
1956 integer ( kind=c_int ) :: nbr_vertices_per_cell(nbr_cells)
1957 real ( kind=c_double ) :: x_vertices(nbr_vertices)
1958 real ( kind=c_double ) :: y_vertices(nbr_vertices)
1959 integer ( kind=c_int ) :: cell_to_vertex(nbr_cells,nbr_vertices)
1960 integer ( kind=c_int ) :: grid_id
1962 end subroutine yac_cdef_grid_unstruct_ll_c
1966 character(len=*),
intent(in) :: grid_name
1967 integer,
intent(in) :: nbr_vertices
1968 integer,
intent(in) :: nbr_cells
1969 integer,
intent(in) :: nbr_connections
1970 integer,
intent(in) :: nbr_vertices_per_cell(nbr_cells)
1972 double precision,
intent(in) :: x_vertices(nbr_vertices)
1973 double precision,
intent(in) :: y_vertices(nbr_vertices)
1975 integer,
intent(in) :: cell_to_vertex_in(nbr_connections)
1977 integer,
intent(out) :: grid_id
1979 logical,
optional,
intent(in) :: use_ll_edges
1982 integer :: cell_to_vertex(nbr_connections)
1984 logical :: use_ll_edges_
1986 yac_fassert(all(cell_to_vertex_in > 0),
"ERROR(yac_fdef_grid_nonuniform_dble): all entries of cell_to_vertex have to be > 0")
1988 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")
1990 cell_to_vertex(:) = cell_to_vertex_in(:) - 1
1992 if (
present(use_ll_edges))
then
1993 use_ll_edges_ = use_ll_edges
1995 use_ll_edges_ = .false.
1998 if (use_ll_edges_)
then
1999 call yac_cdef_grid_unstruct_ll_c ( trim(grid_name) // c_null_char, &
2002 nbr_vertices_per_cell, &
2008 call yac_cdef_grid_unstruct_c ( trim(grid_name) // c_null_char, &
2011 nbr_vertices_per_cell, &
2041 nbr_vertices_per_cell_in, &
2044 cell_to_vertex_in, &
2052 character(len=*),
intent(in) :: grid_name
2053 integer,
intent(in) :: nbr_vertices
2054 integer,
intent(in) :: nbr_cells
2055 integer,
intent(in) :: nbr_vertices_per_cell_in
2057 real,
intent(in) :: x_vertices_real(nbr_vertices)
2058 real,
intent(in) :: y_vertices_real(nbr_vertices)
2060 integer,
intent(in) :: cell_to_vertex_in(nbr_vertices_per_cell_in,nbr_cells)
2062 integer,
intent(out) :: grid_id
2064 logical,
optional,
intent(in) :: use_ll_edges
2066 double precision :: x_vertices(nbr_vertices)
2067 double precision :: y_vertices(nbr_vertices)
2069 x_vertices(:) = dble(x_vertices_real(:))
2070 y_vertices(:) = dble(y_vertices_real(:))
2075 nbr_vertices_per_cell_in, &
2078 cell_to_vertex_in, &
2105 nbr_vertices_per_cell_in, &
2108 cell_to_vertex_in, &
2112 use,
intrinsic :: iso_c_binding, only : c_null_char
2119 subroutine yac_cdef_grid_unstruct_c ( grid_name, &
2122 nbr_vertices_per_cell, &
2127 bind( c, name=
'yac_cdef_grid_unstruct' )
2129 use,
intrinsic :: iso_c_binding, only : c_int, c_char, c_double
2131 character ( kind=c_char ),
dimension(*) :: grid_name
2132 integer ( kind=c_int ),
value :: nbr_vertices
2133 integer ( kind=c_int ),
value :: nbr_cells
2134 integer ( kind=c_int ) :: nbr_vertices_per_cell(nbr_cells)
2135 real ( kind=c_double ) :: x_vertices(nbr_vertices)
2136 real ( kind=c_double ) :: y_vertices(nbr_vertices)
2137 integer ( kind=c_int ) :: cell_to_vertex(nbr_cells,nbr_vertices)
2138 integer ( kind=c_int ) :: grid_id
2140 end subroutine yac_cdef_grid_unstruct_c
2142 subroutine yac_cdef_grid_unstruct_ll_c ( grid_name, &
2145 nbr_vertices_per_cell, &
2150 bind( c, name=
'yac_cdef_grid_unstruct_ll' )
2152 use,
intrinsic :: iso_c_binding, only : c_int, c_char, c_double
2154 character ( kind=c_char ),
dimension(*) :: grid_name
2155 integer ( kind=c_int ),
value :: nbr_vertices
2156 integer ( kind=c_int ),
value :: nbr_cells
2157 integer ( kind=c_int ) :: nbr_vertices_per_cell(nbr_cells)
2158 real ( kind=c_double ) :: x_vertices(nbr_vertices)
2159 real ( kind=c_double ) :: y_vertices(nbr_vertices)
2160 integer ( kind=c_int ) :: cell_to_vertex(nbr_cells,nbr_vertices)
2161 integer ( kind=c_int ) :: grid_id
2163 end subroutine yac_cdef_grid_unstruct_ll_c
2167 character(len=*),
intent(in) :: grid_name
2168 integer,
intent(in) :: nbr_vertices
2169 integer,
intent(in) :: nbr_cells
2170 integer,
intent(in) :: nbr_vertices_per_cell_in
2172 double precision,
intent(in) :: x_vertices(nbr_vertices)
2173 double precision,
intent(in) :: y_vertices(nbr_vertices)
2175 integer,
intent(in) :: cell_to_vertex_in( &
2176 nbr_vertices_per_cell_in, &
2179 integer,
intent(out) :: grid_id
2181 logical,
optional,
intent(in) :: use_ll_edges
2183 integer :: nbr_vertices_per_cell(nbr_cells)
2184 integer :: cell_to_vertex(nbr_vertices_per_cell_in,nbr_cells)
2185 logical :: use_ll_edges_
2187 nbr_vertices_per_cell(:) = nbr_vertices_per_cell_in
2189 yac_fassert(all(cell_to_vertex_in > 0),
"ERROR(yac_fdef_grid_unstruct_dble): all entries of cell_to_vertex have to be > 0")
2191 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")
2193 cell_to_vertex(:,:) = cell_to_vertex_in(:,:) - 1
2195 if (
present(use_ll_edges))
then
2196 use_ll_edges_ = use_ll_edges
2198 use_ll_edges_ = .false.
2201 if (use_ll_edges_)
then
2202 call yac_cdef_grid_unstruct_ll_c ( trim(grid_name) // c_null_char, &
2205 nbr_vertices_per_cell, &
2211 call yac_cdef_grid_unstruct_c ( trim(grid_name) // c_null_char, &
2214 nbr_vertices_per_cell, &
2241 character(len=*),
intent(in) :: grid_name
2242 integer,
intent(in) :: nbr_vertices(2)
2243 integer,
intent(in) :: cyclic(2)
2244 real,
intent(in) :: &
2245 x_vertices_real(nbr_vertices(1),nbr_vertices(2))
2246 real,
intent(in) :: &
2247 y_vertices_real(nbr_vertices(1),nbr_vertices(2))
2248 integer,
intent(out) :: grid_id
2250 double precision :: x_vertices(nbr_vertices(1),nbr_vertices(2))
2251 double precision :: y_vertices(nbr_vertices(1),nbr_vertices(2))
2253 x_vertices(:,:) = dble(x_vertices_real(:,:))
2254 y_vertices(:,:) = dble(y_vertices_real(:,:))
2279 use,
intrinsic :: iso_c_binding, only : c_null_char
2286 subroutine yac_cdef_grid_curve2d_c ( grid_name, &
2292 bind( c, name=
'yac_cdef_grid_curve2d' )
2294 use,
intrinsic :: iso_c_binding, only : c_int, c_char, c_double
2296 character ( kind=c_char ),
dimension(*) :: grid_name
2297 integer ( kind=c_int ) :: nbr_vertices(2)
2298 integer ( kind=c_int ) :: cyclic(2)
2299 real ( kind=c_double ) :: x_vertices(nbr_vertices(1),nbr_vertices(2))
2300 real ( kind=c_double ) :: y_vertices(nbr_vertices(1),nbr_vertices(2))
2301 integer ( kind=c_int ) :: grid_id
2303 end subroutine yac_cdef_grid_curve2d_c
2307 character(len=*),
intent(in) :: grid_name
2308 integer,
intent(in) :: nbr_vertices(2)
2309 integer,
intent(in) :: cyclic(2)
2310 double precision,
intent(in) :: &
2311 x_vertices(nbr_vertices(1),nbr_vertices(2))
2312 double precision,
intent(in) :: &
2313 y_vertices(nbr_vertices(1),nbr_vertices(2))
2314 integer,
intent(out) :: grid_id
2316 call yac_cdef_grid_curve2d_c ( trim(grid_name) // c_null_char, &
2343 character(len=*),
intent(in) :: grid_name
2344 integer,
intent(in) :: nbr_vertices(2)
2345 integer,
intent(in) :: cyclic(2)
2346 real,
intent(in) :: x_vertices_real(nbr_vertices(1))
2347 real,
intent(in) :: y_vertices_real(nbr_vertices(2))
2348 integer,
intent(out) :: grid_id
2350 double precision :: x_vertices(nbr_vertices(1))
2351 double precision :: y_vertices(nbr_vertices(2))
2353 x_vertices(:) = dble(x_vertices_real(:))
2354 y_vertices(:) = dble(y_vertices_real(:))
2379 use,
intrinsic :: iso_c_binding, only : c_null_char
2386 subroutine yac_cdef_grid_reg2d_c ( grid_name, &
2392 bind( c, name=
'yac_cdef_grid_reg2d' )
2394 use,
intrinsic :: iso_c_binding, only : c_int, c_char, c_double
2396 character ( kind=c_char ),
dimension(*) :: grid_name
2397 integer ( kind=c_int ) :: nbr_vertices(2)
2398 integer ( kind=c_int ) :: cyclic(2)
2399 real ( kind=c_double ) :: x_vertices(nbr_vertices(1))
2400 real ( kind=c_double ) :: y_vertices(nbr_vertices(2))
2401 integer ( kind=c_int ) :: grid_id
2403 end subroutine yac_cdef_grid_reg2d_c
2407 character(len=*),
intent(in) :: grid_name
2408 integer,
intent(in) :: nbr_vertices(2)
2409 integer,
intent(in) :: cyclic(2)
2410 double precision,
intent(in) :: x_vertices(nbr_vertices(1))
2411 double precision,
intent(in) :: y_vertices(nbr_vertices(2))
2412 integer,
intent(out) :: grid_id
2414 call yac_cdef_grid_reg2d_c ( trim(grid_name) // c_null_char, &
2435 subroutine yac_cset_global_index_c ( global_index, &
2438 bind( c, name=
'yac_cset_global_index' )
2440 use,
intrinsic :: iso_c_binding, only : c_int
2442 integer ( kind=c_int ) :: global_index(*)
2443 integer ( kind=c_int ),
value :: location
2444 integer ( kind=c_int ),
value :: grid_id
2446 end subroutine yac_cset_global_index_c
2450 integer,
intent(in) :: global_index(*)
2451 integer,
intent(in) :: location
2452 integer,
intent(in) :: grid_id
2454 call yac_cset_global_index_c ( global_index, &
2467 use,
intrinsic :: iso_c_binding, only : c_size_t
2471 logical,
intent(in) :: is_core(*)
2474 integer,
intent(in) :: location
2475 integer,
intent(in) :: grid_id
2477 integer (kind=c_size_t) :: i, count
2478 integer,
allocatable :: int_is_core(:)
2482 function yac_cget_grid_size_c ( location, &
2484 result( grid_size ) &
2485 bind( c, name=
'yac_cget_grid_size' )
2487 use,
intrinsic :: iso_c_binding, only : c_int, c_size_t
2489 integer ( kind=c_int ),
value :: location
2490 integer ( kind=c_int ),
value :: grid_id
2491 integer ( kind=c_size_t) :: grid_size
2493 end function yac_cget_grid_size_c
2497 count = yac_cget_grid_size_c(location, grid_id)
2498 allocate(int_is_core(count))
2501 if ( is_core(i) )
then
2524 subroutine yac_cset_core_mask_c ( mask, &
2527 bind( c, name=
'yac_cset_core_mask' )
2529 use,
intrinsic :: iso_c_binding, only : c_int
2531 integer ( kind=c_int ) :: mask(*)
2532 integer ( kind=c_int ),
value :: location
2533 integer ( kind=c_int ),
value :: grid_id
2535 end subroutine yac_cset_core_mask_c
2540 integer,
intent(in) :: is_core(*)
2543 integer,
intent(in) :: location
2544 integer,
intent(in) :: grid_id
2546 call yac_cset_core_mask_c ( is_core, &
2558 use,
intrinsic :: iso_c_binding, only : c_size_t
2562 logical,
intent(in) :: is_valid(*)
2565 integer,
intent(in) :: points_id
2567 integer ( kind=c_size_t) :: i, count
2568 integer,
allocatable :: int_is_valid(:)
2572 function yac_cget_points_size_c ( points_id ) &
2573 result( points_size ) &
2574 bind( c, name=
'yac_cget_points_size' )
2576 use,
intrinsic :: iso_c_binding, only : c_int, c_size_t
2578 integer ( kind=c_int ),
value :: points_id
2579 integer ( kind=c_size_t) :: points_size
2581 end function yac_cget_points_size_c
2585 count = yac_cget_points_size_c(points_id)
2586 allocate(int_is_valid(count))
2589 int_is_valid(i) =
merge(1,0,is_valid(i))
2605 subroutine yac_cset_mask_c ( is_valid, &
2607 bind( c, name=
'yac_cset_mask' )
2609 use,
intrinsic :: iso_c_binding, only : c_int
2611 integer ( kind=c_int ) :: is_valid(*)
2612 integer ( kind=c_int ),
value :: points_id
2614 end subroutine yac_cset_mask_c
2618 integer,
intent(in) :: is_valid(*)
2621 integer,
intent(in) :: points_id
2623 call yac_cset_mask_c ( is_valid, points_id )
2639 integer,
intent(in) :: grid_id
2640 integer,
intent(in) :: nbr_points
2641 integer,
intent(in) :: location
2642 logical,
intent(in) :: is_valid(*)
2645 integer,
intent(out) :: mask_id
2648 integer,
allocatable :: int_is_valid(:)
2650 allocate(int_is_valid(nbr_points))
2652 do i = 1, nbr_points
2653 int_is_valid(i) =
merge(1,0,is_valid(i))
2676 subroutine yac_cdef_mask_c ( grid_id, &
2681 bind( c, name=
'yac_cdef_mask' )
2683 use,
intrinsic :: iso_c_binding, only : c_int
2685 integer ( kind=c_int ),
value :: grid_id
2686 integer ( kind=c_int ),
value :: nbr_points
2687 integer ( kind=c_int ),
value :: location
2688 integer ( kind=c_int ) :: is_valid(*)
2689 integer ( kind=c_int ) :: mask_id
2691 end subroutine yac_cdef_mask_c
2695 integer,
intent(in) :: grid_id
2696 integer,
intent(in) :: nbr_points
2697 integer,
intent(in) :: location
2698 integer,
intent(in) :: is_valid(*)
2701 integer,
intent(out) :: mask_id
2703 call yac_cdef_mask_c ( grid_id, &
2724 integer,
intent(in) :: grid_id
2725 integer,
intent(in) :: nbr_points
2726 integer,
intent(in) :: location
2727 logical,
intent(in) :: is_valid(*)
2730 character(len=*),
intent(in) :: name
2731 integer,
intent(out) :: mask_id
2734 integer,
allocatable :: int_is_valid(:)
2736 allocate(int_is_valid(nbr_points))
2738 do i = 1, nbr_points
2739 int_is_valid(i) =
merge(1,0,is_valid(i))
2758 use,
intrinsic :: iso_c_binding, only : c_null_char
2766 subroutine yac_cdef_mask_named_c ( grid_id, &
2772 bind( c, name=
'yac_cdef_mask_named' )
2774 use,
intrinsic :: iso_c_binding, only : c_int, c_char
2776 integer ( kind=c_int ),
value :: grid_id
2777 integer ( kind=c_int ),
value :: nbr_points
2778 integer ( kind=c_int ),
value :: location
2779 integer ( kind=c_int ) :: is_valid(*)
2780 character ( kind=c_char ),
dimension(*) :: name
2781 integer ( kind=c_int ) :: mask_id
2783 end subroutine yac_cdef_mask_named_c
2787 integer,
intent(in) :: grid_id
2788 integer,
intent(in) :: nbr_points
2789 integer,
intent(in) :: location
2790 integer,
intent(in) :: is_valid(*)
2793 character(len=*),
intent(in) :: name
2794 integer,
intent(out) :: mask_id
2796 yac_check_string_len(
"yac_fdef_imask_named", name )
2798 call yac_cdef_mask_named_c ( grid_id, &
2802 trim(name) // c_null_char, &
2818 use,
intrinsic :: iso_c_binding, only : c_null_char
2826 subroutine yac_cdef_field_c ( field_name, &
2834 bind( c, name=
'yac_cdef_field' )
2836 use,
intrinsic :: iso_c_binding, only : c_int, c_char
2838 character ( kind=c_char ),
dimension(*) :: field_name
2839 integer ( kind=c_int ),
value :: component_id
2840 integer ( kind=c_int ) :: point_ids(*)
2841 integer ( kind=c_int ),
value :: num_pointsets
2842 integer ( kind=c_int ),
value :: collection_size
2843 character ( kind=c_char ),
dimension(*) :: timestep
2844 integer ( kind=c_int ),
value :: time_unit
2845 integer ( kind=c_int ) :: field_id
2847 end subroutine yac_cdef_field_c
2854 character(len=*),
intent (in) :: field_name
2855 integer,
intent (in) :: component_id
2856 integer,
intent (in) :: point_ids(*)
2857 integer,
intent (in) :: num_pointsets
2858 integer,
intent (in) :: collection_size
2859 character(len=*),
intent (in) :: timestep
2860 integer,
intent (in) :: time_unit
2861 integer,
intent (out) :: field_id
2863 yac_check_string_len(
"yac_fdef_field", field_name )
2864 yac_check_string_len(
"yac_fdef_field", timestep )
2867 call yac_cdef_field_c ( trim(field_name) // c_null_char, &
2872 trim(timestep) // c_null_char, &
2890 use,
intrinsic :: iso_c_binding, only : c_null_char
2898 subroutine yac_cdef_field_mask_c ( field_name, &
2907 bind( c, name=
'yac_cdef_field_mask' )
2909 use,
intrinsic :: iso_c_binding, only : c_int, c_char
2911 character ( kind=c_char ),
dimension(*) :: field_name
2912 integer ( kind=c_int ),
value :: component_id
2913 integer ( kind=c_int ) :: point_ids(*)
2914 integer ( kind=c_int ) :: mask_ids(*)
2915 integer ( kind=c_int ),
value :: num_pointsets
2916 integer ( kind=c_int ),
value :: collection_size
2917 character ( kind=c_char ),
dimension(*) :: timestep
2918 integer ( kind=c_int ),
value :: time_unit
2919 integer ( kind=c_int ) :: field_id
2921 end subroutine yac_cdef_field_mask_c
2929 character(len=*),
intent (in) :: field_name
2930 integer,
intent (in) :: component_id
2931 integer,
intent (in) :: point_ids(*)
2932 integer,
intent (in) :: mask_ids(*)
2933 integer,
intent (in) :: num_pointsets
2934 integer,
intent (in) :: collection_size
2935 character(len=*),
intent (in) :: timestep
2936 integer,
intent (in) :: time_unit
2937 integer,
intent (out) :: field_id
2939 yac_check_string_len(
"yac_fdef_field_mask", field_name )
2940 yac_check_string_len(
"yac_fdef_field_mask", timestep )
2942 call yac_cdef_field_mask_c ( trim(field_name) // c_null_char, &
2948 trim(timestep) // c_null_char, &
2958 num_interp_fields, &
2959 interp_field_sizes )
2967 subroutine yac_ccheck_field_dimensions_c ( field_id, &
2969 num_interp_fields, &
2970 interp_field_sizes ) &
2971 bind( c, name=
'yac_ccheck_field_dimensions' )
2973 use,
intrinsic :: iso_c_binding, only : c_int
2975 integer ( kind=c_int ),
value :: field_id
2976 integer ( kind=c_int ),
value :: collection_size
2977 integer ( kind=c_int ),
value :: num_interp_fields
2978 integer ( kind=c_int ),
dimension(*) :: interp_field_sizes
2980 end subroutine yac_ccheck_field_dimensions_c
2984 integer,
intent (in) :: field_id
2985 integer,
intent (in) :: collection_size
2986 integer,
intent (in) :: num_interp_fields
2988 integer,
intent (in) :: interp_field_sizes(num_interp_fields)
2991 call yac_ccheck_field_dimensions_c(field_id, &
2993 num_interp_fields, &
3020 integer,
intent (in) :: field_id
3021 integer,
intent (in) :: nbr_hor_points
3022 integer,
intent (in) :: nbr_pointsets
3023 integer,
intent (in) :: collection_size
3024 real,
intent (in) :: send_field(nbr_hor_points, &
3027 integer,
intent (out) :: info
3028 integer,
intent (out) :: ierror
3030 double precision :: send_field_dble(nbr_hor_points, &
3036 field_id, collection_size, nbr_pointsets, &
3037 (/(nbr_hor_points,i=1,nbr_pointsets)/) )
3079 integer,
intent (in) :: field_id
3080 integer,
intent (in) :: nbr_hor_points
3081 integer,
intent (in) :: nbr_pointsets
3082 integer,
intent (in) :: collection_size
3083 real,
intent (in) :: send_field(nbr_hor_points, &
3086 real,
intent (in) :: send_frac_mask(nbr_hor_points, &
3089 integer,
intent (out) :: info
3090 integer,
intent (out) :: ierror
3092 double precision :: send_field_dble(nbr_hor_points, &
3095 double precision :: send_frac_mask_dble(nbr_hor_points, &
3101 field_id, collection_size, nbr_pointsets, &
3102 (/(nbr_hor_points,i=1,nbr_pointsets)/) )
3111 send_frac_mask_dble)
3118 send_frac_mask_dble, &
3143 integer,
intent (in) :: field_id
3144 integer,
intent (in) :: nbr_pointsets
3145 integer,
intent (in) :: collection_size
3146 type(
yac_real_ptr),
intent (in) :: send_field(nbr_pointsets, &
3148 integer,
intent (out) :: info
3149 integer,
intent (out) :: ierror
3156 field_id, collection_size, nbr_pointsets, &
3157 (/(
SIZE(send_field(i, 1)%p),i=1,nbr_pointsets)/) )
3172 do i = 1, collection_size
3173 do j = 1, nbr_pointsets
3174 deallocate(send_field_dble(j, i)%p)
3201 integer,
intent (in) :: field_id
3202 integer,
intent (in) :: nbr_pointsets
3203 integer,
intent (in) :: collection_size
3204 type(
yac_real_ptr),
intent (in) :: send_field(nbr_pointsets, &
3206 type(
yac_real_ptr),
intent (in) :: send_frac_mask(nbr_pointsets, &
3208 integer,
intent (out) :: info
3209 integer,
intent (out) :: ierror
3214 type(
yac_dble_ptr) :: send_frac_mask_dble(nbr_pointsets, &
3218 field_id, collection_size, nbr_pointsets, &
3219 (/(
SIZE(send_field(i, 1)%p),i=1,nbr_pointsets)/) )
3227 send_frac_mask_dble)
3233 send_frac_mask_dble, &
3237 do i = 1, collection_size
3238 do j = 1, nbr_pointsets
3239 deallocate(send_field_dble(j, i)%p)
3240 deallocate(send_frac_mask_dble(j, i)%p)
3265 integer,
intent (in) :: field_id
3266 integer,
intent (in) :: nbr_hor_points
3267 integer,
intent (in) :: collection_size
3268 real,
intent (in) :: send_field(nbr_hor_points, &
3270 integer,
intent (out) :: info
3271 integer,
intent (out) :: ierror
3273 double precision :: send_field_dble(nbr_hor_points, &
3277 field_id, collection_size, 1, (/nbr_hor_points/) )
3315 integer,
intent (in) :: field_id
3316 integer,
intent (in) :: nbr_hor_points
3317 integer,
intent (in) :: collection_size
3318 real,
intent (in) :: send_field(nbr_hor_points, &
3320 real,
intent (in) :: send_frac_mask(nbr_hor_points, &
3322 integer,
intent (out) :: info
3323 integer,
intent (out) :: ierror
3325 double precision :: send_field_dble(nbr_hor_points, &
3327 double precision :: send_frac_mask_dble(nbr_hor_points, &
3330 field_id, collection_size, 1, (/nbr_hor_points/) )
3338 send_frac_mask_dble)
3344 send_frac_mask_dble, &
3372 subroutine yac_cput__c ( field_id, &
3376 ierror ) bind ( c, name='yac_cput_' )
3378 use,
intrinsic :: iso_c_binding, only : c_int, c_double
3380 integer ( kind=c_int ),
value :: field_id
3381 integer ( kind=c_int ),
value :: collection_size
3382 real ( kind=c_double ) :: send_field(*)
3383 integer ( kind=c_int ) :: info
3384 integer ( kind=c_int ) :: ierror
3386 end subroutine yac_cput__c
3390 integer,
intent (in) :: field_id
3391 integer,
intent (in) :: nbr_hor_points
3392 integer,
intent (in) :: nbr_pointsets
3393 integer,
intent (in) :: collection_size
3394 double precision,
intent (in) :: send_field(nbr_hor_points, &
3397 integer,
intent (out) :: info
3398 integer,
intent (out) :: ierror
3403 field_id, collection_size, nbr_pointsets, &
3404 (/(nbr_hor_points,i=1,nbr_pointsets)/) )
3406 call yac_cput__c ( field_id, &
3438 subroutine yac_cput_frac__c ( field_id, &
3444 bind( c, name=
'yac_cput_frac_' )
3446 use,
intrinsic :: iso_c_binding, only : c_int, c_double
3448 integer ( kind=c_int ),
value :: field_id
3449 integer ( kind=c_int ),
value :: collection_size
3450 real ( kind=c_double ) :: send_field(*)
3451 real ( kind=c_double ) :: send_frac_mask(*)
3452 integer ( kind=c_int ) :: info
3453 integer ( kind=c_int ) :: ierror
3455 end subroutine yac_cput_frac__c
3459 integer,
intent (in) :: field_id
3460 integer,
intent (in) :: nbr_hor_points
3461 integer,
intent (in) :: nbr_pointsets
3462 integer,
intent (in) :: collection_size
3463 double precision,
intent (in) :: send_field(nbr_hor_points, &
3466 double precision,
intent (in) :: send_frac_mask(nbr_hor_points, &
3469 integer,
intent (out) :: info
3470 integer,
intent (out) :: ierror
3475 field_id, collection_size, nbr_pointsets, &
3476 (/(nbr_hor_points,i=1,nbr_pointsets)/) )
3478 call yac_cput_frac__c ( field_id, &
3503 use iso_c_binding,
only: c_ptr
3509 subroutine yac_cput_ptr__c ( field_id, &
3514 bind( c, name=
'yac_cput_ptr_' )
3516 use,
intrinsic :: iso_c_binding, only : c_int, c_ptr
3518 integer ( kind=c_int ),
value :: field_id
3519 integer ( kind=c_int ),
value :: collection_size
3520 type(c_ptr) :: send_field(*)
3521 integer ( kind=c_int ) :: info
3522 integer ( kind=c_int ) :: ierror
3524 end subroutine yac_cput_ptr__c
3528 integer,
intent (in) :: field_id
3529 integer,
intent (in) :: nbr_pointsets
3530 integer,
intent (in) :: collection_size
3531 type(
yac_dble_ptr),
intent (in) :: send_field(nbr_pointsets, collection_size)
3532 integer,
intent (out) :: info
3533 integer,
intent (out) :: ierror
3536 type(c_ptr) :: send_field_(nbr_pointsets, collection_size)
3539 field_id, collection_size, nbr_pointsets, &
3540 (/(
SIZE(send_field(i, 1)%p),i=1,nbr_pointsets)/) )
3542 do i = 1, collection_size
3543 do j = 1, nbr_pointsets
3544 send_field_(j, i) = &
3545 yac_dble2cptr(
"yac_fput_dble_ptr",
"send_field", send_field(j, i))
3549 call yac_cput_ptr__c ( field_id, &
3575 use iso_c_binding,
only: c_ptr
3581 subroutine yac_cput_frac_ptr__c ( field_id, &
3587 bind( c, name=
'yac_cput_frac_ptr_' )
3589 use,
intrinsic :: iso_c_binding, only : c_int, c_ptr
3591 integer ( kind=c_int ),
value :: field_id
3592 integer ( kind=c_int ),
value :: collection_size
3593 type(c_ptr) :: send_field(*)
3594 type(c_ptr) :: send_frac_mask(*)
3595 integer ( kind=c_int ) :: info
3596 integer ( kind=c_int ) :: ierror
3598 end subroutine yac_cput_frac_ptr__c
3602 integer,
intent (in) :: field_id
3603 integer,
intent (in) :: nbr_pointsets
3604 integer,
intent (in) :: collection_size
3605 type(
yac_dble_ptr),
intent (in) :: send_field(nbr_pointsets, collection_size)
3606 type(
yac_dble_ptr),
intent (in) :: send_frac_mask(nbr_pointsets, collection_size)
3607 integer,
intent (out) :: info
3608 integer,
intent (out) :: ierror
3611 type(c_ptr) :: send_field_(nbr_pointsets, collection_size)
3612 type(c_ptr) :: send_frac_mask_(nbr_pointsets, collection_size)
3615 field_id, collection_size, nbr_pointsets, &
3616 (/(
SIZE(send_field(i, 1)%p),i=1,nbr_pointsets)/) )
3618 do i = 1, collection_size
3619 do j = 1, nbr_pointsets
3620 send_field_(j, i) = &
3622 "yac_fput_frac_dble_ptr",
"send_field", send_field(j, i))
3623 send_frac_mask_(j, i) = &
3625 "yac_fput_frac_dble_ptr",
"send_frac_mask", send_frac_mask(j, i))
3629 call yac_cput_frac_ptr__c ( field_id, &
3658 subroutine yac_cput__c ( field_id, &
3662 ierror ) bind ( c, name='yac_cput_' )
3664 use,
intrinsic :: iso_c_binding, only : c_int, c_double
3666 integer ( kind=c_int ),
value :: field_id
3667 integer ( kind=c_int ),
value :: collection_size
3668 real ( kind=c_double ) :: send_field(*)
3669 integer ( kind=c_int ) :: info
3670 integer ( kind=c_int ) :: ierror
3672 end subroutine yac_cput__c
3676 integer,
intent (in) :: field_id
3677 integer,
intent (in) :: nbr_hor_points
3678 integer,
intent (in) :: collection_size
3679 double precision,
intent (in) :: send_field(nbr_hor_points, &
3681 integer,
intent (out) :: info
3682 integer,
intent (out) :: ierror
3685 field_id, collection_size, 1, (/nbr_hor_points/) )
3687 call yac_cput__c ( field_id, &
3717 subroutine yac_cput_frac__c ( field_id, &
3723 bind( c, name=
'yac_cput_frac_' )
3725 use,
intrinsic :: iso_c_binding, only : c_int, c_double
3727 integer ( kind=c_int ),
value :: field_id
3728 integer ( kind=c_int ),
value :: collection_size
3729 real ( kind=c_double ) :: send_field(*)
3730 real ( kind=c_double ) :: send_frac_mask(*)
3731 integer ( kind=c_int ) :: info
3732 integer ( kind=c_int ) :: ierror
3734 end subroutine yac_cput_frac__c
3738 integer,
intent (in) :: field_id
3739 integer,
intent (in) :: nbr_hor_points
3740 integer,
intent (in) :: collection_size
3741 double precision,
intent (in) :: send_field(nbr_hor_points, &
3743 double precision,
intent (in) :: send_frac_mask(nbr_hor_points, &
3745 integer,
intent (out) :: info
3746 integer,
intent (out) :: ierror
3749 field_id, collection_size, 1, (/nbr_hor_points/) )
3751 call yac_cput_frac__c ( field_id, &
3774 integer,
intent (in) :: field_id
3775 integer,
intent (in) :: nbr_hor_points
3776 integer,
intent (in) :: collection_size
3777 real,
intent (inout) :: recv_field(nbr_hor_points, collection_size)
3779 integer,
intent (out) :: info
3780 integer,
intent (out) :: ierror
3782 double precision :: recv_field_dble(nbr_hor_points, collection_size)
3785 field_id, collection_size, 1, (/nbr_hor_points/) )
3819 integer,
intent (in) :: field_id
3820 integer,
intent (in) :: collection_size
3822 integer,
intent (out) :: info
3823 integer,
intent (out) :: ierror
3828 field_id, collection_size, 1, (/
SIZE(recv_field(1)%p, 1)/) )
3861 subroutine yac_cget__c ( field_id, &
3865 ierror ) bind ( c, name='yac_cget_' )
3867 use,
intrinsic :: iso_c_binding, only : c_int, c_double
3869 integer ( kind=c_int ),
value :: field_id
3870 integer ( kind=c_int ),
value :: collection_size
3871 real ( kind=c_double ) :: recv_field(*)
3872 integer ( kind=c_int ) :: info
3873 integer ( kind=c_int ) :: ierror
3875 end subroutine yac_cget__c
3879 integer,
intent (in) :: field_id
3880 integer,
intent (in) :: nbr_hor_points
3881 integer,
intent (in) :: collection_size
3882 double precision,
intent (inout):: recv_field(nbr_hor_points, collection_size)
3884 integer,
intent (out) :: info
3885 integer,
intent (out) :: ierror
3888 field_id, collection_size, 1, (/nbr_hor_points/) )
3890 call yac_cget__c ( field_id, &
3906 use iso_c_binding,
only: c_ptr
3912 subroutine yac_cget_c ( field_id, &
3916 ierror ) bind ( c, name='yac_cget' )
3918 use,
intrinsic :: iso_c_binding, only : c_int, c_ptr
3920 integer ( kind=c_int ),
value :: field_id
3921 integer ( kind=c_int ),
value :: collection_size
3922 type(c_ptr) :: recv_field(*)
3923 integer ( kind=c_int ) :: info
3924 integer ( kind=c_int ) :: ierror
3926 end subroutine yac_cget_c
3930 integer,
intent (in) :: field_id
3931 integer,
intent (in) :: collection_size
3933 integer,
intent (out) :: info
3934 integer,
intent (out) :: ierror
3937 type(c_ptr) :: recv_field_(collection_size)
3940 field_id, collection_size, 1, (/
SIZE(recv_field(1)%p)/) )
3942 do i = 1, collection_size
3943 recv_field_(i) =
yac_dble2cptr(
"yac_fget_dble_ptr",
"recv_field", recv_field(i))
3946 call yac_cget_c ( field_id, &
3964 use iso_c_binding,
only: c_ptr
3970 subroutine yac_cget_async_c ( field_id, &
3974 ierror ) bind ( c, name='yac_cget_async' )
3976 use,
intrinsic :: iso_c_binding, only : c_int, c_ptr
3978 integer ( kind=c_int ),
value :: field_id
3979 integer ( kind=c_int ),
value :: collection_size
3980 type(c_ptr) :: recv_field(*)
3981 integer ( kind=c_int ) :: info
3982 integer ( kind=c_int ) :: ierror
3984 end subroutine yac_cget_async_c
3988 integer,
intent (in) :: field_id
3989 integer,
intent (in) :: collection_size
3991 integer,
intent (out) :: info
3992 integer,
intent (out) :: ierror
3995 type(c_ptr) :: recv_field_(collection_size)
3998 field_id, collection_size, 1, (/
SIZE(recv_field(1)%p)/) )
4000 do i = 1, collection_size
4001 recv_field_(i) =
yac_dble2cptr(
"yac_fget_async_dble_ptr",
"recv_field", recv_field(i))
4004 call yac_cget_async_c ( field_id, &
4016 send_nbr_hor_points, &
4017 send_nbr_pointsets, &
4018 recv_nbr_hor_points, &
4031 integer,
intent (in) :: send_field_id
4032 integer,
intent (in) :: recv_field_id
4033 integer,
intent (in) :: send_nbr_hor_points
4034 integer,
intent (in) :: send_nbr_pointsets
4035 integer,
intent (in) :: recv_nbr_hor_points
4036 integer,
intent (in) :: collection_size
4037 real,
intent (in) :: send_field(send_nbr_hor_points, &
4038 send_nbr_pointsets, &
4041 real,
intent (inout) :: recv_field(recv_nbr_hor_points, &
4044 integer,
intent (out) :: send_info
4045 integer,
intent (out) :: recv_info
4046 integer,
intent (out) :: ierror
4048 double precision :: send_buffer(send_nbr_hor_points, &
4049 send_nbr_pointsets, &
4051 double precision :: recv_buffer(recv_nbr_hor_points, &
4057 send_field_id, collection_size, send_nbr_pointsets, &
4058 (/(send_nbr_hor_points,i=1,send_nbr_pointsets)/) )
4060 recv_field_id, collection_size, 1, (/recv_nbr_hor_points/) )
4063 send_nbr_hor_points, &
4064 send_nbr_pointsets, &
4069 recv_nbr_hor_points, &
4076 send_nbr_hor_points, &
4077 send_nbr_pointsets, &
4078 recv_nbr_hor_points, &
4087 recv_nbr_hor_points, &
4096 send_nbr_hor_points, &
4097 send_nbr_pointsets, &
4098 recv_nbr_hor_points, &
4112 integer,
intent (in) :: send_field_id
4113 integer,
intent (in) :: recv_field_id
4114 integer,
intent (in) :: send_nbr_hor_points
4115 integer,
intent (in) :: send_nbr_pointsets
4116 integer,
intent (in) :: recv_nbr_hor_points
4117 integer,
intent (in) :: collection_size
4118 real,
intent (in) :: send_field(send_nbr_hor_points, &
4119 send_nbr_pointsets, &
4122 real,
intent (in) :: send_frac_mask(send_nbr_hor_points, &
4123 send_nbr_pointsets, &
4126 real,
intent (inout) :: recv_field(recv_nbr_hor_points, &
4129 integer,
intent (out) :: send_info
4130 integer,
intent (out) :: recv_info
4131 integer,
intent (out) :: ierror
4133 double precision :: send_buffer(send_nbr_hor_points, &
4134 send_nbr_pointsets, &
4136 double precision :: send_frac_mask_buffer(send_nbr_hor_points, &
4137 send_nbr_pointsets, &
4139 double precision :: recv_buffer(recv_nbr_hor_points, &
4145 send_field_id, collection_size, send_nbr_pointsets, &
4146 (/(send_nbr_hor_points,i=1,send_nbr_pointsets)/) )
4148 recv_field_id, collection_size, 1, (/recv_nbr_hor_points/) )
4151 send_nbr_hor_points, &
4152 send_nbr_pointsets, &
4157 send_frac_mask_buffer)
4159 recv_nbr_hor_points, &
4166 send_nbr_hor_points, &
4167 send_nbr_pointsets, &
4168 recv_nbr_hor_points, &
4171 send_frac_mask_buffer, &
4178 recv_nbr_hor_points, &
4187 send_nbr_pointsets, &
4200 integer,
intent (in) :: send_field_id
4201 integer,
intent (in) :: recv_field_id
4202 integer,
intent (in) :: send_nbr_pointsets
4203 integer,
intent (in) :: collection_size
4205 send_field(send_nbr_pointsets, &
4210 integer,
intent (out) :: send_info
4211 integer,
intent (out) :: recv_info
4212 integer,
intent (out) :: ierror
4215 type(
yac_dble_ptr) :: send_field_dble(send_nbr_pointsets, collection_size)
4219 send_field_id, collection_size, send_nbr_pointsets, &
4220 (/(
SIZE(send_field(i,1)%p),i=1,send_nbr_pointsets)/) )
4222 recv_field_id, collection_size, 1, (/
SIZE(recv_field(1)%p)/) )
4225 send_nbr_pointsets, &
4236 send_nbr_pointsets, &
4248 do i = 1, collection_size
4249 do j = 1, send_nbr_pointsets
4250 deallocate(send_field_dble(j, i)%p)
4258 send_nbr_pointsets, &
4272 integer,
intent (in) :: send_field_id
4273 integer,
intent (in) :: recv_field_id
4274 integer,
intent (in) :: send_nbr_pointsets
4275 integer,
intent (in) :: collection_size
4277 send_field(send_nbr_pointsets, &
4281 send_frac_mask(send_nbr_pointsets, &
4286 integer,
intent (out) :: send_info
4287 integer,
intent (out) :: recv_info
4288 integer,
intent (out) :: ierror
4291 type(
yac_dble_ptr) :: send_field_dble(send_nbr_pointsets, collection_size)
4292 type(
yac_dble_ptr) :: send_frac_mask_dble(send_nbr_pointsets, collection_size)
4296 send_field_id, collection_size, send_nbr_pointsets, &
4297 (/(
SIZE(send_field(i,1)%p),i=1,send_nbr_pointsets)/) )
4299 recv_field_id, collection_size, 1, (/
SIZE(recv_field(1)%p)/) )
4302 send_nbr_pointsets, &
4307 send_frac_mask_dble)
4315 send_nbr_pointsets, &
4318 send_frac_mask_dble, &
4328 do i = 1, collection_size
4329 do j = 1, send_nbr_pointsets
4330 deallocate(send_field_dble(j, i)%p)
4331 deallocate(send_frac_mask_dble(j, i)%p)
4339 send_nbr_hor_points, &
4340 recv_nbr_hor_points, &
4353 integer,
intent (in) :: send_field_id
4354 integer,
intent (in) :: recv_field_id
4355 integer,
intent (in) :: send_nbr_hor_points
4356 integer,
intent (in) :: recv_nbr_hor_points
4357 integer,
intent (in) :: collection_size
4358 real,
intent (in) :: send_field(send_nbr_hor_points, &
4361 real,
intent (inout) :: recv_field(recv_nbr_hor_points, &
4364 integer,
intent (out) :: send_info
4365 integer,
intent (out) :: recv_info
4366 integer,
intent (out) :: ierror
4368 double precision :: send_buffer(send_nbr_hor_points, collection_size)
4369 double precision :: recv_buffer(recv_nbr_hor_points, collection_size)
4372 send_field_id, collection_size, 1, (/send_nbr_hor_points/) )
4374 recv_field_id, collection_size, 1, (/recv_nbr_hor_points/) )
4377 send_nbr_hor_points, &
4383 recv_nbr_hor_points, &
4390 send_nbr_hor_points, &
4391 recv_nbr_hor_points, &
4400 recv_nbr_hor_points, &
4409 send_nbr_hor_points, &
4410 recv_nbr_hor_points, &
4424 integer,
intent (in) :: send_field_id
4425 integer,
intent (in) :: recv_field_id
4426 integer,
intent (in) :: send_nbr_hor_points
4427 integer,
intent (in) :: recv_nbr_hor_points
4428 integer,
intent (in) :: collection_size
4429 real,
intent (in) :: send_field(send_nbr_hor_points, &
4432 real,
intent (in) :: send_frac_mask(send_nbr_hor_points, &
4435 real,
intent (inout) :: recv_field(recv_nbr_hor_points, &
4438 integer,
intent (out) :: send_info
4439 integer,
intent (out) :: recv_info
4440 integer,
intent (out) :: ierror
4442 double precision :: send_buffer(send_nbr_hor_points, collection_size)
4443 double precision :: send_frac_mask_buffer(send_nbr_hor_points, collection_size)
4444 double precision :: recv_buffer(recv_nbr_hor_points, collection_size)
4447 send_field_id, collection_size, 1, (/send_nbr_hor_points/) )
4449 recv_field_id, collection_size, 1, (/recv_nbr_hor_points/) )
4452 send_nbr_hor_points, &
4457 send_frac_mask_buffer)
4460 recv_nbr_hor_points, &
4467 send_nbr_hor_points, &
4468 recv_nbr_hor_points, &
4471 send_frac_mask_buffer, &
4478 recv_nbr_hor_points, &
4499 send_nbr_hor_points, &
4500 send_nbr_pointsets, &
4501 recv_nbr_hor_points, &
4515 subroutine yac_cexchange__c ( send_field_id, &
4523 bind( c, name=
'yac_cexchange_' )
4525 use,
intrinsic :: iso_c_binding, only : c_int, c_double
4527 integer ( kind=c_int ),
value :: send_field_id
4528 integer ( kind=c_int ),
value :: recv_field_id
4529 integer ( kind=c_int ),
value :: collection_size
4530 real ( kind=c_double ) :: send_field(*)
4531 real ( kind=c_double ) :: recv_field(*)
4532 integer ( kind=c_int ) :: send_info
4533 integer ( kind=c_int ) :: recv_info
4534 integer ( kind=c_int ) :: ierror
4536 end subroutine yac_cexchange__c
4540 integer,
intent (in) :: send_field_id
4541 integer,
intent (in) :: recv_field_id
4542 integer,
intent (in) :: send_nbr_hor_points
4543 integer,
intent (in) :: send_nbr_pointsets
4544 integer,
intent (in) :: recv_nbr_hor_points
4545 integer,
intent (in) :: collection_size
4546 double precision,
intent (in) :: &
4548 send_nbr_hor_points, &
4549 send_nbr_pointsets, &
4551 double precision,
intent (inout):: &
4553 recv_nbr_hor_points, &
4555 integer,
intent (out) :: send_info
4556 integer,
intent (out) :: recv_info
4557 integer,
intent (out) :: ierror
4562 send_field_id, collection_size, send_nbr_pointsets, &
4563 (/(send_nbr_hor_points,i=1,send_nbr_pointsets)/) )
4565 recv_field_id, collection_size, 1, (/recv_nbr_hor_points/) )
4567 call yac_cexchange__c ( send_field_id, &
4593 send_nbr_hor_points, &
4594 send_nbr_pointsets, &
4595 recv_nbr_hor_points, &
4610 subroutine yac_cexchange_frac__c ( send_field_id, &
4619 bind( c, name=
'yac_cexchange_frac_' )
4621 use,
intrinsic :: iso_c_binding, only : c_int, c_double
4623 integer ( kind=c_int ),
value :: send_field_id
4624 integer ( kind=c_int ),
value :: recv_field_id
4625 integer ( kind=c_int ),
value :: collection_size
4626 real ( kind=c_double ) :: send_field(*)
4627 real ( kind=c_double ) :: send_frac_mask(*)
4628 real ( kind=c_double ) :: recv_field(*)
4629 integer ( kind=c_int ) :: send_info
4630 integer ( kind=c_int ) :: recv_info
4631 integer ( kind=c_int ) :: ierror
4633 end subroutine yac_cexchange_frac__c
4637 integer,
intent (in) :: send_field_id
4638 integer,
intent (in) :: recv_field_id
4639 integer,
intent (in) :: send_nbr_hor_points
4640 integer,
intent (in) :: send_nbr_pointsets
4641 integer,
intent (in) :: recv_nbr_hor_points
4642 integer,
intent (in) :: collection_size
4643 double precision,
intent (in) :: &
4645 send_nbr_hor_points, &
4646 send_nbr_pointsets, &
4648 double precision,
intent (in) :: &
4650 send_nbr_hor_points, &
4651 send_nbr_pointsets, &
4653 double precision,
intent (inout):: &
4655 recv_nbr_hor_points, &
4657 integer,
intent (out) :: send_info
4658 integer,
intent (out) :: recv_info
4659 integer,
intent (out) :: ierror
4664 send_field_id, collection_size, send_nbr_pointsets, &
4665 (/(send_nbr_hor_points,i=1,send_nbr_pointsets)/) )
4667 recv_field_id, collection_size, 1, (/recv_nbr_hor_points/) )
4669 call yac_cexchange_frac__c ( send_field_id, &
4693 send_nbr_pointsets, &
4703 use iso_c_binding,
only: c_ptr
4709 subroutine yac_cexchange_ptr__c ( send_field_id, &
4717 bind( c, name=
'yac_cexchange_ptr_' )
4719 use,
intrinsic :: iso_c_binding, only : c_int, c_ptr
4721 integer ( kind=c_int ),
value :: send_field_id
4722 integer ( kind=c_int ),
value :: recv_field_id
4723 integer ( kind=c_int ),
value :: collection_size
4724 type(c_ptr) :: send_field(*)
4725 type(c_ptr) :: recv_field(*)
4726 integer ( kind=c_int ) :: send_info
4727 integer ( kind=c_int ) :: recv_info
4728 integer ( kind=c_int ) :: ierror
4730 end subroutine yac_cexchange_ptr__c
4734 integer,
intent (in) :: send_field_id
4735 integer,
intent (in) :: recv_field_id
4736 integer,
intent (in) :: send_nbr_pointsets
4737 integer,
intent (in) :: collection_size
4739 send_field(send_nbr_pointsets, &
4742 integer,
intent (out) :: send_info
4743 integer,
intent (out) :: recv_info
4744 integer,
intent (out) :: ierror
4747 type(c_ptr) :: send_field_(send_nbr_pointsets, collection_size)
4748 type(c_ptr) :: recv_field_(collection_size)
4751 send_field_id, collection_size, send_nbr_pointsets, &
4752 (/(
SIZE(send_field(i,1)%p),i=1,send_nbr_pointsets)/) )
4754 recv_field_id, collection_size, 1, (/
SIZE(recv_field(1)%p)/) )
4756 do i = 1, collection_size
4757 do j = 1, send_nbr_pointsets
4758 send_field_(j, i) =
yac_dble2cptr(
"yac_fexchange_dble_ptr",
"send_field", send_field(j, i))
4761 do i = 1, collection_size
4762 recv_field_(i) =
yac_dble2cptr(
"yac_fexchange_dble_ptr",
"recv_field", recv_field(i))
4765 call yac_cexchange_ptr__c ( send_field_id, &
4789 send_nbr_pointsets, &
4800 use iso_c_binding,
only: c_ptr
4806 subroutine yac_cexchange_frac_ptr__c ( send_field_id, &
4815 bind( c, name=
'yac_cexchange_frac_ptr_' )
4817 use,
intrinsic :: iso_c_binding, only : c_int, c_ptr
4819 integer ( kind=c_int ),
value :: send_field_id
4820 integer ( kind=c_int ),
value :: recv_field_id
4821 integer ( kind=c_int ),
value :: collection_size
4822 type(c_ptr) :: send_field(*)
4823 type(c_ptr) :: send_frac_mask(*)
4824 type(c_ptr) :: recv_field(*)
4825 integer ( kind=c_int ) :: send_info
4826 integer ( kind=c_int ) :: recv_info
4827 integer ( kind=c_int ) :: ierror
4829 end subroutine yac_cexchange_frac_ptr__c
4833 integer,
intent (in) :: send_field_id
4834 integer,
intent (in) :: recv_field_id
4835 integer,
intent (in) :: send_nbr_pointsets
4836 integer,
intent (in) :: collection_size
4838 send_field(send_nbr_pointsets, &
4841 send_frac_mask(send_nbr_pointsets, &
4844 integer,
intent (out) :: send_info
4845 integer,
intent (out) :: recv_info
4846 integer,
intent (out) :: ierror
4849 type(c_ptr) :: send_field_(send_nbr_pointsets, collection_size)
4850 type(c_ptr) :: send_frac_mask_(send_nbr_pointsets, collection_size)
4851 type(c_ptr) :: recv_field_(collection_size)
4854 send_field_id, collection_size, send_nbr_pointsets, &
4855 (/(
SIZE(send_field(i,1)%p),i=1,send_nbr_pointsets)/) )
4857 send_field_id, collection_size, send_nbr_pointsets, &
4858 (/(
SIZE(send_frac_mask(i,1)%p),i=1,send_nbr_pointsets)/) )
4860 recv_field_id, collection_size, 1, (/
SIZE(recv_field(1)%p)/) )
4862 do i = 1, collection_size
4863 do j = 1, send_nbr_pointsets
4864 send_field_(j, i) = &
4866 "yac_fexchange_frac_dble_ptr",
"send_field", send_field(j, i))
4867 send_frac_mask_(j, i) = &
4869 "yac_fexchange_frac_dble_ptr",
"send_frac_mask", send_frac_mask(j, i))
4872 do i = 1, collection_size
4873 recv_field_(i) =
yac_dble2cptr(
"yac_fexchange_frac_dble_ptr",
"recv_field", recv_field(i))
4876 call yac_cexchange_frac_ptr__c ( send_field_id, &
4901 send_nbr_hor_points, &
4902 recv_nbr_hor_points, &
4916 subroutine yac_cexchange__c ( send_field_id, &
4924 bind( c, name=
'yac_cexchange_' )
4926 use,
intrinsic :: iso_c_binding, only : c_int, c_double
4928 integer ( kind=c_int ),
value :: send_field_id
4929 integer ( kind=c_int ),
value :: recv_field_id
4930 integer ( kind=c_int ),
value :: collection_size
4931 real ( kind=c_double ) :: send_field(*)
4932 real ( kind=c_double ) :: recv_field(*)
4933 integer ( kind=c_int ) :: send_info
4934 integer ( kind=c_int ) :: recv_info
4935 integer ( kind=c_int ) :: ierror
4937 end subroutine yac_cexchange__c
4941 integer,
intent (in) :: send_field_id
4942 integer,
intent (in) :: recv_field_id
4943 integer,
intent (in) :: send_nbr_hor_points
4944 integer,
intent (in) :: recv_nbr_hor_points
4945 integer,
intent (in) :: collection_size
4946 double precision,
intent (in) :: &
4947 send_field(send_nbr_hor_points, &
4949 double precision,
intent (inout):: &
4950 recv_field(recv_nbr_hor_points, &
4952 integer,
intent (out) :: send_info
4953 integer,
intent (out) :: recv_info
4954 integer,
intent (out) :: ierror
4957 send_field_id, collection_size, 1, (/send_nbr_hor_points/) )
4959 recv_field_id, collection_size, 1, (/recv_nbr_hor_points/) )
4961 call yac_cexchange__c ( send_field_id, &
4986 send_nbr_hor_points, &
4987 recv_nbr_hor_points, &
5002 subroutine yac_cexchange_frac__c ( send_field_id, &
5011 bind( c, name=
'yac_cexchange_frac_' )
5013 use,
intrinsic :: iso_c_binding, only : c_int, c_double
5015 integer ( kind=c_int ),
value :: send_field_id
5016 integer ( kind=c_int ),
value :: recv_field_id
5017 integer ( kind=c_int ),
value :: collection_size
5018 real ( kind=c_double ) :: send_field(*)
5019 real ( kind=c_double ) :: send_frac_mask(*)
5020 real ( kind=c_double ) :: recv_field(*)
5021 integer ( kind=c_int ) :: send_info
5022 integer ( kind=c_int ) :: recv_info
5023 integer ( kind=c_int ) :: ierror
5025 end subroutine yac_cexchange_frac__c
5029 integer,
intent (in) :: send_field_id
5030 integer,
intent (in) :: recv_field_id
5031 integer,
intent (in) :: send_nbr_hor_points
5032 integer,
intent (in) :: recv_nbr_hor_points
5033 integer,
intent (in) :: collection_size
5034 double precision,
intent (in) :: &
5035 send_field(send_nbr_hor_points, &
5037 double precision,
intent (in) :: &
5038 send_frac_mask(send_nbr_hor_points, &
5040 double precision,
intent (inout):: &
5041 recv_field(recv_nbr_hor_points, &
5043 integer,
intent (out) :: send_info
5044 integer,
intent (out) :: recv_info
5045 integer,
intent (out) :: ierror
5048 send_field_id, collection_size, 1, (/send_nbr_hor_points/) )
5050 recv_field_id, collection_size, 1, (/recv_nbr_hor_points/) )
5052 call yac_cexchange_frac__c ( send_field_id, &
5074 subroutine yac_ctest_c ( field_id, flag ) &
5075 bind( c, name=
'yac_ctest' )
5077 use,
intrinsic :: iso_c_binding, only : c_int
5079 integer ( kind=c_int ),
value :: field_id
5080 integer ( kind=c_int ) :: flag
5082 end subroutine yac_ctest_c
5086 integer,
intent (in) :: field_id
5087 integer,
intent (out) :: flag
5089 call yac_ctest_c ( field_id, flag )
5101 subroutine yac_ctest_c ( field_id, flag ) &
5102 bind( c, name=
'yac_ctest' )
5104 use,
intrinsic :: iso_c_binding, only : c_int
5106 integer ( kind=c_int ),
value :: field_id
5107 integer ( kind=c_int ) :: flag
5109 end subroutine yac_ctest_c
5113 integer,
intent (in) :: field_id
5114 logical,
intent (out) :: flag
5118 call yac_ctest_c ( field_id, iflag )
5134 subroutine yac_cwait_c ( field_id ) &
5135 bind( c, name=
'yac_cwait' )
5137 use,
intrinsic :: iso_c_binding, only : c_int
5139 integer ( kind=c_int ),
value :: field_id
5141 end subroutine yac_cwait_c
5145 integer,
intent (in) :: field_id
5147 call yac_cwait_c ( field_id )
5161 subroutine yac_get_comp_comm_c ( comp_id, comp_comm ) &
5162 bind( c, name=
'yac_get_comp_comm_f2c' )
5164 use,
intrinsic :: iso_c_binding, only : c_int
5167 integer ( kind=c_int ),
value :: comp_id
5168 integer ( kind=YAC_MPI_FINT_KIND ) :: comp_comm
5170 end subroutine yac_get_comp_comm_c
5174 integer,
intent (in) :: comp_id
5175 integer,
intent (out) :: comp_comm
5177 call yac_get_comp_comm_c ( comp_id, comp_comm )
5185 use,
intrinsic :: iso_c_binding, only : c_null_char, c_ptr, c_loc, c_char
5193 subroutine yac_cget_comps_comm_c ( comp_names, &
5196 bind( c, name=
'yac_cget_comps_comm_f2c' )
5198 use,
intrinsic :: iso_c_binding, only : c_int, c_ptr
5201 type ( c_ptr ) :: comp_names(*)
5202 integer ( kind=c_int ),
value :: num_comps
5203 integer ( kind=YAC_MPI_FINT_KIND ) :: comps_comm
5205 end subroutine yac_cget_comps_comm_c
5209 integer,
intent(in) :: num_comps
5210 character(kind=c_char, len=*),
intent(in) :: &
5211 comp_names(num_comps)
5212 integer,
intent (out) :: comps_comm
5215 character(kind=c_char),
target :: comp_names_cpy(YAC_MAX_CHARLEN+1, num_comps)
5216 type(c_ptr) :: comp_name_ptrs(num_comps)
5218 comp_names_cpy = c_null_char
5221 yac_check_string_len(
"yac_fget_comps_comm", comp_names(i))
5222 do j = 1, len_trim(comp_names(i))
5223 comp_names_cpy(j,i) = comp_names(i)(j:j)
5225 comp_name_ptrs(i) = c_loc(comp_names_cpy(1,i))
5228 call yac_cget_comps_comm_c ( comp_name_ptrs, &
5239 use,
intrinsic :: iso_c_binding, only : c_null_char, c_ptr, c_loc, c_char
5247 subroutine yac_cget_comps_comm_instance_c ( yac_instance_id, &
5251 bind( c, name=
'yac_cget_comps_comm_instance_f2c' )
5253 use,
intrinsic :: iso_c_binding, only : c_int, c_ptr
5256 integer ( kind=c_int ),
value :: yac_instance_id
5257 type ( c_ptr ) :: comp_names(*)
5258 integer ( kind=c_int ),
value :: num_comps
5259 integer ( kind=YAC_MPI_FINT_KIND ) :: comps_comm
5261 end subroutine yac_cget_comps_comm_instance_c
5265 integer,
intent(in) :: yac_instance_id
5266 integer,
intent(in) :: num_comps
5267 character(kind=c_char, len=*),
intent(in) :: &
5268 comp_names(num_comps)
5269 integer,
intent (out) :: comps_comm
5272 character(kind=c_char),
target :: comp_names_cpy(YAC_MAX_CHARLEN+1, num_comps)
5273 type(c_ptr) :: comp_name_ptrs(num_comps)
5275 comp_names_cpy = c_null_char
5278 yac_check_string_len(
"yac_fget_comps_comm_instance", comp_names(i))
5279 do j = 1, len_trim(comp_names(i))
5280 comp_names_cpy(j,i) = comp_names(i)(j:j)
5282 comp_name_ptrs(i) = c_loc(comp_names_cpy(1,i))
5285 call yac_cget_comps_comm_instance_c ( yac_instance_id, &
5302 subroutine yac_csync_def_c ( ) bind ( c, name='yac_csync_def' )
5304 end subroutine yac_csync_def_c
5308 call yac_csync_def_c ( )
5320 subroutine yac_csync_def_instance_c ( yac_instance_id ) &
5321 bind( c, name=
'yac_csync_def_instance' )
5323 use,
intrinsic :: iso_c_binding, only : c_int
5325 integer ( kind=c_int ),
value :: yac_instance_id
5327 end subroutine yac_csync_def_instance_c
5331 integer,
intent(in) :: yac_instance_id
5333 call yac_csync_def_instance_c ( yac_instance_id )
5346 subroutine yac_cenddef_c ( ) bind ( c, name='yac_cenddef' )
5348 end subroutine yac_cenddef_c
5352 call yac_cenddef_c ( )
5364 subroutine yac_cenddef_instance_c ( yac_instance_id ) &
5365 bind( c, name=
'yac_cenddef_instance' )
5367 use,
intrinsic :: iso_c_binding, only : c_int
5369 integer ( kind=c_int ),
value :: yac_instance_id
5371 end subroutine yac_cenddef_instance_c
5375 integer,
intent(in) :: yac_instance_id
5377 call yac_cenddef_instance_c ( yac_instance_id )
5383 use,
intrinsic :: iso_c_binding, only : c_ptr
5390 subroutine yac_fenddef_and_emit_config_c ( &
5391 emit_flags, config) &
5392 bind( c, name=
'yac_cenddef_and_emit_config' )
5394 use,
intrinsic :: iso_c_binding, only : c_int, c_ptr
5395 integer ( kind=c_int ),
value :: emit_flags
5396 type(c_ptr) :: config
5398 end subroutine yac_fenddef_and_emit_config_c
5400 subroutine free_c ( ptr ) bind ( c, NAME='free' )
5402 use,
intrinsic :: iso_c_binding, only : c_ptr
5404 type ( c_ptr ),
intent(in),
value :: ptr
5406 end subroutine free_c
5409 integer,
intent (in) :: emit_flags
5410 character (len=:),
ALLOCATABLE :: config
5412 type (c_ptr) :: c_string_ptr
5414 call yac_fenddef_and_emit_config_c(emit_flags, c_string_ptr)
5416 call free_c(c_string_ptr)
5421 yac_instance_id, emit_flags, config)
5423 use,
intrinsic :: iso_c_binding, only : c_ptr
5430 subroutine yac_fenddef_and_emit_config_instance_c ( &
5431 yac_instance_id, emit_flags, config) &
5432 bind( c, name=
'yac_cenddef_and_emit_config_instance' )
5434 use,
intrinsic :: iso_c_binding, only : c_int, c_ptr
5435 integer ( kind=c_int ),
value :: yac_instance_id
5436 integer ( kind=c_int ),
value :: emit_flags
5437 type(c_ptr) :: config
5439 end subroutine yac_fenddef_and_emit_config_instance_c
5441 subroutine free_c ( ptr ) bind ( c, NAME='free' )
5443 use,
intrinsic :: iso_c_binding, only : c_ptr
5445 type ( c_ptr ),
intent(in),
value :: ptr
5447 end subroutine free_c
5450 integer,
intent (in) :: yac_instance_id
5451 integer,
intent (in) :: emit_flags
5452 character (len=:),
ALLOCATABLE :: config
5454 type (c_ptr) :: c_string_ptr
5456 call yac_fenddef_and_emit_config_instance_c( &
5457 yac_instance_id, emit_flags, c_string_ptr)
5459 call free_c(c_string_ptr)
5469 use,
intrinsic :: iso_c_binding, only: c_size_t, c_int
5473 function yac_cget_grid_size_c(location, grid_id)
result (grid_size) &
5474 bind(c, name=
'yac_cget_grid_size')
5475 use,
intrinsic :: iso_c_binding, only: c_size_t, c_int
5476 integer(kind=c_int),
value :: location
5477 integer(kind=c_int),
value :: grid_id
5478 integer(kind=c_size_t) :: grid_size
5479 end function yac_cget_grid_size_c
5482 integer,
intent(in) :: location
5483 integer,
intent(in) :: grid_id
5484 integer :: grid_size
5486 integer(kind=c_size_t) :: c_grid_size
5489 yac_cget_grid_size_c(int(location, c_int), int(grid_id, c_int))
5491 yac_fassert(int(huge(grid_size), c_size_t) >= c_grid_size,
"ERROR(yac_fget_grid_size): grid size exceeds HUGE(grid_size)")
5493 grid_size = int(c_grid_size)
5503 use,
intrinsic :: iso_c_binding, only: c_size_t, c_int
5507 function yac_cget_points_size_c(point_id)
result (points_size) &
5508 bind(c, name=
'yac_cget_points_size')
5509 use,
intrinsic :: iso_c_binding, only: c_size_t, c_int
5510 integer(kind=c_int),
value :: point_id
5511 integer(kind=c_size_t) :: points_size
5512 end function yac_cget_points_size_c
5515 integer,
intent(in) :: point_id
5516 integer :: points_size
5518 integer(kind=c_size_t) :: c_points_size
5520 c_points_size = yac_cget_points_size_c(int(point_id, c_int))
5522 yac_fassert(int(huge(points_size), c_size_t) >= c_points_size,
"ERROR(yac_fget_point_size): point size exceeds HUGE(point_size)")
5524 points_size = int(c_points_size)
5535 use,
intrinsic :: iso_c_binding, only: c_ptr
5539 function yac_cget_nbr_comps_c()
result( nbr_comps ) &
5540 bind(c, name=
'yac_cget_nbr_comps')
5541 use,
intrinsic :: iso_c_binding, only: c_int
5542 integer(kind=c_int) :: nbr_comps
5544 end function yac_cget_nbr_comps_c
5546 subroutine yac_cget_comp_names_c( nbr_comps, comp_names ) &
5547 bind(c, name=
'yac_cget_comp_names')
5548 use,
intrinsic :: iso_c_binding, only: c_int, c_ptr
5549 integer(kind=c_int),
intent(in),
value :: nbr_comps
5550 TYPE(c_ptr),
intent(out) :: comp_names(nbr_comps)
5551 end subroutine yac_cget_comp_names_c
5554 type(
yac_string),
allocatable :: comp_names(:)
5555 integer :: nbr_comps
5557 TYPE(c_ptr),
allocatable :: comp_ptr(:)
5559 nbr_comps = yac_cget_nbr_comps_c()
5560 allocate(comp_ptr(nbr_comps))
5561 allocate(comp_names(nbr_comps))
5562 CALL yac_cget_comp_names_c(nbr_comps, comp_ptr)
5572 use,
intrinsic :: iso_c_binding, only: c_ptr
5576 function yac_cget_nbr_comps_instance_c( yac_instance_id ) &
5577 result( nbr_comps ) &
5578 bind(c, name=
'yac_cget_nbr_comps_instance')
5579 use,
intrinsic :: iso_c_binding, only: c_int
5580 integer(kind=c_int),
value,
intent(in) :: yac_instance_id
5581 integer(kind=c_int) :: nbr_comps
5582 end function yac_cget_nbr_comps_instance_c
5584 subroutine yac_cget_comp_names_instance_c( yac_instance_id, &
5587 bind(c, name=
'yac_cget_comp_names_instance')
5588 use,
intrinsic :: iso_c_binding, only: c_int, c_ptr
5589 integer(kind=c_int),
intent(in),
value :: yac_instance_id
5590 integer(kind=c_int),
intent(in),
value :: nbr_comps
5591 TYPE(c_ptr),
intent(out) :: comp_names(nbr_comps)
5592 end subroutine yac_cget_comp_names_instance_c
5595 integer,
intent(in) :: yac_instance_id
5596 type(
yac_string),
allocatable :: comp_names(:)
5597 integer :: nbr_comps
5599 TYPE(c_ptr),
allocatable :: comp_ptr(:)
5601 nbr_comps = yac_cget_nbr_comps_instance_c(yac_instance_id)
5602 allocate(comp_names(nbr_comps))
5603 allocate(comp_ptr(nbr_comps))
5604 CALL yac_cget_comp_names_instance_c(yac_instance_id, &
5618 use,
intrinsic :: iso_c_binding, only: c_ptr
5623 function yac_cget_nbr_grids_c()
result( nbr_grids ) &
5624 bind(c, name=
'yac_cget_nbr_grids')
5625 use,
intrinsic :: iso_c_binding, only: c_int
5626 integer(kind=c_int) :: nbr_grids
5627 end function yac_cget_nbr_grids_c
5629 subroutine yac_cget_grid_names_c( nbr_grids, grid_names ) &
5630 bind(c, name=
'yac_cget_grid_names')
5631 use,
intrinsic :: iso_c_binding, only: c_int, c_ptr
5632 integer(kind=c_int),
intent(in),
value :: nbr_grids
5633 TYPE(c_ptr),
intent(out) :: grid_names(nbr_grids)
5634 end subroutine yac_cget_grid_names_c
5637 type(
yac_string),
allocatable :: grid_names(:)
5638 integer :: nbr_grids
5640 TYPE(c_ptr),
allocatable :: grid_ptr(:)
5642 nbr_grids = yac_cget_nbr_grids_c()
5643 allocate(grid_ptr(nbr_grids))
5644 CALL yac_cget_grid_names_c(nbr_grids, grid_ptr)
5645 allocate(grid_names(nbr_grids))
5655 use,
intrinsic :: iso_c_binding, only: c_ptr
5660 function yac_cget_nbr_grids_instance_c( yac_instance_id ) &
5661 result( nbr_grids ) &
5662 bind(c, name=
'yac_cget_nbr_grids_instance')
5663 use,
intrinsic :: iso_c_binding, only: c_int
5664 integer(kind=c_int),
value,
intent(in) :: yac_instance_id
5665 integer(kind=c_int) :: nbr_grids
5667 end function yac_cget_nbr_grids_instance_c
5669 subroutine yac_cget_grid_names_instance_c( yac_instance_id, &
5672 bind(c, name=
'yac_cget_grid_names_instance')
5673 use,
intrinsic :: iso_c_binding, only: c_int, c_ptr
5674 integer(kind=c_int),
intent(in),
value :: yac_instance_id
5675 integer(kind=c_int),
intent(in),
value :: nbr_grids
5676 TYPE(c_ptr),
intent(out) :: grid_names(nbr_grids)
5677 end subroutine yac_cget_grid_names_instance_c
5680 integer,
intent(in) :: yac_instance_id
5681 type(
yac_string),
allocatable :: grid_names(:)
5682 integer :: nbr_grids
5684 TYPE(c_ptr),
allocatable :: grid_ptr(:)
5686 nbr_grids = yac_cget_nbr_grids_instance_c(yac_instance_id)
5687 allocate(grid_ptr(nbr_grids))
5688 CALL yac_cget_grid_names_instance_c(yac_instance_id, &
5691 allocate(grid_names(nbr_grids))
5703 use,
intrinsic :: iso_c_binding, only: c_ptr, c_null_char
5708 function yac_cget_comp_nbr_grids_c( comp_name )
result( nbr_grids ) &
5709 bind(c, name=
'yac_cget_comp_nbr_grids')
5710 use,
intrinsic :: iso_c_binding, only: c_int, c_char
5711 character(kind=c_char),
dimension(*),
intent(in) :: comp_name
5712 integer(kind=c_int) :: nbr_grids
5714 end function yac_cget_comp_nbr_grids_c
5716 subroutine yac_cget_comp_grid_names_c( comp_name, &
5719 bind(c, name=
'yac_cget_comp_grid_names')
5720 use,
intrinsic :: iso_c_binding, only: c_int, c_ptr, c_char
5721 character(kind=c_char),
dimension(*),
intent(in) :: comp_name
5722 integer(kind=c_int),
intent(in),
value :: nbr_grids
5723 TYPE(c_ptr),
intent(out) :: grid_names(nbr_grids)
5724 end subroutine yac_cget_comp_grid_names_c
5727 type(
yac_string),
allocatable :: grid_names(:)
5728 CHARACTER(len=*),
intent(in) :: comp_name
5729 integer :: nbr_grids
5731 TYPE(c_ptr),
allocatable :: grid_ptr(:)
5733 nbr_grids = yac_cget_comp_nbr_grids_c(trim(comp_name) // c_null_char)
5734 allocate(grid_ptr(nbr_grids))
5735 CALL yac_cget_comp_grid_names_c(trim(comp_name) // c_null_char, &
5738 allocate(grid_names(nbr_grids))
5748 use,
intrinsic :: iso_c_binding, only: c_ptr, c_null_char
5753 function yac_cget_comp_nbr_grids_instance_c( yac_instance_id, &
5755 result( nbr_grids ) &
5756 bind(c, name=
'yac_cget_comp_nbr_grids_instance')
5757 use,
intrinsic :: iso_c_binding, only: c_int, c_char
5758 character(kind=c_char),
dimension(*),
intent(in) :: comp_name
5759 integer(kind=c_int),
value,
intent(in) :: yac_instance_id
5760 integer(kind=c_int) :: nbr_grids
5761 end function yac_cget_comp_nbr_grids_instance_c
5763 subroutine yac_cget_comp_grid_names_instance_c( yac_instance_id, &
5767 bind(c, name=
'yac_cget_comp_grid_names_instance')
5768 use,
intrinsic :: iso_c_binding, only: c_int, c_ptr, c_char
5769 character(kind=c_char),
dimension(*),
intent(in) :: comp_name
5770 integer(kind=c_int),
intent(in),
value :: yac_instance_id
5771 integer(kind=c_int),
intent(in),
value :: nbr_grids
5772 TYPE(c_ptr),
intent(out) :: grid_names(nbr_grids)
5773 end subroutine yac_cget_comp_grid_names_instance_c
5776 integer,
intent(in) :: yac_instance_id
5777 character(len=*),
intent(in) :: comp_name
5778 type(
yac_string),
allocatable :: grid_names(:)
5779 integer :: nbr_grids
5781 TYPE(c_ptr),
allocatable :: grid_ptr(:)
5784 yac_cget_comp_nbr_grids_instance_c(yac_instance_id, &
5785 trim(comp_name) // c_null_char)
5786 allocate(grid_ptr(nbr_grids))
5787 CALL yac_cget_comp_grid_names_instance_c(yac_instance_id, &
5788 trim(comp_name) // c_null_char, &
5791 allocate(grid_names(nbr_grids))
5803 use,
intrinsic :: iso_c_binding, only: c_ptr, c_null_char
5808 function yac_cget_nbr_fields_c(comp_name, grid_name) &
5809 result( nbr_fields ) &
5810 bind(c, name=
'yac_cget_nbr_fields')
5811 use,
intrinsic :: iso_c_binding, only: c_int, c_char
5812 character(kind=c_char),
dimension(*),
intent(in) :: comp_name
5813 character(kind=c_char),
dimension(*),
intent(in) :: grid_name
5814 integer(kind=c_int) :: nbr_fields
5815 end function yac_cget_nbr_fields_c
5817 subroutine yac_cget_field_names_c( comp_name, &
5821 bind(c, name=
'yac_cget_field_names')
5822 use,
intrinsic :: iso_c_binding, only: c_int, c_ptr, c_char
5823 character(kind=c_char),
dimension(*),
intent(in) :: comp_name
5824 character(kind=c_char),
dimension(*),
intent(in) :: grid_name
5825 integer(kind=c_int),
intent(in),
value :: nbr_fields
5826 TYPE(c_ptr),
intent(out) :: field_names(nbr_fields)
5827 end subroutine yac_cget_field_names_c
5830 character(len=*),
intent(in) :: comp_name
5831 character(len=*),
intent(in) :: grid_name
5832 type(
yac_string),
allocatable :: field_names(:)
5833 integer :: nbr_fields
5835 TYPE(c_ptr),
allocatable :: field_ptr(:)
5837 nbr_fields = yac_cget_nbr_fields_c(trim(comp_name)//c_null_char, &
5838 trim(grid_name)//c_null_char)
5839 allocate(field_ptr(nbr_fields))
5840 CALL yac_cget_field_names_c(trim(comp_name)//c_null_char, &
5841 trim(grid_name)//c_null_char, &
5844 allocate(field_names(nbr_fields))
5853 result( field_names )
5857 use,
intrinsic :: iso_c_binding, only: c_ptr, c_null_char
5862 function yac_cget_nbr_fields_instance_c( yac_instance_id, &
5865 result( nbr_fields ) bind(c, name=
'yac_cget_nbr_fields_instance')
5866 use,
intrinsic :: iso_c_binding, only: c_int, c_char
5867 integer(kind=c_int),
value,
intent(in) :: yac_instance_id
5868 character(kind=c_char),
dimension(*),
intent(in) :: comp_name
5869 character(kind=c_char),
dimension(*),
intent(in) :: grid_name
5870 integer(kind=c_int) :: nbr_fields
5871 end function yac_cget_nbr_fields_instance_c
5873 subroutine yac_cget_field_names_instance_c( yac_instance_id, &
5878 bind(c, name=
'yac_cget_field_names_instance')
5879 use,
intrinsic :: iso_c_binding, only: c_int, c_ptr, c_char
5880 integer(kind=c_int),
intent(in),
value :: yac_instance_id
5881 character(kind=c_char),
dimension(*),
intent(in) :: comp_name
5882 character(kind=c_char),
dimension(*),
intent(in) :: grid_name
5883 integer(kind=c_int),
intent(in),
value :: nbr_fields
5884 TYPE(c_ptr),
intent(out) :: field_names(nbr_fields)
5885 end subroutine yac_cget_field_names_instance_c
5888 integer,
intent(in) :: yac_instance_id
5889 character(len=*),
intent(in) :: comp_name
5890 character(len=*),
intent(in) :: grid_name
5891 type(
yac_string),
allocatable :: field_names(:)
5892 integer :: nbr_fields
5894 TYPE(c_ptr),
allocatable :: field_ptr(:)
5897 yac_cget_nbr_fields_instance_c(yac_instance_id, &
5898 trim(comp_name)//c_null_char, &
5899 trim(grid_name)//c_null_char)
5900 allocate(field_ptr(nbr_fields))
5901 CALL yac_cget_field_names_instance_c(yac_instance_id, &
5902 trim(comp_name)//c_null_char, &
5903 trim(grid_name)//c_null_char, &
5906 allocate(field_names(nbr_fields))
5918 use,
intrinsic :: iso_c_binding, only : c_null_char
5924 function yac_cget_field_id_c ( comp_name, grid_name, field_name ) &
5926 bind( c, name=
'yac_cget_field_id' )
5928 use,
intrinsic :: iso_c_binding, only : c_int, c_char
5930 character ( kind=c_char ),
dimension(*) :: comp_name
5931 character ( kind=c_char ),
dimension(*) :: grid_name
5932 character ( kind=c_char ),
dimension(*) :: field_name
5933 integer ( kind=c_int ) :: field_id
5935 end function yac_cget_field_id_c
5939 character(len=*),
intent (in) :: comp_name
5940 character(len=*),
intent (in) :: grid_name
5941 character(len=*),
intent (in) :: field_name
5944 field_id = yac_cget_field_id_c( trim(comp_name)//c_null_char, &
5945 trim(grid_name)//c_null_char, &
5946 trim(field_name)//c_null_char )
5957 use,
intrinsic :: iso_c_binding, only : c_null_char
5963 function yac_cget_field_id_instance_c ( yac_id, &
5968 bind( c, name=
'yac_cget_field_id_instance' )
5970 use,
intrinsic :: iso_c_binding, only : c_int, c_char
5972 integer( kind=c_int ),
value,
intent(in) :: yac_id
5973 character ( kind=c_char ),
dimension(*) :: comp_name
5974 character ( kind=c_char ),
dimension(*) :: grid_name
5975 character ( kind=c_char ),
dimension(*) :: field_name
5976 integer ( kind=c_int ) :: field_id
5978 end function yac_cget_field_id_instance_c
5982 integer,
intent(in) :: yac_id
5983 character(len=*),
intent (in) :: comp_name
5984 character(len=*),
intent (in) :: grid_name
5985 character(len=*),
intent (in) :: field_name
5989 yac_cget_field_id_instance_c( yac_id, &
5990 trim(comp_name)//c_null_char, &
5991 trim(grid_name)//c_null_char, &
5992 trim(field_name)//c_null_char )
6006 subroutine yac_cget_action_c ( field_id, action ) &
6007 bind( c, name=
'yac_cget_action' )
6009 use,
intrinsic :: iso_c_binding, only : c_int
6011 integer ( kind=c_int ),
value :: field_id
6012 integer ( kind=c_int) :: action
6014 end subroutine yac_cget_action_c
6018 integer,
intent (in) :: field_id
6019 integer,
intent (out) :: action
6026 call yac_cget_action_c(field_id, action)
6040 subroutine yac_cupdate_c ( field_id ) &
6041 bind( c, name=
'yac_cupdate' )
6043 use,
intrinsic :: iso_c_binding, only : c_int
6045 integer ( kind=c_int ),
value :: field_id
6047 end subroutine yac_cupdate_c
6051 integer,
intent (in) :: field_id
6053 call yac_cupdate_c(field_id)
6058 tgt_comp_name, tgt_grid_name, tgt_field_name, &
6059 coupling_timestep, time_unit, time_reduction, interp_stack_config_id, &
6060 src_lag, tgt_lag, weight_file, mapping_side, scale_factor, scale_summand, &
6061 src_mask_names, tgt_mask_name)
6063 use,
intrinsic :: iso_c_binding, only : c_null_char, c_ptr, c_null_ptr, c_loc
6071 subroutine yac_cdef_couple__c( src_comp_name, &
6077 coupling_timestep, &
6080 interp_stack_config_id, &
6087 num_src_mask_names, &
6090 bind( c, name=
'yac_cdef_couple_' )
6092 use,
intrinsic :: iso_c_binding, only : c_int, c_char, c_ptr, c_double
6094 character ( kind=c_char ),
dimension(*) :: src_comp_name
6095 character ( kind=c_char ),
dimension(*) :: src_grid_name
6096 character ( kind=c_char ),
dimension(*) :: src_field_name
6097 character ( kind=c_char ),
dimension(*) :: tgt_comp_name
6098 character ( kind=c_char ),
dimension(*) :: tgt_grid_name
6099 character ( kind=c_char ),
dimension(*) :: tgt_field_name
6100 character ( kind=c_char ),
dimension(*) :: coupling_timestep
6101 integer ( kind=c_int ),
value :: time_unit
6102 integer ( kind=c_int ),
value :: time_reduction
6103 integer ( kind=c_int ),
value :: interp_stack_config_id
6104 integer ( kind=c_int ),
value :: src_lag
6105 integer ( kind=c_int ),
value :: tgt_lag
6106 type ( c_ptr ),
value :: weight_file
6107 integer ( kind=c_int ),
value :: mapping_side
6108 real ( kind=c_double ),
value :: scale_factor
6109 real ( kind=c_double ),
value :: scale_summand
6110 integer ( kind=c_int ),
value :: num_src_mask_names
6111 type ( c_ptr ) :: src_mask_names(*)
6112 type ( c_ptr ),
value :: tgt_mask_name
6113 end subroutine yac_cdef_couple__c
6117 character ( len=* ),
intent(in) :: src_comp_name
6118 character ( len=* ),
intent(in) :: src_grid_name
6119 character ( len=* ),
intent(in) :: src_field_name
6120 character ( len=* ),
intent(in) :: tgt_comp_name
6121 character ( len=* ),
intent(in) :: tgt_grid_name
6122 character ( len=* ),
intent(in) :: tgt_field_name
6123 character ( len=* ),
intent(in) :: coupling_timestep
6124 integer,
intent(in) :: time_unit
6125 integer,
intent(in) :: time_reduction
6126 integer,
intent(in) :: interp_stack_config_id
6127 integer,
intent(in),
optional :: src_lag
6128 integer,
intent(in),
optional :: tgt_lag
6129 character ( len=* ),
intent(in),
optional :: weight_file
6130 integer,
intent(in),
optional :: mapping_side
6131 double precision,
intent(in),
optional :: scale_factor
6132 double precision,
intent(in),
optional :: scale_summand
6133 type(
yac_string),
intent(in),
optional :: src_mask_names(:)
6134 character ( len=* ),
intent(in),
optional :: tgt_mask_name
6137 integer :: src_lag_cpy, tgt_lag_cpy, mapping_side_cpy
6138 character(kind=c_char),
target :: weight_file_cpy(YAC_MAX_CHARLEN+1)
6139 type(c_ptr) :: weight_file_ptr
6140 double precision :: scale_factor_cpy, scale_summand_cpy
6141 integer :: num_src_mask_names
6142 character(kind=c_char),
allocatable,
target :: src_mask_names_cpy(:,:)
6143 type(c_ptr),
allocatable :: src_mask_names_ptr(:)
6144 character(kind=c_char),
target :: tgt_mask_name_cpy(YAC_MAX_CHARLEN+1)
6145 type(c_ptr) :: tgt_mask_name_ptr
6147 yac_check_string_len(
"yac_fdef_couple", src_comp_name )
6148 yac_check_string_len(
"yac_fdef_couple", src_grid_name )
6149 yac_check_string_len(
"yac_fdef_couple", src_field_name )
6150 yac_check_string_len(
"yac_fdef_couple", tgt_comp_name )
6151 yac_check_string_len(
"yac_fdef_couple", tgt_grid_name )
6152 yac_check_string_len(
"yac_fdef_couple", tgt_field_name )
6153 yac_check_string_len(
"yac_fdef_couple", coupling_timestep )
6154 if (
present(src_lag) )
then
6155 src_lag_cpy = src_lag
6159 if (
present(tgt_lag) )
then
6160 tgt_lag_cpy = tgt_lag
6164 if (
present(weight_file) )
then
6165 yac_check_string_len(
"yac_fdef_couple", weight_file )
6166 weight_file_cpy = c_null_char
6167 do i = 1, len_trim(weight_file)
6168 weight_file_cpy(i) = weight_file(i:i)
6170 weight_file_ptr = c_loc(weight_file_cpy(1))
6172 weight_file_ptr = c_null_ptr
6174 if (
present(mapping_side) )
then
6175 mapping_side_cpy = mapping_side
6177 mapping_side_cpy = 1
6179 if (
present(scale_factor) )
then
6180 scale_factor_cpy = scale_factor
6182 scale_factor_cpy = 1.0
6184 if (
present(scale_summand) )
then
6185 scale_summand_cpy = scale_summand
6187 scale_summand_cpy = 0.0
6189 if (
present(src_mask_names) )
then
6190 num_src_mask_names =
size(src_mask_names)
6191 allocate(src_mask_names_ptr(num_src_mask_names))
6192 allocate(src_mask_names_cpy(yac_max_charlen+1,num_src_mask_names))
6193 src_mask_names_cpy = c_null_char
6194 do i = 1, num_src_mask_names
6195 yac_fassert(
allocated(src_mask_names(i)%string),
"ERROR(yac_fdef_couple): source mask name not allocated")
6196 yac_check_string_len(
"yac_fdef_couple", src_mask_names(i)%string )
6197 do j = 1, len_trim(src_mask_names(i)%string)
6198 src_mask_names_cpy(j, i) = src_mask_names(i)%string(j:j)
6200 src_mask_names_ptr(i) = c_loc(src_mask_names_cpy(1,i))
6203 num_src_mask_names = 0
6204 allocate(src_mask_names_ptr(0))
6206 if (
present(tgt_mask_name) )
then
6207 yac_check_string_len(
"yac_fdef_couple", tgt_mask_name )
6208 tgt_mask_name_cpy = c_null_char
6209 do i = 1, len_trim(tgt_mask_name)
6210 tgt_mask_name_cpy(i) = tgt_mask_name(i:i)
6212 tgt_mask_name_ptr = c_loc(tgt_mask_name_cpy(1))
6214 tgt_mask_name_ptr = c_null_ptr
6217 call yac_cdef_couple__c( trim(src_comp_name) // c_null_char, &
6218 trim(src_grid_name) // c_null_char, &
6219 trim(src_field_name) // c_null_char, &
6220 trim(tgt_comp_name) // c_null_char, &
6221 trim(tgt_grid_name) // c_null_char, &
6222 trim(tgt_field_name) // c_null_char, &
6223 trim(coupling_timestep) // c_null_char, &
6226 interp_stack_config_id, &
6232 scale_summand_cpy, &
6233 num_src_mask_names, &
6234 src_mask_names_ptr, &
6240 src_comp_name, src_grid_name, src_field_name, &
6241 tgt_comp_name, tgt_grid_name, tgt_field_name, &
6242 coupling_timestep, time_unit, time_reduction, &
6243 interp_stack_config_id, src_lag, tgt_lag, &
6244 weight_file, mapping_side, scale_factor, &
6245 scale_summand, src_mask_names, tgt_mask_name )
6247 use,
intrinsic :: iso_c_binding, only : c_null_char, c_ptr, c_null_ptr, c_loc
6255 subroutine yac_cdef_couple_instance__c( instance_id, &
6262 coupling_timestep, &
6265 interp_stack_config_id, &
6272 num_src_mask_names, &
6275 bind( c, name=
'yac_cdef_couple_instance_' )
6277 use,
intrinsic :: iso_c_binding, only : c_int, c_char, c_ptr, c_double
6279 integer ( kind=c_int ),
value :: instance_id
6280 character ( kind=c_char ),
dimension(*) :: src_comp_name
6281 character ( kind=c_char ),
dimension(*) :: src_grid_name
6282 character ( kind=c_char ),
dimension(*) :: src_field_name
6283 character ( kind=c_char ),
dimension(*) :: tgt_comp_name
6284 character ( kind=c_char ),
dimension(*) :: tgt_grid_name
6285 character ( kind=c_char ),
dimension(*) :: tgt_field_name
6286 character ( kind=c_char ),
dimension(*) :: coupling_timestep
6287 integer ( kind=c_int ),
value :: time_unit
6288 integer ( kind=c_int ),
value :: time_reduction
6289 integer ( kind=c_int ),
value :: interp_stack_config_id
6290 integer ( kind=c_int ),
value :: src_lag
6291 integer ( kind=c_int ),
value :: tgt_lag
6292 type ( c_ptr ),
value :: weight_file
6293 integer ( kind=c_int ),
value :: mapping_side
6294 real ( kind=c_double ),
value :: scale_factor
6295 real ( kind=c_double ),
value :: scale_summand
6296 integer ( kind=c_int ),
value :: num_src_mask_names
6297 type ( c_ptr ) :: src_mask_names(*)
6298 type ( c_ptr ),
value :: tgt_mask_name
6299 end subroutine yac_cdef_couple_instance__c
6303 integer,
intent(in) :: instance_id
6304 character ( len=* ),
intent(in) :: src_comp_name
6305 character ( len=* ),
intent(in) :: src_grid_name
6306 character ( len=* ),
intent(in) :: src_field_name
6307 character ( len=* ),
intent(in) :: tgt_comp_name
6308 character ( len=* ),
intent(in) :: tgt_grid_name
6309 character ( len=* ),
intent(in) :: tgt_field_name
6310 character ( len=* ),
intent(in) :: coupling_timestep
6311 integer,
intent(in) :: time_unit
6312 integer,
intent(in) :: time_reduction
6313 integer,
intent(in) :: interp_stack_config_id
6314 integer,
intent(in),
optional :: src_lag
6315 integer,
intent(in),
optional :: tgt_lag
6316 character ( len=* ),
intent(in),
optional :: weight_file
6317 integer,
intent(in),
optional :: mapping_side
6318 double precision,
intent(in),
optional :: scale_factor
6319 double precision,
intent(in),
optional :: scale_summand
6320 type(
yac_string),
intent(in),
optional :: src_mask_names(:)
6321 character ( len=* ),
intent(in),
optional :: tgt_mask_name
6324 integer :: src_lag_cpy, tgt_lag_cpy, mapping_side_cpy
6325 character(kind=c_char),
target :: weight_file_cpy(YAC_MAX_CHARLEN+1)
6326 type(c_ptr) :: weight_file_ptr
6327 double precision :: scale_factor_cpy, scale_summand_cpy
6328 integer :: num_src_mask_names
6329 character(kind=c_char),
allocatable,
target :: src_mask_names_cpy(:,:)
6330 type(c_ptr),
allocatable :: src_mask_names_ptr(:)
6331 character(kind=c_char),
target :: tgt_mask_name_cpy(YAC_MAX_CHARLEN+1)
6332 type(c_ptr) :: tgt_mask_name_ptr
6334 yac_check_string_len(
"yac_fdef_couple_instance", src_comp_name )
6335 yac_check_string_len(
"yac_fdef_couple_instance", src_grid_name )
6336 yac_check_string_len(
"yac_fdef_couple_instance", src_field_name )
6337 yac_check_string_len(
"yac_fdef_couple_instance", tgt_comp_name )
6338 yac_check_string_len(
"yac_fdef_couple_instance", tgt_grid_name )
6339 yac_check_string_len(
"yac_fdef_couple_instance", tgt_field_name )
6340 yac_check_string_len(
"yac_fdef_couple_instance", coupling_timestep )
6341 if (
present(src_lag) )
then
6342 src_lag_cpy = src_lag
6346 if (
present(tgt_lag) )
then
6347 tgt_lag_cpy = tgt_lag
6351 if (
present(weight_file) )
then
6352 yac_check_string_len(
"yac_fdef_couple_instance", weight_file )
6353 weight_file_cpy = c_null_char
6354 do i = 1, len_trim(weight_file)
6355 weight_file_cpy(i) = weight_file(i:i)
6357 weight_file_ptr = c_loc(weight_file_cpy(1))
6359 weight_file_ptr = c_null_ptr
6361 if (
present(mapping_side) )
then
6362 mapping_side_cpy = mapping_side
6364 mapping_side_cpy = 1
6366 if (
present(scale_factor) )
then
6367 scale_factor_cpy = scale_factor
6369 scale_factor_cpy = 1.0
6371 if (
present(scale_summand) )
then
6372 scale_summand_cpy = scale_summand
6374 scale_summand_cpy = 0.0
6376 if (
present(src_mask_names) )
then
6377 num_src_mask_names =
size(src_mask_names)
6378 allocate(src_mask_names_ptr(num_src_mask_names))
6379 allocate(src_mask_names_cpy(yac_max_charlen+1,num_src_mask_names))
6380 src_mask_names_cpy = c_null_char
6381 do i = 1, num_src_mask_names
6382 yac_fassert(
allocated(src_mask_names(i)%string),
"ERROR(yac_fdef_couple): source mask name not allocated")
6383 yac_check_string_len(
"yac_fdef_couple_instance", src_mask_names(i)%string )
6384 do j = 1, len_trim(src_mask_names(i)%string)
6385 src_mask_names_cpy(j, i) = src_mask_names(i)%string(j:j)
6387 src_mask_names_ptr(i) = c_loc(src_mask_names_cpy(1,i))
6390 num_src_mask_names = 0
6391 allocate(src_mask_names_ptr(0))
6393 if (
present(tgt_mask_name) )
then
6394 yac_check_string_len(
"yac_fdef_couple_instance", tgt_mask_name )
6395 tgt_mask_name_cpy = c_null_char
6396 do i = 1, len_trim(tgt_mask_name)
6397 tgt_mask_name_cpy(i) = tgt_mask_name(i:i)
6399 tgt_mask_name_ptr = c_loc(tgt_mask_name_cpy(1))
6401 tgt_mask_name_ptr = c_null_ptr
6404 call yac_cdef_couple_instance__c( instance_id, &
6405 trim(src_comp_name) // c_null_char, &
6406 trim(src_grid_name) // c_null_char, &
6407 trim(src_field_name) // c_null_char, &
6408 trim(tgt_comp_name) // c_null_char, &
6409 trim(tgt_grid_name) // c_null_char, &
6410 trim(tgt_field_name) // c_null_char, &
6411 trim(coupling_timestep) // c_null_char, &
6414 interp_stack_config_id, &
6420 scale_summand_cpy, &
6421 num_src_mask_names, &
6422 src_mask_names_ptr, &
6439 function yac_cget_component_name_from_field_id_c ( field_id ) &
6441 bind( c, name=
'yac_cget_component_name_from_field_id' )
6443 use,
intrinsic :: iso_c_binding, only : c_int, c_ptr
6445 integer ( kind=c_int ),
value :: field_id
6446 TYPE(c_ptr) :: comp_name
6448 end function yac_cget_component_name_from_field_id_c
6452 integer,
intent (in) :: field_id
6453 character (len=:),
allocatable :: comp_name
6456 yac_cget_component_name_from_field_id_c( field_id ))
6472 function yac_cget_grid_name_from_field_id_c ( field_id ) &
6474 bind( c, name=
'yac_cget_grid_name_from_field_id' )
6476 use,
intrinsic :: iso_c_binding, only : c_int, c_ptr
6478 integer ( kind=c_int ),
value :: field_id
6479 TYPE(c_ptr) :: grid_name
6481 end function yac_cget_grid_name_from_field_id_c
6485 integer,
intent (in) :: field_id
6486 character (len=:),
ALLOCATABLE :: grid_name
6489 yac_cget_grid_name_from_field_id_c( field_id ))
6505 function yac_cget_field_name_from_field_id_c ( field_id ) &
6506 result(field_name) &
6507 bind( c, name=
'yac_cget_field_name_from_field_id' )
6509 use,
intrinsic :: iso_c_binding, only : c_int, c_ptr
6511 integer ( kind=c_int ),
value :: field_id
6512 TYPE(c_ptr) :: field_name
6514 end function yac_cget_field_name_from_field_id_c
6518 integer,
intent (in) :: field_id
6519 character (len=:),
ALLOCATABLE :: field_name
6522 yac_cget_field_name_from_field_id_c( field_id ))
6536 function yac_cget_role_from_field_id_c ( field_id ) &
6537 bind( c, name=
'yac_cget_role_from_field_id' )
6539 use,
intrinsic :: iso_c_binding, only : c_int
6541 integer ( kind=c_int ),
value :: field_id
6542 integer ( kind=c_int ) :: yac_cget_role_from_field_id_c
6544 end function yac_cget_role_from_field_id_c
6548 integer,
intent (in) :: field_id
6552 yac_cget_role_from_field_id_c( field_id )
6563 use,
intrinsic :: iso_c_binding, only: c_null_char
6569 function yac_cget_field_role_c ( comp_name, grid_name, field_name ) &
6570 bind( c, name=
'yac_cget_field_role' )
6572 use,
intrinsic :: iso_c_binding, only : c_int, c_char
6574 character( kind=c_char),
dimension(*),
intent(in) :: comp_name
6575 character( kind=c_char),
dimension(*),
intent(in) :: grid_name
6576 character( kind=c_char),
dimension(*),
intent(in) :: field_name
6577 integer ( kind=c_int ) :: yac_cget_field_role_c
6579 end function yac_cget_field_role_c
6583 character(len=*),
intent(in) :: comp_name
6584 character(len=*),
intent(in) :: grid_name
6585 character(len=*),
intent(in) :: field_name
6588 res = yac_cget_field_role_c( &
6589 trim(comp_name) // c_null_char, &
6590 trim(grid_name) // c_null_char, &
6591 trim(field_name) // c_null_char )
6598 use,
intrinsic :: iso_c_binding, only: c_null_char
6604 function yac_cget_field_role_instance_c ( yac_instance_id, &
6608 bind( c, name=
'yac_cget_field_role_instance' )
6610 use,
intrinsic :: iso_c_binding, only : c_int, c_char
6612 integer( kind=c_int ),
intent(in),
value :: yac_instance_id
6613 character( kind=c_char),
dimension(*),
intent(in) :: comp_name
6614 character( kind=c_char),
dimension(*),
intent(in) :: grid_name
6615 character( kind=c_char),
dimension(*),
intent(in) :: field_name
6616 integer ( kind=c_int ) :: yac_cget_field_role_instance_c
6618 end function yac_cget_field_role_instance_c
6622 integer,
intent(in) :: yac_instance_id
6623 character(len=*),
intent(in) :: comp_name
6624 character(len=*),
intent(in) :: grid_name
6625 character(len=*),
intent(in) :: field_name
6629 yac_cget_field_role_instance_c( &
6631 trim(comp_name) // c_null_char, &
6632 trim(grid_name) // c_null_char, &
6633 trim(field_name) // c_null_char )
6648 function yac_cget_timestep_from_field_id_c ( field_id ) &
6650 bind( c, name=
'yac_cget_timestep_from_field_id' )
6652 use,
intrinsic :: iso_c_binding, only : c_int, c_ptr
6654 integer ( kind=c_int ),
value :: field_id
6655 type(c_ptr) :: string
6657 end function yac_cget_timestep_from_field_id_c
6661 integer,
intent (in) :: field_id
6662 character (len=:),
ALLOCATABLE :: string
6666 yac_cget_timestep_from_field_id_c(field_id))
6675 use,
intrinsic :: iso_c_binding, only: c_ptr, c_null_char
6681 function yac_cget_field_timestep_c ( comp_name, grid_name, field_name) &
6682 result( timestep ) &
6683 bind( c, name=
'yac_cget_field_timestep' )
6685 use,
intrinsic :: iso_c_binding, only : c_char, c_ptr
6687 character( kind=c_char),
dimension(*),
intent(in) :: comp_name
6688 character( kind=c_char),
dimension(*),
intent(in) :: grid_name
6689 character( kind=c_char),
dimension(*),
intent(in) :: field_name
6690 type(c_ptr) :: timestep
6691 end function yac_cget_field_timestep_c
6695 character(len=*),
intent(in) :: comp_name
6696 character(len=*),
intent(in) :: grid_name
6697 character(len=*),
intent(in) :: field_name
6698 character(len=:),
ALLOCATABLE :: timestep
6699 TYPE(c_ptr) :: c_char_ptr
6702 yac_cget_field_timestep_c( &
6703 trim(comp_name) // c_null_char, &
6704 trim(grid_name) // c_null_char, &
6705 trim(field_name) // c_null_char)
6715 use,
intrinsic :: iso_c_binding, only: c_ptr, c_null_char
6721 function yac_cget_field_timestep_instance_c ( yac_instance_id, &
6725 result( timestep ) &
6726 bind( c, name=
'yac_cget_field_timestep_instance' )
6728 use,
intrinsic :: iso_c_binding, only : c_int, c_char, c_ptr
6730 integer( kind=c_int ),
intent(in),
value :: yac_instance_id
6731 character( kind=c_char),
dimension(*),
intent(in) :: comp_name
6732 character( kind=c_char),
dimension(*),
intent(in) :: grid_name
6733 character( kind=c_char),
dimension(*),
intent(in) :: field_name
6734 type(c_ptr) :: timestep
6736 end function yac_cget_field_timestep_instance_c
6740 integer,
intent(in) :: yac_instance_id
6741 character(len=*),
intent(in) :: comp_name
6742 character(len=*),
intent(in) :: grid_name
6743 character(len=*),
intent(in) :: field_name
6744 character(len=:),
ALLOCATABLE :: timestep
6745 type(c_ptr) :: c_char_ptr
6748 yac_cget_field_timestep_instance_c( &
6750 trim(comp_name) // c_null_char, &
6751 trim(grid_name) // c_null_char, &
6752 trim(field_name) // c_null_char)
6769 function yac_cget_field_datetime_c( field_id ) &
6771 bind ( c, name="yac_cget_field_datetime" )
6772 use,
intrinsic :: iso_c_binding, only : c_int, c_ptr
6773 integer (kind=c_int ),
intent(in),
value :: field_id
6774 type(c_ptr) :: datetime
6775 end function yac_cget_field_datetime_c
6778 integer,
intent(in) :: field_id
6779 character(len=:),
allocatable :: datetime
6786 comp_name, grid_name, field_name, frac_mask_fallback_value)
6788 use,
intrinsic :: iso_c_binding, only: c_null_char
6794 subroutine yac_cenable_field_frac_mask_c (comp_name, &
6797 frac_mask_fallback_value) &
6798 bind( c, name="yac_cenable_field_frac_mask" )
6799 use,
intrinsic :: iso_c_binding, only: c_char, c_double
6800 character(kind=c_char),
dimension(*),
intent(in) :: comp_name
6801 character(kind=c_char),
dimension(*),
intent(in) :: grid_name
6802 character(kind=c_char),
dimension(*),
intent(in) :: field_name
6803 real(kind=c_double),
value :: frac_mask_fallback_value
6804 end subroutine yac_cenable_field_frac_mask_c
6807 character(len=*),
intent(in) :: comp_name
6808 character(len=*),
intent(in) :: grid_name
6809 character(len=*),
intent(in) :: field_name
6810 double precision,
intent(in) :: frac_mask_fallback_value
6812 CALL yac_cenable_field_frac_mask_c ( &
6813 trim(comp_name) // c_null_char, &
6814 trim(grid_name) // c_null_char, &
6815 trim(field_name) // c_null_char, &
6816 frac_mask_fallback_value)
6820 grid_name, field_name, frac_mask_fallback_value)
6822 use,
intrinsic :: iso_c_binding, only: c_null_char
6828 subroutine yac_cenable_field_frac_mask_instance_c ( &
6829 yac_instance_id, comp_name, grid_name, field_name, &
6830 frac_mask_fallback_value) &
6831 bind( c, name="yac_cenable_field_frac_mask_instance" )
6832 use,
intrinsic :: iso_c_binding, only: c_char, c_double, c_int
6833 integer(kind=c_int),
intent(in),
value :: yac_instance_id
6834 character(kind=c_char),
dimension(*),
intent(in) :: comp_name
6835 character(kind=c_char),
dimension(*),
intent(in) :: grid_name
6836 character(kind=c_char),
dimension(*),
intent(in) :: field_name
6837 real(kind=c_double),
value :: frac_mask_fallback_value
6838 end subroutine yac_cenable_field_frac_mask_instance_c
6841 integer,
intent(in) :: yac_instance_id
6842 character(len=*),
intent(in) :: comp_name
6843 character(len=*),
intent(in) :: grid_name
6844 character(len=*),
intent(in) :: field_name
6845 double precision,
intent(in) :: frac_mask_fallback_value
6847 CALL yac_cenable_field_frac_mask_instance_c ( &
6849 trim(comp_name) // c_null_char, &
6850 trim(grid_name) // c_null_char, &
6851 trim(field_name) // c_null_char, &
6852 frac_mask_fallback_value)
6862 comp_name, grid_name, field_name )
result( res )
6865 use,
intrinsic :: iso_c_binding, only: c_null_char
6871 function yac_cget_field_frac_mask_fallback_value_c ( &
6872 comp_name, grid_name, field_name ) &
6873 bind( c, name=
'yac_cget_field_frac_mask_fallback_value' )
6875 use,
intrinsic :: iso_c_binding, only : c_double, c_char
6877 character( kind=c_char),
dimension(*),
intent(in) :: comp_name
6878 character( kind=c_char),
dimension(*),
intent(in) :: grid_name
6879 character( kind=c_char),
dimension(*),
intent(in) :: field_name
6880 real ( kind=c_double ) :: yac_cget_field_frac_mask_fallback_value_c
6882 end function yac_cget_field_frac_mask_fallback_value_c
6886 character(len=*),
intent(in) :: comp_name
6887 character(len=*),
intent(in) :: grid_name
6888 character(len=*),
intent(in) :: field_name
6889 double precision :: res
6891 res = yac_cget_field_frac_mask_fallback_value_c( &
6892 trim(comp_name) // c_null_char, &
6893 trim(grid_name) // c_null_char, &
6894 trim(field_name) // c_null_char )
6899 yac_instance_id, comp_name, grid_name, field_name )
6902 use,
intrinsic :: iso_c_binding, only: c_null_char
6908 function yac_cget_field_frac_mask_fallback_value_instance_c ( &
6909 yac_instance_id, comp_name, grid_name, field_name ) &
6910 bind( c, name=
'yac_cget_field_frac_mask_fallback_value_instance' )
6912 use,
intrinsic :: iso_c_binding, only : c_int, c_char, c_double
6914 integer( kind=c_int ),
intent(in),
value :: yac_instance_id
6915 character( kind=c_char),
dimension(*),
intent(in) :: comp_name
6916 character( kind=c_char),
dimension(*),
intent(in) :: grid_name
6917 character( kind=c_char),
dimension(*),
intent(in) :: field_name
6918 real ( kind=c_double ) :: yac_cget_field_frac_mask_fallback_value_instance_c
6920 end function yac_cget_field_frac_mask_fallback_value_instance_c
6924 integer,
intent(in) :: yac_instance_id
6925 character(len=*),
intent(in) :: comp_name
6926 character(len=*),
intent(in) :: grid_name
6927 character(len=*),
intent(in) :: field_name
6931 yac_cget_field_frac_mask_fallback_value_instance_c( &
6933 trim(comp_name) // c_null_char, &
6934 trim(grid_name) // c_null_char, &
6935 trim(field_name) // c_null_char )
6942 result(collection_size)
6951 function yac_cget_collection_size_from_field_id_c ( field_id ) &
6952 result(collection_size) &
6953 bind( c, name=
'yac_cget_collection_size_from_field_id' )
6955 use,
intrinsic :: iso_c_binding, only : c_int
6957 integer ( kind=c_int ),
value :: field_id
6958 integer ( kind=c_int ) :: collection_size
6960 end function yac_cget_collection_size_from_field_id_c
6964 integer,
intent (in) :: field_id
6965 integer :: collection_size
6968 yac_cget_collection_size_from_field_id_c( field_id )
6979 use,
intrinsic :: iso_c_binding, only: c_null_char
6985 function yac_cget_field_collection_size_c ( comp_name, &
6988 bind( c, name=
'yac_cget_field_collection_size' )
6990 use,
intrinsic :: iso_c_binding, only : c_int, c_char
6992 character( kind=c_char),
dimension(*),
intent(in) :: comp_name
6993 character( kind=c_char),
dimension(*),
intent(in) :: grid_name
6994 character( kind=c_char),
dimension(*),
intent(in) :: field_name
6995 integer ( kind=c_int ) :: yac_cget_field_collection_size_c
6997 end function yac_cget_field_collection_size_c
7001 character(len=*),
intent(in) :: comp_name
7002 character(len=*),
intent(in) :: grid_name
7003 character(len=*),
intent(in) :: field_name
7006 res = yac_cget_field_collection_size_c( &
7007 trim(comp_name) // c_null_char, &
7008 trim(grid_name) // c_null_char, &
7009 trim(field_name) // c_null_char )
7016 use,
intrinsic :: iso_c_binding, only: c_null_char
7022 function yac_cget_field_collection_size_instance_c ( yac_instance_id, &
7026 bind( c, name=
'yac_cget_field_collection_size_instance' )
7028 use,
intrinsic :: iso_c_binding, only : c_int, c_char
7030 integer( kind=c_int ),
intent(in),
value :: yac_instance_id
7031 character( kind=c_char),
dimension(*),
intent(in) :: comp_name
7032 character( kind=c_char),
dimension(*),
intent(in) :: grid_name
7033 character( kind=c_char),
dimension(*),
intent(in) :: field_name
7034 integer ( kind=c_int ) :: yac_cget_field_collection_size_instance_c
7036 end function yac_cget_field_collection_size_instance_c
7040 integer,
intent(in) :: yac_instance_id
7041 character(len=*),
intent(in) :: comp_name
7042 character(len=*),
intent(in) :: grid_name
7043 character(len=*),
intent(in) :: field_name
7047 yac_cget_field_collection_size_instance_c( &
7049 trim(comp_name) // c_null_char, &
7050 trim(grid_name) // c_null_char, &
7051 trim(field_name) // c_null_char )
7059 use,
intrinsic :: iso_c_binding, only: c_null_char
7065 subroutine yac_cdef_component_metadata_c (comp_name, metadata) &
7066 bind( c, name="yac_cdef_component_metadata" )
7067 use,
intrinsic :: iso_c_binding, only: c_char
7068 character(kind=c_char),
dimension(*),
intent(in) :: comp_name
7069 character(kind=c_char),
dimension(*),
intent(in) :: metadata
7070 end subroutine yac_cdef_component_metadata_c
7073 character(len=*),
intent(in) :: comp_name
7074 character(len=*),
intent(in) :: metadata
7075 CALL yac_cdef_component_metadata_c (trim(comp_name) // c_null_char, &
7076 trim(metadata) // c_null_char)
7082 use,
intrinsic :: iso_c_binding, only: c_null_char
7088 subroutine yac_cdef_component_metadata_instance_c (yac_instance_id, &
7091 bind( c, name="yac_cdef_component_metadata_instance" )
7092 use,
intrinsic :: iso_c_binding, only: c_char, c_int
7093 integer(kind=c_int),
intent(in),
value :: yac_instance_id
7094 character(kind=c_char),
dimension(*),
intent(in) :: comp_name
7095 character(kind=c_char),
dimension(*),
intent(in) :: metadata
7096 end subroutine yac_cdef_component_metadata_instance_c
7099 integer,
intent(in) :: yac_instance_id
7100 character(len=*),
intent(in) :: comp_name
7101 character(len=*),
intent(in) :: metadata
7102 CALL yac_cdef_component_metadata_instance_c ( &
7104 trim(comp_name) // c_null_char, &
7105 trim(metadata) // c_null_char)
7110 use,
intrinsic :: iso_c_binding, only: c_null_char
7116 subroutine yac_cdef_grid_metadata_c (grid_name, metadata) &
7117 bind( c, name="yac_cdef_grid_metadata" )
7118 use,
intrinsic :: iso_c_binding, only: c_char
7119 character(kind=c_char),
dimension(*),
intent(in) :: grid_name
7120 character(kind=c_char),
dimension(*),
intent(in) :: metadata
7121 end subroutine yac_cdef_grid_metadata_c
7124 character(len=*),
intent(in) :: grid_name
7125 character(len=*),
intent(in) :: metadata
7126 CALL yac_cdef_grid_metadata_c ( trim(grid_name) // c_null_char, &
7127 trim(metadata) // c_null_char)
7132 use,
intrinsic :: iso_c_binding, only: c_null_char
7138 subroutine yac_cdef_grid_metadata_instance_c (yac_instance_id, &
7141 bind( c, name="yac_cdef_grid_metadata_instance" )
7142 use,
intrinsic :: iso_c_binding, only: c_char, c_int
7143 integer(kind=c_int),
intent(in),
value :: yac_instance_id
7144 character(kind=c_char),
dimension(*),
intent(in) :: grid_name
7145 character(kind=c_char),
dimension(*),
intent(in) :: metadata
7146 end subroutine yac_cdef_grid_metadata_instance_c
7149 integer,
intent(in) :: yac_instance_id
7150 character(len=*),
intent(in) :: grid_name
7151 character(len=*),
intent(in) :: metadata
7152 CALL yac_cdef_grid_metadata_instance_c ( &
7154 trim(grid_name) // c_null_char, &
7155 trim(metadata) // c_null_char)
7160 use,
intrinsic :: iso_c_binding, only: c_null_char
7166 subroutine yac_cdef_field_metadata_c (comp_name, &
7170 bind( c, name="yac_cdef_field_metadata" )
7171 use,
intrinsic :: iso_c_binding, only: c_char
7172 character(kind=c_char),
dimension(*),
intent(in) :: comp_name
7173 character(kind=c_char),
dimension(*),
intent(in) :: grid_name
7174 character(kind=c_char),
dimension(*),
intent(in) :: field_name
7175 character(kind=c_char),
dimension(*),
intent(in) :: metadata
7176 end subroutine yac_cdef_field_metadata_c
7179 character(len=*),
intent(in) :: comp_name
7180 character(len=*),
intent(in) :: grid_name
7181 character(len=*),
intent(in) :: field_name
7182 character(len=*),
intent(in) :: metadata
7183 CALL yac_cdef_field_metadata_c ( &
7184 trim(comp_name) // c_null_char, &
7185 trim(grid_name) // c_null_char, &
7186 trim(field_name) // c_null_char, &
7187 trim(metadata) // c_null_char)
7191 grid_name, field_name, metadata)
7193 use,
intrinsic :: iso_c_binding, only: c_null_char
7199 subroutine yac_cdef_field_metadata_instance_c (yac_instance_id, &
7204 bind( c, name="yac_cdef_field_metadata_instance" )
7205 use,
intrinsic :: iso_c_binding, only: c_char, c_int
7206 integer(kind=c_int),
intent(in),
value :: yac_instance_id
7207 character(kind=c_char),
dimension(*),
intent(in) :: comp_name
7208 character(kind=c_char),
dimension(*),
intent(in) :: grid_name
7209 character(kind=c_char),
dimension(*),
intent(in) :: field_name
7210 character(kind=c_char),
dimension(*),
intent(in) :: metadata
7211 end subroutine yac_cdef_field_metadata_instance_c
7214 integer,
intent(in) :: yac_instance_id
7215 character(len=*),
intent(in) :: comp_name
7216 character(len=*),
intent(in) :: grid_name
7217 character(len=*),
intent(in) :: field_name
7218 character(len=*),
intent(in) :: metadata
7219 CALL yac_cdef_field_metadata_instance_c ( &
7221 trim(comp_name) // c_null_char, &
7222 trim(grid_name) // c_null_char, &
7223 trim(field_name) // c_null_char, &
7224 trim(metadata) // c_null_char)
7228 use,
intrinsic :: iso_c_binding, only: c_null_char, c_associated
7234 function yac_cget_component_metadata_c (comp_name) &
7236 bind( c, name="yac_cget_component_metadata")
7237 use,
intrinsic :: iso_c_binding, only: c_char, c_ptr
7238 character(kind=c_char),
dimension(*),
intent(in) :: comp_name
7239 type(c_ptr) :: metadata
7240 end function yac_cget_component_metadata_c
7242 character(len=*),
intent(in) :: comp_name
7243 logical :: has_metadata
7246 yac_cget_component_metadata_c(trim(comp_name) // c_null_char))
7250 result( has_metadata )
7251 use,
intrinsic :: iso_c_binding, only: c_null_char, c_associated
7257 function yac_cget_component_metadata_instance_c(yac_instance_id, &
7260 bind( c, name="yac_cget_component_metadata_instance")
7261 use,
intrinsic :: iso_c_binding, only: c_char, c_ptr, c_int
7262 integer(kind=c_int),
intent(in),
value :: yac_instance_id
7263 character(kind=c_char),
dimension(*),
intent(in) :: comp_name
7264 type(c_ptr) :: metadata
7265 end function yac_cget_component_metadata_instance_c
7267 integer,
intent(in) :: yac_instance_id
7268 character(len=*),
intent(in) :: comp_name
7269 logical :: has_metadata
7272 yac_cget_component_metadata_instance_c( &
7273 yac_instance_id, trim(comp_name) // c_null_char))
7277 use,
intrinsic :: iso_c_binding, only: c_null_char, c_associated
7283 function yac_cget_grid_metadata_c(grid_name)
result(metadata) &
7284 bind( c, name="yac_cget_grid_metadata")
7285 use,
intrinsic :: iso_c_binding, only: c_char, c_ptr
7286 character(kind=c_char),
dimension(*),
intent(in) :: grid_name
7287 type(c_ptr) :: metadata
7288 end function yac_cget_grid_metadata_c
7290 character(len=*),
intent(in) :: grid_name
7291 logical :: has_metadata
7293 c_associated(yac_cget_grid_metadata_c(trim(grid_name) // c_null_char))
7297 result( has_metadata )
7298 use,
intrinsic :: iso_c_binding, only: c_null_char, c_associated
7304 function yac_cget_grid_metadata_instance_c(yac_instance_id, grid_name) &
7306 bind( c, name="yac_cget_grid_metadata_instance")
7307 use,
intrinsic :: iso_c_binding, only: c_char, c_ptr, c_int
7308 integer(kind=c_int),
intent(in),
value :: yac_instance_id
7309 character(kind=c_char),
dimension(*),
intent(in) :: grid_name
7310 type(c_ptr) :: metadata
7311 end function yac_cget_grid_metadata_instance_c
7313 integer,
intent(in) :: yac_instance_id
7314 character(len=*),
intent(in) :: grid_name
7315 logical :: has_metadata
7318 yac_cget_grid_metadata_instance_c( &
7319 yac_instance_id, trim(grid_name) // c_null_char))
7323 result( has_metadata )
7324 use,
intrinsic :: iso_c_binding, only: c_null_char, c_associated
7330 function yac_cget_field_metadata_c(comp_name, grid_name, field_name) &
7332 bind( c, name="yac_cget_field_metadata")
7333 use,
intrinsic :: iso_c_binding, only: c_char, c_ptr
7334 character(kind=c_char),
dimension(*),
intent(in) :: comp_name
7335 character(kind=c_char),
dimension(*),
intent(in) :: grid_name
7336 character(kind=c_char),
dimension(*),
intent(in) :: field_name
7337 type(c_ptr) :: metadata
7338 end function yac_cget_field_metadata_c
7340 character(len=*),
intent(in) :: comp_name
7341 character(len=*),
intent(in) :: grid_name
7342 character(len=*),
intent(in) :: field_name
7343 logical :: has_metadata
7346 yac_cget_field_metadata_c( &
7347 trim(comp_name) // c_null_char, &
7348 trim(grid_name) // c_null_char, &
7349 trim(field_name) // c_null_char))
7353 yac_instance_id, comp_name, grid_name, field_name) &
7354 result( has_metadata )
7355 use,
intrinsic :: iso_c_binding, only: c_null_char, c_associated
7361 function yac_cget_field_metadata_instance_c(yac_instance_id, &
7366 bind( c, name="yac_cget_field_metadata_instance")
7367 use,
intrinsic :: iso_c_binding, only: c_char, c_ptr, c_int
7368 integer(kind=c_int),
intent(in),
value :: yac_instance_id
7369 character(kind=c_char),
dimension(*),
intent(in) :: comp_name
7370 character(kind=c_char),
dimension(*),
intent(in) :: grid_name
7371 character(kind=c_char),
dimension(*),
intent(in) :: field_name
7372 type(c_ptr) :: metadata
7373 end function yac_cget_field_metadata_instance_c
7375 integer,
intent(in) :: yac_instance_id
7376 character(len=*),
intent(in) :: comp_name
7377 character(len=*),
intent(in) :: grid_name
7378 character(len=*),
intent(in) :: field_name
7379 logical :: has_metadata
7382 yac_cget_field_metadata_instance_c( &
7384 trim(comp_name) // c_null_char, &
7385 trim(grid_name) // c_null_char, &
7386 trim(field_name) // c_null_char))
7390 use,
intrinsic :: iso_c_binding, only: c_null_char, c_ptr, c_associated
7396 function yac_cget_component_metadata_c(comp_name)
result(metadata) &
7397 bind( c, name="yac_cget_component_metadata")
7398 use,
intrinsic :: iso_c_binding, only: c_char, c_ptr
7399 character(kind=c_char),
dimension(*),
intent(in) :: comp_name
7400 type(c_ptr) :: metadata
7401 end function yac_cget_component_metadata_c
7403 character(len=*),
intent(in) :: comp_name
7404 character(len=:),
allocatable :: metadata
7405 type(c_ptr) :: c_metadata
7406 c_metadata = yac_cget_component_metadata_c(trim(comp_name) // c_null_char)
7407 yac_fassert(c_associated(c_metadata),
"ERROR(yac_fget_component_metadata): no metadata defined for component " // trim(comp_name))
7414 use,
intrinsic :: iso_c_binding, only: c_null_char, c_ptr, c_associated
7420 function yac_cget_component_metadata_instance_c(yac_instance_id, &
7423 bind( c, name="yac_cget_component_metadata_instance")
7424 use,
intrinsic :: iso_c_binding, only: c_char, c_ptr, c_int
7425 integer(kind=c_int),
intent(in),
value :: yac_instance_id
7426 character(kind=c_char),
dimension(*),
intent(in) :: comp_name
7427 type(c_ptr) :: metadata
7428 end function yac_cget_component_metadata_instance_c
7430 integer,
intent(in) :: yac_instance_id
7431 character(len=*),
intent(in) :: comp_name
7432 character(len=:),
allocatable :: metadata
7433 type(c_ptr) :: c_metadata
7435 yac_cget_component_metadata_instance_c( &
7436 yac_instance_id, trim(comp_name) // c_null_char)
7437 yac_fassert(c_associated(c_metadata),
"ERROR(yac_fget_component_metadata_instance): no metadata defined for component " // trim(comp_name))
7442 use,
intrinsic :: iso_c_binding, only: c_null_char, c_ptr, c_associated
7448 function yac_cget_grid_metadata_c(grid_name)
result(metadata) &
7449 bind( c, name="yac_cget_grid_metadata")
7450 use,
intrinsic :: iso_c_binding, only: c_char, c_ptr
7451 character(kind=c_char),
dimension(*),
intent(in) :: grid_name
7452 type(c_ptr) :: metadata
7453 end function yac_cget_grid_metadata_c
7455 character(len=*),
intent(in) :: grid_name
7456 character(len=:),
allocatable :: metadata
7457 type(c_ptr) :: c_metadata
7458 c_metadata = yac_cget_grid_metadata_c(trim(grid_name) // c_null_char)
7459 yac_fassert(c_associated(c_metadata),
"ERROR(yac_fget_grid_metadata): no metadata defined for grid " // trim(grid_name))
7466 use,
intrinsic :: iso_c_binding, only: c_null_char, c_ptr, c_associated
7472 function yac_cget_grid_metadata_instance_c(yac_instance_id, &
7475 bind( c, name="yac_cget_grid_metadata_instance")
7476 use,
intrinsic :: iso_c_binding, only: c_char, c_ptr, c_int
7477 integer(kind=c_int),
intent(in),
value :: yac_instance_id
7478 character(kind=c_char),
dimension(*),
intent(in) :: grid_name
7479 type(c_ptr) :: metadata
7480 end function yac_cget_grid_metadata_instance_c
7482 integer,
intent(in) :: yac_instance_id
7483 character(len=*),
intent(in) :: grid_name
7484 character(len=:),
allocatable :: metadata
7485 type(c_ptr) :: c_metadata
7487 yac_cget_grid_metadata_instance_c( &
7488 yac_instance_id, trim(grid_name) // c_null_char)
7489 yac_fassert(c_associated(c_metadata),
"ERROR(yac_fget_grid_metadata_instance): no metadata defined for grid " // trim(grid_name))
7495 use,
intrinsic :: iso_c_binding, only: c_null_char, c_ptr, c_associated
7501 function yac_cget_field_metadata_c(comp_name, grid_name, field_name) &
7503 bind( c, name="yac_cget_field_metadata")
7504 use,
intrinsic :: iso_c_binding, only: c_char, c_ptr
7505 character(kind=c_char),
dimension(*),
intent(in) :: comp_name
7506 character(kind=c_char),
dimension(*),
intent(in) :: grid_name
7507 character(kind=c_char),
dimension(*),
intent(in) :: field_name
7508 type(c_ptr) :: metadata
7509 end function yac_cget_field_metadata_c
7511 character(len=*),
intent(in) :: comp_name
7512 character(len=*),
intent(in) :: grid_name
7513 character(len=*),
intent(in) :: field_name
7514 character(len=:),
allocatable :: metadata
7515 type(c_ptr) :: c_metadata
7517 yac_cget_field_metadata_c( &
7518 trim(comp_name) // c_null_char, &
7519 trim(grid_name) // c_null_char, &
7520 trim(field_name) // c_null_char)
7521 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))
7526 grid_name, field_name)
result( metadata )
7528 use,
intrinsic :: iso_c_binding, only: c_null_char, c_ptr, c_associated
7534 function yac_cget_field_metadata_instance_c(yac_instance_id, &
7539 bind( c, name="yac_cget_field_metadata_instance")
7540 use,
intrinsic :: iso_c_binding, only: c_char, c_ptr, c_int
7541 integer(kind=c_int),
intent(in),
value :: yac_instance_id
7542 character(kind=c_char),
dimension(*),
intent(in) :: comp_name
7543 character(kind=c_char),
dimension(*),
intent(in) :: grid_name
7544 character(kind=c_char),
dimension(*),
intent(in) :: field_name
7545 type(c_ptr) :: metadata
7546 end function yac_cget_field_metadata_instance_c
7548 integer,
intent(in) :: yac_instance_id
7549 character(len=*),
intent(in) :: comp_name
7550 character(len=*),
intent(in) :: grid_name
7551 character(len=*),
intent(in) :: field_name
7552 character(len=:),
allocatable :: metadata
7553 type(c_ptr) :: c_metadata
7555 yac_cget_field_metadata_instance_c( &
7557 trim(comp_name) // c_null_char, &
7558 trim(grid_name) // c_null_char, &
7559 trim(field_name) // c_null_char)
7560 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))
7568 use,
intrinsic :: iso_c_binding, only : c_ptr
7575 function yac_cget_start_datetime_c() &
7576 bind( c, name=
'yac_cget_start_datetime' )
7578 use,
intrinsic :: iso_c_binding, only : c_ptr
7579 type(c_ptr) :: yac_cget_start_datetime_c
7581 end function yac_cget_start_datetime_c
7584 type (c_ptr) :: c_string_ptr
7585 character (len=:),
ALLOCATABLE :: start_datetime_string
7587 c_string_ptr = yac_cget_start_datetime_c()
7593 result(start_datetime_string)
7595 use,
intrinsic :: iso_c_binding, only : c_ptr
7602 function yac_cget_start_datetime_instance_c(yac_instance_id) &
7603 bind( c, name=
'yac_cget_start_datetime_instance' )
7605 use,
intrinsic :: iso_c_binding, only : c_ptr, c_int
7606 integer ( kind=c_int ),
value :: yac_instance_id
7607 type(c_ptr) :: yac_cget_start_datetime_instance_c
7609 end function yac_cget_start_datetime_instance_c
7612 integer,
intent(in) :: yac_instance_id
7614 type (c_ptr) :: c_string_ptr
7615 character (len=:),
ALLOCATABLE :: start_datetime_string
7617 c_string_ptr = yac_cget_start_datetime_instance_c(yac_instance_id)
7626 use,
intrinsic :: iso_c_binding, only : c_ptr
7633 function yac_cget_end_datetime_c() &
7634 bind( c, name=
'yac_cget_end_datetime' )
7636 use,
intrinsic :: iso_c_binding, only : c_ptr
7637 type(c_ptr) :: yac_cget_end_datetime_c
7639 end function yac_cget_end_datetime_c
7642 type (c_ptr) :: c_string_ptr
7643 character (len=:),
ALLOCATABLE :: end_datetime_string
7645 c_string_ptr = yac_cget_end_datetime_c()
7651 result(end_datetime_string)
7653 use,
intrinsic :: iso_c_binding, only : c_ptr
7660 function yac_cget_end_datetime_instance_c(yac_instance_id) &
7661 bind( c, name=
'yac_cget_end_datetime_instance' )
7663 use,
intrinsic :: iso_c_binding, only : c_ptr, c_int
7664 integer ( kind=c_int ),
value :: yac_instance_id
7665 type(c_ptr) :: yac_cget_end_datetime_instance_c
7667 end function yac_cget_end_datetime_instance_c
7670 integer,
intent(in) :: yac_instance_id
7672 type (c_ptr) :: c_string_ptr
7673 character (len=:),
ALLOCATABLE :: end_datetime_string
7675 c_string_ptr = yac_cget_end_datetime_instance_c(yac_instance_id)
7690 subroutine yac_cget_interp_stack_config_c ( interp_stack_config_id ) &
7691 bind( c, name=
'yac_cget_interp_stack_config' )
7692 use,
intrinsic :: iso_c_binding, only : c_int
7694 integer ( kind=c_int ) :: interp_stack_config_id
7696 end subroutine yac_cget_interp_stack_config_c
7700 integer,
intent(out) :: interp_stack_config_id
7702 call yac_cget_interp_stack_config_c ( interp_stack_config_id )
7714 subroutine yac_cfree_interp_stack_config_c ( interp_stack_config_id ) &
7715 bind( c, name=
'yac_cfree_interp_stack_config' )
7716 use,
intrinsic :: iso_c_binding, only : c_int
7718 integer ( kind=c_int ),
value :: interp_stack_config_id
7720 end subroutine yac_cfree_interp_stack_config_c
7724 integer,
intent(in) :: interp_stack_config_id
7726 call yac_cfree_interp_stack_config_c ( interp_stack_config_id )
7731 reduction_type, partial_coverage)
7739 subroutine yac_cadd_interp_stack_config_average_c ( &
7740 interp_stack_config_id, reduction_type, partial_coverage ) &
7741 bind( c, name=
'yac_cadd_interp_stack_config_average' )
7742 use,
intrinsic :: iso_c_binding, only : c_int
7744 integer ( kind=c_int ),
value :: interp_stack_config_id
7745 integer ( kind=c_int ),
value :: reduction_type
7746 integer ( kind=c_int ),
value :: partial_coverage
7748 end subroutine yac_cadd_interp_stack_config_average_c
7752 integer,
intent(in) :: interp_stack_config_id
7753 integer,
intent(in) :: reduction_type
7754 integer,
intent(in) :: partial_coverage
7756 call yac_cadd_interp_stack_config_average_c ( &
7757 interp_stack_config_id, reduction_type, partial_coverage )
7762 weight_type, partial_coverage)
7770 subroutine yac_cadd_interp_stack_config_ncc_c ( &
7771 interp_stack_config_id, weight_type, partial_coverage ) &
7772 bind( c, name=
'yac_cadd_interp_stack_config_ncc' )
7773 use,
intrinsic :: iso_c_binding, only : c_int
7775 integer ( kind=c_int ),
value :: interp_stack_config_id
7776 integer ( kind=c_int ),
value :: weight_type
7777 integer ( kind=c_int ),
value :: partial_coverage
7779 end subroutine yac_cadd_interp_stack_config_ncc_c
7783 integer,
intent(in) :: interp_stack_config_id
7784 integer,
intent(in) :: weight_type
7785 integer,
intent(in) :: partial_coverage
7787 call yac_cadd_interp_stack_config_ncc_c ( &
7788 interp_stack_config_id, weight_type, partial_coverage )
7801 subroutine yac_cadd_interp_stack_config_nnn_c( &
7802 interp_stack_config_id, type, n, scale) &
7803 bind( c, name=
'yac_cadd_interp_stack_config_nnn' )
7804 use,
intrinsic :: iso_c_binding, only : c_int, c_double
7806 integer ( kind=c_int ),
value :: interp_stack_config_id
7807 integer ( kind=c_int ),
value :: type
7808 integer ( kind=c_int ),
value :: n
7809 real ( kind=c_double ),
value :: scale
7811 end subroutine yac_cadd_interp_stack_config_nnn_c
7815 integer,
intent(in) :: interp_stack_config_id
7816 integer,
intent(in) :: type
7817 integer,
intent(in) :: n
7818 double precision,
intent(in) :: scale
7820 call yac_cadd_interp_stack_config_nnn_c( &
7821 interp_stack_config_id,
type, n, scale)
7826 interp_stack_config_id, order, enforced_conserv, &
7827 partial_coverage, normalization)
7835 subroutine yac_cadd_interp_stack_config_conservative_c( &
7836 interp_stack_config_id, order, enforced_conserv, &
7837 partial_coverage, normalization) &
7838 bind( c, name=
'yac_cadd_interp_stack_config_conservative' )
7839 use,
intrinsic :: iso_c_binding, only : c_int
7841 integer ( kind=c_int ),
value :: interp_stack_config_id
7842 integer ( kind=c_int ),
value :: order
7843 integer ( kind=c_int ),
value :: enforced_conserv
7844 integer ( kind=c_int ),
value :: partial_coverage
7845 integer ( kind=c_int ),
value :: normalization
7847 end subroutine yac_cadd_interp_stack_config_conservative_c
7851 integer,
intent(in) :: interp_stack_config_id
7852 integer,
intent(in) :: order
7853 integer,
intent(in) :: enforced_conserv
7854 integer,
intent(in) :: partial_coverage
7855 integer,
intent(in) :: normalization
7857 call yac_cadd_interp_stack_config_conservative_c( &
7858 interp_stack_config_id, order, enforced_conserv, &
7859 partial_coverage, normalization)
7864 spread_distance, max_search_distance, weight_type, scale_type, &
7865 src_sphere_radius, tgt_sphere_radius)
7873 subroutine yac_cadd_interp_stack_config_spmap_c( &
7874 interp_stack_config_id, spread_distance, &
7875 max_search_distance, weight_type, &
7876 scale_type, src_sphere_radius, &
7877 tgt_sphere_radius) &
7878 bind( c, name=
'yac_cadd_interp_stack_config_spmap' )
7879 use,
intrinsic :: iso_c_binding, only : c_int, c_double
7881 integer ( kind=c_int ),
value :: interp_stack_config_id
7882 real ( kind=c_double ),
value :: spread_distance
7883 real ( kind=c_double ),
value :: max_search_distance
7884 integer ( kind=c_int ),
value :: weight_type
7885 integer ( kind=c_int ),
value :: scale_type
7886 real ( kind=c_double ),
value :: src_sphere_radius
7887 real ( kind=c_double ),
value :: tgt_sphere_radius
7889 end subroutine yac_cadd_interp_stack_config_spmap_c
7893 integer,
intent(in) :: interp_stack_config_id
7894 double precision,
intent(in) :: spread_distance
7895 double precision,
intent(in) :: max_search_distance
7896 integer,
intent(in) :: weight_type
7897 integer,
intent(in) :: scale_type
7898 double precision,
intent(in) :: src_sphere_radius
7899 double precision,
intent(in) :: tgt_sphere_radius
7901 call yac_cadd_interp_stack_config_spmap_c( &
7902 interp_stack_config_id, spread_distance, &
7903 max_search_distance, weight_type, &
7904 scale_type, src_sphere_radius, &
7917 subroutine yac_cadd_interp_stack_config_hcsbb_c( &
7918 interp_stack_config_id) &
7919 bind( c, name=
'yac_cadd_interp_stack_config_hcsbb' )
7920 use,
intrinsic :: iso_c_binding, only : c_int
7922 integer ( kind=c_int ),
value :: interp_stack_config_id
7924 end subroutine yac_cadd_interp_stack_config_hcsbb_c
7928 integer,
intent(in) :: interp_stack_config_id
7930 call yac_cadd_interp_stack_config_hcsbb_c(interp_stack_config_id)
7935 filename, src_grid_name, tgt_grid_name)
7938 use,
intrinsic :: iso_c_binding, only : c_null_char
7944 subroutine yac_cadd_interp_stack_config_user_file_c( &
7945 interp_stack_config_id, filename, src_grid_name, &
7947 bind( c, name=
'yac_cadd_interp_stack_config_user_file' )
7948 use,
intrinsic :: iso_c_binding, only : c_int, c_char
7950 integer ( kind=c_int ),
value :: interp_stack_config_id
7951 character (kind=c_char),
dimension(*) :: filename
7952 character (kind=c_char),
dimension(*) :: src_grid_name
7953 character (kind=c_char),
dimension(*) :: tgt_grid_name
7955 end subroutine yac_cadd_interp_stack_config_user_file_c
7959 integer,
intent(in) :: interp_stack_config_id
7960 character (len=*),
intent(in) :: filename
7961 character (len=*),
intent(in) :: src_grid_name
7962 character (len=*),
intent(in) :: tgt_grid_name
7964 call yac_cadd_interp_stack_config_user_file_c( &
7965 interp_stack_config_id, &
7966 trim(filename) // c_null_char, &
7967 trim(src_grid_name) // c_null_char, &
7968 trim(tgt_grid_name) // c_null_char)
7981 subroutine yac_cadd_interp_stack_config_fixed_c( &
7982 interp_stack_config_id, val) &
7983 bind( c, name=
'yac_cadd_interp_stack_config_fixed' )
7984 use,
intrinsic :: iso_c_binding, only : c_int, c_double
7986 integer ( kind=c_int ),
value :: interp_stack_config_id
7987 real ( kind=c_double ),
value :: val
7989 end subroutine yac_cadd_interp_stack_config_fixed_c
7993 integer,
intent(in) :: interp_stack_config_id
7994 double precision,
intent(in) :: val
7996 call yac_cadd_interp_stack_config_fixed_c( &
7997 interp_stack_config_id, val)
8010 subroutine yac_cadd_interp_stack_config_creep_c( &
8011 interp_stack_config_id, creep_distance) &
8012 bind( c, name=
'yac_cadd_interp_stack_config_creep' )
8013 use,
intrinsic :: iso_c_binding, only : c_int
8015 integer ( kind=c_int ),
value :: interp_stack_config_id
8016 integer ( kind=c_int ),
value :: creep_distance
8018 end subroutine yac_cadd_interp_stack_config_creep_c
8022 integer,
intent(in) :: interp_stack_config_id
8023 integer,
intent(in) :: creep_distance
8025 call yac_cadd_interp_stack_config_creep_c( &
8026 interp_stack_config_id, creep_distance)
Fortran interface for checking the dimensions of a field.
Fortran interface for the coupler cleanup before restart.
Fortran interface for definition of a couple.
Fortran interface for the definition of time parameters.
Fortran interface for the definition of coupling fields using explicit masks.
Fortran interface for the definition of coupling fields using default masks.
Fortran interface for 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 the start- and end datetime.
Fortran interface for the component definition.
Fortran interface for the reading of configuration files.
Fortran interface for the setting of grid global ids.
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=:) function, allocatable, public yac_internal_cptr2char(cptr)
Convertes a C-pointer to a C-string to a Fortran string.
type(c_ptr) function yac_dble2cptr(routine, ptr_name, dble_ptr)
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 yac_yaml_emitter_default_f
Flag paramters for emitting of coupling configurations.
integer, parameter yac_mpi_fint_kind
@ yac_exchange_type_target
@ yac_exchange_type_source
integer yac_yaml_emitter_json_f
subroutine yac_fupdate(field_id)
subroutine yac_fmpi_handshake(comm, group_names, group_comms)
subroutine yac_fget_comp_comm(comp_id, comp_comm)
subroutine yac_fsync_def_instance(yac_instance_id)
integer function yac_fget_field_role(comp_name, grid_name, field_name)
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)
integer function yac_fget_field_role_instance(yac_instance_id, comp_name, grid_name, field_name)
subroutine yac_fadd_interp_stack_config_nnn(interp_stack_config_id, type, n, scale)
logical function yac_fgrid_has_metadata_instance(yac_instance_id, grid_name)
subroutine yac_fenddef_and_emit_config_instance(yac_instance_id, emit_flags, config)
subroutine yac_fexchange_dble(send_field_id, recv_field_id, send_nbr_hor_points, send_nbr_pointsets, recv_nbr_hor_points, collection_size, send_field, recv_field, send_info, recv_info, ierror)
subroutine yac_fdef_comp_dummy_instance(yac_instance_id)
character(len=:) function, allocatable yac_fget_component_name_from_field_id(field_id)
subroutine yac_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_fadd_interp_stack_config_user_file(interp_stack_config_id, filename, src_grid_name, tgt_grid_name)
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)
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_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)
type(yac_string) function, dimension(:), allocatable yac_fget_comp_names()
subroutine yac_fcleanup()
character(len=:) function, allocatable yac_fget_grid_name_from_field_id(field_id)
subroutine yac_fdef_grid_metadata(grid_name, metadata)
integer function yac_fget_field_collection_size(comp_name, grid_name, field_name)
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_fput_frac_dble(field_id, nbr_hor_points, nbr_pointsets, collection_size, send_field, send_frac_mask, info, ierror)
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_fcleanup_instance(yac_instance_id)
subroutine yac_fget_dble(field_id, nbr_hor_points, collection_size, recv_field, info, ierror)
integer function yac_fget_field_id_instance(yac_id, comp_name, grid_name, field_name)
subroutine yac_fdef_points_curve2d_dble(grid_id, nbr_points, location, x_points, y_points, point_id)
subroutine yac_fadd_interp_stack_config_conservative(interp_stack_config_id, order, enforced_conserv, partial_coverage, normalization)
subroutine yac_fget_action(field_id, action)
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_fadd_interp_stack_config_spmap(interp_stack_config_id, spread_distance, max_search_distance, weight_type, scale_type, src_sphere_radius, tgt_sphere_radius)
subroutine yac_fdef_comps(comp_names, num_comps, comp_ids)
subroutine yac_finit_comm_dummy(world_comm)
type(yac_string) function, dimension(:), allocatable yac_fget_grid_names_instance(yac_instance_id)
subroutine yac_fdef_imask(grid_id, nbr_points, location, is_valid, mask_id)
subroutine yac_fdef_points_reg2d_real(grid_id, nbr_points, location, x_points_real, y_points_real, point_id)
character(len=:) function, allocatable yac_fget_end_datetime()
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_fset_lmask(is_valid, points_id)
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_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_fdef_couple_instance(instance_id, src_comp_name, src_grid_name, src_field_name, tgt_comp_name, tgt_grid_name, tgt_field_name, coupling_timestep, time_unit, time_reduction, interp_stack_config_id, src_lag, tgt_lag, weight_file, mapping_side, scale_factor, scale_summand, src_mask_names, tgt_mask_name)
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_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)
character(len=:) function, allocatable yac_fget_component_metadata(comp_name)
integer function yac_fget_points_size(point_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)
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_collection_size_from_field_id(field_id)
subroutine yac_fset_core_imask(is_core, location, grid_id)
integer function yac_fget_role_from_field_id(field_id)
subroutine yac_fenable_field_frac_mask_instance(yac_instance_id, comp_name, grid_name, field_name, frac_mask_fallback_value)
logical function yac_fgrid_has_metadata(grid_name)
subroutine yac_fdef_datetime(start_datetime, end_datetime)
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_fread_config_yaml_instance(yac_instance_id, yaml_filename)
subroutine yac_fput_frac_dble_ptr(field_id, nbr_pointsets, collection_size, send_field, send_frac_mask, info, ierror)
subroutine yac_fexchange_real(send_field_id, recv_field_id, send_nbr_hor_points, send_nbr_pointsets, recv_nbr_hor_points, collection_size, send_field, recv_field, send_info, recv_info, ierror)
subroutine yac_fput_frac_real(field_id, nbr_hor_points, nbr_pointsets, collection_size, send_field, send_frac_mask, info, ierror)
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)
character(len=:) function, allocatable yac_fget_grid_metadata_instance(yac_instance_id, grid_name)
subroutine yac_ftest_i(field_id, flag)
subroutine yac_fset_core_lmask(is_core, location, grid_id)
subroutine yac_fdef_points_curve2d_real(grid_id, nbr_points, location, x_points_real, y_points_real, point_id)
subroutine yac_fget_real(field_id, nbr_hor_points, collection_size, recv_field, info, ierror)
subroutine yac_fenddef_and_emit_config(emit_flags, config)
integer function yac_fget_field_collection_size_instance(yac_instance_id, comp_name, grid_name, field_name)
subroutine yac_fexchange_dble_ptr(send_field_id, recv_field_id, send_nbr_pointsets, collection_size, send_field, recv_field, send_info, recv_info, ierror)
subroutine yac_fsync_def()
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, mapping_side, scale_factor, scale_summand, src_mask_names, tgt_mask_name)
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)
subroutine yac_fread_config_json(json_filename)
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)
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)
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)
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_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_fread_config_json_instance(yac_instance_id, json_filename)
subroutine yac_fset_global_index(global_index, location, grid_id)
subroutine yac_fdef_field_metadata(comp_name, grid_name, field_name, metadata)
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_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_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)