The TELEMAC-MASCARET system  trunk
p_dwrit.F
Go to the documentation of this file.
1 ! ******************
2  SUBROUTINE p_dwrit
3 ! ******************
4 !
5  &(buffer,n,bytes,dest,datatype)
6 !
7 !***********************************************************************
8 ! PARALLEL V6P1 21/08/2010
9 !***********************************************************************
10 !
11 !brief EXCHANGES VALUES BETWEEN PROCESSORS.
12 !
13 !history REINHARD HINKELMANN (HANOVER)
14 !+ 08/06/1996
15 !+
16 !+ MODIFIED
17 !
18 !history J-M HERVOUET (LNH)
19 !+ 17/12/1996
20 !+
21 !+ MODIFIED
22 !
23 !history RAINER JOHANNI (SGI MUNICH)
24 !+ **/10/1999
25 !+
26 !+ ADAPTED FOR MPI
27 !
28 !history J.A. JANKOWSKI (BAW KARLSRUHE)
29 !+ 28/12/1999
30 !+
31 !+ RELEASE 5.0 MODIFIED
32 !
33 !history HANS HERRMANN (HANOVRE)
34 !+ 23/06/2008
35 !+ V5P9
36 !+
37 !
38 !history N.DURAND (HRW), S.E.BOURBAN (HRW)
39 !+ 13/07/2010
40 !+ V6P0
41 !+ Translation of French comments within the FORTRAN sources into
42 !+ English comments
43 !
44 !history N.DURAND (HRW), S.E.BOURBAN (HRW)
45 !+ 21/08/2010
46 !+ V6P0
47 !+ Creation of DOXYGEN tags for automated documentation and
48 !+ cross-referencing of the FORTRAN sources
49 !
50 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
51 !| BUFFER |-->| ZONE TAMPON POUR LES DONNEES
52 !| | | BUFFER / PUFFERFELD
53 !| DEST |-->| DESTINATION DES DONNEES
54 !| | | TID OF THE DEST. / KNOTEN-ID DES EMPFAENGERS
55 !| N |-->| NOMBRE DE ELEMENTS A TRANSMETTRE
56 !| | | NUMBER OF ELEMENTS / ANZAHL DER ELEMENTE
57 !| BYTES |-->| NOMBRE DE BYTES A ELEMTENT
58 !| | | SIZE OF ELEMENTS IN BYTES / GR"OSSE DER ELEMENTE
59 !| DATATYPE |-->| TYPE DES DONNEES (MSGTAG DE PVM)
60 !| | | 0 - STRING
61 !| | | 1 - BYTE1
62 !| | | 2 - INTEGER2
63 !| | | 3 - INTEGER4
64 !| | | 4 - REAL4
65 !| | | 5 - COMPLEX8
66 !| | | 6 - REAL8
67 !| | | 7 - COMPLEX16
68 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
69 !
72  IMPLICIT NONE
73 !
74 !+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
75 !
76 ! DISTINGUISHING THE NUMBER OF ELEMENTS AND THEIR SIZE
77  INTEGER, INTENT(IN) :: N,BYTES,DEST,DATATYPE
78 ! NO DEFAULT INITIALISATION FOR USER TYPE COMPONENTS ALLOWED
79  DOUBLE PRECISION, INTENT(INOUT) :: BUFFER(*)
80 !
81 !+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
82 !
83 #if defined HAVE_MPI
84  INTEGER IER
85 !
86 !-----------------------------------------------------------------------
87 !
88 ! DISTINGUISHING THE NUMBER OF ELEMENTS AND THEIR SIZE
89 ! NBYTES = N * MPI_SIZEOF_COMPAD_TYPE( ier )
90 # ifdef COMPAD
91  CALL ampi_send(buffer,n,ampi_type,dest,4711,comm,ier)
92 # else
93  CALL mpi_send(buffer,n*bytes,mpi_byte,dest,4711,comm,ier)
94 # endif
95 !
96  IF (ier.NE.0) THEN
97  WRITE(lu,*) 'P_DWRITE: ERROR IN MPI_SEND'
98  WRITE(lu,*) 'MPI ERROR ',ier
99  CALL plante(1)
100  stop
101  ENDIF
102  RETURN
103 #else
104  WRITE(lu,*) 'CALL OF P_DWRIT IN ITS VOID VERSION'
105 #endif
106 !
107 !----------------------------------------------------------------------
108 !
109  END
subroutine p_dwrit(BUFFER, N, BYTES, DEST, DATATYPE)
Definition: p_dwrit.F:7
integer, parameter ampi_type