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