File: N:\mfix\model\check_data\check_output_control.f
1
2
3
4
5
6
7
8 SUBROUTINE CHECK_OUTPUT_CONTROL
9
10
11
12
13 use output, only: RES_DT, SPX_DT
14
15 use output, only: NLOG
16
17 use run, only: K_EPSILON
18
19 use rxns, only: nRR
20
21 use vtk
22 USE run, only: RUN_NAME
23 USE physprop, only: MMAX
24 USE scalars, only :NSCALAR
25 USE mpi_utility, only: XLENGTH,YLENGTH,ZLENGTH
26 USE DISCRETELEMENT, only:DISCRETE_ELEMENT
27 USE DISCRETELEMENT, only: PARTICLE_ORIENTATION
28 USE cutcell, only: USE_STL
29
30
31
32
33 use param1, only: UNDEFINED, UNDEFINED_I, ZERO, LARGE_NUMBER
34
35 USE param1, only: N_SPX
36
37
38
39 use error_manager
40
41 IMPLICIT NONE
42
43
44
45
46 INTEGER :: LC
47
48 INTEGER :: L,M,N,LV,N_VTK_REGIONS,R
49
50
51
52
53
54 CALL INIT_ERR_MSG("CHECK_OUTPUT_CONTROL")
55
56
57
58 IF (RES_DT==UNDEFINED)THEN
59 WRITE(ERR_MSG,1000) 'RES_DT'
60 CALL FLUSH_ERR_MSG(ABORT=.TRUE.)
61 ELSEIF(RES_DT <= ZERO) THEN
62 WRITE(ERR_MSG,1002) 'RES_DT', RES_DT
63 CALL FLUSH_ERR_MSG(ABORT=.TRUE.)
64 ENDIF
65
66
67
68 SPx_LP: DO LC = 1, N_SPX
69
70
71 IF(LC == 10) THEN
72 IF(nRR == 0) THEN
73 IF (SPX_DT(LC) == UNDEFINED) SPX_DT(LC) = LARGE_NUMBER
74 CYCLE SPx_LP
75 ENDIF
76
77
78 ELSEIF(LC == 11) THEN
79 IF(.NOT.K_Epsilon) THEN
80 IF (SPX_DT(LC)==UNDEFINED)SPX_DT(LC) = LARGE_NUMBER
81 CYCLE SPx_LP
82 ENDIF
83
84
85 ELSE
86 IF(SPX_DT(LC) == UNDEFINED) THEN
87 WRITE(ERR_MSG,1000) iVar('SPX_DT',LC)
88 CALL FLUSH_ERR_MSG(ABORT=.TRUE.)
89
90 ELSEIF(SPX_DT(LC) <= ZERO) THEN
91 WRITE(ERR_MSG,1001) iVar('SPX_DT',LC), SPX_DT(LC)
92 CALL FLUSH_ERR_MSG(ABORT=.TRUE.)
93 ENDIF
94 ENDIF
95 ENDDO SPx_LP
96
97
98 IF(NLOG <= 0) THEN
99 WRITE(ERR_MSG,1003) 'NLOG', NLOG
100 CALL FLUSH_ERR_MSG(ABORT=.TRUE.)
101 ENDIF
102
103
104
105 IF(FRAME(1)<-1) THEN
106 WRITE(ERR_MSG, 2000) trim(iVAL(FRAME(1)))
107 CALL FLUSH_ERR_MSG(ABORT=.TRUE.)
108 ENDIF
109
110 2000 FORMAT('Error 2000: Invalid value for FRAME = ',A'. Acceptable ',&
111 'values',/'are integers >= -1. Please correct mfix.dat and',/ &
112 'try again.')
113
114 IF(VTK_DT(1)<ZERO) THEN
115 WRITE(ERR_MSG,2001) trim(iVal(VTK_DT(1)))
116 CALL FLUSH_ERR_MSG(ABORT=.TRUE.)
117 ENDIF
118
119 2001 FORMAT('Error 2001: Invalid value for VTK_DT = ',A'. Acceptable',&
120 ' values',/'are positive numbers (e.g., 0.1). Please ', &
121 'correct mfix.dat and',/'try again.')
122
123 N_VTK_REGIONS = 0
124 DO L = 1, DIMENSION_VTK
125 VTK_DEFINED(L) = .FALSE.
126 IF (VTK_X_W(L) /= -UNDEFINED) VTK_DEFINED(L) = .TRUE.
127 IF (VTK_X_E(L) /= UNDEFINED) VTK_DEFINED(L) = .TRUE.
128 IF (VTK_Y_S(L) /= -UNDEFINED) VTK_DEFINED(L) = .TRUE.
129 IF (VTK_Y_N(L) /= UNDEFINED) VTK_DEFINED(L) = .TRUE.
130 IF (VTK_Z_B(L) /= -UNDEFINED) VTK_DEFINED(L) = .TRUE.
131 IF (VTK_Z_T(L) /= UNDEFINED) VTK_DEFINED(L) = .TRUE.
132
133 IF(.NOT.VTK_DEFINED(L)) CYCLE
134 N_VTK_REGIONS = N_VTK_REGIONS + 1
135 ENDDO
136
137
138
139 IF(WRITE_VTK_FILES.AND.N_VTK_REGIONS==0) THEN
140 VTK_DEFINED(1) = .TRUE.
141 VTK_X_W(1) = ZERO
142 VTK_X_E(1) = XLENGTH
143 VTK_Y_S(1) = ZERO
144 VTK_Y_N(1) = YLENGTH
145 VTK_Z_B(1) = ZERO
146 VTK_Z_T(1) = ZLENGTH
147 VTK_FILEBASE(1) = RUN_NAME
148 ENDIF
149
150
151
152 DO L = 1, DIM_VTK_VAR
153 IF(VTK_VAR(L)/=UNDEFINED_I) VTK_VARLIST(:,L) = VTK_VAR(L)
154 ENDDO
155
156
157 DO L = 1, DIMENSION_VTK
158
159 IF(.NOT.VTK_DEFINED(L)) CYCLE
160
161 DO LV = 1, DIM_VTK_VAR
162
163 SELECT CASE (VTK_VARLIST(L,LV))
164
165 CASE (1)
166 VTK_EP_g(L) = .TRUE.
167
168 CASE (2)
169 VTK_P_g(L) = .TRUE.
170 VTK_P_star(L) = .TRUE.
171
172 CASE (3)
173 VTK_VEL_G(L) = .TRUE.
174
175 CASE (4)
176 DO M = 1,MMAX
177 VTK_VEL_S(L,M) = .TRUE.
178 END DO
179
180 CASE (5)
181 DO M = 1,MMAX
182 VTK_ROP_s(L,M) = .TRUE.
183 END DO
184
185 CASE (6)
186 VTK_T_g(L) = .TRUE.
187 DO M = 1,MMAX
188 VTK_T_s(L,M) = .TRUE.
189 END DO
190
191 CASE (7)
192
193 (L,:) = .TRUE.
194
195
196 DO M = 1, MMAX
197
198 (L,M,:) = .TRUE.
199
200 END DO
201
202 CASE (8)
203 DO M = 1,MMAX
204 VTK_Theta_m(L,M) = .TRUE.
205 END DO
206
207 CASE (9)
208 DO N = 1,NSCALAR
209 VTK_Scalar(L,N) =.TRUE.
210 END DO
211
212 CASE (10)
213 DO R = 1,nRR
214 VTK_RRate(L,R) = .TRUE.
215 END DO
216
217 CASE (11)
218 IF(K_EPSILON) THEN
219 VTK_K_Turb_G(L) = .TRUE.
220 VTK_E_Turb_G(L) = .TRUE.
221 ENDIF
222
223 CASE (12)
224 VTK_VORTICITY(L) = .TRUE.
225 VTK_LAMBDA_2(L) = .TRUE.
226
227 CASE (100)
228 VTK_PARTITION(L) = .TRUE.
229
230 CASE (101)
231 VTK_BC_ID(L) = .TRUE.
232
233 CASE (102)
234 VTK_DWALL(L) = .TRUE.
235
236 CASE (103)
237 IF(DISCRETE_ELEMENT.AND.USE_STL) THEN
238 VTK_FACET_COUNT_DES(L) = .TRUE.
239 ENDIF
240
241 CASE (104)
242 IF(DISCRETE_ELEMENT.AND.USE_STL) THEN
243 VTK_NB_FACET_DES(L) = .TRUE.
244 ENDIF
245
246 CASE(999)
247 VTK_IJK(L) = .TRUE.
248
249 CASE(1000)
250 VTK_NORMAL(L) = .TRUE.
251
252 CASE (1001)
253 VTK_DEBUG(L,1) = .TRUE.
254
255 CASE (1002)
256 VTK_DEBUG(L,2) = .TRUE.
257
258 CASE (1003)
259 VTK_DEBUG(L,3) = .TRUE.
260
261 CASE (1004)
262 VTK_DEBUG(L,4) = .TRUE.
263
264 CASE (1005)
265 VTK_DEBUG(L,5) = .TRUE.
266
267 CASE (1006)
268 VTK_DEBUG(L,6) = .TRUE.
269
270 CASE (1007)
271 VTK_DEBUG(L,7) = .TRUE.
272
273 CASE (1008)
274 VTK_DEBUG(L,8) = .TRUE.
275
276 CASE (1009)
277 VTK_DEBUG(L,9) = .TRUE.
278
279 CASE (1010)
280 VTK_DEBUG(L,10) = .TRUE.
281
282 CASE (1011)
283 VTK_DEBUG(L,11) = .TRUE.
284
285 CASE (1012)
286 VTK_DEBUG(L,12) = .TRUE.
287
288 CASE (1013)
289 VTK_DEBUG(L,13) = .TRUE.
290
291 CASE (1014)
292 VTK_DEBUG(L,14) = .TRUE.
293
294 CASE (1015)
295 VTK_DEBUG(L,15) = .TRUE.
296
297
298 CASE (0)
299
300 CASE (UNDEFINED_I)
301
302 CASE DEFAULT
303 WRITE(ERR_MSG,2100) trim(iVal(L)), &
304 trim(iVal(VTK_VAR(L)))
305 CALL FLUSH_ERR_MSG(ABORT=.TRUE.)
306 END SELECT
307
308 2100 FORMAT(' Error 2100: Unknown VTK variable flag ',A,':',A, /&
309 'Available flags are:', /&
310 ' 1 : Void fraction (EP_g)', /&
311 ' 2 : Gas pressure, solids pressure (P_g, P_star)', /&
312 ' 3 : Gas velocity (U_g, V_g, W_g)', /&
313 ' 4 : Solids velocity (U_s, V_s, W_s)', /&
314 ' 5 : Solids density (ROP_s)', /&
315 ' 6 : Gas and solids temperature (T_g, T_s1, T_s2)', /&
316 ' 7 : Gas and solids mass fractions (X_g, X-s)', /&
317 ' 8 : Granular temperature (G)', /&
318 ' 9 : User defined scalars', /&
319 ' 10 : Reaction Rates', /&
320 ' 11 : Turbulence quantities (k and ε)', /&
321 ' 12 : Gas Vorticity magn and Lambda_2(VORTICITY,LAMBDA_2)', /&
322 '100: Processor assigned to scalar cell (Partition)', /&
323 '101: Boundary condition flag for scalar cell (BC_ID)', /&
324 'Please correct the mfix.dat file.')
325
326
327 ENDDO
328
329
330 IF(VTK_PART_ORIENTATION(L)) PARTICLE_ORIENTATION = .TRUE.
331
332 ENDDO
333
334
335 CALL FINL_ERR_MSG
336
337 RETURN
338
339 1000 FORMAT('Error 1000: Required input not specified: ',A,/'Please ',&
340 'correct the mfix.dat file.')
341
342 1001 FORMAT('Error 1001: Illegal or unknown input: ',A,' = ',A,/ &
343 'Please correct the mfix.dat file.')
344
345 1002 FORMAT('Error 1002: Illegal or unknown input: ',A,' = ',E14.6,/ &
346 'Please correct the mfix.dat file.')
347
348 1003 FORMAT('Error 1003: Illegal or unknown input: ',A,' = ',I4,/ &
349 'Please correct the mfix.dat file.')
350
351 END SUBROUTINE CHECK_OUTPUT_CONTROL
352