The TELEMAC-MASCARET system
trunk
sources
utils
parallel
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
!
43
USE
declarations_parallel
44
USE
declarations_special
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
declarations_special
Definition:
declarations_special.F:3
source
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
declarations_parallel::comm
integer comm
Definition:
declarations_parallel.F:53
declarations_special::lu
integer lu
Definition:
declarations_special.F:45
p_iread
subroutine p_iread(BUFFER, N, BYTES, SOURCE, ITAG, IREQ)
Definition:
p_iread.F:6
declarations_parallel
Definition:
declarations_parallel.F:3
declarations_parallel::ampi_type
integer, parameter ampi_type
Definition:
declarations_parallel.F:70