The TELEMAC-MASCARET system  trunk
p_mpi_alltoall.F
Go to the documentation of this file.
1 ! *************************
2  SUBROUTINE p_mpi_alltoall
3 ! *************************
4 !
5  &(send_buffer,nsend,send_datyp,recv_buffer,nrecv,recv_datyp,
6  & ierr)
7 !
8 !***********************************************************************
9 ! PARALLEL V6P2 21/08/2010
10 !***********************************************************************
11 !
12 !brief CALLS FUNCTION MPI_ALLTOALL.
13 !
14 !history C. DENIS (SINETICS)
15 !+ 27/10/2009
16 !+ V6P0
17 !+
18 !
19 !history N.DURAND (HRW), S.E.BOURBAN (HRW)
20 !+ 13/07/2010
21 !+ V6P0
22 !+ Translation of French comments within the FORTRAN sources into
23 !+ English comments
24 !
25 !history N.DURAND (HRW), S.E.BOURBAN (HRW)
26 !+ 21/08/2010
27 !+ V6P0
28 !+ Creation of DOXYGEN tags for automated documentation and
29 !+ cross-referencing of the FORTRAN sources
30 !
31 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
32 !| SEND_BUFFER |-->| SEND BUFFER
33 !| NSEND |-->| SPECIFIES THE NUMBER OF ELEMENTS TO SEND TO EACH
34 !| | | PROCESSOR
35 !| SEND_DATYP |-->| DATA TYPE OF SEND BUFFER ELEMENTS
36 !| RECV_BUFFER |<--| RECEIVE BUFFER
37 !| NRECV |-->| SPECIFIES THE MAXIMUM NUMBER OF ELEMENTS THAT
38 !| | | CAN BE RECEIVED FROM EACH PROCESSOR
39 !| RECV_DATYP |-->| DATA TYPE OF RECEIVE BUFFER ELEMENTS
40 !| IERR |<--| ERROR VALUE
41 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
42 !
45  IMPLICIT NONE
46 !
47 !+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
48 !
49  INTEGER, INTENT(IN) :: SEND_BUFFER(*),NSEND,SEND_DATYP,NRECV
50  INTEGER, INTENT(IN) :: RECV_DATYP
51  INTEGER, INTENT(OUT) :: RECV_BUFFER(*),IERR
52 !
53 !+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
54 !
55  recv_buffer(1) = 0
56  ierr = 0
57 #if defined HAVE_MPI
58  CALL mpi_alltoall(send_buffer,nsend,send_datyp,
59  & recv_buffer,nrecv,recv_datyp,
60  & comm,ierr)
61 !
62  IF(ierr.NE.0) THEN
63  WRITE(lu,*) 'P_MPI_ALLTOALL:'
64  WRITE(lu,*) 'MPI ERROR ',ierr
65  CALL plante(1)
66  stop
67  ENDIF
68  RETURN
69 #else
70  WRITE(lu,*) 'CALL OF P_MPI_ALLTOALL VOID VERSION'
71 #endif
72 !
73 !-----------------------------------------------------------------------
74 !
75  END
subroutine p_mpi_alltoall(SEND_BUFFER, NSEND, SEND_DATYP, RECV_BUFFER, NRECV, RECV_DATYP, IERR)
Definition: p_mpi_alltoall.F:8