The TELEMAC-MASCARET system  trunk
p_iread.F
Go to the documentation of this file.
1 ! ******************
2  SUBROUTINE p_iread
3 ! ******************
4  &(buffer,n,bytes,source,itag,ireq)
5 !
6 !
7 !***********************************************************************
8 ! PARALLEL V8P0
9 !***********************************************************************
10 !
11 !brief
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 !| IREQ |<->| NUMERO DE REQUEST POUR MPI_IRECV
34 !| ITAG |-->| MESSAGE TAG
35 !| N |-->| NOMBRE DE ELEMENTS A TRANSMETTRE
36 !| | | NUMBER OF ELEMENTS / ANZAHL DER ELEMENTE
37 !| BYTES |-->| NOMBRE DE BYTES A ELEMTENT
38 !| | | SIZE OF ELEMENTS IN BYTES / GR"OSSE DER ELEMENTE
39 !| SOURCE |-->| ORIGINE DES DONNEES
40 !| | | TID OF THE SENDER / KNOTEN-ID DES SENDER
41 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
42 !
45  IMPLICIT NONE
46 !
47 !+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
48 !
49 ! DISTINGUISHING THE NUMBER OF ELEMENTS AND THEIR SIZE
50  INTEGER, INTENT(IN) :: N,BYTES,SOURCE,ITAG
51  INTEGER, INTENT(INOUT) :: IREQ
52 ! NO DEFAULT INITIALISATION FOR USER TYPE COMPONENTS ALLOWED
53  DOUBLE PRECISION, INTENT(INOUT) :: BUFFER(*)
54 !
55 !+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
56 !
57 #if defined HAVE_MPI
58  INTEGER IER
59 !
60 !-----------------------------------------------------------------------
61 !
62 ! RECEIVES DATA
63 !
64 !-----------------------------------------------------------------------
65 !
66 
67 ! DISTINGUISHING THE NUMBER OF ELEMENTS AND THEIR SIZE
68 ! NBYTES = N * MPI_SIZEOF_COMPAD_TYPE( ier )
69 # ifdef COMPAD
70  CALL ampi_irecv(buffer,n,ampi_type,source,itag,
71  & comm,ireq,ier)
72 # else
73  CALL mpi_irecv(buffer,n*bytes,mpi_byte,source,itag,
74  & comm,ireq,ier)
75 # endif
76 !
77  IF(ier.NE.0) THEN
78  WRITE(lu,*) 'P_IREAD: ERROR IN MPI_IRECV'
79  WRITE(lu,*) 'MPI ERROR ',ier
80  CALL plante(1)
81  stop
82  ENDIF
83 #else
84  buffer(1) = 0.0
85  WRITE(lu,*) 'CALL OF P_IREAD IN ITS VOID VERSION'
86 #endif
87 !
88 !-----------------------------------------------------------------------
89 !
90  RETURN
91  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
subroutine p_iread(BUFFER, N, BYTES, SOURCE, ITAG, IREQ)
Definition: p_iread.F:6
integer, parameter ampi_type