File: /nfs/home/0/users/jenkins/mfix.git/model/des/des_rrates0.f
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28 SUBROUTINE DES_RRATES0(NP, pM, IJK, INTERP_IJK, INTERP_WEIGHTS, &
29 FOCUS)
30
31 USE compar
32 USE constant
33 USE des_rxns
34 USE des_thermo
35 USE discretelement
36 USE energy
37 USE fldvar
38 USE funits
39 USE geometry
40 USE indices
41 USE parallel
42 USE param
43 USE param1
44 USE physprop
45 USE run
46 USE rxns
47 USE sendrecv
48 USE usr
49 Use parse
50 use functions
51 use toleranc, only: ZERO_X_gs, COMPARE
52
53 IMPLICIT NONE
54
55
56
57 INTEGER, INTENT(IN) :: NP
58 INTEGER, INTENT(IN) :: pM
59 INTEGER, INTENT(IN) :: IJK
60
61
62 INTEGER, INTENT(IN) :: INTERP_IJK(2**3)
63 DOUBLE PRECISION, INTENT(IN) :: INTERP_WEIGHTS(2**3)
64
65 LOGICAL, INTENT(IN) :: FOCUS
66
67
68
69 INTEGER :: H
70 INTEGER :: M
71 INTEGER :: N
72 INTEGER :: lN
73 INTEGER :: LM
74
75 INTEGER :: mXfr
76
77
78 DOUBLE PRECISION :: DES_RATES(NO_OF_DES_RXNS)
79
80 DOUBLE PRECISION :: lRate
81 DOUBLE PRECISION :: lTp
82 DOUBLE PRECISION :: lHoRs
83
84 DOUBLE PRECISION :: RxH
85
86
87 DOUBLE PRECISION :: lRgp(NMAX(0))
88 DOUBLE PRECISION :: lRgc(NMAX(0))
89 DOUBLE PRECISION :: lHoRg, llHoRg
90 DOUBLE PRECISION :: SUMlRg
91
92
93 DOUBLE PRECISION :: lRPhase(DIMENSION_LM+DIMENSION_M-1)
94
95
96
97 DOUBLE PRECISION :: speciesLimiter
98
99
100
101
102 DOUBLE PRECISION, EXTERNAL :: CALC_H
103
104
105 = DES_T_s_NEW(NP)
106
107 (:) = ZERO
108 lRgp(:) = ZERO
109 lRgc(:) = ZERO
110 lHoRg = ZERO
111
112
113 = ZERO_X_gs
114
115
116 CALL USR_RATES_DES(NP, pM, IJK, DES_RATES)
117
118
119 RXN_LP: DO H = 1, NO_OF_DES_RXNS
120
121
122 IF(DES_Reaction(H)%nSpecies == 0) CYCLE RXN_LP
123 IF(COMPARE(DES_RATES(H),ZERO)) CYCLE RXN_LP
124
125
126 = ZERO
127 lHoRs = ZERO
128 RxH = ZERO
129
130
131
132 DO lN = 1, DES_Reaction(H)%nSpecies
133
134 = DES_Reaction(H)%Species(lN)%pMap
135
136 = DES_Reaction(H)%Species(lN)%sMap
137
138
139 = DES_Reaction(H)%Species(lN)%mXfr
140 lRate = DES_RATES(H) * DES_Reaction(H)%Species(lN)%MWxStoich
141
142 IF(M == 0) THEN
143
144 IF(lRate < ZERO) THEN
145 IF(X_g(IJK,N) > speciesLimiter) THEN
146 lRgc(N) = lRgc(N) - lRate
147
148 IF(M /= mXfr) RxH = RxH + &
149 lRate*CALC_H(T_g(IJK),0,N)
150 ELSE
151
152 (H) = ZERO
153 CYCLE RXN_LP
154 ENDIF
155 ELSE
156
157 (N) = lRgp(N) + lRate
158
159 IF(M /= mXfr) RxH = RxH + lRate*CALC_H(lTp,0,N)
160 ENDIF
161
162 ELSE
163
164 IF(lRate < ZERO) THEN
165 DES_R_sc(NP,N) = DES_R_sc(NP,N) - lRate
166 ELSE
167
168 (NP,N) = DES_R_sp(NP,N) + lRate
169 ENDIF
170 ENDIF
171 ENDDO
172
173
174
175
176 IF(ENERGY_EQ) THEN
177
178 IF(DES_Reaction(H)%Calc_DH) THEN
179
180 DO lN = 1, DES_Reaction(H)%nSpecies
181
182 = DES_Reaction(H)%Species(lN)%pMap
183
184 = DES_Reaction(H)%Species(lN)%sMap
185
186 = DES_RATES(H) * &
187 DES_Reaction(H)%Species(lN)%MWxStoich
188
189 IF(M == 0) THEN
190 llHORg = llHORg + CALC_H(T_g(IJK),0,N) * lRate
191
192 ELSE
193 lHORs = lHORs + CALC_H(lTp,M,N) * lRate
194 ENDIF
195 ENDDO
196
197
198
199 = llHORg - RxH
200 lHORs = lHORs + RxH
201
202
203
204 IF(UNITS == 'SI') THEN
205 lHORg = lHORg + 4.183925d3*llHORg
206 Q_Source(NP) = Q_Source(NP) - 4.183925d3*lHORs
207 ELSE
208 lHORg = lHORg + llHORg
209 Q_Source(NP) = Q_Source(NP) - lHORs
210 ENDIF
211 ELSE
212
213 (IJK) = HOR_g(IJK) + &
214 DES_Reaction(H)%HoR(0) * DES_RATES(H)
215 Q_Source(NP) = Q_Source(NP) - &
216 DES_Reaction(H)%HoR(pM) * DES_RATES(H)
217 ENDIF
218 ENDIF
219
220
221
222 = 1 + (pM - 1)*pM/2
223 lRPhase(LM) = lRPhase(LM) + &
224 DES_RATES(H) * DES_Reaction(H)%rPHASE(LM)
225
226 ENDDO RXN_LP
227
228
229
230 IF(SPECIES_EQ(0)) THEN
231 SUMlRg = SUM(lRgp(:NMAX(0)) - lRgc(:NMAX(0)))
232 ELSE
233 DO H=1, NO_OF_DES_RXNS
234 IF(DES_Reaction(H)%nPhases <= 0) CYCLE
235 LM = 1 + ((pM-1)*pM)/2
236 SUMlRg = SUMlRg + &
237 DES_RATES(H) * DES_Reaction(H)%rPHASE(LM)
238 ENDDO
239 ENDIF
240
241
242
243
244 (IJK,:) = DES_R_gp(IJK,:) + lRgp(:) * DTSOLID
245 DES_R_gc(IJK,:) = DES_R_gc(IJK,:) + lRgc(:) * DTSOLID
246 DES_R_PHASE(IJK,:) = DES_R_PHASE(IJK,:) + lRPhase(:) * DTSOLID
247 DES_HOR_G(IJK) = DES_HOR_G(IJK) + lHoRg * DTSOLID
248 DES_SUM_R_g(IJK) = DES_SUM_R_g(IJK) + SUMlRg * DTSOLID
249
250
251 RETURN
252 END SUBROUTINE DES_RRATES0
253