File: /nfs/home/0/users/jenkins/mfix.git/model/check_data/check_solids_continuum.f
1
2
3
4
5
6
7
8
9 SUBROUTINE CHECK_SOLIDS_CONTINUUM
10
11
12
13 USE constant
14 USE run
15 USE physprop
16
17
18
19 USE param1, only: zero, undefined, undefined_i
20
21
22
23 use error_manager
24
25 IMPLICIT NONE
26
27
28
29 INTEGER :: LC
30 DOUBLE PRECISION :: lsin_phi
31
32
33
34
35
36 = UNDEFINED
37 = UNDEFINED
38 = UNDEFINED
39 = UNDEFINED
40
41
42 CALL INIT_ERR_MSG("CHECK_SOLIDS_CONTINUUM")
43
44
45
46 IF(EP_STAR == UNDEFINED) THEN
47 WRITE(ERR_MSG,1000) 'EP_STAR'
48 CALL FLUSH_ERR_MSG(ABORT=.TRUE.)
49 ELSEIF(EP_STAR < ZERO .OR. EP_STAR > ONE) THEN
50 WRITE(ERR_MSG, 1001)'EP_STAR', iVal(EP_STAR)
51 CALL FLUSH_ERR_MSG(ABORT=.TRUE.)
52 ENDIF
53
54
55 IF (MU_S0 < ZERO) THEN
56 WRITE(ERR_MSG, 1001) 'MU_s0', MU_s0
57 CALL FLUSH_ERR_MSG(ABORT=.TRUE.)
58 ENDIF
59
60
61 IF (DIF_S0 < ZERO) THEN
62 WRITE(ERR_MSG, 1001) 'DIF_s0', DIF_s0
63 CALL FLUSH_ERR_MSG(ABORT=.TRUE.)
64 ENDIF
65
66
67
68 IF (MU_S0 .NE. UNDEFINED) THEN
69
70
71
72
73 IF(GRANULAR_ENERGY) THEN
74 WRITE(ERR_MSG,1100)
75 CALL FLUSH_ERR_MSG(ABORT=.TRUE.)
76 ENDIF
77
78 IF (SMAX >=2) THEN
79 IF (C_E == UNDEFINED) THEN
80 WRITE(ERR_MSG,1101)
81 CALL FLUSH_ERR_MSG(ABORT=.TRUE.)
82 ELSEIF (C_F == UNDEFINED) THEN
83 WRITE(ERR_MSG,1102)
84 CALL FLUSH_ERR_MSG(ABORT=.TRUE.)
85 ENDIF
86 ENDIF
87 ELSE
88
89 IF (GRANULAR_ENERGY) THEN
90 CALL CHECK_KT_TYPE
91 ELSE
92
93 IF (C_E == UNDEFINED) THEN
94 WRITE(ERR_MSG,1101)
95 CALL FLUSH_ERR_MSG(ABORT=.TRUE.)
96 ENDIF
97
98
99 IF (SMAX >=2 .OR. DEM_SOLIDS) THEN
100 IF (C_F == UNDEFINED) THEN
101 WRITE(ERR_MSG,1102)
102 CALL FLUSH_ERR_MSG(ABORT=.TRUE.)
103 ENDIF
104 ENDIF
105 ENDIF
106 ENDIF
107
108 1100 FORMAT('Error 1100: Constant viscosity is specified but', /&
109 'GRANULAR_ENERGY=.TRUE. Please correct the mfix.dat file')
110 1101 FORMAT('Error 1101: Coefficient of restitution (C_E) not ', &
111 'specified.',/'Please correct the mfix.dat file.')
112 1102 FORMAT('Error 1102: Coefficient of friction (C_F) not ', &
113 'specified.',/'Please correct the mfix.dat file.')
114
115
116
117
118
119
120 IF (FRICTION) THEN
121 IF(SCHAEFFER) THEN
122 WRITE(ERR_MSG, 1200)
123 CALL FLUSH_ERR_MSG(ABORT=.TRUE.)
124
125 ELSEIF (.NOT.GRANULAR_ENERGY) THEN
126 WRITE(ERR_MSG,1201)
127 CALL FLUSH_ERR_MSG(ABORT=.TRUE.)
128
129 ELSEIF(SAVAGE>2 .OR. SAVAGE<0) THEN
130 WRITE(ERR_MSG, 1001)'SAVAGE', iVal(SAVAGE)
131 CALL FLUSH_ERR_MSG(ABORT=.TRUE.)
132
133 ELSEIF(BLENDING_STRESS) THEN
134 WRITE(ERR_MSG, 1202)
135 CALL FLUSH_ERR_MSG(ABORT=.TRUE.)
136 ELSEIF(PHI == UNDEFINED) THEN
137 WRITE(ERR_MSG, 1203)
138 CALL FLUSH_ERR_MSG(ABORT=.TRUE.)
139
140 ELSEIF(PHI_W == UNDEFINED) THEN
141 WRITE(ERR_MSG, 1204)
142 CALL FLUSH_ERR_MSG(ABORT=.TRUE.)
143 ENDIF
144
145
146 = SIN(PHI*PI/180.D0)
147 TAN_PHI_W = TAN(PHI_W*PI/180.D0)
148 ENDIF
149 1201 FORMAT('Error 1201: The FRICTION solids stress model requires ', &
150 /,'GRANULAR_ENERGY=.TRUE. Please correct the mfix.dat file.')
151 1202 FORMAT('Error 1202: Cannot use BLENDING_STRESS with FRICTION ',&
152 /,'Please correct the mfix.dat file.')
153 1204 FORMAT('Error 1204: Angle of particle-wall friction (PHI_W) not',&
154 ' specified.',/'Please correct the mfix.dat file.')
155
156
157
158 IF(SCHAEFFER) THEN
159 IF(FRICTION) THEN
160 WRITE(ERR_MSG, 1200)
161 CALL FLUSH_ERR_MSG(ABORT=.TRUE.)
162 ELSEIF (PHI == UNDEFINED) THEN
163 WRITE(ERR_MSG, 1203)
164 CALL FLUSH_ERR_MSG(ABORT=.TRUE.)
165 ENDIF
166
167
168 = sin(phi*PI/180.d0)
169 SIN2_PHI = lSIN_PHI*lSIN_PHI
170 F_PHI = (3.0D0 - 2.0D0*SIN2_PHI)/3.0D0
171 ENDIF
172 1200 FORMAT('Error 1200: FRICTION and SCHAEFFER models cannot be ',&
173 'used',/'together. Please correct the mfix.dat file')
174 1203 FORMAT('Error 1203: Angle of internal friction (PHI) not ', &
175 'specified.',/'Please correct the mfix.dat file.')
176
177
178 IF(YU_STANDISH .AND. FEDORS_LANDEL) THEN
179 WRITE(ERR_MSG, 1300)
180 CALL FLUSH_ERR_MSG(ABORT=.TRUE.)
181 ELSEIF(YU_STANDISH) THEN
182
183 IF(SMAX < 2) THEN
184 WRITE(ERR_MSG, 1301)
185 CALL FLUSH_ERR_MSG(ABORT=.TRUE.)
186 ENDIF
187 ELSEIF(FEDORS_LANDEL) THEN
188
189 IF(SMAX /= 2) THEN
190 WRITE(ERR_MSG, 1302)
191 CALL FLUSH_ERR_MSG(ABORT=.TRUE.)
192 ENDIF
193 ENDIF
194 1300 FORMAT('Error 1300: FEDORS_LANDEL and YU_STANDISH correlations ',&
195 'cannot be',/'used at the same time. Please correct the ', &
196 'mfix.dat file.')
197 1301 FORMAT('Error 1301: YU_STANDISH correlation is for polydisperse',&
198 ' mixtures',/'(MMAX >= 2). Please correct the mfix.dat file.')
199 1302 FORMAT('Error 1302: FEDORS_LANDEL correlation is for binary ', &
200 'mixtures (MMAX=2).',/'Please correct the mfix.dat file.')
201
202
203
204 IF(BLENDING_STRESS) THEN
205
206 IF(SIGM_BLEND) TANH_BLEND = .FALSE.
207 ELSE
208 TANH_BLEND = .FALSE.
209 SIGM_BLEND = .FALSE.
210 ENDIF
211
212
213 IF(MODEL_B) THEN
214 DO LC = 1, MMAX
215 IF(.NOT.CLOSE_PACKED(LC)) THEN
216 WRITE(ERR_MSG, 1400) LC
217 CALL FLUSH_ERR_MSG(ABORT=.TRUE.)
218 ENDIF
219 ENDDO
220 ENDIF
221 1400 FORMAT('Error 1400: Solids phase ',I2,' is not CLOSE_PACKED.',/, &
222 'All solids phases must be CLOSE_PACKED with MODEL_B=.TURE.',/ &
223 'Please correct the mfix.dat file.')
224
225
226
227 IF (ADDED_MASS) THEN
228 IF(M_AM == UNDEFINED_I)THEN
229 WRITE(ERR_MSG, 1500)
230 CALL FLUSH_ERR_MSG(ABORT=.TRUE.)
231 ELSEIF(M_AM == 0 .OR. M_AM > MMAX) THEN
232 WRITE(ERR_MSG,1501)
233 CALL FLUSH_ERR_MSG(ABORT=.TRUE.)
234 1500 FORMAT('Error 1500: Must specify a disperse phase, M_AM, where ',&
235 'the',/'virtual mass applies (ADDED_MASS).',/'Please correct',&
236 ' the mfix.dat file.')
237 1501 FORMAT('Error 1501: M_AM is out of range. [1,MMAX]',/'Please ', &
238 'correct the mfix.dat file.')
239 ENDIF
240 ENDIF
241
242
243
244 SELECT CASE(trim(adjustl(RDF_TYPE)))
245
246 CASE ('LEBOWITZ')
247 RDF_TYPE_ENUM = LEBOWITZ
248
249 CASE ('MODIFIED_LEBOWITZ')
250 RDF_TYPE_ENUM = MODIFIED_LEBOWITZ
251
252 CASE ('MANSOORI')
253 RDF_TYPE_ENUM = MANSOORI
254
255 CASE ('MODIFIED_MANSOORI')
256 RDF_TYPE_ENUM = MODIFIED_MANSOORI
257
258 CASE DEFAULT
259 WRITE(ERR_MSG, 1600)
260 CALL FLUSH_ERR_MSG(ABORT=.TRUE.)
261 END SELECT
262
263 1600 FORMAT('Error 1600: Unknown RDF_TYPE',/'Please ', &
264 'correct the mfix.dat file.')
265
266
267
268 IF(MMAX == 1) THEN
269 IF(RDF_TYPE_ENUM /= LEBOWITZ) THEN
270 WRITE(ERR_MSG, 1601) trim(adjustl(RDF_TYPE))
271 CALL FLUSH_ERR_MSG(ABORT=.TRUE.)
272
273 1601 FORMAT('Error 1601: The RDF_TYPE should NOT be sepecified when ',&
274 'MMAX = 1',/'because Carnahan-Starling is the only available',&
275 ' radial distribution',/'function for monodisperse systems. ',&
276 'Please correct the mfix.dat file.')
277
278 ELSE
279 RDF_TYPE_ENUM = CARNAHAN_STARLING
280 ENDIF
281 ENDIF
282
283 1000 FORMAT('Error 1000: Required input not specified: ',A,/'Please ',&
284 'correct the mfix.dat file.')
285 1001 FORMAT('Error 1001: Illegal or unphysical input: ',A,' = ',A,/ &
286 'Please correct the mfix.dat file.')
287
288
289 CALL FINL_ERR_MSG
290
291
292 RETURN
293 END SUBROUTINE CHECK_SOLIDS_CONTINUUM
294
295
296
297
298
299
300
301
302
303
304
305
306
307 SUBROUTINE CHECK_KT_TYPE
308
309
310
311
312 USE constant
313 USE run
314 USE physprop
315
316
317
318 USE param1, only: half, one, undefined
319
320
321
322 use error_manager
323
324 IMPLICIT NONE
325
326
327
328
329 INTEGER :: I, J
330
331
332
333
334
335 CALL INIT_ERR_MSG("CHECK_KT_TYPE")
336
337
338 IF (AHMADI .AND. SIMONIN) THEN
339 WRITE(ERR_MSG, 9001)
340 CALL FLUSH_ERR_MSG(ABORT=.TRUE.)
341 ELSEIF(AHMADI) THEN
342 IF(KT_TYPE(1:6) /= 'AHMADI' .AND. &
343 KT_TYPE(1:8) /= 'LUN_1984')THEN
344 WRITE(ERR_MSG,9002)trim(KT_TYPE)
345 CALL FLUSH_ERR_MSG(ABORT = .TRUE.)
346 ELSE
347 KT_TYPE='AHMADI'
348 ENDIF
349 ELSEIF(SIMONIN) THEN
350 IF(KT_TYPE(1:7) /= 'SIMONIN' .AND. &
351 KT_TYPE(1:8) /= 'LUN_1984')THEN
352 WRITE(ERR_MSG,9003)trim(KT_TYPE)
353 CALL FLUSH_ERR_MSG(ABORT = .TRUE.)
354 ELSE
355 KT_TYPE='SIMONIN'
356 ENDIF
357 ENDIF
358 9001 FORMAT('Error 9001: Cannot specify AHMADI and SIMONIN together.',&
359 /'Please correct the mfix.dat file.')
360 9002 FORMAT('Error 9002: Cannot specify AHMADI and KT_TYPE = ',A,'.', &
361 /'Please correct the mfix.dat file.')
362 9003 FORMAT('Error 9003: Cannot specify SIMONIN and KT_TYPE = ',A,'.',&
363 /'Please correct the mfix.dat file.')
364
365
366
367
368 SELECT CASE(trim(adjustl(KT_TYPE)))
369
370
371 CASE ('IA_NONEP')
372 KT_TYPE_ENUM = IA_2005
373 IF (C_E == UNDEFINED) THEN
374 WRITE(ERR_MSG,1003)
375 CALL FLUSH_ERR_MSG(ABORT=.TRUE.)
376 ENDIF
377
378
379
380 CASE ('GD_99')
381 KT_TYPE_ENUM = GD_1999
382 IF (C_E == UNDEFINED) THEN
383 WRITE(ERR_MSG,1003)
384 CALL FLUSH_ERR_MSG(ABORT=.TRUE.)
385 ELSEIF(SMAX > 1) THEN
386 WRITE(ERR_MSG,1002) TRIM(KT_TYPE)
387 CALL FLUSH_ERR_MSG(ABORT=.TRUE.)
388 ENDIF
389
390
391
392 CASE ('GTSH')
393 KT_TYPE_ENUM = GTSH_2012
394 IF (C_E == UNDEFINED) THEN
395 WRITE(ERR_MSG,1002)
396 CALL FLUSH_ERR_MSG(ABORT=.TRUE.)
397 ELSEIF(SMAX > 1) THEN
398 WRITE(ERR_MSG,1002) TRIM(KT_TYPE)
399 CALL FLUSH_ERR_MSG(ABORT=.TRUE.)
400 ENDIF
401
402
403
404 CASE ('GHD')
405 KT_TYPE_ENUM = GHD_2007
406
407
408 DO I = 1, SMAX
409 DO J = 1, SMAX
410 IF(r_p(I,J) == UNDEFINED) THEN
411 IF(C_E == UNDEFINED) THEN
412 WRITE(ERR_MSG,1003)
413 CALL FLUSH_ERR_MSG(ABORT=.TRUE.)
414 ELSE
415 r_p(I,J) = C_e
416 ENDIF
417 ENDIF
418
419 (J,I) = r_p(I,J)
420 ENDDO
421 ENDDO
422
423 IF(DRAG_TYPE_ENUM /= WEN_YU .AND. DRAG_TYPE_ENUM /= HYS) THEN
424 WRITE(ERR_MSG, 1030)
425 CALL FLUSH_ERR_MSG(ABORT=.TRUE.)
426 ELSEIF(ADDED_MASS) THEN
427 WRITE(ERR_MSG,1031)
428 CALL FLUSH_ERR_MSG(ABORT=.TRUE.)
429 ELSEIF(SMAX > 2) THEN
430 WRITE(ERR_MSG, 1032)
431 CALL FLUSH_ERR_MSG
432 ENDIF
433
434
435
436 (MMAX) = .FALSE.
437 NMAX_s(MMAX) = 1
438
439
440
441 (MMAX) = 1
442
443 1030 FORMAT('Error 1030: KT_TYPE = "GHD" is restricted to DRAG_TYPE', &
444 'values of WEN_YU and HYS.',/'Please correct the mfix.dat ', &
445 'file.')
446 1031 FORMAT('Error 1031: ADDED_MASS force cannot be applied with ', &
447 'GHD theory that',/'solves for mixture equations.',/'Please', &
448 'correct the mifx.dat file.')
449 1032 FORMAT('Warning 1032: GHD theory may not be valid for more ', &
450 'than two solids phases',/'it requires further development.')
451
452
453
454 CASE ('AHMADI')
455 KT_TYPE_ENUM = AHMADI_1995
456 AHMADI = .TRUE.
457 IF(.NOT.K_EPSILON) THEN
458 WRITE(ERR_MSG,1040) 'K_EPSILON = .TRUE.'
459 CALL FLUSH_ERR_MSG(ABORT=.TRUE.)
460 ELSEIF (C_E == UNDEFINED) THEN
461 WRITE(ERR_MSG,1003)
462 CALL FLUSH_ERR_MSG(ABORT=.TRUE.)
463 ELSEIF(C_F == UNDEFINED .AND. SMAX>=2) THEN
464 WRITE(ERR_MSG, 1004)
465 CALL FLUSH_ERR_MSG(ABORT=.TRUE.)
466 ENDIF
467 1040 FORMAT('Error 1040: KT_TYPE = "AHMADI" requires ',A,/ &
468 'Please correct the mfix.dat file.')
469
470
471
472 CASE ('SIMONIN')
473 KT_TYPE_ENUM = SIMONIN_1996
474 SIMONIN = .TRUE.
475 IF(.NOT.K_EPSILON) THEN
476 WRITE(ERR_MSG,1050) 'K_EPSILON = .TRUE.'
477 CALL FLUSH_ERR_MSG(ABORT=.TRUE.)
478 ELSEIF (C_E == UNDEFINED) THEN
479 WRITE(ERR_MSG,1003)
480 CALL FLUSH_ERR_MSG(ABORT=.TRUE.)
481 ELSEIF(C_F == UNDEFINED .AND. SMAX>=2) THEN
482 WRITE(ERR_MSG, 1004)
483 CALL FLUSH_ERR_MSG(ABORT=.TRUE.)
484 ENDIF
485 1050 FORMAT('Error 1050: KT_TYPE = "SIMONIN" requires ',A,/ &
486 'Please correct the mfix.dat file.')
487
488
489
490
491 CASE ('LUN_1984')
492 KT_TYPE_ENUM = LUN_1984
493
494
495 IF (C_E == UNDEFINED) THEN
496 WRITE(ERR_MSG,1003)
497 CALL FLUSH_ERR_MSG(ABORT=.TRUE.)
498 ELSEIF(C_F == UNDEFINED .AND. SMAX>=2) THEN
499 WRITE(ERR_MSG, 1004)
500 CALL FLUSH_ERR_MSG(ABORT=.TRUE.)
501 ENDIF
502
503
504 CASE DEFAULT
505 WRITE(ERR_MSG,1001) trim(adjustl(KT_TYPE))
506 CALL FLUSH_ERR_MSG(ABORT=.TRUE.)
507 1001 FORMAT('Error 1001: Invalid or unknown KT_TYPE: ',A,/ &
508 'Please correct the mfix.dat file.')
509
510 END SELECT
511
512
513
514
515
516 = (ONE + C_E)*HALF
517
518
519 1002 FORMAT('Error 1002: KT_TYPE = ',A,' is for monodisperse',&
520 ' solids',/'(MMAX = 1). Please correct the mfix.dat file.')
521
522 1003 FORMAT('Error 1003: Coefficient of restitution (C_E) not ', &
523 'specified.',/'Please correct the mfix.dat file.')
524
525 1004 FORMAT('Error 1004: Coefficient of friction (C_F) not ', &
526 'specified.',/'Please correct the mfix.dat file.')
527
528
529 RETURN
530 END SUBROUTINE CHECK_KT_TYPE
531