Gather complex data to root node (for arrays of rank 1)
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
complex(kind=dp), | intent(inout), | dimension(:) | :: | array | ||
integer, | intent(in) | :: | localcount | |||
complex(kind=dp), | intent(inout), | dimension(:) | :: | rootglobalarray | ||
integer, | intent(in), | dimension(num_nodes) | :: | counts | ||
integer, | intent(in), | dimension(num_nodes) | :: | displs |
subroutine comms_gatherv_cmplx_1(array, localcount, rootglobalarray, counts, displs)
!! Gather complex data to root node (for arrays of rank 1)
implicit none
complex(kind=dp), dimension(:), intent(inout) :: array
integer, intent(in) :: localcount
complex(kind=dp), dimension(:), intent(inout) :: rootglobalarray
integer, dimension(num_nodes), intent(in) :: counts
integer, dimension(num_nodes), intent(in) :: displs
#ifdef MPI
integer :: error
call MPI_gatherv(array, localcount, MPI_double_complex, rootglobalarray, counts, &
displs, MPI_double_complex, root_id, mpi_comm_world, error)
if (error .ne. MPI_success) then
call io_error('Error in comms_gatherv_cmplx_1')
end if
#else
call zcopy(localcount, array, 1, rootglobalarray, 1)
#endif
return
end subroutine comms_gatherv_cmplx_1