File: RELATIVE:/../../../mfix.git/model/check_data_20.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
25
26 SUBROUTINE CHECK_DATA_20
27
28
29
30
31 USE param
32 USE param1
33 USE toleranc
34 USE fldvar
35 USE run
36 USE geometry
37 USE constant
38 USE physprop
39 USE indices
40 USE funits
41 USE visc_g
42 USE rxns
43 USE scalars
44 USE compar
45 USE sendrecv
46 USE discretelement
47 USE mfix_pic
48 USE functions
49
50 use mpi_utility
51 use error_manager
52
53 IMPLICIT NONE
54
55
56
57
58
59 INTEGER :: I, J, K, IJK, IMJK, IJMK, IJKM
60
61 INTEGER :: M
62
63 INTEGER :: N
64
65 LOGICAL :: ABORT
66
67 LOGICAL :: NONZERO
68
69 DOUBLE PRECISION DIF
70
71
72 CALL INIT_ERR_MSG("CHECK_DATA_20")
73
74 call send_recv(p_g,2)
75 call send_recv(ep_g,2)
76 call send_recv(w_s,2)
77 call send_recv(w_g,2)
78 call send_recv(u_s,2)
79 call send_recv(u_g,2)
80 call send_recv(v_s,2)
81 call send_recv(v_g,2)
82 call send_recv(ro_s,2)
83 call send_recv(rop_s,2)
84 call send_recv( P_STAR, 2 )
85 call send_recv( ROP_G, 2 )
86 call send_recv( RO_G, 2 )
87 call send_recv( T_G, 2 )
88 call send_recv( T_S, 2 )
89 call send_recv( X_G, 2 )
90 call send_recv( X_S, 2 )
91 IF(GRANULAR_ENERGY) call send_recv( THETA_m, 2 )
92
93 ABORT = .FALSE.
94
95
96
97
98 DO K = kstart2, kend2
99 DO J = jstart2, jend2
100 DO I = istart2, iend2
101 IJK = FUNIJK(I,J,K)
102 IF (.NOT.WALL_AT(IJK)) THEN
103
104 IMJK = IM_OF(IJK)
105 IJMK = JM_OF(IJK)
106 IJKM = KM_OF(IJK)
107
108
109 IF(EP_G(IJK) == UNDEFINED) &
110 CALL REPORT_ERROR(ABORT, I, J, K, 'EP_G')
111 IF(P_G(IJK) == UNDEFINED) &
112 CALL REPORT_ERROR(ABORT, I, J, K, 'P_G')
113 IF(P_STAR(IJK) == UNDEFINED) &
114 CALL REPORT_ERROR(ABORT, I, J, K, 'P_STAR')
115 IF(RO_G(IJK) == UNDEFINED) &
116 CALL REPORT_ERROR(ABORT, I, J, K, 'RO_G')
117 IF(ROP_G(IJK) == UNDEFINED) &
118 CALL REPORT_ERROR(ABORT, I, J, K, 'ROP_G')
119
120 IF(U_G(IJK) == UNDEFINED) &
121 CALL REPORT_ERROR(ABORT, I, J, K, 'U_G')
122 IF(V_G(IJK) == UNDEFINED) &
123 CALL REPORT_ERROR(ABORT, I, J, K, 'V_G')
124 IF(W_G(IJK) == UNDEFINED) &
125 CALL REPORT_ERROR(ABORT, I, J, K, 'W_G')
126
127 IF(U_G(IMJK) == UNDEFINED) &
128 CALL REPORT_ERROR(ABORT, I-1, J, K, 'U_G')
129 IF(V_G(IJMK) == UNDEFINED) &
130 CALL REPORT_ERROR(ABORT, I, J-1, K, 'V_G')
131 IF(W_G(IJKM) == UNDEFINED) &
132 CALL REPORT_ERROR(ABORT, I, J, K-1, 'W_G')
133
134 IF(T_G(IJK) == UNDEFINED) THEN
135 IF(ENERGY_EQ .OR. RO_G0==UNDEFINED .OR. &
136 MU_G0==UNDEFINED) &
137 CALL REPORT_ERROR(ABORT, I, J, K, 'T_G')
138 ENDIF
139
140 IF(SPECIES_EQ(0) .OR. RO_G0==UNDEFINED .AND. &
141 MW_AVG==UNDEFINED) THEN
142 DO N = 1, NMAX(0)
143 IF(X_G(IJK,N) == UNDEFINED) &
144 CALL REPORT_ERROR(ABORT, I, J, K, 'X_G',N)
145 ENDDO
146 ENDIF
147
148 DO N = 1, NScalar
149 IF(Scalar(IJK,N) == UNDEFINED) &
150 CALL REPORT_ERROR(ABORT, I, J, K, 'SCALAR',N)
151 ENDDO
152
153
154
155
156 DO M = 1, SMAX
157
158 IF (RO_S(IJK,M) == UNDEFINED) &
159 CALL REPORT_ERROR(ABORT, I, J, K, 'RO_S',M)
160
161 IF (ROP_S(IJK,M) == UNDEFINED) &
162 CALL REPORT_ERROR(ABORT, I, J, K, 'ROP_S',M)
163
164 IF (U_S(IJK,M)==UNDEFINED .AND. I/=IMAX2) &
165 CALL REPORT_ERROR(ABORT, I, J, K, 'U_S',M)
166 IF (V_S(IJK,M)==UNDEFINED .AND. J/=JMAX2) &
167 CALL REPORT_ERROR(ABORT, I, J, K, 'V_S',M)
168 IF (W_S(IJK,M)==UNDEFINED .AND. K/=KMAX2) &
169 CALL REPORT_ERROR(ABORT, I, J, K, 'W_S',M)
170
171 IF (U_S(IMJK,M) == UNDEFINED) &
172 CALL REPORT_ERROR(ABORT, I, J, K, 'U_S',M)
173 IF (V_S(IJMK,M) == UNDEFINED) &
174 CALL REPORT_ERROR(ABORT, I, J, K, 'V_S',M)
175 IF (W_S(IJKM,M) == UNDEFINED) &
176 CALL REPORT_ERROR(ABORT, I, J, K, 'W_S',M)
177
178 IF (T_S(IJK,M) == UNDEFINED) THEN
179 IF (ENERGY_EQ) &
180 CALL REPORT_ERROR(ABORT, I, J, K, 'T_S',M)
181 ENDIF
182
183 IF (SPECIES_EQ(M)) THEN
184 DO N = 1, NMAX(M)
185 IF(X_S(IJK,M,N) == UNDEFINED) &
186 CALL REPORT_ERROR(ABORT, I, J, K, 'X_S', M, N)
187 ENDDO
188 ENDIF
189 ENDDO
190
191 ENDIF
192 ENDDO
193 ENDDO
194 ENDDO
195
196
197 CALL GLOBAL_ALL_OR(ABORT)
198 IF(ABORT) THEN
199 WRITE(ERR_MSG, 2000)
200 CALL FLUSH_ERR_MSG(HEADER=.FALSE., ABORT=.TRUE.)
201 CALL FINL_ERR_MSG
202 RETURN
203 ENDIF
204
205
206
207
208 = .FALSE.
209
210 DO K = kstart2, kend2
211 DO J = jstart2, jend2
212 DO I = istart2, iend2
213 IJK = FUNIJK(I,J,K)
214
215 IF (FLAG(IJK)==1 .OR. FLAG(IJK)==20) THEN
216
217
218 IF (L_SCALE(IJK) /= ZERO) NONZERO = .TRUE.
219
220
221 IF(EP_G(IJK) < SMALL_NUMBER .OR. EP_G(IJK) > ONE) &
222 CALL REPORT_UNPHYSICAL(ABORT, I, J, K, 'EP_G', EP_G(IJK))
223
224
225
226 IF(.NOT.DISCRETE_ELEMENT .AND. SMAX>0) THEN
227 DIF = ONE - EP_G(IJK)
228 DIF = DIF - SUM(ROP_S(IJK,:MMAX)/RO_S(IJK,:MMAX))
229 IF (ABS(DIF) > SMALL_NUMBER) CALL REPORT_UNPHYSICAL( &
230 ABORT, I, J, K, 'Volume Fraction SUM', 1.0-DIF)
231 ENDIF
232 ENDIF
233 ENDDO
234 ENDDO
235 ENDDO
236
237
238 CALL GLOBAL_ALL_OR(ABORT)
239 IF(ABORT) THEN
240 WRITE(ERR_MSG, 2000)
241 CALL FLUSH_ERR_MSG(HEADER=.FALSE., ABORT=.TRUE.)
242 CALL FINL_ERR_MSG
243 RETURN
244 ENDIF
245
246
247 CALL GLOBAL_ALL_OR(NONZERO)
248 IF (NONZERO .AND. MU_GMAX==UNDEFINED) THEN
249 WRITE(ERR_MSG, 1300)
250 CALL FLUSH_ERR_MSG(ABORT=.TRUE.)
251 CALL FINL_ERR_MSG
252 ENDIF
253
254 1300 FORMAT('Error 1300: Message: Turbulent length scale is nonzero.',&
255 /'Specify MU_gmax in the mfix.dat file.')
256
257 CALL FINL_ERR_MSG
258 RETURN
259
260 2000 FORMAT('Please correct the mfix.dat file.')
261
262
263
264 CONTAINS
265
266
267 SUBROUTINE REPORT_ERROR(ABORT, pI, pJ, pK, VAR, LC1, LC2)
268
269 LOGICAL, INTENT(INOUT) :: ABORT
270 INTEGER, INTENT(IN) :: pI, pJ, pK
271 CHARACTER(LEN=*), INTENT(IN) :: VAR
272 INTEGER, INTENT(IN), OPTIONAL :: LC1, LC2
273 CHARACTER(LEN=32) :: VAR_FULL
274
275 VAR_FULL=''
276 IF(PRESENT(LC2)) THEN
277 VAR_FULL = iVAR(VAR,LC1,LC2)
278 ELSEIF(PRESENT(LC1)) THEN
279 VAR_FULL = iVAR(VAR,LC1)
280 ELSE
281 VAR_FULL = VAR
282 ENDIF
283
284 IF(.NOT.ABORT) THEN
285 WRITE(ERR_MSG,1000)
286 CALL FLUSH_ERR_MSG(FOOTER=.FALSE.)
287 ABORT = .TRUE.
288 ENDIF
289
290 1000 FORMAT('Error 1000: The following field variables are undefined')
291
292
293 WRITE(ERR_MSG, 1010) I, J, K, trim(VAR_FULL)
294 CALL FLUSH_ERR_MSG(HEADER=.FALSE., FOOTER=.FALSE.)
295
296 1010 FORMAT(1X,'I = ',I6,' J = ',I6,' K = ',I6,5X,A)
297
298
299
300 END SUBROUTINE REPORT_ERROR
301
302 SUBROUTINE REPORT_UNPHYSICAL(ABORT, pI, pJ, pK, VAR, VALUE)
303
304 LOGICAL, INTENT(INOUT) :: ABORT
305 INTEGER, INTENT(IN) :: pI, pJ, pK
306 CHARACTER(LEN=*), INTENT(IN) :: VAR
307 DOUBLE PRECISION, INTENT(IN) :: VALUE
308
309 IF(.NOT.ABORT) THEN
310 WRITE(ERR_MSG,1100)
311 CALL FLUSH_ERR_MSG(FOOTER=.FALSE.)
312 ABORT = .TRUE.
313 ENDIF
314
315 1100 FORMAT('Error 1100: The following field variables are ',&
316 'out of range')
317
318 WRITE(ERR_MSG, 1110) I, J, K, trim(VAR), VALUE
319 CALL FLUSH_ERR_MSG(HEADER=.FALSE., FOOTER=.FALSE.)
320
321 1110 FORMAT(1X,'I = ',I6,' J = ',I6,' K = ',I6,2X,A,'Value:',g11.4)
322
323
324 END SUBROUTINE REPORT_UNPHYSICAL
325
326
327 END SUBROUTINE CHECK_DATA_20
328