File: N:\mfix\model\des\pic\calc_dtpic.f

1     !vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv!
2     !  Module name: MAKE_ARRAYS_DES                                        !
3     !  Author: Jay Boyalakuntla                           Date: 12-Jun-04  !
4     !                                                                      !
5     !  Purpose: DES - allocating DES arrays
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     ! Local variables
30     !-----------------------------------------------
31           INTEGER :: L, PC
32     
33     
34     ! MPPIC related quantities
35           DOUBLE PRECISION :: DTPIC_TMPX, DTPIC_TMPY, DTPIC_TMPZ
36     !-----------------------------------------------
37     ! Include statement functions
38     !-----------------------------------------------
39     
40           DTPIC_CFL = 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