The TELEMAC-MASCARET system  trunk
p_mpi_alltoallv_i.F
Go to the documentation of this file.
1 ! ****************************
2  SUBROUTINE p_mpi_alltoallv_i
3 ! ****************************
4 !
5  &(send_buffer,nsend,send_displ,send_datyp,recv_buffer,nrecv,
6  & recv_displ,recv_datyp,ierr)
7 !
8 !***********************************************************************
9 ! PARALLEL V6P2 21/08/2010
10 !***********************************************************************
11 !
12 !brief CALLS FUNCTION MPI_ALLTOALLV FOR INTEGERS.
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_DISPL |-->| DISPLACEMENT ARRAY FOR THE SEND BUFFER
36 !| SEND_DATYP |-->| DATA TYPE OF SEND BUFFER ELEMENTS
37 !| RECV_BUFFER |<--| RECEIVE BUFFER
38 !| NRECV |-->| SPECIFIES THE MAXIMUM NUMBER OF ELEMENTS THAT
39 !| | | CAN BE RECEIVED FROM EACH PROCESSOR
40 !| RECV_DISPL |-->| DISPLACEMENT ARRAY FOR THE RECEIVE BUFFER
41 !| RECV_DATYP |-->| DATA TYPE OF RECEIVE BUFFER ELEMENTS
42 !| IERR |-->| ERROR VALUE
43 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
44 !
47  IMPLICIT NONE
48 !
49 !+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
50 !
51  INTEGER, INTENT(IN) :: SEND_BUFFER(*),NSEND(*),SEND_DISPL(*)
52  INTEGER, INTENT(IN) :: SEND_DATYP,NRECV(*),RECV_DISPL(*)
53  INTEGER, INTENT(IN) :: RECV_DATYP
54  INTEGER, INTENT(OUT) :: RECV_BUFFER(*),IERR
55 !
56 !+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
57 !
58 #if defined HAVE_MPI
59  CALL mpi_alltoallv(send_buffer,nsend,send_displ,send_datyp,
60  & recv_buffer,nrecv,recv_displ,recv_datyp,
61  & comm,ierr)
62 !
63  IF(ierr.NE.0) THEN
64  WRITE(lu,*) 'P_MPI_ALLTOALLV_I:'
65  WRITE(lu,*) 'MPI ERROR ',ierr
66  CALL plante(1)
67  stop
68  ENDIF
69 #else
70  ierr=0
71  recv_buffer(1)=0
72  WRITE(lu,*) 'CALL OF P_MPI_ALLTOALLV_I VOID VERSION'
73 #endif
74 !
75 !-----------------------------------------------------------------------
76 !
77  RETURN
78  END
subroutine p_mpi_alltoallv_i(SEND_BUFFER, NSEND, SEND_DISPL, SEND_DATYP, RECV_BUFFER, NRECV, RECV_DISPL, RECV_DATYP, IERR)