File: /nfs/home/0/users/jenkins/mfix.git/model/cartesian_grid/write_progress_bar.f

1     !vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvC
2     !                                                                      C
3     !  Module name: WRITE_PROGRESS_BAR                                     C
4     !  Purpose: Displays a progress bar on the screen                      C
5     !                                                                      C
6     !  Author: Jeff Dietiker                              Date: 30-JAN-09  C
7     !  Reviewer:                                          Date: **-***-**  C
8     !                                                                      C
9     !  Revision Number:                                                    C
10     !  Purpose:                                                            C
11     !  Author:                                            Date: dd-mmm-yy  C
12     !  Reviewer:                                          Date: dd-mmm-yy  C
13     !                                                                      C
14     !  Literature/Document References:                                     C
15     !                                                                      C
16     !  Variables referenced:                                               C
17     !                                                                      C
18     !  Variables modified:                                                 C
19     !                                                                      C
20     !  Local variables:                                                    C
21     !                                                                      C
22     !^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^C
23     !
24           SUBROUTINE WRITE_PROGRESS_BAR(I,I_MAX,JUSTIFICATION)
25     
26     !-----------------------------------------------
27     !   M o d u l e s
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     !vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvC
126     !                                                                      C
127     !  Module name: ERASE_PROGRESS_BAR                                     C
128     !  Purpose: Erases a progress bar on the screen                        C
129     !                                                                      C
130     !  Author: Jeff Dietiker                              Date: 30-JAN-09  C
131     !  Reviewer:                                          Date: **-***-**  C
132     !                                                                      C
133     !  Revision Number:                                                    C
134     !  Purpose:                                                            C
135     !  Author:                                            Date: dd-mmm-yy  C
136     !  Reviewer:                                          Date: dd-mmm-yy  C
137     !                                                                      C
138     !  Literature/Document References:                                     C
139     !                                                                      C
140     !  Variables referenced:                                               C
141     !                                                                      C
142     !  Variables modified:                                                 C
143     !                                                                      C
144     !  Local variables:                                                    C
145     !                                                                      C
146     !^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^C
147     
148           SUBROUTINE ERASE_PROGRESS_BAR(BAR_WIDTH,BAR_STATUS,JUSTIFICATION)
149     
150     !-----------------------------------------------
151     !   M o d u l e s
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