comms_scatterv_int_3 Subroutine

private subroutine comms_scatterv_int_3(array, localcount, rootglobalarray, counts, displs)

Scatter integer data from root node (array of rank 3)

Arguments

Type IntentOptional AttributesName
integer, intent(inout), dimension(:, :, :):: array

local array for getting data

integer, intent(in) :: localcount

localcount elements will be fetched from the root node

integer, intent(inout), dimension(:, :, :):: rootglobalarray

array on the root node from which data will be sent

integer, intent(in), dimension(num_nodes):: counts

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

integer, intent(in), dimension(num_nodes):: displs

Calls

proc~~comms_scatterv_int_3~~CallsGraph proc~comms_scatterv_int_3 comms_scatterv_int_3 proc~my_icopy my_ICOPY proc~comms_scatterv_int_3->proc~my_icopy

Called by

proc~~comms_scatterv_int_3~~CalledByGraph proc~comms_scatterv_int_3 comms_scatterv_int_3 interface~comms_scatterv comms_scatterv interface~comms_scatterv->proc~comms_scatterv_int_3 proc~k_path k_path proc~k_path->interface~comms_scatterv

Contents

Source Code


Source Code

  subroutine comms_scatterv_int_3(array, localcount, rootglobalarray, counts, displs)
    !! Scatter integer data from root node (array of rank 3)

    implicit none

    integer, dimension(:, :, :), intent(inout)  :: array
    !! local array for getting data
    integer, intent(in)                       :: localcount
    !! localcount elements will be fetched from the root node
    integer, dimension(:, :, :), intent(inout)  :: rootglobalarray
    !!  array on the root node from which data will be sent
    integer, dimension(num_nodes), intent(in) :: counts
    !! how data should be partitioned, see MPI documentation or function comms_array_split
    integer, dimension(num_nodes), intent(in) :: displs

#ifdef MPI
    integer :: error

    call MPI_scatterv(rootglobalarray, counts, displs, MPI_Integer, &
                      Array, localcount, MPI_Integer, root_id, mpi_comm_world, error)

    if (error .ne. MPI_success) then
      call io_error('Error in comms_scatterv_int_3')
    end if

#else
    call my_icopy(localcount, rootglobalarray, 1, array, 1)
#endif

    return

  end subroutine comms_scatterv_int_3