The TELEMAC-MASCARET system
trunk
sources
utils
parallel
p_lsum.F
Go to the documentation of this file.
1
! *****************
2
SUBROUTINE
p_lsum
3
! *****************
4
!
5
&(buffer_length,lbuffer)
6
!
7
!***********************************************************************
8
! PARALLEL V6P1 21/08/2010
9
!***********************************************************************
10
!
11
!brief REDUCTION OF A VECTOR OF LOGICALS WITH DIFFUSION OF
12
!+ THE RESULT TO ALL THE PROCESSORS.
13
!
14
!history O.BOITEAU (SINETICS)
15
!+ 01/07/2006
16
!+ V5P9
17
!+
18
!
19
!history N.DURAND (HRW), S.E.BOURBAN (HRW)
20
!+ 13/07/2010
21
!+ V6P0
22
!+ Translation of French comments within the FORTRAN sources into
23
!+ English comments
24
!
25
!history N.DURAND (HRW), S.E.BOURBAN (HRW)
26
!+ 21/08/2010
27
!+ V6P0
28
!+ Creation of DOXYGEN tags for automated documentation and
29
!+ cross-referencing of the FORTRAN sources
30
!
31
!~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
32
!| BUFFER_LENGTH |-->| BUFFER SIZE
33
!| LBUFFER |<->| SEND BUFFER
34
!~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
35
!
36
USE
declarations_parallel
37
USE
declarations_special
38
IMPLICIT NONE
39
!
40
!+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
41
!
42
INTEGER
,
INTENT(IN)
:: BUFFER_LENGTH
43
LOGICAL
,
DIMENSION(BUFFER_LENGTH)
,
INTENT(INOUT)
:: LBUFFER
44
!
45
!+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
46
!
47
#if defined HAVE_MPI
48
LOGICAL
,
DIMENSION(:)
,
ALLOCATABLE
:: LAUX
49
INTEGER
IER,I
50
!
51
!-----------------------------------------------------------------------
52
!
53
ALLOCATE
(laux(buffer_length),stat=ier)
54
CALL
check_allocate(ier,
'LAUX'
)
55
!
56
DO
i=1,buffer_length
57
laux(i)=lbuffer(i)
58
ENDDO
59
!
60
CALL
mpi_allreduce(laux,lbuffer,buffer_length,mpi_logical,
61
& mpi_lor,
comm
,ier)
62
!
63
IF
(ier.NE.0)
THEN
64
WRITE
(
lu
,*)
'P_LSUM: ERROR IN MPI_ALLREDUCE'
65
WRITE
(
lu
,*)
'MPI ERROR: '
,ier
66
! CALL PLANTE(1)
67
stop
68
ENDIF
69
!
70
DEALLOCATE
(laux)
71
#else
72
WRITE
(
lu
,*)
'CALL OF P_LSUM IN ITS VOID VERSION'
73
!
74
lbuffer = .false.
75
!
76
#endif
77
!
78
!-----------------------------------------------------------------------
79
!
80
RETURN
81
END
declarations_special
Definition:
declarations_special.F:3
declarations_parallel::comm
integer comm
Definition:
declarations_parallel.F:53
declarations_special::lu
integer lu
Definition:
declarations_special.F:45
p_lsum
subroutine p_lsum(BUFFER_LENGTH, LBUFFER)
Definition:
p_lsum.F:7
declarations_parallel
Definition:
declarations_parallel.F:3