File: /nfs/home/0/users/jenkins/mfix.git/model/cartesian_grid/write_progress_bar.f
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 SUBROUTINE WRITE_PROGRESS_BAR(I,I_MAX,JUSTIFICATION)
25
26
27
28
29
30 USE param
31 USE param1
32 USE physprop
33 USE fldvar
34 USE run
35 USE scalars
36 USE funits
37 USE rxns
38 USE compar
39 USE mpi_utility
40 USE progress_bar
41 IMPLICIT NONE
42
43 INTEGER :: I,I_MAX,ISKIP,PROGRESS
44 INTEGER :: P,P1,P2
45 CHARACTER (LEN=9) :: TEXT
46 CHARACTER (LEN=4) :: BAR_STATUS
47 CHARACTER (LEN=BAR_WIDTH) :: PROGRESSBAR
48 CHARACTER (LEN=1) :: JUSTIFICATION
49 DOUBLE PRECISION :: PERCENT
50
51 IF(.NOT.PRINT_PROGRESS_BAR) RETURN
52
53 IF(myPE /= PE_IO) RETURN
54
55 ISKIP = INT(BAR_RESOLUTION * 0.01 *FLOAT(I_MAX))
56
57 IF((MOD(I,ISKIP)/=0).AND.(I/=I_MAX)) RETURN
58
59 CALL ERASE_PROGRESS_BAR(BAR_WIDTH,BAR_STATUS,JUSTIFICATION)
60
61 BAR_STATUS =''
62 IF((BAR_WIDTH<10).OR.(BAR_WIDTH>80)) RETURN
63
64 PERCENT = FLOAT(I)/FLOAT(I_MAX) * 100.0
65 PROGRESS = INT(0.01*PERCENT * BAR_WIDTH) + 1
66
67 WRITE(TEXT,10) PERCENT
68 10 FORMAT(' ',F5.1,' % ')
69
70 DO P = 1, PROGRESS
71 PROGRESSBAR(P:P)= BAR_CHAR
72 ENDDO
73
74 DO P = PROGRESS+1,BAR_WIDTH
75 PROGRESSBAR(P:P)= ' '
76 ENDDO
77
78 SELECT CASE(JUSTIFICATION)
79 CASE('L')
80
81 WRITE(*,15,ADVANCE='NO')TEXT,'|',PROGRESSBAR,'|'
82
83 CASE('C')
84
85 P1 = BAR_WIDTH / 2 - 3
86 P2 = BAR_WIDTH / 2 + 5
87
88 PROGRESSBAR(P1:P2)= TEXT
89
90 WRITE(*,20,ADVANCE='NO')'|',PROGRESSBAR,'|'
91
92 CASE('R')
93
94 WRITE(*,15,ADVANCE='NO')'|',PROGRESSBAR,'|',TEXT
95
96 CASE('N')
97
98 WRITE(*,20,ADVANCE='NO')'|',PROGRESSBAR,'|'
99
100 CASE DEFAULT
101 WRITE(*,*)'SUBROUTINE: WRITE_PROGRESS_BAR.'
102 WRITE(*,*)'INCORRECT JUSTIFICATION DESCRIPTOR:',JUSTIFICATION
103 WRITE(*,*)'ACCEPTABLE VALUES ARE:'
104 WRITE(*,*)'L : LEFT JUSTIFICATION'
105 WRITE(*,*)'C : CENTER JUSTIFICATION'
106 WRITE(*,*)'R : RIGHT JUSTIFICATION'
107 WRITE(*,*)'N : NO TEXT'
108 call mfix_exit(myPE)
109 END SELECT
110
111 IF(PERCENT>=100.0) THEN
112 BAR_STATUS ='DONE'
113 WRITE(*,*)
114 ENDIF
115
116 15 FORMAT(A,A,A,A)
117 20 FORMAT(A,A,A)
118
119
120 RETURN
121 END SUBROUTINE WRITE_PROGRESS_BAR
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148 SUBROUTINE ERASE_PROGRESS_BAR(BAR_WIDTH,BAR_STATUS,JUSTIFICATION)
149
150
151
152
153 USE parallel
154 USE sendrecv
155 USE param
156 USE param1
157 USE physprop
158 USE fldvar
159 USE run
160 USE scalars
161 USE funits
162 USE rxns
163 USE compar
164 USE mpi_utility
165 IMPLICIT NONE
166
167 INTEGER :: I,BAR_WIDTH,NERASE
168 CHARACTER (LEN=4) :: BAR_STATUS
169 CHARACTER (LEN=1) :: JUSTIFICATION
170
171 IF(myPE /= PE_IO) RETURN
172
173 IF(BAR_STATUS=='DONE') THEN
174 BAR_STATUS = ''
175 RETURN
176 ENDIF
177
178 IF((BAR_WIDTH<10).OR.(BAR_WIDTH>80)) RETURN
179
180
181 SELECT CASE(JUSTIFICATION)
182 CASE('L')
183 NERASE = BAR_WIDTH + 11
184 CASE('C')
185 NERASE = BAR_WIDTH + 2
186 CASE('R')
187 NERASE = BAR_WIDTH + 11
188 CASE('N')
189 NERASE = BAR_WIDTH + 2
190 CASE DEFAULT
191 WRITE(*,*)'SUBROUTINE: WRITE_PROGRESS_BAR.'
192 WRITE(*,*)'INCORRECT JUSTIFICATION DESCRIPTOR:',JUSTIFICATION
193 WRITE(*,*)'ACCEPTABLE VALUES ARE:'
194 WRITE(*,*)'L : LEFT JUSTIFICATION'
195 WRITE(*,*)'C : CENTER JUSTIFICATION'
196 WRITE(*,*)'R : RIGHT JUSTIFICATION'
197 WRITE(*,*)'N : NO TEXT'
198 call mfix_exit(myPE)
199 END SELECT
200
201 DO I = 1,NERASE
202 WRITE(*,10,ADVANCE='NO')CHAR(8)
203 ENDDO
204 10 FORMAT(A)
205
206 RETURN
207 END SUBROUTINE ERASE_PROGRESS_BAR
208
209
210