comms_no_sync_gatherv_cmplx_2 Subroutine

private subroutine comms_no_sync_gatherv_cmplx_2(array, localcount, rootglobalarray, counts, displs, error, comm)

Gather complex data to root node (for arrays of rank 2)

Arguments

Type IntentOptional Attributes Name
complex(kind=dp), intent(inout) :: array(:,:)
integer, intent(in) :: localcount
complex(kind=dp), intent(inout) :: rootglobalarray(:,:)
integer, intent(in) :: counts(0:)
integer, intent(in) :: displs(0:)
type(w90_error_type), intent(out), allocatable :: error
type(w90_comm_type), intent(in) :: comm

Calls

proc~~comms_no_sync_gatherv_cmplx_2~~CallsGraph proc~comms_no_sync_gatherv_cmplx_2 comms_no_sync_gatherv_cmplx_2 zcopy zcopy proc~comms_no_sync_gatherv_cmplx_2->zcopy

Called by

proc~~comms_no_sync_gatherv_cmplx_2~~CalledByGraph proc~comms_no_sync_gatherv_cmplx_2 comms_no_sync_gatherv_cmplx_2 interface~comms_no_sync_gatherv comms_no_sync_gatherv interface~comms_no_sync_gatherv->proc~comms_no_sync_gatherv_cmplx_2 proc~comms_gatherv_cmplx_2 comms_gatherv_cmplx_2 proc~comms_gatherv_cmplx_2->proc~comms_no_sync_gatherv_cmplx_2 interface~comms_gatherv comms_gatherv interface~comms_gatherv->proc~comms_gatherv_cmplx_2 proc~boltzwann_main boltzwann_main proc~boltzwann_main->interface~comms_gatherv proc~geninterp_main geninterp_main proc~geninterp_main->interface~comms_gatherv proc~k_path k_path proc~k_path->interface~comms_gatherv proc~k_slice k_slice proc~k_slice->interface~comms_gatherv program~postw90 postw90 program~postw90->proc~boltzwann_main program~postw90->proc~geninterp_main program~postw90->proc~k_path program~postw90->proc~k_slice

Source Code

  subroutine comms_no_sync_gatherv_cmplx_2(array, localcount, rootglobalarray, counts, displs, error, comm)
    !! Gather complex data to root node (for arrays of rank 2)
    implicit none

    complex(kind=dp), intent(inout) :: array(:, :)
    integer, intent(in) :: localcount
    complex(kind=dp), intent(inout) :: rootglobalarray(:, :)
    integer, intent(in) :: counts(0:)
    integer, intent(in) :: displs(0:)
    type(w90_comm_type), intent(in) :: comm
    type(w90_error_type), allocatable, intent(out) :: error

#ifdef W90_MPI
    integer :: ierr

    call mpi_gatherv(array, localcount, MPI_DOUBLE_COMPLEX, rootglobalarray, counts, displs, &
                     MPI_DOUBLE_COMPLEX, root_id, comm%comm, ierr)

    if (ierr .ne. MPI_SUCCESS) then
      call set_base_error(error, 'Error in comms_gatherv_cmplx_2', code_mpi)
      return
    end if

#else
    call zcopy(localcount, array, 1, rootglobalarray, 1)
    rootglobalarray = array
#endif

  end subroutine comms_no_sync_gatherv_cmplx_2