File: /nfs/home/0/users/jenkins/mfix.git/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,NMAX
24 USE scalars, only :NSCALAR
25 USE mpi_utility, only: myPE, PE_IO,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 IF(MyPE == PE_IO) THEN
107 WRITE(*,*)'INPUT ERROR: INALID VALUE OF FRAME =', FRAME
108 WRITE(*,*)'ACCEPTABLE VALUES ARE INTEGERS >= -1.'
109 WRITE(*,*)'PLEASE CORRECT MFIX.DAT AND TRY AGAIN.'
110 ENDIF
111 CALL MFIX_EXIT(MYPE)
112 ENDIF
113
114 IF(VTK_DT(1)<ZERO) THEN
115 IF(MyPE == PE_IO) THEN
116 WRITE(*,*)'INPUT ERROR: NEGATIVE VALUE OF VTK_DT =', VTK_DT(1)
117 WRITE(*,*)'ACCEPTABLE VALUES ARE POSITIVE NUMBERS (E.G. 0.1).'
118 WRITE(*,*)'PLEASE CORRECT MFIX.DAT AND TRY AGAIN.'
119 ENDIF
120 CALL MFIX_EXIT(MYPE)
121 ENDIF
122
123 N_VTK_REGIONS = 0
124
125 DO L = 1, DIMENSION_VTK
126 VTK_DEFINED(L) = .FALSE.
127 IF (VTK_X_W(L) /= -UNDEFINED) VTK_DEFINED(L) = .TRUE.
128 IF (VTK_X_E(L) /= UNDEFINED) VTK_DEFINED(L) = .TRUE.
129 IF (VTK_Y_S(L) /= -UNDEFINED) VTK_DEFINED(L) = .TRUE.
130 IF (VTK_Y_N(L) /= UNDEFINED) VTK_DEFINED(L) = .TRUE.
131 IF (VTK_Z_B(L) /= -UNDEFINED) VTK_DEFINED(L) = .TRUE.
132 IF (VTK_Z_T(L) /= UNDEFINED) VTK_DEFINED(L) = .TRUE.
133
134 IF(.NOT.VTK_DEFINED(L)) CYCLE
135
136 N_VTK_REGIONS = N_VTK_REGIONS + 1
137
138 ENDDO
139
140
141
142 IF(WRITE_VTK_FILES.AND.N_VTK_REGIONS==0) THEN
143 VTK_DEFINED(1) = .TRUE.
144 VTK_X_W(1) = ZERO
145 VTK_X_E(1) = XLENGTH
146 VTK_Y_S(1) = ZERO
147 VTK_Y_N(1) = YLENGTH
148 VTK_Z_B(1) = ZERO
149 VTK_Z_T(1) = ZLENGTH
150 VTK_FILEBASE(1) = RUN_NAME
151 ENDIF
152
153
154
155 DO L = 1, DIM_VTK_VAR
156 IF(VTK_VAR(L)/=UNDEFINED_I) VTK_VARLIST(:,L) = VTK_VAR(L)
157 ENDDO
158
159
160 DO L = 1, DIMENSION_VTK
161
162 IF(.NOT.VTK_DEFINED(L)) CYCLE
163
164 DO LV = 1, DIM_VTK_VAR
165
166 SELECT CASE (VTK_VARLIST(L,LV))
167
168 CASE (1)
169 VTK_EP_g(L) = .TRUE.
170
171 CASE (2)
172 VTK_P_g(L) = .TRUE.
173 VTK_P_star(L) = .TRUE.
174
175 CASE (3)
176 VTK_VEL_G(L) = .TRUE.
177
178 CASE (4)
179 DO M = 1,MMAX
180 VTK_VEL_S(L,M) = .TRUE.
181 END DO
182
183 CASE (5)
184 DO M = 1,MMAX
185 VTK_ROP_s(L,M) = .TRUE.
186 END DO
187
188 CASE (6)
189 VTK_T_g(L) = .TRUE.
190 DO M = 1,MMAX
191 VTK_T_s(L,M) = .TRUE.
192 END DO
193
194 CASE (7)
195
196 (L,:) = .TRUE.
197
198
199 DO M = 1, MMAX
200
201 (L,M,:) = .TRUE.
202
203 END DO
204
205
206 CASE (8)
207 DO M = 1,MMAX
208 VTK_Theta_m(L,M) = .TRUE.
209 END DO
210
211 CASE (9)
212 DO N = 1,NSCALAR
213 VTK_Scalar(L,N) =.TRUE.
214 END DO
215
216 CASE (10)
217 DO R = 1,nRR
218 VTK_RRate(L,R) = .TRUE.
219 END DO
220
221 CASE (11)
222 IF(K_EPSILON) THEN
223 VTK_K_Turb_G(L) = .TRUE.
224 VTK_E_Turb_G(L) = .TRUE.
225 ENDIF
226
227 CASE (12)
228 VTK_VORTICITY(L) = .TRUE.
229 VTK_LAMBDA_2(L) = .TRUE.
230
231 CASE (100)
232 VTK_PARTITION(L) = .TRUE.
233
234 CASE (101)
235 VTK_BC_ID(L) = .TRUE.
236
237 CASE (102)
238 VTK_DWALL(L) = .TRUE.
239
240 CASE (103)
241 IF(DISCRETE_ELEMENT.AND.USE_STL) THEN
242 VTK_FACET_COUNT_DES(L) = .TRUE.
243 ENDIF
244
245 CASE (104)
246 IF(DISCRETE_ELEMENT.AND.USE_STL) THEN
247 VTK_NB_FACET_DES(L) = .TRUE.
248 ENDIF
249
250 CASE(999)
251 VTK_IJK(L) = .TRUE.
252
253 CASE(1000)
254 VTK_NORMAL(L) = .TRUE.
255
256 CASE (1001)
257 VTK_DEBUG(L,1) = .TRUE.
258
259 CASE (1002)
260 VTK_DEBUG(L,2) = .TRUE.
261
262 CASE (1003)
263 VTK_DEBUG(L,3) = .TRUE.
264
265 CASE (1004)
266 VTK_DEBUG(L,4) = .TRUE.
267
268 CASE (1005)
269 VTK_DEBUG(L,5) = .TRUE.
270
271 CASE (1006)
272 VTK_DEBUG(L,6) = .TRUE.
273
274 CASE (1007)
275 VTK_DEBUG(L,7) = .TRUE.
276
277 CASE (1008)
278 VTK_DEBUG(L,8) = .TRUE.
279
280 CASE (1009)
281 VTK_DEBUG(L,9) = .TRUE.
282
283 CASE (1010)
284 VTK_DEBUG(L,10) = .TRUE.
285
286 CASE (1011)
287 VTK_DEBUG(L,11) = .TRUE.
288
289 CASE (1012)
290 VTK_DEBUG(L,12) = .TRUE.
291
292 CASE (1013)
293 VTK_DEBUG(L,13) = .TRUE.
294
295 CASE (1014)
296 VTK_DEBUG(L,14) = .TRUE.
297
298 CASE (1015)
299 VTK_DEBUG(L,15) = .TRUE.
300
301
302 CASE (0)
303
304 CASE (UNDEFINED_I)
305
306 CASE DEFAULT
307
308 WRITE(*,*) ' Unknown VTK variable flag ',L,':',VTK_VAR(L)
309 WRITE(*,*) ' Available flags are : '
310 WRITE(*,*) ' 1 : Void fraction (EP_g)'
311 WRITE(*,*) ' 2 : Gas pressure, solids pressure (P_g, P_star)'
312 WRITE(*,*) ' 3 : Gas velocity (U_g, V_g, W_g)'
313 WRITE(*,*) ' 4 : Solids velocity (U_s, V_s, W_s)'
314 WRITE(*,*) ' 5 : Solids density (ROP_s)'
315 WRITE(*,*) ' 6 : Gas and solids temperature (T_g, T_s1, T_s2)'
316 WRITE(*,*) ' 7 : Gas and solids mass fractions (X_g, X-s)'
317 WRITE(*,*) ' 8 : Granular temperature (G)'
318 write(*,*) ' 9 : User defined scalars'
319 write(*,*) '10 : Reaction Rates'
320 write(*,*) '11 : Turbulence quantities (k and )'
321 write(*,*) '12 : Gas Vorticity magnitude and Lambda_2 (VORTICITY, LAMBDA_2)'
322 write(*,*) '100: Processor assigned to scalar cell (Partition)'
323 write(*,*) '101: Boundary condition flag for scalar cell (BC_ID)'
324 write(*,*) 'MFiX will exit now.'
325 CALL MFIX_EXIT(myPE)
326
327 END SELECT
328
329 ENDDO
330
331
332 IF(VTK_PART_ORIENTATION(L)) PARTICLE_ORIENTATION = .TRUE.
333
334 ENDDO
335
336
337 CALL FINL_ERR_MSG
338
339 RETURN
340
341 1000 FORMAT('Error 1000: Required input not specified: ',A,/'Please ',&
342 'correct the mfix.dat file.')
343
344 1001 FORMAT('Error 1001: Illegal or unknown input: ',A,' = ',A,/ &
345 'Please correct the mfix.dat file.')
346
347 1002 FORMAT('Error 1002: Illegal or unknown input: ',A,' = ',E14.6,/ &
348 'Please correct the mfix.dat file.')
349
350 1003 FORMAT('Error 1003: Illegal or unknown input: ',A,' = ',I4,/ &
351 'Please correct the mfix.dat file.')
352
353 END SUBROUTINE CHECK_OUTPUT_CONTROL
354