The TELEMAC-MASCARET system  trunk
p_iwrit.F
Go to the documentation of this file.
1 ! ******************
2  SUBROUTINE p_iwrit
3 ! ******************
4 !
5  &(buffer,n,bytes,dest,itag,ireq)
6 !
7 !***********************************************************************
8 ! PARALLEL V8P0
9 !***********************************************************************
10 !
11 !brief EXCHANGES VALUES BETWEEN PROCESSORS.
12 !
13 !history PASCAL VEZOLLES (IBM)
14 !+ 23/06/2008
15 !+ V5P9
16 !+
17 !
18 !history N.DURAND (HRW), S.E.BOURBAN (HRW)
19 !+ 13/07/2010
20 !+ V6P0
21 !+ Translation of French comments within the FORTRAN sources into
22 !+ English comments
23 !
24 !history N.DURAND (HRW), S.E.BOURBAN (HRW)
25 !+ 21/08/2010
26 !+ V6P0
27 !+ Creation of DOXYGEN tags for automated documentation and
28 !+ cross-referencing of the FORTRAN sources
29 !
30 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
31 !| BUFFER |-->| ZONE TAMPON POUR LES DONNEES
32 !| | | BUFFER / PUFFERFELD
33 !| DEST |-->| DESTINATION DES DONNEES
34 !| | | TID OF THE DEST. / KNOTEN-ID DES EMPFAENGERS
35 !| IREQ |<->| NUMERO DE REQUEST POUR MPI_ISEND
36 !| ITAG |-->| MESSAGE TAG
37 !| N |-->| NOMBRE DE ELEMENTS A TRANSMETTRE
38 !| | | NUMBER OF ELEMENTS / ANZAHL DER ELEMENTE
39 !| BYTES |-->| NOMBRE DE BYTES A ELEMTENT
40 !| | | SIZE OF ELEMENTS IN BYTES / GR"OSSE DER ELEMENTE
41 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
42 !
45  IMPLICIT NONE
46 !
47 !+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
48 !
49 ! DISTINGUISHING THE NUMBER OF ELEMENTS AND THEIR SIZE
50  INTEGER, INTENT(IN) :: N, BYTES,DEST,ITAG
51  INTEGER, INTENT(INOUT) :: IREQ
52  DOUBLE PRECISION, INTENT(IN) :: BUFFER(*)
53 !
54 !+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
55 !
56 #if defined HAVE_MPI
57  INTEGER IER
58 !
59 !-----------------------------------------------------------------------
60 !
61 
62 ! DISTINGUISHING THE NUMBER OF ELEMENTS AND THEIR SIZE
63 ! NBYTES = N * MPI_SIZEOF_COMPAD_TYPE( ier )
64 # ifdef COMPAD
65  CALL ampi_isend(buffer,n,ampi_type,dest,itag,
66  & comm,ireq,ier)
67 # else
68  CALL mpi_isend(buffer,n*bytes,mpi_byte,dest,itag,
69  & comm,ireq,ier)
70 # endif
71 !
72  IF(ier.NE.0) THEN
73  WRITE(lu,*) 'P_IWRIT: ERROR IN MPI_ISEND'
74  WRITE(lu,*) 'MPI ERROR ',ier
75  CALL plante(1)
76  stop
77  ENDIF
78 #else
79  WRITE(lu,*) 'CALL OF P_IWRIT IN ITS VOID VERSION'
80 #endif
81 !
82 !----------------------------------------------------------------------
83 !
84  RETURN
85  END
subroutine p_iwrit(BUFFER, N, BYTES, DEST, ITAG, IREQ)
Definition: p_iwrit.F:7
integer, parameter ampi_type