The TELEMAC-MASCARET system  trunk
fluxpr.f
Go to the documentation of this file.
1 ! *****************
2  SUBROUTINE fluxpr
3 ! *****************
4 !
5  &(nsec,ctrlsc,flx,volneg,volpos,info,tps,nseg,ncsize,cumflo)
6 !
7 !***********************************************************************
8 ! BIEF V6P1 21/08/2010
9 !***********************************************************************
10 !
11 !brief COMPUTES FLUXES THROUGH CONTROL SECTIONS
12 !+ AND SUMS THEM UP TO OBTAIN OSCILLATING VOLUMES.
13 !
14 !note PRINTOUTS OF DISCHARGES THROUGH CONTROL SECTIONS ARE DONE
15 !+ IN THIS ROUTINE. YOU CAN REWRITE IT TO DIVERT THESE
16 !+ PRINTOUTS TO A FILE OR TO CHANGE THE FORMAT
17 !
18 !history J-M HERVOUET (LNH)
19 !+ 25/03/99
20 !+ V5P5
21 !+
22 !
23 !history N.DURAND (HRW), S.E.BOURBAN (HRW)
24 !+ 13/07/2010
25 !+ V6P0
26 !+ Translation of French comments within the FORTRAN sources into
27 !+ English comments
28 !
29 !history N.DURAND (HRW), S.E.BOURBAN (HRW)
30 !+ 21/08/2010
31 !+ V6P0
32 !+ Creation of DOXYGEN tags for automated documentation and
33 !+ cross-referencing of the FORTRAN sources
34 !
35 !history J,RIEHME (ADJOINTWARE)
36 !+ November 2016
37 !+ V7P2
38 !+ Replaced EXTERNAL statements to parallel functions / subroutines
39 !+ by the INTERFACE_PARALLEL
40 !
41 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
42 !| CTRLSC |-->| NUMBERS OF POINTS IN THE CONTROL SECTIONS
43 !| CUMFLO |-->| KEY-WORD: PRINTING CUMULATED FLOWRATES
44 !| FLX |-->| FLUXES THROUGH CONTROL SECTIONS
45 !| INFO |-->| IF YES : INFORMATION IS PRINTED
46 !| NCSIZE |-->| NUMBER OF PROCESSORS
47 !| NSEC |-->| NUMBER OF CONTROL SECTIONS
48 !| NSEG |-->| NUMBER OF SEGMENTS
49 !| TPS |-->| TIME
50 !| VOLNEG |-->| CUMULATED NEGATIVE VOLUME THROUGH SECTIONS
51 !| VOLPOS |-->| CUMULATED POSITIVE VOLUME THROUGH SECTIONS
52 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
53 !
55  USE interface_parallel, ONLY : p_max,p_min
56  IMPLICIT NONE
57 !
58 !+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
59 !
60  INTEGER, INTENT(IN) :: NSEC,NCSIZE
61  INTEGER, INTENT(IN) :: CTRLSC(*)
62  INTEGER, INTENT(IN) :: NSEG(nsec)
63  LOGICAL, INTENT(IN) :: INFO,CUMFLO
64  DOUBLE PRECISION, INTENT(IN) :: FLX(nsec),TPS
65  DOUBLE PRECISION, INTENT(IN) :: VOLNEG(nsec),VOLPOS(nsec)
66 !
67 !+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
68 !
69  INTEGER ISEC,II
70 !
71 !-----------------------------------------------------------------------
72 !
73  IF(.NOT.info) THEN
74  RETURN
75  ENDIF
76 !
77  IF(ncsize.LE.1) THEN
78 !
79  DO isec = 1,nsec
80 !
81  IF(cumflo) THEN
82  WRITE(lu,131) isec,ctrlsc(1+2*(isec-1)),
83  & ctrlsc(2+2*(isec-1)),
84  & flx(isec),
85  & volneg(isec),
86  & volpos(isec)
87  ELSE
88  WRITE(lu,137) isec,ctrlsc(1+2*(isec-1)),
89  & ctrlsc(2+2*(isec-1)),
90  & flx(isec)
91  ENDIF
92 !
93  ENDDO
94 !
95  ELSE
96 !
97  DO isec = 1,nsec
98 ! SECTIONS ACROSS 2 SUB-DOMAINS WILL HAVE NSEG=0 OR -1
99 ! AND -1 WANTED HERE FOR RELEVANT MESSAGE
100  ii=p_min(nseg(isec))
101 !
102  IF(ii.GE.0) THEN
103 !
104  WRITE(lu,133) isec,ctrlsc(1+2*(isec-1)),
105  & ctrlsc(2+2*(isec-1)),
106  & p_min(flx(isec))+p_max(flx(isec)),
107  & p_min(volneg(isec)),
108  & p_max(volpos(isec))
109 !
110  ELSE
111 !
112  WRITE(lu,135) isec,ctrlsc(1+2*(isec-1)),
113  & ctrlsc(2+2*(isec-1))
114  ENDIF
115 !
116  ENDDO
117 !
118  ENDIF
119 !
120 131 FORMAT(1x,/,1x,'CONTROL SECTION NUMBER ',1i2,
121  & ' (BETWEEN POINTS ',1i5,' AND ',1i5,')',//,5x,
122  & 'DISCHARGE: ' ,g16.7,/,5x,
123  & 'NEGATIVE VOLUME THROUGH THE SECTION: ',g16.7,/,
124  & 5x,
125  & 'POSITIVE VOLUME THROUGH THE SECTION: ',g16.7)
126 137 FORMAT(1x,/,1x,'CONTROL SECTION NUMBER ',1i2,
127  & ' (BETWEEN POINTS ',1i5,' AND ',1i5,')',//,5x,
128  & 'DISCHARGE: ' ,g16.7)
129 135 FORMAT(1x,/,1x,'CONTROL SECTION NUMBER ',1i2,
130  & ' (BETWEEN POINTS ',1i5,' AND ',1i5,')',//,5x,
131  & 'ACROSS TWO SUB-DOMAINS, NO COMPUTATION')
132 133 FORMAT(1x,/,1x,'CONTROL SECTION NUMBER ',1i2,
133  & ' (BETWEEN POINTS ',1i5,' AND ',1i5,')',//,5x,
134  & 'DISCHARGE: ' ,g16.7,/,5x,
135  & 'NEGATIVE VOLUME THROUGH THE SECTION: ',g16.7,/,5x,
136  & 'POSITIVE VOLUME THROUGH THE SECTION: ',g16.7)
137 !
138 !-----------------------------------------------------------------------
139 !
140  RETURN
141  END
subroutine fluxpr(NSEC, CTRLSC, FLX, VOLNEG, VOLPOS, INFO, TPS, NSEG, NCSIZE, CUMFLO)
Definition: fluxpr.f:7