Line data Source code
1 : module mo_indprd
2 : use shr_kind_mod, only : r8 => shr_kind_r8
3 : private
4 : public :: indprd
5 : contains
6 145920 : subroutine indprd( class, prod, nprod, y, extfrc, rxt, chnkpnts )
7 : use chem_mods, only : gas_pcnst, extcnt, rxntot
8 : implicit none
9 : !--------------------------------------------------------------------
10 : ! ... dummy arguments
11 : !--------------------------------------------------------------------
12 : integer, intent(in) :: class
13 : integer, intent(in) :: chnkpnts
14 : integer, intent(in) :: nprod
15 : real(r8), intent(in) :: y(chnkpnts,gas_pcnst)
16 : real(r8), intent(in) :: rxt(chnkpnts,rxntot)
17 : real(r8), intent(in) :: extfrc(chnkpnts,extcnt)
18 : real(r8), intent(inout) :: prod(chnkpnts,nprod)
19 : !--------------------------------------------------------------------
20 : ! ... "independent" production for Explicit species
21 : !--------------------------------------------------------------------
22 145920 : if( class == 1 ) then
23 33765888 : prod(:,1) = + extfrc(:,5)
24 33692928 : prod(:,2) = 0._r8
25 33692928 : prod(:,3) = 0._r8
26 33692928 : prod(:,4) = 0._r8
27 33765888 : prod(:,5) = 0._r8
28 33692928 : prod(:,6) = 0._r8
29 33692928 : prod(:,7) = 0._r8
30 33692928 : prod(:,8) = 0._r8
31 33692928 : prod(:,9) = 0._r8
32 33692928 : prod(:,10) = 0._r8
33 33692928 : prod(:,11) = 0._r8
34 33692928 : prod(:,12) = 0._r8
35 33692928 : prod(:,13) = 0._r8
36 33692928 : prod(:,14) = 0._r8
37 33692928 : prod(:,15) =.100_r8*rxt(:,298)*y(:,122)*y(:,27)
38 33692928 : prod(:,16) = 0._r8
39 33692928 : prod(:,17) = 0._r8
40 0 : prod(:,18) = (rxt(:,255)*y(:,60) +rxt(:,257)*y(:,82) +rxt(:,265)*y(:,60) + &
41 : rxt(:,285)*y(:,48) +.500_r8*rxt(:,286)*y(:,49) + &
42 : .800_r8*rxt(:,291)*y(:,69) +rxt(:,292)*y(:,70) + &
43 : .500_r8*rxt(:,341)*y(:,104) +1.800_r8*rxt(:,451)*y(:,151))*y(:,190) &
44 : + (2.000_r8*rxt(:,281)*y(:,170) +.900_r8*rxt(:,282)*y(:,171) + &
45 : rxt(:,284)*y(:,116) +2.000_r8*rxt(:,331)*y(:,184) + &
46 : rxt(:,355)*y(:,178) +rxt(:,380)*y(:,198))*y(:,170) &
47 : + (.200_r8*rxt(:,298)*y(:,27) +.100_r8*rxt(:,342)*y(:,106) + &
48 : .270_r8*rxt(:,430)*y(:,4) +.270_r8*rxt(:,433)*y(:,105))*y(:,122) &
49 : + (rxt(:,332)*y(:,171) +.450_r8*rxt(:,333)*y(:,176) + &
50 : 2.000_r8*rxt(:,334)*y(:,184))*y(:,184) &
51 : + (.500_r8*rxt(:,440)*y(:,171) +.900_r8*rxt(:,442)*y(:,116)) &
52 : *y(:,194) +rxt(:,37)*y(:,49) +.400_r8*rxt(:,60)*y(:,127) +rxt(:,65) &
53 33692928 : *y(:,147) +.800_r8*rxt(:,69)*y(:,151)
54 33692928 : prod(:,19) = 0._r8
55 33692928 : prod(:,20) = 0._r8
56 33692928 : prod(:,21) = 0._r8
57 33692928 : prod(:,22) = 0._r8
58 33692928 : prod(:,23) = 0._r8
59 33692928 : prod(:,24) =rxt(:,141)*y(:,117)*y(:,107)
60 33692928 : prod(:,25) = 0._r8
61 33692928 : prod(:,26) = 0._r8
62 33765888 : prod(:,27) = 0._r8
63 33692928 : prod(:,28) = 0._r8
64 33692928 : prod(:,29) = 0._r8
65 33692928 : prod(:,30) =rxt(:,469)*y(:,190)*y(:,112) +rxt(:,478)*y(:,113)
66 0 : prod(:,31) = (rxt(:,402)*y(:,172) +rxt(:,405)*y(:,183) +rxt(:,408)*y(:,185) + &
67 : rxt(:,412)*y(:,129))*y(:,117) +.500_r8*rxt(:,341)*y(:,190)*y(:,104) &
68 : +.200_r8*rxt(:,437)*y(:,188)*y(:,116) +.500_r8*rxt(:,449)*y(:,150) &
69 33692928 : *y(:,118)
70 : !--------------------------------------------------------------------
71 : ! ... "independent" production for Implicit species
72 : !--------------------------------------------------------------------
73 72960 : else if( class == 4 ) then
74 33692928 : prod(:,101) = 0._r8
75 33692928 : prod(:,100) = 0._r8
76 33692928 : prod(:,124) = 0._r8
77 33692928 : prod(:,26) = 0._r8
78 33692928 : prod(:,70) = 0._r8
79 33692928 : prod(:,27) = 0._r8
80 33692928 : prod(:,71) = 0._r8
81 33692928 : prod(:,76) = 0._r8
82 33692928 : prod(:,51) = 0._r8
83 33692928 : prod(:,97) = 0._r8
84 33692928 : prod(:,59) = 0._r8
85 33692928 : prod(:,39) = 0._r8
86 33692928 : prod(:,61) = 0._r8
87 0 : prod(:,154) =rxt(:,79)*y(:,32) +rxt(:,80)*y(:,33) +2.000_r8*rxt(:,86)*y(:,39) &
88 : +rxt(:,87)*y(:,41) +3.000_r8*rxt(:,90)*y(:,53) +2.000_r8*rxt(:,98) &
89 33692928 : *y(:,73)
90 33692928 : prod(:,42) = 0._r8
91 33692928 : prod(:,160) = 0._r8
92 33765888 : prod(:,86) = 0._r8
93 33692928 : prod(:,40) = 0._r8
94 33692928 : prod(:,58) = 0._r8
95 33692928 : prod(:,50) = 0._r8
96 33765888 : prod(:,90) = 0._r8
97 33692928 : prod(:,43) = 0._r8
98 33765888 : prod(:,53) = 0._r8
99 33692928 : prod(:,49) = 0._r8
100 33692928 : prod(:,129) = 0._r8
101 33692928 : prod(:,69) = 0._r8
102 33692928 : prod(:,19) = 0._r8
103 33692928 : prod(:,44) = 0._r8
104 33692928 : prod(:,161) =.180_r8*rxt(:,40)*y(:,52)
105 33692928 : prod(:,134) = 0._r8
106 33692928 : prod(:,16) = 0._r8
107 33692928 : prod(:,127) = 0._r8
108 33692928 : prod(:,146) = 0._r8
109 33692928 : prod(:,88) = 0._r8
110 33692928 : prod(:,84) = 0._r8
111 33692928 : prod(:,113) = 0._r8
112 33692928 : prod(:,67) = 0._r8
113 0 : prod(:,169) =4.000_r8*rxt(:,78)*y(:,31) +rxt(:,79)*y(:,32) &
114 : +2.000_r8*rxt(:,81)*y(:,34) +2.000_r8*rxt(:,82)*y(:,35) &
115 : +2.000_r8*rxt(:,83)*y(:,36) +rxt(:,84)*y(:,37) +2.000_r8*rxt(:,85) &
116 : *y(:,38) +3.000_r8*rxt(:,88)*y(:,42) +rxt(:,89)*y(:,44) +rxt(:,100) &
117 33692928 : *y(:,77) +rxt(:,101)*y(:,78) +rxt(:,102)*y(:,79)
118 33692928 : prod(:,25) = 0._r8
119 33692928 : prod(:,17) = 0._r8
120 33692928 : prod(:,164) = 0._r8
121 33692928 : prod(:,128) = 0._r8
122 33692928 : prod(:,135) =.380_r8*rxt(:,40)*y(:,52) +rxt(:,41)*y(:,61) + extfrc(:,1)
123 72960 : prod(:,20) =rxt(:,79)*y(:,32) +rxt(:,80)*y(:,33) +rxt(:,82)*y(:,35) &
124 : +2.000_r8*rxt(:,83)*y(:,36) +2.000_r8*rxt(:,84)*y(:,37) +rxt(:,85) &
125 : *y(:,38) +2.000_r8*rxt(:,98)*y(:,73) +rxt(:,101)*y(:,78) +rxt(:,102) &
126 33692928 : *y(:,79)
127 33692928 : prod(:,29) =rxt(:,81)*y(:,34) +rxt(:,82)*y(:,35) +rxt(:,100)*y(:,77)
128 33765888 : prod(:,32) = 0._r8
129 33692928 : prod(:,47) = 0._r8
130 33692928 : prod(:,21) = 0._r8
131 33692928 : prod(:,111) =rxt(:,80)*y(:,33) +rxt(:,84)*y(:,37)
132 33692928 : prod(:,131) = 0._r8
133 33692928 : prod(:,122) = 0._r8
134 33692928 : prod(:,156) = (rxt(:,39) +.330_r8*rxt(:,40))*y(:,52)
135 33692928 : prod(:,143) =1.440_r8*rxt(:,40)*y(:,52)
136 33692928 : prod(:,93) = 0._r8
137 33692928 : prod(:,22) = 0._r8
138 33692928 : prod(:,118) = 0._r8
139 33692928 : prod(:,168) = 0._r8
140 33692928 : prod(:,30) = 0._r8
141 33692928 : prod(:,115) = 0._r8
142 33765888 : prod(:,37) = 0._r8
143 33692928 : prod(:,155) = 0._r8
144 33692928 : prod(:,62) = 0._r8
145 33692928 : prod(:,112) = 0._r8
146 33692928 : prod(:,116) = 0._r8
147 33692928 : prod(:,136) = 0._r8
148 33765888 : prod(:,38) = 0._r8
149 33692928 : prod(:,137) = 0._r8
150 33765888 : prod(:,52) = 0._r8
151 33692928 : prod(:,23) = 0._r8
152 33692928 : prod(:,119) = 0._r8
153 33692928 : prod(:,94) = 0._r8
154 33765888 : prod(:,89) = 0._r8
155 33692928 : prod(:,144) = 0._r8
156 33692928 : prod(:,63) = 0._r8
157 33692928 : prod(:,107) = 0._r8
158 33692928 : prod(:,12) = 0._r8
159 33692928 : prod(:,145) = 0._r8
160 33692928 : prod(:,54) = 0._r8
161 33765888 : prod(:,83) = 0._r8
162 33692928 : prod(:,55) = 0._r8
163 33692928 : prod(:,92) = 0._r8
164 33692928 : prod(:,125) = 0._r8
165 33692928 : prod(:,149) = 0._r8
166 33692928 : prod(:,64) = + extfrc(:,6)
167 33692928 : prod(:,48) = 0._r8
168 33692928 : prod(:,65) = 0._r8
169 33692928 : prod(:,132) = 0._r8
170 33692928 : prod(:,18) = 0._r8
171 33765888 : prod(:,1) = 0._r8
172 33692928 : prod(:,165) = + extfrc(:,2)
173 33692928 : prod(:,167) = + extfrc(:,3)
174 33692928 : prod(:,170) = 0._r8
175 33692928 : prod(:,121) = 0._r8
176 33692928 : prod(:,66) = 0._r8
177 0 : prod(:,162) =.180_r8*rxt(:,40)*y(:,52) +rxt(:,41)*y(:,61) + (rxt(:,5) + &
178 33692928 : 2.000_r8*rxt(:,6))
179 33692928 : prod(:,166) = 0._r8
180 33692928 : prod(:,56) = 0._r8
181 33692928 : prod(:,60) = 0._r8
182 33765888 : prod(:,41) = 0._r8
183 33765888 : prod(:,77) = 0._r8
184 33692928 : prod(:,24) = 0._r8
185 33765888 : prod(:,78) = 0._r8
186 33692928 : prod(:,28) = 0._r8
187 33692928 : prod(:,57) = 0._r8
188 33765888 : prod(:,87) = 0._r8
189 33692928 : prod(:,68) = 0._r8
190 33765888 : prod(:,82) = 0._r8
191 33692928 : prod(:,147) = 0._r8
192 33692928 : prod(:,120) = + extfrc(:,4)
193 33692928 : prod(:,45) = 0._r8
194 33765888 : prod(:,2) = 0._r8
195 33765888 : prod(:,3) = 0._r8
196 33765888 : prod(:,4) = 0._r8
197 33765888 : prod(:,5) = 0._r8
198 33765888 : prod(:,6) = 0._r8
199 33692928 : prod(:,7) = 0._r8
200 33765888 : prod(:,33) = 0._r8
201 33692928 : prod(:,95) = 0._r8
202 33765888 : prod(:,98) = 0._r8
203 33765888 : prod(:,79) = 0._r8
204 33692928 : prod(:,130) = 0._r8
205 33692928 : prod(:,133) = 0._r8
206 33692928 : prod(:,96) = 0._r8
207 33765888 : prod(:,31) = 0._r8
208 33765888 : prod(:,34) = 0._r8
209 33765888 : prod(:,35) = 0._r8
210 33692928 : prod(:,103) = 0._r8
211 33765888 : prod(:,36) = 0._r8
212 33692928 : prod(:,72) = 0._r8
213 33765888 : prod(:,85) = 0._r8
214 33692928 : prod(:,126) = 0._r8
215 33692928 : prod(:,8) = 0._r8
216 33765888 : prod(:,80) = 0._r8
217 33692928 : prod(:,9) = 0._r8
218 33765888 : prod(:,73) = 0._r8
219 33692928 : prod(:,117) = 0._r8
220 33692928 : prod(:,114) = 0._r8
221 33692928 : prod(:,99) = 0._r8
222 33692928 : prod(:,153) = 0._r8
223 33692928 : prod(:,157) =rxt(:,87)*y(:,41) +rxt(:,89)*y(:,44) +rxt(:,39)*y(:,52)
224 33692928 : prod(:,109) = 0._r8
225 33692928 : prod(:,91) = 0._r8
226 33692928 : prod(:,46) = 0._r8
227 33692928 : prod(:,104) = 0._r8
228 33692928 : prod(:,163) = 0._r8
229 33692928 : prod(:,74) = 0._r8
230 33692928 : prod(:,151) = 0._r8
231 33692928 : prod(:,148) = 0._r8
232 33692928 : prod(:,10) = 0._r8
233 33692928 : prod(:,11) = 0._r8
234 33692928 : prod(:,150) = 0._r8
235 33692928 : prod(:,105) = 0._r8
236 33692928 : prod(:,152) = 0._r8
237 33692928 : prod(:,123) = 0._r8
238 33765888 : prod(:,102) = 0._r8
239 33692928 : prod(:,13) = 0._r8
240 33692928 : prod(:,140) = 0._r8
241 33692928 : prod(:,158) =rxt(:,12)*y(:,108) +rxt(:,5)
242 33692928 : prod(:,159) =.330_r8*rxt(:,40)*y(:,52)
243 33692928 : prod(:,75) = 0._r8
244 33692928 : prod(:,110) = 0._r8
245 33692928 : prod(:,141) = 0._r8
246 33692928 : prod(:,139) = 0._r8
247 33692928 : prod(:,138) = 0._r8
248 33692928 : prod(:,106) = 0._r8
249 33692928 : prod(:,14) = 0._r8
250 33692928 : prod(:,142) = 0._r8
251 33765888 : prod(:,108) = 0._r8
252 33692928 : prod(:,15) = 0._r8
253 33765888 : prod(:,81) = 0._r8
254 33692928 : prod(:,171) =.050_r8*rxt(:,40)*y(:,52)
255 : end if
256 145920 : end subroutine indprd
257 : end module mo_indprd
|