File: N:\mfix\model\des\des_reaction_model.f
1
2
3
4
5
6
7
8
9
10
11
12
13 SUBROUTINE DES_REACTION_MODEL
14
15 USE compar
16 USE constant
17 USE des_rxns
18 USE des_thermo
19 USE discretelement
20 USE geometry
21 USE indices
22 USE param, only: dimension_n_s
23 USE param1, only: zero
24 USE run, only: ANY_SPECIES_EQ, SPECIES_EQ
25 USE physprop, only: NMAX
26 USE run, only: DT
27 USE run, only: SOLVE_ROs
28 USE functions
29
30 IMPLICIT NONE
31
32
33
34
35
36
37
38
39 INTEGER :: NN
40
41 DOUBLE PRECISION :: SUM_DES_Rs(1:MAX_PIP)
42
43 DOUBLE PRECISION :: PIx4o3
44 DOUBLE PRECISION :: o3 = 1.0d0/3.0d0
45
46 DOUBLE PRECISION :: lDT, lOoDT
47
48 LOGICAL,SAVE:: FIRST_PASS = .TRUE.
49
50
51
52 IF(.NOT.ANY_SPECIES_EQ) RETURN
53
54 PIx4o3 = Pi*4.0d0/3.0d0
55
56 lDT = merge(DT, DTSOLID, DES_EXPLICITLY_COUPLED)
57 lOoDT = -1.0d0/lDT
58
59
60 FORALL(NN=1:DIMENSION_N_S)
61 WHERE(PARTICLE_STATE(:MAX_PIP) == NORMAL_PARTICLE) &
62 DES_R_s(:MAX_PIP,NN) = max(DES_R_s(:MAX_PIP,NN), &
63 DES_X_s(:MAX_PIP,NN)*PMASS(:MAX_PIP)*lOoDT)
64 END FORALL
65
66
67 IF(INTG_EULER) THEN
68 WHERE(PARTICLE_STATE(:MAX_PIP) == NORMAL_PARTICLE) &
69 SUM_DES_Rs(:MAX_PIP) = sum(DES_R_s(:MAX_PIP,:),DIM=2)
70
71 WHERE(PARTICLE_STATE(:MAX_PIP) == NORMAL_PARTICLE) &
72 PMASS(:MAX_PIP) = PMASS(:MAX_PIP) + lDT*SUM_DES_Rs(:MAX_PIP)
73
74 FORALL(NN=1:DIMENSION_N_S)
75 WHERE(PARTICLE_STATE(:MAX_PIP) == NORMAL_PARTICLE) &
76 DES_X_s(:MAX_PIP,NN) = max(DES_X_s(:MAX_PIP,NN) + lDT* &
77 (DES_R_s(:MAX_PIP,NN) - DES_X_s(:MAX_PIP,NN)* &
78 SUM_DES_Rs(:MAX_PIP))/PMASS(:MAX_PIP), ZERO)
79 END FORALL
80
81 ELSE
82 IF(FIRST_PASS) THEN
83 ENDIF
84 ENDIF
85
86 DO NN=1,MAX_PIP
87 IF(IS_NORMAL(NN)) THEN
88 IF(SOLVE_ROs(PIJK(NN,5))) THEN
89 RO_Sol(NN)= PMASS(NN)/PVOL(NN)
90 ELSE
91 DES_RADIUS(NN) = (PMASS(NN)/(Pix4o3*RO_SOL(NN)))**o3
92 PVOL(NN) = PMASS(NN)/RO_SOL(NN)
93 ENDIF
94 ENDIF
95 ENDDO
96
97
98 = ZERO
99
100
101 = .FALSE.
102
103 RETURN
104 END SUBROUTINE DES_REACTION_MODEL
105