1! 2! Copyright (C) by Argonne National Laboratory 3! See COPYRIGHT in top-level directory 4! 5 6subroutine MPI_Scatter_f08ts(sendbuf, sendcount, sendtype, recvbuf, recvcount, recvtype, & 7 root, comm, ierror) 8 use, intrinsic :: iso_c_binding, only : c_int 9 use :: mpi_f08, only : MPI_Datatype, MPI_Comm 10 use :: mpi_c_interface, only : c_Datatype, c_Comm 11 use :: mpi_c_interface, only : MPIR_Scatter_cdesc 12 13 implicit none 14 15 type(*), dimension(..), intent(in) :: sendbuf 16 type(*), dimension(..) :: recvbuf 17 integer, intent(in) :: sendcount 18 integer, intent(in) :: recvcount 19 integer, intent(in) :: root 20 type(MPI_Datatype), intent(in) :: sendtype 21 type(MPI_Datatype), intent(in) :: recvtype 22 type(MPI_Comm), intent(in) :: comm 23 integer, optional, intent(out) :: ierror 24 25 integer(c_int) :: sendcount_c 26 integer(c_int) :: recvcount_c 27 integer(c_int) :: root_c 28 integer(c_Datatype) :: sendtype_c 29 integer(c_Datatype) :: recvtype_c 30 integer(c_Comm) :: comm_c 31 integer(c_int) :: ierror_c 32 33 if (c_int == kind(0)) then 34 ierror_c = MPIR_Scatter_cdesc(sendbuf, sendcount, sendtype%MPI_VAL, recvbuf, recvcount, recvtype%MPI_VAL, & 35 root, comm%MPI_VAL) 36 else 37 sendcount_c = sendcount 38 sendtype_c = sendtype%MPI_VAL 39 recvcount_c = recvcount 40 recvtype_c = recvtype%MPI_VAL 41 root_c = root 42 comm_c = comm%MPI_VAL 43 ierror_c = MPIR_Scatter_cdesc(sendbuf, sendcount_c, sendtype_c, recvbuf, recvcount_c, recvtype_c, & 44 root_c, comm_c) 45 end if 46 47 if (present(ierror)) ierror = ierror_c 48 49end subroutine MPI_Scatter_f08ts 50