The TELEMAC-MASCARET system  trunk
p_isum_array.F
Go to the documentation of this file.
1 ! ***********************
2  SUBROUTINE p_isum_array
3 ! ***********************
4 !
5  &(send_buffer, recv_buffer, ncount, ierr)
6 !
7 !***********************************************************************
8 ! PARALLEL V6P1 21/08/2010
9 !***********************************************************************
10 !
11 !brief SUM VALUES FROM ALL PROCESSES AND DISTRIBUTES THE RESULT BACK TO ALL PROCESSES
12 !
13 !history AUDOUIN YOANN
14 !+ 25/04/2013
15 !+
16 !+ CREATED
17 !
18 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
19 !| SEND_BUFFER |-->| SEND BUFFER.
20 !| RECV_BUFFER |<--| RECV BUFFER.
21 !| NCOUNT |-->| SIZE IF THE BUFFERS
22 !| IERR |<--| RETURN VALUE OF THE MPI_FUNCTION
23 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
24 !
27  IMPLICIT NONE
28 !
29 !+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
30 !
31  INTEGER, INTENT(IN) :: NCOUNT
32  INTEGER, INTENT(IN) :: SEND_BUFFER(ncount)
33  INTEGER, INTENT(OUT) :: RECV_BUFFER(ncount)
34  INTEGER, INTENT(OUT) :: IERR
35 !
36 !+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
37 !
38 !
39 !-----------------------------------------------------------------------
40 !
41  ierr = 0
42  recv_buffer = 0
43 #if defined HAVE_MPI
44  CALL mpi_allreduce(send_buffer,recv_buffer,ncount,mpi_integer,
45  & mpi_sum,comm,ierr)
46 !
47  IF(ierr.NE.0) THEN
48  WRITE(lu,*) 'P_ISUM_ARRAY: ERROR IN MPI_ALLREDUCE'
49  WRITE(lu,*) 'MPI ERROR ',ierr
50  CALL plante(1)
51  stop
52  ENDIF
53 #else
54  WRITE(lu,*)'CALL OF P_ISUM_ARRAY IN ITS VOID VERSION'
55 !
56 !-----------------------------------------------------------------------
57 !
58 #endif
59 !
60 !-----------------------------------------------------------------------
61 !
62  RETURN
63  END
64 
subroutine p_isum_array(SEND_BUFFER, RECV_BUFFER, NCOUNT, IERR)
Definition: p_isum_array.F:7
integer, parameter mpi_integer