The TELEMAC-MASCARET system  trunk
p_dread.F
Go to the documentation of this file.
1 ! ******************
2  SUBROUTINE p_dread
3 ! ******************
4 !
5  &(buffer,n,bytes,source,datatype)
6 !
7 !***********************************************************************
8 ! PARALLEL V6P2 21/08/2010
9 !***********************************************************************
10 !
11 !brief RECEIVES DATA.
12 !
13 !history REINHARD HINKELMANN (HANOVER)
14 !+ 08/06/1996
15 !+
16 !+ MODIFIED
17 !
18 !history J-M MERVOUET (LNH)
19 !+ 17/12/1996
20 !+
21 !+ MODIFIED
22 !
23 !history HANS HERRMANN (HANOVRE)
24 !+ 08/01/1997
25 !+
26 !+
27 !
28 !history RAINER JOHANNI (SGI MUNICH)
29 !+ **/10/1999
30 !+
31 !+ ADAPTED FOR MPI
32 !
33 !history J.A. JANKOWSKI (BAW KARLSRUHE)
34 !+ 28/12/1999
35 !+
36 !+ RELEASE 5.0 MODIFIED
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 !| N |-->| NOMBRE DE ELEMENTS A TRANSMETTRE
54 !| | | NUMBER OF ELEMENTS / ANZAHL DER ELEMENTE
55 !| BYTES |-->| NOMBRE DE BYTES A ELEMTENT
56 !| | | SIZE OF ELEMENTS IN BYTES / GR"OSSE DER ELEMENTE
57 !| SOURCE |-->| ORIGINE DES DONNEES
58 !| | | TID OF THE SENDER / KNOTEN-ID DES SENDER
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,SOURCE,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 STATUS(mpi_status_size)
85  INTEGER IER
86 !
87 !-----------------------------------------------------------------------
88 !
89 ! RECEIVES DATA
90 !
91 ! DISTINGUISHING THE NUMBER OF ELEMENTS AND THEIR SIZE
92 ! NBYTES = N * MPI_SIZEOF_COMPAD_TYPE( ier )
93 # ifdef COMPAD
94  CALL ampi_recv(buffer,n,ampi_type,source,4711,
95  & comm,status,ier)
96 # else
97  CALL mpi_recv(buffer,n*bytes,mpi_byte,source,4711,
98  & comm,status,ier)
99 # endif
100 !
101  IF(ier.NE.0) THEN
102  WRITE(lu,*) 'P_DREAD: ERROR IN MPI_RECV'
103  WRITE(lu,*) 'MPI ERROR ',ier
104  CALL plante(1)
105  stop
106  ENDIF
107 #else
108  buffer(1)=0.d0
109  WRITE(lu,*) 'CALL OF P_DREAD IN ITS VOID VERSION'
110 #endif
111 !
112 !-----------------------------------------------------------------------
113 !
114  RETURN
115  END
subroutine source(S0U, S0V, S0W, S1U, S1V, S1W, UN3, VN3, WSN3, WN3, VOLU, VOLUN, T3, NPOIN3, NTRAC, LT, AT, DT, PRIVE, NONHYD, NPOIN2, NSCE, ISCE, KSCE, QSCE, USCE, VSCE, MAXSCE)
Definition: source.f:10
integer, parameter ampi_type
subroutine p_dread(BUFFER, N, BYTES, SOURCE, DATATYPE)
Definition: p_dread.F:7