Merge remote-tracking branch 'origin/release-v4.6.1'
[WRF.git] / var / da / da_par_util / da_proc_sum_int.inc
blob3818b562b22395b651a851032402773a953ab201
1 subroutine da_proc_sum_int (value)
3    !---------------------------------------------------------------------------
4    !  Purpose: Do MPI sum operation across processors to get the global sum of
5    !           an integer value. The sum is returned only on the root processor,
6    !           i.e., processor 0. (In this way, we do not have to do all-to-all 
7    !           communication, unlike wrf_dm_sum_int, which does)
8    !
9    ! The routine generates a MPI barrier
10    !---------------------------------------------------------------------------
12    implicit none
14    integer, intent(inout) :: value     ! Value on processor.
16 #ifdef DM_PARALLEL
17    integer :: sum                   ! Sum across processors.
19    ! Don't trace, as called within trace routines
20    ! if (trace_use_frequent) call da_trace_entry("da_proc_sum_int")
22    sum=0
23    call mpi_reduce(value, sum, 1, mpi_integer, mpi_sum, root, &
24       comm, ierr)
26    if (rootproc) value = sum
28    ! if (trace_use_frequent) call da_trace_exit("da_proc_sum_int")
29 #endif
31 end subroutine da_proc_sum_int