File: /nfs/home/0/users/jenkins/mfix.git/model/get_stats.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 GET_STATS()
25
26
27
28
29
30
31
32
33 USE param
34 USE param1
35 USE physprop
36 USE geometry
37 USE fldvar
38 USE indices
39 USE funits
40 USE residual
41 USE run
42 USE compar
43 USE functions
44 IMPLICIT NONE
45
46
47
48
49
50
51
52
53
54
55
56 INTEGER I, J, K, IJK, M
57
58 DOUBLE PRECISION tmp
59
60
61 INTEGER Dir_g, Dir_s(DIMENSION_M)
62
63
64 DOUBLE PRECISION NC_g, NC_s(DIMENSION_M)
65
66
67 DOUBLE PRECISION Ps
68
69
70 INTEGER IJK_NC_g, IJK_Ps, IJK_NC_s(DIMENSION_M)
71
72
73
74
75
76 = 1
77 NC_G = LARGE_NUMBER
78 IJK_NC_G = 0
79
80 = 0.
81 IJK_PS = 0
82
83 DO IJK = IJKMIN1, IJKMAX1
84 IF (FLUID_AT(IJK)) THEN
85 I = I_OF(IJK)
86 J = J_OF(IJK)
87 K = K_OF(IJK)
88
89 IF (U_G(IJK) == ZERO) THEN
90 TMP = LARGE_NUMBER
91 ELSE IF (U_G(IJK) > ZERO) THEN
92 TMP = DX(IP1(I))/U_G(IJK)
93 ELSE
94 TMP = -DX(I)/U_G(IJK)
95 ENDIF
96
97 IF (TMP < NC_G) THEN
98 NC_G = TMP
99 IJK_NC_G = IJK
100 DIR_G = 1
101 ENDIF
102
103 IF (V_G(IJK) == ZERO) THEN
104 TMP = LARGE_NUMBER
105 ELSE IF (V_G(IJK) > ZERO) THEN
106 TMP = DY(JP1(J))/V_G(IJK)
107 ELSE
108 TMP = -DY(J)/V_G(IJK)
109 ENDIF
110
111 IF (TMP < NC_G) THEN
112 NC_G = TMP
113 IJK_NC_G = IJK
114 DIR_G = 2
115 ENDIF
116
117 IF (W_G(IJK) == ZERO) THEN
118 TMP = LARGE_NUMBER
119 ELSE IF (W_G(IJK) > ZERO) THEN
120 TMP = DZ(KP1(K))*X(I)/W_G(IJK)
121 ELSE
122 TMP = -DZ(K)*X(I)/W_G(IJK)
123 ENDIF
124
125 IF (TMP < NC_G) THEN
126 NC_G = TMP
127 IJK_NC_G = IJK
128 DIR_G = 3
129 ENDIF
130
131 IF (P_STAR(IJK) > PS) THEN
132 PS = P_STAR(IJK)
133 IJK_PS = IJK
134 ENDIF
135
136 ENDIF
137 END DO
138 M = 1
139 IF (MMAX > 0) THEN
140 DIR_S(:MMAX) = 1
141 NC_S(:MMAX) = LARGE_NUMBER
142 IJK_NC_S(:MMAX) = 0
143 M = MMAX + 1
144 ENDIF
145 DO M = 1, MMAX
146 DO IJK = IJKMIN1, IJKMAX1
147 IF (FLUID_AT(IJK)) THEN
148 I = I_OF(IJK)
149 J = J_OF(IJK)
150 K = K_OF(IJK)
151 IF (U_S(IJK,M) == ZERO) THEN
152 TMP = LARGE_NUMBER
153 ELSE IF (U_S(IJK,M) > ZERO) THEN
154 TMP = DX(IP1(I))/U_S(IJK,M)
155 ELSE
156 TMP = -DX(I)/U_S(IJK,M)
157 ENDIF
158
159 IF (TMP < NC_S(M)) THEN
160 NC_S(M) = TMP
161 IJK_NC_S(M) = IJK
162 DIR_S(M) = 1
163 ENDIF
164
165 IF (V_S(IJK,M) == ZERO) THEN
166 TMP = LARGE_NUMBER
167 ELSE IF (V_S(IJK,M) > ZERO) THEN
168 TMP = DY(JP1(J))/V_S(IJK,M)
169 ELSE
170 TMP = -DY(J)/V_S(IJK,M)
171 ENDIF
172
173 IF (TMP < NC_S(M)) THEN
174 NC_S(M) = TMP
175 IJK_NC_S(M) = IJK
176 DIR_S(M) = 2
177 ENDIF
178
179 IF (W_S(IJK,M) == ZERO) THEN
180 TMP = LARGE_NUMBER
181 ELSE IF (W_S(IJK,M) > ZERO) THEN
182 TMP = DZ(KP1(K))*X(I)/W_S(IJK,M)
183 ELSE
184 TMP = -DZ(K)*X(I)/W_S(IJK,M)
185 ENDIF
186
187 IF (TMP < NC_S(M)) THEN
188 NC_S(M) = TMP
189 IJK_NC_S(M) = IJK
190 DIR_S(M) = 3
191 ENDIF
192
193 ENDIF
194 END DO
195 END DO
196 CALL START_LOG
197 IF(DMP_LOG)WRITE (UNIT_LOG, *) 'Gas phase:'
198 IF(DMP_LOG)WRITE (UNIT_LOG, '(A, G12.3, A, I6, A, I1)') ' Minimum Courant No = ', &
199 NC_G*ODT, ' Location = ', IJK_NC_G, ' Direction = ', DIR_G
200
201 DO M = 1, MMAX
202 IF(DMP_LOG)WRITE (UNIT_LOG, '(A, I2, A)') ' Solids phase (', M, '):'
203 IF(DMP_LOG)WRITE (UNIT_LOG, '(A, G12.3, A, I6, A, I1)') ' Minimum Courant No = '&
204 , NC_S(M)*ODT, ' Location = ', IJK_NC_S(M), ' Direction = ', &
205 DIR_S(M)
206 END DO
207 IF(DMP_LOG)WRITE (UNIT_LOG, '(A, G12.3, A, I6)') ' Maximum P_star = ', PS, &
208 ' Location = ', IJK_PS
209
210
211
212
213
214
215
216
217 IF(DMP_LOG)WRITE (UNIT_LOG, *)
218
219 CALL END_LOG
220
221 RETURN
222 END SUBROUTINE GET_STATS
223
224
225
226
227