File: N:\mfix\model\des\pic\calc_dtpic.f
1
2
3
4
5
6
7
8 SUBROUTINE CALC_DTPIC
9
10 USE compar
11 USE cutcell
12 USE des_rxns
13 USE stl_functions_des
14 USE des_thermo
15 USE discretelement
16 USE functions
17 USE funits
18 USE geometry
19 USE param1
20 USE run
21 use desmpi
22 use error_manager
23 use mfix_pic, only: CFL_PIC, DTPIC_CFL, DTPIC_TAUP
24 use mfix_pic, only: DTPIC_MAX
25 use mpi_utility
26
27 IMPLICIT NONE
28
29
30
31 INTEGER :: L, PC
32
33
34
35 DOUBLE PRECISION :: DTPIC_TMPX, DTPIC_TMPY, DTPIC_TMPZ
36
37
38
39
40 = LARGE_NUMBER
41
42 PC = 1
43 DO L = 1, MAX_PIP
44 IF(PC.GT.PIP) EXIT
45 IF(IS_NONEXISTENT(L)) CYCLE
46 PC = PC+1
47 IF(IS_GHOST(L) .or. IS_ENTERING_GHOST(L) .or. IS_EXITING_GHOST(L)) CYCLE
48
49 DTPIC_TMPX = (CFL_PIC*DX(PIJK(L,1)))/&
50 (ABS(DES_VEL_NEW(L,1))+SMALL_NUMBER)
51 DTPIC_TMPY = (CFL_PIC*DY(PIJK(L,2)))/&
52 (ABS(DES_VEL_NEW(L,2))+SMALL_NUMBER)
53 DTPIC_TMPZ = LARGE_NUMBER
54 IF(DO_K) DTPIC_TMPZ = (CFL_PIC*DZ(PIJK(L,3)))/&
55 (ABS(DES_VEL_NEW(L,3))+SMALL_NUMBER)
56
57 DTPIC_CFL = MIN(DTPIC_TMPX, DTPIC_TMPY, DTPIC_TMPZ)
58 ENDDO
59
60 CALL global_all_max(DTPIC_CFL)
61
62 DTPIC_MAX = MIN(DTPIC_CFL, DTPIC_TAUP)
63 DTSOLID = DTPIC_MAX
64
65 WRITE(ERR_MSG,2000) dtpic_cfl, dtpic_taup, DTSOLID
66 CALL FLUSH_ERR_MSG(HEADER=.FALSE., FOOTER=.FALSE.)
67
68 2000 FORMAT('DTPIC BASED ON CFL AND TAUP:', 2x, 2(2x,g11.4), &
69 /'DTSOLID set to ', g11.4)
70
71 RETURN
72 END SUBROUTINE CALC_DTPIC
73