comms_gatherv_real_2_3 Subroutine

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

Gather real data to root node (for arrays of rank 2 and 3, respectively)

Arguments

Type IntentOptional Attributes Name
real(kind=dp), intent(inout) :: array(:,:)

local array for sending data

integer, intent(in) :: localcount

localcount elements will be sent to the root node

real(kind=dp), intent(inout) :: rootglobalarray(:,:,:)

array on the root node to which data will be sent

integer, intent(in) :: counts(0:)

how data should be partitioned, see MPI documentation or function comms_array_split

integer, intent(in) :: displs(0:)
type(w90_error_type), intent(out), allocatable :: error
type(w90_comm_type), intent(in) :: comm

Calls

proc~~comms_gatherv_real_2_3~~CallsGraph proc~comms_gatherv_real_2_3 comms_gatherv_real_2_3 proc~comms_no_sync_gatherv_real_2_3 comms_no_sync_gatherv_real_2_3 proc~comms_gatherv_real_2_3->proc~comms_no_sync_gatherv_real_2_3 proc~comms_sync_error comms_sync_error proc~comms_gatherv_real_2_3->proc~comms_sync_error dcopy dcopy proc~comms_no_sync_gatherv_real_2_3->dcopy

Called by

proc~~comms_gatherv_real_2_3~~CalledByGraph proc~comms_gatherv_real_2_3 comms_gatherv_real_2_3 interface~comms_gatherv comms_gatherv interface~comms_gatherv->proc~comms_gatherv_real_2_3 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_gatherv_real_2_3(array, localcount, rootglobalarray, counts, displs, error, comm)
    !! Gather real data to root node (for arrays of rank 2 and 3, respectively)
    implicit none

    real(kind=dp), intent(inout) :: array(:, :)              !! local array for sending data
    integer, intent(in) :: localcount                        !! localcount elements will be sent to the root node
    real(kind=dp), intent(inout) :: rootglobalarray(:, :, :) !! array on the root node to which data will be sent
    integer, intent(in) :: counts(0:)                         !! how data should be partitioned, see MPI documentation or function comms_array_split
    integer, intent(in) :: displs(0:)
    type(w90_comm_type), intent(in) :: comm
    type(w90_error_type), allocatable, intent(out) :: error

    call comms_sync_error(comm, error, 0) ! sync error state across comm
    if (allocated(error)) return

    call comms_no_sync_gatherv_real_2_3(array, localcount, rootglobalarray, counts, displs, &
                                        error, comm)
  end subroutine comms_gatherv_real_2_3