Line data Source code
1 : module mo_lin_matrix
2 : use chem_mods, only: veclen
3 : private
4 : public :: linmat
5 : contains
6 1882398 : subroutine linmat01( avec_len, mat, y, rxt, het_rates )
7 : !----------------------------------------------
8 : ! ... linear matrix entries for implicit species
9 : !----------------------------------------------
10 : use chem_mods, only : gas_pcnst, rxntot, nzcnt
11 : use shr_kind_mod, only : r8 => shr_kind_r8
12 : implicit none
13 : !----------------------------------------------
14 : ! ... dummy arguments
15 : !----------------------------------------------
16 : integer, intent(in) :: avec_len
17 : real(r8), intent(in) :: y(veclen,gas_pcnst)
18 : real(r8), intent(in) :: rxt(veclen,rxntot)
19 : real(r8), intent(in) :: het_rates(veclen,gas_pcnst)
20 : real(r8), intent(inout) :: mat(veclen,nzcnt)
21 : !----------------------------------------------
22 : ! ... local variables
23 : !----------------------------------------------
24 : integer :: k
25 60717998 : do k = 1,avec_len
26 58835600 : mat(k,752) = -( rxt(k,19) + het_rates(k,1) )
27 58835600 : mat(k,718) = -( rxt(k,20) + het_rates(k,2) )
28 58835600 : mat(k,1) = -( het_rates(k,3) )
29 58835600 : mat(k,1272) = -( het_rates(k,4) )
30 58835600 : mat(k,2) = -( het_rates(k,5) )
31 58835600 : mat(k,3) = -( het_rates(k,6) )
32 58835600 : mat(k,1041) = -( het_rates(k,7) )
33 58835600 : mat(k,182) = -( het_rates(k,8) )
34 58835600 : mat(k,417) = -( rxt(k,21) + het_rates(k,9) )
35 58835600 : mat(k,188) = -( rxt(k,22) + het_rates(k,10) )
36 58835600 : mat(k,468) = -( rxt(k,23) + het_rates(k,11) )
37 58835600 : mat(k,418) = .500_r8*rxt(k,21)
38 58835600 : mat(k,189) = rxt(k,22)
39 58835600 : mat(k,740) = .200_r8*rxt(k,115)
40 58835600 : mat(k,841) = .060_r8*rxt(k,116)
41 58835600 : mat(k,301) = -( rxt(k,24) + het_rates(k,12) )
42 58835600 : mat(k,738) = .200_r8*rxt(k,115)
43 58835600 : mat(k,838) = .200_r8*rxt(k,116)
44 58835600 : mat(k,401) = -( rxt(k,25) + het_rates(k,13) )
45 58835600 : mat(k,739) = .200_r8*rxt(k,115)
46 58835600 : mat(k,840) = .150_r8*rxt(k,116)
47 58835600 : mat(k,337) = -( rxt(k,26) + het_rates(k,14) )
48 58835600 : mat(k,839) = .210_r8*rxt(k,116)
49 58835600 : mat(k,204) = -( het_rates(k,15) )
50 58835600 : mat(k,377) = -( het_rates(k,16) )
51 58835600 : mat(k,1092) = -( het_rates(k,17) )
52 58835600 : mat(k,2199) = -( het_rates(k,18) )
53 58835600 : mat(k,243) = rxt(k,118)
54 58835600 : mat(k,3479) = rxt(k,119)
55 58835600 : mat(k,563) = rxt(k,121)
56 58835600 : mat(k,161) = rxt(k,123)
57 58835600 : mat(k,167) = rxt(k,124)
58 58835600 : mat(k,496) = 2.000_r8*rxt(k,130)
59 58835600 : mat(k,647) = rxt(k,131)
60 58835600 : mat(k,463) = 3.000_r8*rxt(k,134)
61 58835600 : mat(k,128) = 2.000_r8*rxt(k,142)
62 58835600 : mat(k,1151) = rxt(k,143)
63 58835600 : mat(k,996) = rxt(k,149)
64 58835600 : mat(k,242) = -( rxt(k,118) + het_rates(k,19) )
65 58835600 : mat(k,3488) = -( rxt(k,119) + het_rates(k,20) )
66 58835600 : mat(k,566) = rxt(k,120)
67 : mat(k,561) = -( rxt(k,120) + rxt(k,121) + rxt(k,886) + rxt(k,889) + rxt(k,894) &
68 58835600 : + het_rates(k,21) )
69 58835600 : mat(k,4) = -( het_rates(k,22) )
70 58835600 : mat(k,245) = -( het_rates(k,23) )
71 58835600 : mat(k,352) = rxt(k,27)
72 58835600 : mat(k,353) = -( rxt(k,27) + het_rates(k,24) )
73 58835600 : mat(k,310) = -( het_rates(k,25) )
74 58835600 : mat(k,585) = -( het_rates(k,26) )
75 58835600 : mat(k,283) = -( het_rates(k,27) )
76 58835600 : mat(k,358) = -( rxt(k,28) + het_rates(k,28) )
77 58835600 : mat(k,316) = -( het_rates(k,29) )
78 58835600 : mat(k,1385) = -( het_rates(k,30) )
79 58835600 : mat(k,2032) = .700_r8*rxt(k,79)
80 58835600 : mat(k,411) = -( rxt(k,29) + het_rates(k,31) )
81 58835600 : mat(k,130) = -( het_rates(k,32) )
82 58835600 : mat(k,287) = -( rxt(k,30) + het_rates(k,33) )
83 58835600 : mat(k,120) = -( rxt(k,122) + het_rates(k,34) )
84 58835600 : mat(k,159) = -( rxt(k,123) + het_rates(k,35) )
85 58835600 : mat(k,164) = -( rxt(k,124) + het_rates(k,36) )
86 58835600 : mat(k,134) = -( rxt(k,125) + het_rates(k,37) )
87 58835600 : mat(k,169) = -( rxt(k,126) + het_rates(k,38) )
88 58835600 : mat(k,138) = -( rxt(k,127) + het_rates(k,39) )
89 58835600 : mat(k,174) = -( rxt(k,128) + het_rates(k,40) )
90 58835600 : mat(k,142) = -( rxt(k,129) + het_rates(k,41) )
91 58835600 : mat(k,495) = -( rxt(k,130) + het_rates(k,42) )
92 58835600 : mat(k,3188) = -( rxt(k,31) + rxt(k,32) + het_rates(k,43) )
93 58835600 : mat(k,758) = .100_r8*rxt(k,19)
94 58835600 : mat(k,725) = .100_r8*rxt(k,20)
95 58835600 : mat(k,451) = rxt(k,37)
96 58835600 : mat(k,2264) = .180_r8*rxt(k,39)
97 58835600 : mat(k,643) = .500_r8*rxt(k,41)
98 58835600 : mat(k,1715) = rxt(k,43)
99 58835600 : mat(k,886) = rxt(k,45)
100 58835600 : mat(k,1212) = rxt(k,46)
101 58835600 : mat(k,982) = .330_r8*rxt(k,47)
102 58835600 : mat(k,1773) = rxt(k,52)
103 58835600 : mat(k,927) = rxt(k,55) + rxt(k,56)
104 58835600 : mat(k,678) = rxt(k,65)
105 58835600 : mat(k,597) = rxt(k,66)
106 58835600 : mat(k,734) = rxt(k,68)
107 58835600 : mat(k,1206) = rxt(k,69)
108 58835600 : mat(k,1907) = rxt(k,71)
109 58835600 : mat(k,2023) = rxt(k,72)
110 58835600 : mat(k,1782) = .250_r8*rxt(k,74)
111 58835600 : mat(k,1465) = .140_r8*rxt(k,75)
112 58835600 : mat(k,1922) = .250_r8*rxt(k,80)
113 58835600 : mat(k,1503) = .440_r8*rxt(k,81)
114 58835600 : mat(k,1457) = rxt(k,83)
115 58835600 : mat(k,1484) = rxt(k,84)
116 58835600 : mat(k,581) = rxt(k,88)
117 58835600 : mat(k,408) = rxt(k,89)
118 58835600 : mat(k,697) = rxt(k,313)
119 58835600 : mat(k,293) = 2.000_r8*rxt(k,343)
120 58835600 : mat(k,1963) = rxt(k,427)
121 58835600 : mat(k,2002) = rxt(k,433)
122 58835600 : mat(k,646) = -( rxt(k,131) + het_rates(k,44) )
123 58835600 : mat(k,146) = -( rxt(k,132) + het_rates(k,45) )
124 58835600 : mat(k,1431) = -( rxt(k,33) + het_rates(k,46) )
125 58835600 : mat(k,755) = .400_r8*rxt(k,19)
126 58835600 : mat(k,722) = .400_r8*rxt(k,20)
127 58835600 : mat(k,360) = rxt(k,28)
128 58835600 : mat(k,975) = .330_r8*rxt(k,47)
129 58835600 : mat(k,334) = rxt(k,77)
130 58835600 : mat(k,579) = rxt(k,88)
131 58835600 : mat(k,393) = -( rxt(k,133) + het_rates(k,47) )
132 58835600 : mat(k,123) = -( het_rates(k,48) )
133 58835600 : mat(k,2277) = -( rxt(k,34) + het_rates(k,49) )
134 58835600 : mat(k,756) = .250_r8*rxt(k,19)
135 58835600 : mat(k,723) = .250_r8*rxt(k,20)
136 58835600 : mat(k,413) = .820_r8*rxt(k,29)
137 58835600 : mat(k,979) = .170_r8*rxt(k,47)
138 58835600 : mat(k,1926) = -( rxt(k,35) + het_rates(k,50) )
139 58835600 : mat(k,338) = rxt(k,26)
140 58835600 : mat(k,641) = .500_r8*rxt(k,41)
141 58835600 : mat(k,619) = .680_r8*rxt(k,48)
142 58835600 : mat(k,632) = .670_r8*rxt(k,49)
143 58835600 : mat(k,1874) = rxt(k,54)
144 58835600 : mat(k,1116) = .500_r8*rxt(k,60)
145 58835600 : mat(k,1795) = .500_r8*rxt(k,61)
146 58835600 : mat(k,774) = .720_r8*rxt(k,63)
147 58835600 : mat(k,1779) = .250_r8*rxt(k,74)
148 58835600 : mat(k,1463) = .140_r8*rxt(k,75)
149 58835600 : mat(k,1917) = .250_r8*rxt(k,80)
150 58835600 : mat(k,1500) = .440_r8*rxt(k,81)
151 58835600 : mat(k,747) = .400_r8*rxt(k,115)
152 58835600 : mat(k,848) = .540_r8*rxt(k,116)
153 58835600 : mat(k,432) = .510_r8*rxt(k,117)
154 58835600 : mat(k,791) = -( het_rates(k,51) )
155 58835600 : mat(k,702) = -( rxt(k,36) + het_rates(k,52) )
156 58835600 : mat(k,1494) = -( het_rates(k,53) )
157 58835600 : mat(k,449) = -( rxt(k,37) + het_rates(k,54) )
158 58835600 : mat(k,2259) = -( rxt(k,38) + rxt(k,39) + het_rates(k,55) )
159 58835600 : mat(k,462) = -( rxt(k,134) + het_rates(k,56) )
160 58835600 : mat(k,3850) = -( het_rates(k,57) )
161 58835600 : mat(k,244) = rxt(k,118)
162 58835600 : mat(k,122) = 4.000_r8*rxt(k,122)
163 58835600 : mat(k,163) = rxt(k,123)
164 58835600 : mat(k,137) = 2.000_r8*rxt(k,125)
165 58835600 : mat(k,173) = 2.000_r8*rxt(k,126)
166 58835600 : mat(k,141) = 2.000_r8*rxt(k,127)
167 58835600 : mat(k,178) = rxt(k,128)
168 58835600 : mat(k,145) = 2.000_r8*rxt(k,129)
169 58835600 : mat(k,147) = 3.000_r8*rxt(k,132)
170 58835600 : mat(k,398) = rxt(k,133)
171 58835600 : mat(k,180) = 2.000_r8*rxt(k,135)
172 58835600 : mat(k,116) = 2.000_r8*rxt(k,136)
173 58835600 : mat(k,3520) = rxt(k,137)
174 58835600 : mat(k,1332) = rxt(k,138)
175 58835600 : mat(k,259) = rxt(k,141)
176 58835600 : mat(k,254) = rxt(k,144)
177 58835600 : mat(k,264) = rxt(k,145)
178 58835600 : mat(k,329) = rxt(k,146)
179 58835600 : mat(k,3140) = rxt(k,147)
180 58835600 : mat(k,1163) = rxt(k,150)
181 58835600 : mat(k,179) = -( rxt(k,135) + het_rates(k,58) )
182 58835600 : mat(k,114) = -( rxt(k,136) + rxt(k,253) + het_rates(k,59) )
183 58835600 : mat(k,3515) = -( rxt(k,137) + het_rates(k,60) )
184 58835600 : mat(k,1329) = rxt(k,139)
185 58835600 : mat(k,346) = rxt(k,151)
186 58835600 : mat(k,115) = 2.000_r8*rxt(k,253)
187 : mat(k,1325) = -( rxt(k,138) + rxt(k,139) + rxt(k,888) + rxt(k,893) + rxt(k,899) &
188 58835600 : + het_rates(k,61) )
189 58835600 : mat(k,5) = -( het_rates(k,62) )
190 58835600 : mat(k,2057) = -( het_rates(k,63) )
191 58835600 : mat(k,190) = 1.500_r8*rxt(k,22)
192 58835600 : mat(k,403) = .600_r8*rxt(k,25)
193 58835600 : mat(k,339) = rxt(k,26)
194 58835600 : mat(k,3180) = rxt(k,31) + rxt(k,32)
195 58835600 : mat(k,1432) = rxt(k,33)
196 58835600 : mat(k,1927) = rxt(k,35)
197 58835600 : mat(k,2258) = .380_r8*rxt(k,39)
198 58835600 : mat(k,1614) = rxt(k,40)
199 58835600 : mat(k,642) = .500_r8*rxt(k,41)
200 58835600 : mat(k,1713) = rxt(k,43)
201 58835600 : mat(k,1478) = 2.000_r8*rxt(k,44)
202 58835600 : mat(k,885) = rxt(k,45)
203 58835600 : mat(k,978) = .330_r8*rxt(k,47)
204 58835600 : mat(k,621) = 1.320_r8*rxt(k,48)
205 58835600 : mat(k,634) = 1.740_r8*rxt(k,49)
206 58835600 : mat(k,492) = rxt(k,50)
207 58835600 : mat(k,525) = rxt(k,51)
208 58835600 : mat(k,1875) = 1.500_r8*rxt(k,53) + rxt(k,54)
209 58835600 : mat(k,2077) = .550_r8*rxt(k,64)
210 58835600 : mat(k,2109) = .550_r8*rxt(k,67)
211 58835600 : mat(k,2017) = 1.650_r8*rxt(k,72)
212 58835600 : mat(k,1780) = .750_r8*rxt(k,74)
213 58835600 : mat(k,1464) = .860_r8*rxt(k,75)
214 58835600 : mat(k,2042) = .700_r8*rxt(k,79)
215 58835600 : mat(k,1456) = rxt(k,83)
216 58835600 : mat(k,224) = 1.500_r8*rxt(k,90)
217 58835600 : mat(k,2358) = rxt(k,93)
218 58835600 : mat(k,1290) = rxt(k,94)
219 58835600 : mat(k,1719) = rxt(k,96)
220 58835600 : mat(k,389) = rxt(k,154)
221 58835600 : mat(k,1548) = rxt(k,384)
222 58835600 : mat(k,1647) = rxt(k,500)
223 58835600 : mat(k,1855) = .600_r8*rxt(k,529)
224 58835600 : mat(k,1823) = .600_r8*rxt(k,532)
225 58835600 : mat(k,1613) = -( rxt(k,40) + het_rates(k,64) )
226 58835600 : mat(k,703) = rxt(k,36)
227 58835600 : mat(k,2256) = .440_r8*rxt(k,39)
228 58835600 : mat(k,618) = .170_r8*rxt(k,48)
229 58835600 : mat(k,631) = .280_r8*rxt(k,49)
230 58835600 : mat(k,1868) = rxt(k,54)
231 58835600 : mat(k,570) = .400_r8*rxt(k,86)
232 58835600 : mat(k,779) = rxt(k,98)
233 58835600 : mat(k,364) = rxt(k,99)
234 60717998 : mat(k,369) = rxt(k,100)
235 : end do
236 1882398 : end subroutine linmat01
237 1882398 : subroutine linmat02( avec_len, mat, y, rxt, het_rates )
238 : !----------------------------------------------
239 : ! ... linear matrix entries for implicit species
240 : !----------------------------------------------
241 : use chem_mods, only : gas_pcnst, rxntot, nzcnt
242 : use shr_kind_mod, only : r8 => shr_kind_r8
243 : implicit none
244 : !----------------------------------------------
245 : ! ... dummy arguments
246 : !----------------------------------------------
247 : integer, intent(in) :: avec_len
248 : real(r8), intent(in) :: y(veclen,gas_pcnst)
249 : real(r8), intent(in) :: rxt(veclen,rxntot)
250 : real(r8), intent(in) :: het_rates(veclen,gas_pcnst)
251 : real(r8), intent(inout) :: mat(veclen,nzcnt)
252 : !----------------------------------------------
253 : ! ... local variables
254 : !----------------------------------------------
255 : integer :: k
256 60717998 : do k = 1,avec_len
257 58835600 : mat(k,248) = -( rxt(k,140) + het_rates(k,65) )
258 58835600 : mat(k,160) = rxt(k,123)
259 58835600 : mat(k,165) = rxt(k,124)
260 58835600 : mat(k,170) = rxt(k,126)
261 58835600 : mat(k,139) = 2.000_r8*rxt(k,127)
262 58835600 : mat(k,175) = 2.000_r8*rxt(k,128)
263 58835600 : mat(k,143) = rxt(k,129)
264 58835600 : mat(k,127) = 2.000_r8*rxt(k,142)
265 58835600 : mat(k,260) = rxt(k,145)
266 58835600 : mat(k,325) = rxt(k,146)
267 58835600 : mat(k,256) = -( rxt(k,141) + het_rates(k,66) )
268 58835600 : mat(k,135) = rxt(k,125)
269 58835600 : mat(k,171) = rxt(k,126)
270 58835600 : mat(k,252) = rxt(k,144)
271 58835600 : mat(k,218) = -( het_rates(k,67) )
272 58835600 : mat(k,639) = -( rxt(k,41) + het_rates(k,68) )
273 58835600 : mat(k,1837) = .600_r8*rxt(k,529)
274 58835600 : mat(k,1806) = .600_r8*rxt(k,532)
275 58835600 : mat(k,304) = -( het_rates(k,69) )
276 58835600 : mat(k,6) = -( het_rates(k,70) )
277 58835600 : mat(k,7) = -( het_rates(k,71) )
278 58835600 : mat(k,8) = -( het_rates(k,72) )
279 58835600 : mat(k,9) = -( rxt(k,901) + het_rates(k,73) )
280 58835600 : mat(k,150) = -( rxt(k,42) + het_rates(k,74) )
281 58835600 : mat(k,1242) = -( het_rates(k,75) )
282 58835600 : mat(k,166) = rxt(k,124)
283 58835600 : mat(k,176) = rxt(k,128)
284 58835600 : mat(k,249) = 2.000_r8*rxt(k,140)
285 58835600 : mat(k,257) = rxt(k,141)
286 58835600 : mat(k,323) = rxt(k,148)
287 58835600 : mat(k,1712) = -( rxt(k,43) + het_rates(k,76) )
288 58835600 : mat(k,976) = .330_r8*rxt(k,47)
289 58835600 : mat(k,1869) = .500_r8*rxt(k,53)
290 58835600 : mat(k,1660) = rxt(k,59)
291 58835600 : mat(k,1112) = .500_r8*rxt(k,60)
292 58835600 : mat(k,1790) = .500_r8*rxt(k,61)
293 58835600 : mat(k,1469) = rxt(k,62)
294 58835600 : mat(k,772) = .720_r8*rxt(k,63)
295 58835600 : mat(k,1915) = .500_r8*rxt(k,80)
296 58835600 : mat(k,1499) = .560_r8*rxt(k,81)
297 58835600 : mat(k,292) = rxt(k,344)
298 58835600 : mat(k,1476) = -( rxt(k,44) + rxt(k,811) + het_rates(k,77) )
299 58835600 : mat(k,420) = rxt(k,21)
300 58835600 : mat(k,1111) = .500_r8*rxt(k,60)
301 58835600 : mat(k,1787) = .500_r8*rxt(k,61)
302 58835600 : mat(k,771) = .280_r8*rxt(k,63)
303 58835600 : mat(k,349) = .700_r8*rxt(k,87)
304 58835600 : mat(k,746) = .600_r8*rxt(k,115)
305 58835600 : mat(k,847) = .340_r8*rxt(k,116)
306 58835600 : mat(k,431) = .170_r8*rxt(k,117)
307 58835600 : mat(k,2931) = -( rxt(k,181) + het_rates(k,78) )
308 58835600 : mat(k,4112) = rxt(k,2) + 2.000_r8*rxt(k,3)
309 58835600 : mat(k,3183) = 2.000_r8*rxt(k,31)
310 58835600 : mat(k,450) = rxt(k,37)
311 58835600 : mat(k,2260) = rxt(k,38) + .330_r8*rxt(k,39)
312 58835600 : mat(k,1152) = rxt(k,143)
313 58835600 : mat(k,3127) = rxt(k,147)
314 58835600 : mat(k,324) = rxt(k,148)
315 58835600 : mat(k,1673) = -( het_rates(k,79) )
316 58835600 : mat(k,4109) = rxt(k,1)
317 58835600 : mat(k,3179) = rxt(k,32)
318 58835600 : mat(k,2257) = 1.440_r8*rxt(k,39)
319 58835600 : mat(k,126) = -( rxt(k,142) + het_rates(k,80) )
320 58835600 : mat(k,1487) = -( rxt(k,4) + het_rates(k,81) )
321 58835600 : mat(k,153) = -( rxt(k,153) + het_rates(k,82) )
322 58835600 : mat(k,1150) = -( rxt(k,143) + het_rates(k,83) )
323 58835600 : mat(k,251) = -( rxt(k,144) + het_rates(k,84) )
324 58835600 : mat(k,261) = -( rxt(k,145) + het_rates(k,85) )
325 58835600 : mat(k,326) = -( rxt(k,146) + het_rates(k,86) )
326 58835600 : mat(k,3129) = -( rxt(k,147) + het_rates(k,87) )
327 58835600 : mat(k,197) = -( het_rates(k,88) )
328 58835600 : mat(k,883) = -( rxt(k,45) + het_rates(k,89) )
329 58835600 : mat(k,1377) = -( het_rates(k,90) )
330 58835600 : mat(k,616) = .410_r8*rxt(k,48)
331 58835600 : mat(k,322) = -( rxt(k,148) + het_rates(k,91) )
332 58835600 : mat(k,1210) = -( rxt(k,46) + het_rates(k,92) )
333 58835600 : mat(k,2949) = -( rxt(k,9) + het_rates(k,93) )
334 58835600 : mat(k,981) = rxt(k,813)
335 58835600 : mat(k,507) = rxt(k,816)
336 58835600 : mat(k,1260) = rxt(k,817)
337 58835600 : mat(k,1586) = rxt(k,818)
338 58835600 : mat(k,1666) = rxt(k,819)
339 58835600 : mat(k,1118) = rxt(k,820)
340 58835600 : mat(k,2081) = rxt(k,824)
341 58835600 : mat(k,677) = rxt(k,825)
342 58835600 : mat(k,2113) = rxt(k,826)
343 : mat(k,296) = 2.000_r8*rxt(k,827) + 2.000_r8*rxt(k,884) + 2.000_r8*rxt(k,887) &
344 58835600 : + 2.000_r8*rxt(k,898)
345 58835600 : mat(k,2142) = rxt(k,828)
346 58835600 : mat(k,3653) = .500_r8*rxt(k,830)
347 58835600 : mat(k,3601) = rxt(k,831)
348 58835600 : mat(k,208) = rxt(k,832)
349 58835600 : mat(k,1230) = rxt(k,835)
350 58835600 : mat(k,787) = rxt(k,837)
351 58835600 : mat(k,1146) = rxt(k,838)
352 58835600 : mat(k,1705) = rxt(k,839)
353 58835600 : mat(k,1538) = rxt(k,840)
354 58835600 : mat(k,564) = rxt(k,886) + rxt(k,889) + rxt(k,894)
355 58835600 : mat(k,1326) = rxt(k,888) + rxt(k,893) + rxt(k,899)
356 58835600 : mat(k,443) = -( rxt(k,10) + rxt(k,11) + rxt(k,216) + het_rates(k,94) )
357 58835600 : mat(k,995) = -( rxt(k,149) + het_rates(k,95) )
358 58835600 : mat(k,562) = rxt(k,886) + rxt(k,889) + rxt(k,894)
359 58835600 : mat(k,1159) = -( rxt(k,150) + het_rates(k,96) )
360 58835600 : mat(k,1324) = rxt(k,888) + rxt(k,893) + rxt(k,899)
361 58835600 : mat(k,974) = -( rxt(k,47) + rxt(k,813) + het_rates(k,97) )
362 58835600 : mat(k,613) = -( rxt(k,48) + het_rates(k,98) )
363 58835600 : mat(k,1836) = .250_r8*rxt(k,529)
364 58835600 : mat(k,626) = -( rxt(k,49) + het_rates(k,99) )
365 58835600 : mat(k,1805) = .250_r8*rxt(k,532)
366 58835600 : mat(k,488) = -( rxt(k,50) + het_rates(k,100) )
367 58835600 : mat(k,1835) = .150_r8*rxt(k,529)
368 58835600 : mat(k,521) = -( rxt(k,51) + het_rates(k,101) )
369 58835600 : mat(k,1804) = .150_r8*rxt(k,532)
370 58835600 : mat(k,1770) = -( rxt(k,52) + het_rates(k,102) )
371 58835600 : mat(k,977) = .170_r8*rxt(k,47)
372 58835600 : mat(k,1870) = .500_r8*rxt(k,53)
373 58835600 : mat(k,1661) = rxt(k,59)
374 58835600 : mat(k,1113) = .500_r8*rxt(k,60)
375 58835600 : mat(k,1791) = .500_r8*rxt(k,61)
376 58835600 : mat(k,1470) = rxt(k,62)
377 58835600 : mat(k,773) = .280_r8*rxt(k,63)
378 58835600 : mat(k,1777) = .500_r8*rxt(k,74)
379 58835600 : mat(k,1462) = .860_r8*rxt(k,75)
380 58835600 : mat(k,1545) = rxt(k,384)
381 58835600 : mat(k,1872) = -( rxt(k,53) + rxt(k,54) + het_rates(k,103) )
382 58835600 : mat(k,2074) = .450_r8*rxt(k,64)
383 58835600 : mat(k,2106) = .450_r8*rxt(k,67)
384 58835600 : mat(k,2136) = rxt(k,82)
385 58835600 : mat(k,924) = -( rxt(k,55) + rxt(k,56) + het_rates(k,104) )
386 58835600 : mat(k,640) = .500_r8*rxt(k,41)
387 58835600 : mat(k,914) = -( rxt(k,814) + het_rates(k,105) )
388 58835600 : mat(k,503) = rxt(k,57)
389 58835600 : mat(k,1251) = rxt(k,58)
390 58835600 : mat(k,1524) = -( rxt(k,815) + het_rates(k,106) )
391 58835600 : mat(k,502) = -( rxt(k,57) + rxt(k,816) + het_rates(k,107) )
392 58835600 : mat(k,1252) = -( rxt(k,58) + rxt(k,817) + het_rates(k,108) )
393 58835600 : mat(k,1410) = -( het_rates(k,109) )
394 58835600 : mat(k,1659) = -( rxt(k,59) + rxt(k,819) + het_rates(k,110) )
395 58835600 : mat(k,1110) = -( rxt(k,60) + rxt(k,820) + het_rates(k,111) )
396 58835600 : mat(k,1793) = -( rxt(k,61) + rxt(k,821) + het_rates(k,112) )
397 58835600 : mat(k,1172) = rxt(k,462)
398 58835600 : mat(k,1057) = rxt(k,465)
399 58835600 : mat(k,1468) = -( rxt(k,62) + rxt(k,822) + het_rates(k,113) )
400 58835600 : mat(k,1122) = rxt(k,458)
401 58835600 : mat(k,1134) = rxt(k,468)
402 58835600 : mat(k,1311) = rxt(k,480)
403 58835600 : mat(k,1363) = rxt(k,483)
404 58835600 : mat(k,770) = -( rxt(k,63) + rxt(k,823) + het_rates(k,114) )
405 58835600 : mat(k,2078) = -( rxt(k,64) + rxt(k,824) + het_rates(k,115) )
406 58835600 : mat(k,673) = -( rxt(k,65) + rxt(k,825) + het_rates(k,116) )
407 58835600 : mat(k,593) = -( rxt(k,66) + het_rates(k,117) )
408 58835600 : mat(k,2110) = -( rxt(k,67) + rxt(k,826) + het_rates(k,118) )
409 58835600 : mat(k,728) = -( rxt(k,68) + het_rates(k,119) )
410 58835600 : mat(k,1194) = -( rxt(k,69) + het_rates(k,120) )
411 58835600 : mat(k,1572) = -( rxt(k,70) + rxt(k,818) + het_rates(k,121) )
412 58835600 : mat(k,919) = -( het_rates(k,122) )
413 58835600 : mat(k,1896) = -( rxt(k,71) + het_rates(k,123) )
414 58835600 : mat(k,89) = -( het_rates(k,124) )
415 58835600 : mat(k,1071) = -( het_rates(k,125) )
416 58835600 : mat(k,2016) = -( rxt(k,72) + rxt(k,73) + het_rates(k,126) )
417 58835600 : mat(k,524) = rxt(k,51)
418 58835600 : mat(k,596) = rxt(k,66)
419 58835600 : mat(k,731) = .500_r8*rxt(k,68)
420 58835600 : mat(k,1200) = .120_r8*rxt(k,69)
421 58835600 : mat(k,1901) = .300_r8*rxt(k,71)
422 58835600 : mat(k,1992) = rxt(k,433)
423 58835600 : mat(k,1778) = -( rxt(k,74) + het_rates(k,127) )
424 58835600 : mat(k,1643) = .510_r8*rxt(k,500)
425 58835600 : mat(k,1461) = -( rxt(k,75) + het_rates(k,128) )
426 58835600 : mat(k,2062) = .550_r8*rxt(k,64)
427 58835600 : mat(k,556) = -( rxt(k,76) + het_rates(k,129) )
428 58835600 : mat(k,751) = .800_r8*rxt(k,19)
429 58835600 : mat(k,717) = .800_r8*rxt(k,20)
430 58835600 : mat(k,332) = -( rxt(k,77) + het_rates(k,130) )
431 58835600 : mat(k,528) = -( rxt(k,78) + rxt(k,407) + het_rates(k,131) )
432 58835600 : mat(k,2041) = -( rxt(k,79) + het_rates(k,132) )
433 58835600 : mat(k,491) = rxt(k,50)
434 58835600 : mat(k,676) = rxt(k,65)
435 58835600 : mat(k,732) = .500_r8*rxt(k,68)
436 58835600 : mat(k,1201) = .880_r8*rxt(k,69)
437 58835600 : mat(k,1902) = .700_r8*rxt(k,71)
438 58835600 : mat(k,1956) = rxt(k,427)
439 58835600 : mat(k,1916) = -( rxt(k,80) + het_rates(k,133) )
440 58835600 : mat(k,1645) = .490_r8*rxt(k,500)
441 58835600 : mat(k,1498) = -( rxt(k,81) + het_rates(k,134) )
442 58835600 : mat(k,2098) = .550_r8*rxt(k,67)
443 58835600 : mat(k,827) = -( het_rates(k,135) )
444 58835600 : mat(k,477) = -( rxt(k,198) + het_rates(k,136) )
445 58835600 : mat(k,2986) = rxt(k,15)
446 58835600 : mat(k,201) = -( rxt(k,12) + het_rates(k,137) )
447 : mat(k,295) = -( rxt(k,13) + rxt(k,14) + rxt(k,217) + rxt(k,827) + rxt(k,884) &
448 58835600 : + rxt(k,887) + rxt(k,898) + het_rates(k,138) )
449 58835600 : mat(k,2140) = -( rxt(k,82) + rxt(k,828) + het_rates(k,139) )
450 58835600 : mat(k,1583) = rxt(k,70)
451 58835600 : mat(k,10) = -( het_rates(k,140) )
452 58835600 : mat(k,11) = -( het_rates(k,141) )
453 58835600 : mat(k,12) = -( het_rates(k,142) )
454 58835600 : mat(k,117) = -( het_rates(k,143) )
455 58835600 : mat(k,13) = -( rxt(k,829) + het_rates(k,144) )
456 58835600 : mat(k,14) = -( rxt(k,903) + het_rates(k,145) )
457 60717998 : mat(k,15) = -( rxt(k,902) + het_rates(k,146) )
458 : end do
459 1882398 : end subroutine linmat02
460 1882398 : subroutine linmat03( avec_len, mat, y, rxt, het_rates )
461 : !----------------------------------------------
462 : ! ... linear matrix entries for implicit species
463 : !----------------------------------------------
464 : use chem_mods, only : gas_pcnst, rxntot, nzcnt
465 : use shr_kind_mod, only : r8 => shr_kind_r8
466 : implicit none
467 : !----------------------------------------------
468 : ! ... dummy arguments
469 : !----------------------------------------------
470 : integer, intent(in) :: avec_len
471 : real(r8), intent(in) :: y(veclen,gas_pcnst)
472 : real(r8), intent(in) :: rxt(veclen,rxntot)
473 : real(r8), intent(in) :: het_rates(veclen,gas_pcnst)
474 : real(r8), intent(inout) :: mat(veclen,nzcnt)
475 : !----------------------------------------------
476 : ! ... local variables
477 : !----------------------------------------------
478 : integer :: k
479 60717998 : do k = 1,avec_len
480 58835600 : mat(k,3106) = -( rxt(k,15) + het_rates(k,147) )
481 58835600 : mat(k,297) = rxt(k,14)
482 58835600 : mat(k,3654) = rxt(k,16) + .500_r8*rxt(k,830)
483 58835600 : mat(k,3602) = rxt(k,17)
484 58835600 : mat(k,479) = rxt(k,198)
485 58835600 : mat(k,3663) = -( rxt(k,16) + rxt(k,830) + het_rates(k,148) )
486 58835600 : mat(k,2956) = rxt(k,9)
487 58835600 : mat(k,446) = rxt(k,11) + rxt(k,216)
488 58835600 : mat(k,300) = rxt(k,13) + rxt(k,217)
489 58835600 : mat(k,3611) = rxt(k,18)
490 58835600 : mat(k,760) = rxt(k,19)
491 58835600 : mat(k,984) = rxt(k,47)
492 58835600 : mat(k,510) = rxt(k,57)
493 58835600 : mat(k,1263) = rxt(k,58)
494 58835600 : mat(k,1669) = 2.000_r8*rxt(k,59)
495 58835600 : mat(k,1119) = 2.000_r8*rxt(k,60)
496 58835600 : mat(k,1801) = rxt(k,61)
497 58835600 : mat(k,1473) = rxt(k,62)
498 58835600 : mat(k,2088) = rxt(k,64)
499 58835600 : mat(k,680) = rxt(k,65)
500 58835600 : mat(k,599) = rxt(k,66)
501 58835600 : mat(k,2120) = rxt(k,67)
502 58835600 : mat(k,736) = rxt(k,68)
503 58835600 : mat(k,1208) = rxt(k,69)
504 58835600 : mat(k,1784) = .750_r8*rxt(k,74)
505 58835600 : mat(k,533) = rxt(k,78) + rxt(k,407)
506 58835600 : mat(k,1924) = .750_r8*rxt(k,80)
507 58835600 : mat(k,2149) = rxt(k,82)
508 58835600 : mat(k,1459) = rxt(k,83)
509 58835600 : mat(k,1485) = rxt(k,84)
510 58835600 : mat(k,209) = rxt(k,85)
511 58835600 : mat(k,575) = .600_r8*rxt(k,86) + rxt(k,352)
512 58835600 : mat(k,662) = rxt(k,95) + rxt(k,790)
513 58835600 : mat(k,671) = rxt(k,97) + rxt(k,791)
514 58835600 : mat(k,427) = rxt(k,101) + rxt(k,792)
515 58835600 : mat(k,1232) = rxt(k,103)
516 58835600 : mat(k,991) = .500_r8*rxt(k,105)
517 58835600 : mat(k,687) = .460_r8*rxt(k,106)
518 58835600 : mat(k,1147) = rxt(k,107)
519 58835600 : mat(k,789) = .460_r8*rxt(k,108)
520 58835600 : mat(k,1560) = rxt(k,109)
521 58835600 : mat(k,1695) = rxt(k,110)
522 58835600 : mat(k,1540) = rxt(k,111)
523 58835600 : mat(k,1708) = rxt(k,112)
524 58835600 : mat(k,568) = rxt(k,120)
525 58835600 : mat(k,1331) = rxt(k,139)
526 58835600 : mat(k,158) = rxt(k,575)
527 58835600 : mat(k,3610) = -( rxt(k,17) + rxt(k,18) + rxt(k,831) + het_rates(k,149) )
528 58835600 : mat(k,445) = rxt(k,10)
529 58835600 : mat(k,299) = rxt(k,13) + rxt(k,14) + rxt(k,217)
530 58835600 : mat(k,574) = .400_r8*rxt(k,86)
531 58835600 : mat(k,567) = rxt(k,121)
532 58835600 : mat(k,1330) = rxt(k,138)
533 58835600 : mat(k,1454) = -( rxt(k,83) + het_rates(k,150) )
534 58835600 : mat(k,1912) = .250_r8*rxt(k,80)
535 58835600 : mat(k,1481) = -( rxt(k,84) + het_rates(k,151) )
536 58835600 : mat(k,1776) = .250_r8*rxt(k,74)
537 58835600 : mat(k,16) = -( het_rates(k,152) )
538 58835600 : mat(k,17) = -( het_rates(k,153) )
539 58835600 : mat(k,18) = -( het_rates(k,154) )
540 58835600 : mat(k,19) = -( het_rates(k,155) )
541 58835600 : mat(k,20) = -( het_rates(k,156) )
542 58835600 : mat(k,3161) = -( rxt(k,175) + het_rates(k,157) )
543 58835600 : mat(k,4116) = rxt(k,3)
544 58835600 : mat(k,3758) = rxt(k,8)
545 58835600 : mat(k,298) = rxt(k,14)
546 58835600 : mat(k,3108) = rxt(k,15)
547 58835600 : mat(k,3656) = rxt(k,16)
548 58835600 : mat(k,3604) = rxt(k,18)
549 58835600 : mat(k,2263) = .180_r8*rxt(k,39)
550 58835600 : mat(k,1615) = rxt(k,40)
551 58835600 : mat(k,3484) = rxt(k,119)
552 58835600 : mat(k,3510) = rxt(k,137)
553 58835600 : mat(k,345) = rxt(k,151)
554 58835600 : mat(k,1604) = rxt(k,155) + rxt(k,804)
555 58835600 : mat(k,1237) = rxt(k,156)
556 58835600 : mat(k,281) = rxt(k,157)
557 58835600 : mat(k,3799) = rxt(k,170) + rxt(k,171)
558 58835600 : mat(k,480) = rxt(k,198)
559 58835600 : mat(k,546) = rxt(k,797)
560 58835600 : mat(k,3766) = -( rxt(k,7) + rxt(k,8) + het_rates(k,158) )
561 58835600 : mat(k,3169) = rxt(k,175)
562 58835600 : mat(k,21) = -( het_rates(k,159) )
563 58835600 : mat(k,342) = -( rxt(k,151) + het_rates(k,160) )
564 58835600 : mat(k,385) = -( rxt(k,154) + het_rates(k,161) )
565 58835600 : mat(k,207) = -( rxt(k,85) + rxt(k,832) + het_rates(k,162) )
566 58835600 : mat(k,569) = -( rxt(k,86) + rxt(k,352) + het_rates(k,163) )
567 58835600 : mat(k,156) = -( rxt(k,575) + het_rates(k,164) )
568 58835600 : mat(k,484) = -( het_rates(k,165) )
569 58835600 : mat(k,288) = rxt(k,30)
570 58835600 : mat(k,192) = -( het_rates(k,166) )
571 58835600 : mat(k,347) = -( rxt(k,87) + het_rates(k,167) )
572 58835600 : mat(k,22) = -( het_rates(k,168) )
573 58835600 : mat(k,23) = -( het_rates(k,169) )
574 58835600 : mat(k,577) = -( rxt(k,88) + het_rates(k,170) )
575 58835600 : mat(k,405) = -( rxt(k,89) + het_rates(k,171) )
576 58835600 : mat(k,543) = -( rxt(k,797) + het_rates(k,172) )
577 58835600 : mat(k,386) = rxt(k,154)
578 58835600 : mat(k,1598) = rxt(k,155)
579 58835600 : mat(k,24) = -( rxt(k,152) + het_rates(k,173) )
580 58835600 : mat(k,1600) = -( rxt(k,155) + rxt(k,804) + het_rates(k,174) )
581 58835600 : mat(k,1236) = rxt(k,156)
582 58835600 : mat(k,544) = rxt(k,797)
583 58835600 : mat(k,1235) = -( rxt(k,156) + het_rates(k,175) )
584 58835600 : mat(k,280) = rxt(k,157)
585 58835600 : mat(k,1599) = rxt(k,804)
586 58835600 : mat(k,279) = -( rxt(k,157) + het_rates(k,176) )
587 58835600 : mat(k,154) = rxt(k,153)
588 58835600 : mat(k,25) = -( het_rates(k,177) )
589 58835600 : mat(k,26) = -( het_rates(k,178) )
590 58835600 : mat(k,27) = -( het_rates(k,179) )
591 58835600 : mat(k,28) = -( het_rates(k,180) )
592 58835600 : mat(k,29) = -( rxt(k,158) + het_rates(k,181) )
593 58835600 : mat(k,30) = -( rxt(k,159) + het_rates(k,182) )
594 58835600 : mat(k,31) = -( rxt(k,160) + het_rates(k,183) )
595 58835600 : mat(k,32) = -( rxt(k,161) + het_rates(k,184) )
596 58835600 : mat(k,33) = -( rxt(k,162) + het_rates(k,185) )
597 58835600 : mat(k,34) = -( rxt(k,163) + het_rates(k,186) )
598 58835600 : mat(k,35) = -( rxt(k,164) + het_rates(k,187) )
599 58835600 : mat(k,36) = -( rxt(k,165) + het_rates(k,188) )
600 58835600 : mat(k,37) = -( rxt(k,166) + het_rates(k,189) )
601 58835600 : mat(k,38) = -( rxt(k,167) + het_rates(k,190) )
602 58835600 : mat(k,39) = -( het_rates(k,191) )
603 58835600 : mat(k,1475) = rxt(k,811)
604 58835600 : mat(k,40) = -( het_rates(k,192) )
605 58835600 : mat(k,41) = -( het_rates(k,193) )
606 58835600 : mat(k,42) = -( het_rates(k,194) )
607 58835600 : mat(k,43) = -( het_rates(k,195) )
608 58835600 : mat(k,44) = -( rxt(k,833) + het_rates(k,196) )
609 58835600 : mat(k,45) = -( rxt(k,904) + het_rates(k,197) )
610 58835600 : mat(k,51) = -( het_rates(k,198) )
611 58835600 : mat(k,223) = -( rxt(k,90) + het_rates(k,199) )
612 58835600 : mat(k,2320) = -( rxt(k,91) + het_rates(k,200) )
613 58835600 : mat(k,471) = -( rxt(k,92) + het_rates(k,201) )
614 58835600 : mat(k,2359) = -( rxt(k,93) + het_rates(k,202) )
615 58835600 : mat(k,988) = .500_r8*rxt(k,105)
616 58835600 : mat(k,1145) = rxt(k,107)
617 58835600 : mat(k,1558) = rxt(k,109)
618 58835600 : mat(k,1537) = rxt(k,111)
619 58835600 : mat(k,690) = rxt(k,113)
620 58835600 : mat(k,1289) = -( rxt(k,94) + het_rates(k,203) )
621 58835600 : mat(k,655) = -( rxt(k,95) + rxt(k,790) + het_rates(k,204) )
622 58835600 : mat(k,1718) = -( rxt(k,96) + het_rates(k,205) )
623 58835600 : mat(k,602) = rxt(k,114)
624 58835600 : mat(k,664) = -( rxt(k,97) + rxt(k,791) + het_rates(k,206) )
625 58835600 : mat(k,778) = -( rxt(k,98) + het_rates(k,207) )
626 58835600 : mat(k,363) = -( rxt(k,99) + het_rates(k,208) )
627 58835600 : mat(k,368) = -( rxt(k,100) + het_rates(k,209) )
628 58835600 : mat(k,423) = -( rxt(k,101) + rxt(k,792) + het_rates(k,210) )
629 58835600 : mat(k,373) = -( rxt(k,102) + rxt(k,834) + het_rates(k,211) )
630 58835600 : mat(k,2629) = -( het_rates(k,212) )
631 58835600 : mat(k,2322) = rxt(k,91)
632 58835600 : mat(k,685) = .460_r8*rxt(k,106)
633 58835600 : mat(k,786) = .460_r8*rxt(k,108)
634 58835600 : mat(k,1691) = rxt(k,110)
635 58835600 : mat(k,1704) = rxt(k,112)
636 58835600 : mat(k,2600) = -( het_rates(k,213) )
637 58835600 : mat(k,473) = rxt(k,92)
638 58835600 : mat(k,1228) = -( rxt(k,103) + rxt(k,835) + het_rates(k,214) )
639 58835600 : mat(k,969) = -( rxt(k,104) + rxt(k,836) + het_rates(k,215) )
640 58835600 : mat(k,1106) = -( het_rates(k,216) )
641 58835600 : mat(k,986) = -( rxt(k,105) + het_rates(k,217) )
642 58835600 : mat(k,682) = -( rxt(k,106) + het_rates(k,218) )
643 58835600 : mat(k,1143) = -( rxt(k,107) + rxt(k,838) + het_rates(k,219) )
644 58835600 : mat(k,783) = -( rxt(k,108) + rxt(k,837) + het_rates(k,220) )
645 58835600 : mat(k,1557) = -( rxt(k,109) + het_rates(k,221) )
646 58835600 : mat(k,1229) = rxt(k,103)
647 58835600 : mat(k,970) = rxt(k,104)
648 58835600 : mat(k,987) = .500_r8*rxt(k,105)
649 58835600 : mat(k,1689) = -( rxt(k,110) + het_rates(k,222) )
650 58835600 : mat(k,684) = .540_r8*rxt(k,106)
651 58835600 : mat(k,1536) = -( rxt(k,111) + rxt(k,840) + het_rates(k,223) )
652 58835600 : mat(k,1702) = -( rxt(k,112) + rxt(k,839) + het_rates(k,224) )
653 58835600 : mat(k,785) = .540_r8*rxt(k,108)
654 58835600 : mat(k,689) = -( rxt(k,113) + het_rates(k,225) )
655 58835600 : mat(k,374) = rxt(k,102)
656 58835600 : mat(k,601) = -( rxt(k,114) + het_rates(k,226) )
657 58835600 : mat(k,741) = -( rxt(k,115) + het_rates(k,227) )
658 58835600 : mat(k,211) = -( het_rates(k,228) )
659 58835600 : mat(k,229) = -( het_rates(k,229) )
660 58835600 : mat(k,842) = -( rxt(k,116) + het_rates(k,230) )
661 58835600 : mat(k,237) = -( het_rates(k,231) )
662 58835600 : mat(k,429) = -( rxt(k,117) + het_rates(k,232) )
663 58835600 : mat(k,550) = -( het_rates(k,235) )
664 58835600 : mat(k,157) = rxt(k,575)
665 58835600 : mat(k,1182) = -( het_rates(k,236) )
666 58835600 : mat(k,2296) = -( het_rates(k,237) )
667 58835600 : mat(k,2441) = -( het_rates(k,238) )
668 58835600 : mat(k,57) = -( het_rates(k,239) )
669 58835600 : mat(k,2213) = -( het_rates(k,240) )
670 58835600 : mat(k,2408) = -( het_rates(k,241) )
671 58835600 : mat(k,63) = -( het_rates(k,242) )
672 58835600 : mat(k,514) = -( het_rates(k,243) )
673 58835600 : mat(k,69) = -( het_rates(k,244) )
674 58835600 : mat(k,2536) = -( het_rates(k,245) )
675 58835600 : mat(k,2380) = -( het_rates(k,246) )
676 58835600 : mat(k,75) = -( het_rates(k,247) )
677 58835600 : mat(k,437) = -( het_rates(k,248) )
678 58835600 : mat(k,1350) = -( het_rates(k,249) )
679 58835600 : mat(k,558) = rxt(k,76)
680 60717998 : mat(k,1024) = -( het_rates(k,250) )
681 : end do
682 1882398 : end subroutine linmat03
683 1882398 : subroutine linmat04( avec_len, mat, y, rxt, het_rates )
684 : !----------------------------------------------
685 : ! ... linear matrix entries for implicit species
686 : !----------------------------------------------
687 : use chem_mods, only : gas_pcnst, rxntot, nzcnt
688 : use shr_kind_mod, only : r8 => shr_kind_r8
689 : implicit none
690 : !----------------------------------------------
691 : ! ... dummy arguments
692 : !----------------------------------------------
693 : integer, intent(in) :: avec_len
694 : real(r8), intent(in) :: y(veclen,gas_pcnst)
695 : real(r8), intent(in) :: rxt(veclen,rxntot)
696 : real(r8), intent(in) :: het_rates(veclen,gas_pcnst)
697 : real(r8), intent(inout) :: mat(veclen,nzcnt)
698 : !----------------------------------------------
699 : ! ... local variables
700 : !----------------------------------------------
701 : integer :: k
702 60717998 : do k = 1,avec_len
703 58835600 : mat(k,711) = -( het_rates(k,251) )
704 58835600 : mat(k,2913) = -( het_rates(k,252) )
705 58835600 : mat(k,340) = rxt(k,26)
706 58835600 : mat(k,2278) = rxt(k,34)
707 58835600 : mat(k,1928) = rxt(k,35)
708 58835600 : mat(k,980) = .330_r8*rxt(k,47)
709 58835600 : mat(k,622) = .050_r8*rxt(k,48)
710 58835600 : mat(k,635) = .070_r8*rxt(k,49)
711 58835600 : mat(k,1772) = rxt(k,52)
712 58835600 : mat(k,1876) = .500_r8*rxt(k,53)
713 58835600 : mat(k,926) = rxt(k,55) + rxt(k,56)
714 58835600 : mat(k,2019) = .350_r8*rxt(k,72)
715 58835600 : mat(k,559) = rxt(k,76)
716 58835600 : mat(k,335) = rxt(k,77)
717 58835600 : mat(k,2044) = .300_r8*rxt(k,79)
718 58835600 : mat(k,1919) = .750_r8*rxt(k,80)
719 58835600 : mat(k,1502) = .560_r8*rxt(k,81)
720 58835600 : mat(k,1483) = rxt(k,84)
721 58835600 : mat(k,571) = .600_r8*rxt(k,86) + rxt(k,352)
722 58835600 : mat(k,407) = rxt(k,89)
723 58835600 : mat(k,225) = .500_r8*rxt(k,90)
724 58835600 : mat(k,3463) = -( het_rates(k,253) )
725 58835600 : mat(k,1436) = rxt(k,33)
726 58835600 : mat(k,2284) = rxt(k,34)
727 58835600 : mat(k,706) = rxt(k,36)
728 58835600 : mat(k,2266) = rxt(k,38)
729 58835600 : mat(k,624) = .040_r8*rxt(k,48)
730 58835600 : mat(k,637) = .070_r8*rxt(k,49)
731 58835600 : mat(k,2025) = .650_r8*rxt(k,72)
732 58835600 : mat(k,2050) = .300_r8*rxt(k,79)
733 58835600 : mat(k,573) = .400_r8*rxt(k,86)
734 58835600 : mat(k,650) = rxt(k,131)
735 58835600 : mat(k,397) = rxt(k,133)
736 58835600 : mat(k,906) = -( het_rates(k,254) )
737 58835600 : mat(k,302) = .600_r8*rxt(k,24)
738 58835600 : mat(k,605) = -( het_rates(k,255) )
739 58835600 : mat(k,291) = -( rxt(k,343) + rxt(k,344) + het_rates(k,256) )
740 58835600 : mat(k,151) = rxt(k,42)
741 58835600 : mat(k,855) = -( het_rates(k,257) )
742 58835600 : mat(k,3369) = -( rxt(k,812) + het_rates(k,258) )
743 58835600 : mat(k,444) = rxt(k,11) + rxt(k,216)
744 58835600 : mat(k,759) = rxt(k,19)
745 58835600 : mat(k,726) = .900_r8*rxt(k,20)
746 58835600 : mat(k,421) = rxt(k,21)
747 58835600 : mat(k,191) = 1.500_r8*rxt(k,22)
748 58835600 : mat(k,470) = rxt(k,23)
749 58835600 : mat(k,303) = .600_r8*rxt(k,24)
750 58835600 : mat(k,404) = .600_r8*rxt(k,25)
751 58835600 : mat(k,341) = rxt(k,26)
752 58835600 : mat(k,356) = rxt(k,27)
753 58835600 : mat(k,361) = rxt(k,28)
754 58835600 : mat(k,414) = rxt(k,29)
755 58835600 : mat(k,1435) = rxt(k,33)
756 58835600 : mat(k,1930) = rxt(k,35)
757 58835600 : mat(k,644) = .500_r8*rxt(k,41)
758 58835600 : mat(k,1716) = 2.000_r8*rxt(k,43)
759 58835600 : mat(k,1479) = 2.000_r8*rxt(k,44)
760 58835600 : mat(k,887) = rxt(k,45)
761 58835600 : mat(k,983) = .670_r8*rxt(k,47)
762 58835600 : mat(k,623) = .620_r8*rxt(k,48)
763 58835600 : mat(k,636) = .560_r8*rxt(k,49)
764 58835600 : mat(k,493) = rxt(k,50)
765 58835600 : mat(k,526) = rxt(k,51)
766 58835600 : mat(k,1774) = rxt(k,52)
767 58835600 : mat(k,1880) = 1.500_r8*rxt(k,53) + rxt(k,54)
768 58835600 : mat(k,509) = rxt(k,57)
769 58835600 : mat(k,1262) = rxt(k,58)
770 58835600 : mat(k,776) = rxt(k,63)
771 58835600 : mat(k,2086) = .450_r8*rxt(k,64)
772 58835600 : mat(k,679) = rxt(k,65)
773 58835600 : mat(k,598) = rxt(k,66)
774 58835600 : mat(k,2118) = .450_r8*rxt(k,67)
775 58835600 : mat(k,735) = rxt(k,68)
776 58835600 : mat(k,1591) = rxt(k,70)
777 58835600 : mat(k,1908) = rxt(k,71)
778 58835600 : mat(k,2024) = rxt(k,72) + rxt(k,73)
779 58835600 : mat(k,1783) = 1.250_r8*rxt(k,74)
780 58835600 : mat(k,1466) = rxt(k,75)
781 58835600 : mat(k,1923) = .500_r8*rxt(k,80)
782 58835600 : mat(k,1504) = .440_r8*rxt(k,81)
783 58835600 : mat(k,2147) = rxt(k,82)
784 58835600 : mat(k,1458) = rxt(k,83)
785 58835600 : mat(k,350) = rxt(k,87)
786 58835600 : mat(k,582) = rxt(k,88)
787 58835600 : mat(k,226) = rxt(k,90)
788 58835600 : mat(k,2329) = rxt(k,91)
789 58835600 : mat(k,474) = rxt(k,92)
790 58835600 : mat(k,2365) = rxt(k,93)
791 58835600 : mat(k,1294) = rxt(k,94)
792 58835600 : mat(k,1723) = rxt(k,96)
793 58835600 : mat(k,375) = rxt(k,102)
794 58835600 : mat(k,1231) = rxt(k,103)
795 58835600 : mat(k,971) = rxt(k,104)
796 58835600 : mat(k,990) = .500_r8*rxt(k,105)
797 58835600 : mat(k,686) = .540_r8*rxt(k,106)
798 58835600 : mat(k,788) = .540_r8*rxt(k,108)
799 58835600 : mat(k,1559) = rxt(k,109)
800 58835600 : mat(k,1694) = rxt(k,110)
801 58835600 : mat(k,1539) = rxt(k,111)
802 58835600 : mat(k,1707) = rxt(k,112)
803 58835600 : mat(k,691) = rxt(k,113)
804 58835600 : mat(k,603) = rxt(k,114)
805 58835600 : mat(k,749) = rxt(k,115)
806 58835600 : mat(k,851) = rxt(k,116)
807 58835600 : mat(k,433) = rxt(k,117)
808 58835600 : mat(k,2936) = rxt(k,181)
809 58835600 : mat(k,698) = rxt(k,313)
810 58835600 : mat(k,294) = rxt(k,343) + rxt(k,344)
811 58835600 : mat(k,1129) = rxt(k,458)
812 58835600 : mat(k,1175) = rxt(k,462)
813 58835600 : mat(k,1061) = rxt(k,465)
814 58835600 : mat(k,1140) = rxt(k,468)
815 58835600 : mat(k,1861) = .400_r8*rxt(k,529)
816 58835600 : mat(k,1830) = .400_r8*rxt(k,532)
817 58835600 : mat(k,693) = -( rxt(k,313) + het_rates(k,259) )
818 58835600 : mat(k,1298) = -( het_rates(k,260) )
819 58835600 : mat(k,1953) = -( rxt(k,427) + rxt(k,428) + rxt(k,429) + het_rates(k,261) )
820 58835600 : mat(k,268) = rxt(k,436)
821 58835600 : mat(k,271) = rxt(k,438)
822 58835600 : mat(k,1991) = -( rxt(k,433) + rxt(k,434) + rxt(k,435) + het_rates(k,262) )
823 58835600 : mat(k,274) = rxt(k,440)
824 58835600 : mat(k,277) = rxt(k,442)
825 58835600 : mat(k,266) = -( rxt(k,436) + rxt(k,437) + het_rates(k,263) )
826 58835600 : mat(k,1934) = rxt(k,428)
827 58835600 : mat(k,1834) = rxt(k,494)
828 58835600 : mat(k,269) = -( rxt(k,438) + rxt(k,439) + het_rates(k,264) )
829 58835600 : mat(k,1935) = rxt(k,429)
830 58835600 : mat(k,1726) = rxt(k,447)
831 58835600 : mat(k,272) = -( rxt(k,440) + rxt(k,441) + het_rates(k,265) )
832 58835600 : mat(k,1970) = rxt(k,434)
833 58835600 : mat(k,1803) = rxt(k,498)
834 58835600 : mat(k,275) = -( rxt(k,442) + rxt(k,443) + het_rates(k,266) )
835 58835600 : mat(k,1971) = rxt(k,435)
836 58835600 : mat(k,1748) = rxt(k,451)
837 58835600 : mat(k,1732) = -( rxt(k,447) + het_rates(k,267) )
838 58835600 : mat(k,270) = rxt(k,439)
839 58835600 : mat(k,1754) = -( rxt(k,451) + het_rates(k,268) )
840 58835600 : mat(k,276) = rxt(k,443)
841 58835600 : mat(k,1121) = -( rxt(k,458) + het_rates(k,269) )
842 58835600 : mat(k,1166) = -( rxt(k,462) + het_rates(k,270) )
843 58835600 : mat(k,1054) = -( rxt(k,465) + het_rates(k,271) )
844 58835600 : mat(k,1132) = -( rxt(k,468) + het_rates(k,272) )
845 58835600 : mat(k,1440) = -( het_rates(k,273) )
846 58835600 : mat(k,2180) = -( het_rates(k,274) )
847 58835600 : mat(k,1309) = -( rxt(k,480) + het_rates(k,275) )
848 58835600 : mat(k,1361) = -( rxt(k,483) + het_rates(k,276) )
849 58835600 : mat(k,81) = -( het_rates(k,277) )
850 58835600 : mat(k,1848) = -( rxt(k,494) + rxt(k,529) + het_rates(k,278) )
851 58835600 : mat(k,267) = rxt(k,437)
852 58835600 : mat(k,1817) = -( rxt(k,498) + rxt(k,532) + het_rates(k,279) )
853 58835600 : mat(k,273) = rxt(k,441)
854 58835600 : mat(k,87) = -( het_rates(k,280) )
855 58835600 : mat(k,2505) = -( het_rates(k,281) )
856 58835600 : mat(k,2339) = -( het_rates(k,282) )
857 58835600 : mat(k,95) = -( het_rates(k,283) )
858 58835600 : mat(k,1543) = -( rxt(k,384) + het_rates(k,284) )
859 58835600 : mat(k,630) = .190_r8*rxt(k,49)
860 58835600 : mat(k,862) = -( het_rates(k,285) )
861 58835600 : mat(k,469) = .600_r8*rxt(k,23)
862 58835600 : mat(k,1620) = -( het_rates(k,286) )
863 58835600 : mat(k,2012) = rxt(k,73)
864 58835600 : mat(k,529) = rxt(k,78) + rxt(k,407)
865 58835600 : mat(k,929) = -( het_rates(k,287) )
866 58835600 : mat(k,402) = .600_r8*rxt(k,25)
867 58835600 : mat(k,763) = -( het_rates(k,288) )
868 58835600 : mat(k,1508) = -( het_rates(k,289) )
869 58835600 : mat(k,617) = .230_r8*rxt(k,48)
870 58835600 : mat(k,2570) = -( het_rates(k,290) )
871 58835600 : mat(k,2471) = -( het_rates(k,291) )
872 58835600 : mat(k,101) = -( het_rates(k,292) )
873 58835600 : mat(k,1640) = -( rxt(k,500) + het_rates(k,293) )
874 58835600 : mat(k,3808) = -( rxt(k,170) + rxt(k,171) + het_rates(k,294) )
875 58835600 : mat(k,4125) = rxt(k,1)
876 58835600 : mat(k,3767) = rxt(k,7)
877 58835600 : mat(k,203) = rxt(k,12)
878 58835600 : mat(k,4101) = -( het_rates(k,295) )
879 58835600 : mat(k,4127) = rxt(k,2)
880 58835600 : mat(k,1492) = 2.000_r8*rxt(k,4)
881 58835600 : mat(k,2960) = rxt(k,9)
882 58835600 : mat(k,447) = rxt(k,10)
883 58835600 : mat(k,727) = rxt(k,20)
884 58835600 : mat(k,422) = rxt(k,21)
885 58835600 : mat(k,357) = rxt(k,27)
886 58835600 : mat(k,362) = rxt(k,28)
887 58835600 : mat(k,415) = rxt(k,29)
888 58835600 : mat(k,290) = rxt(k,30)
889 58835600 : mat(k,707) = rxt(k,36)
890 58835600 : mat(k,453) = rxt(k,37)
891 58835600 : mat(k,2270) = .330_r8*rxt(k,39)
892 58835600 : mat(k,645) = 1.500_r8*rxt(k,41)
893 58835600 : mat(k,152) = rxt(k,42)
894 58835600 : mat(k,888) = rxt(k,45)
895 58835600 : mat(k,1214) = 2.000_r8*rxt(k,46)
896 58835600 : mat(k,625) = 1.110_r8*rxt(k,48)
897 58835600 : mat(k,638) = 1.180_r8*rxt(k,49)
898 58835600 : mat(k,494) = rxt(k,50)
899 58835600 : mat(k,527) = rxt(k,51)
900 58835600 : mat(k,1882) = 3.000_r8*rxt(k,54)
901 58835600 : mat(k,928) = rxt(k,55) + rxt(k,56)
902 58835600 : mat(k,1802) = rxt(k,61)
903 58835600 : mat(k,1474) = rxt(k,62)
904 58835600 : mat(k,777) = rxt(k,63)
905 58835600 : mat(k,2091) = .550_r8*rxt(k,64)
906 58835600 : mat(k,2123) = .550_r8*rxt(k,67)
907 58835600 : mat(k,1209) = rxt(k,69)
908 58835600 : mat(k,1595) = rxt(k,70)
909 58835600 : mat(k,1910) = rxt(k,71)
910 58835600 : mat(k,1467) = rxt(k,75)
911 58835600 : mat(k,336) = rxt(k,77)
912 58835600 : mat(k,1505) = rxt(k,81)
913 58835600 : mat(k,351) = rxt(k,87)
914 58835600 : mat(k,583) = rxt(k,88)
915 58835600 : mat(k,409) = rxt(k,89)
916 58835600 : mat(k,2332) = rxt(k,91)
917 58835600 : mat(k,475) = rxt(k,92)
918 58835600 : mat(k,782) = rxt(k,98)
919 58835600 : mat(k,367) = rxt(k,99)
920 58835600 : mat(k,372) = rxt(k,100)
921 58835600 : mat(k,376) = rxt(k,102)
922 58835600 : mat(k,972) = rxt(k,104)
923 58835600 : mat(k,992) = rxt(k,105)
924 58835600 : mat(k,688) = rxt(k,106)
925 58835600 : mat(k,1148) = rxt(k,107)
926 58835600 : mat(k,790) = rxt(k,108)
927 58835600 : mat(k,692) = rxt(k,113)
928 58835600 : mat(k,604) = rxt(k,114)
929 58835600 : mat(k,750) = rxt(k,115)
930 58835600 : mat(k,852) = rxt(k,116)
931 58835600 : mat(k,434) = rxt(k,117)
932 58835600 : mat(k,1001) = rxt(k,149)
933 58835600 : mat(k,1164) = rxt(k,150)
934 58835600 : mat(k,1556) = rxt(k,384)
935 58835600 : mat(k,1968) = rxt(k,427)
936 58835600 : mat(k,2007) = rxt(k,433)
937 58835600 : mat(k,1322) = rxt(k,480)
938 58835600 : mat(k,1376) = rxt(k,483)
939 58835600 : mat(k,1655) = rxt(k,500)
940 58835600 : mat(k,1864) = .600_r8*rxt(k,529)
941 58835600 : mat(k,1833) = .600_r8*rxt(k,532)
942 60717998 : mat(k,3667) = .500_r8*rxt(k,830)
943 : end do
944 1882398 : end subroutine linmat04
945 1882398 : subroutine linmat05( avec_len, mat, y, rxt, het_rates )
946 : !----------------------------------------------
947 : ! ... linear matrix entries for implicit species
948 : !----------------------------------------------
949 : use chem_mods, only : gas_pcnst, rxntot, nzcnt
950 : use shr_kind_mod, only : r8 => shr_kind_r8
951 : implicit none
952 : !----------------------------------------------
953 : ! ... dummy arguments
954 : !----------------------------------------------
955 : integer, intent(in) :: avec_len
956 : real(r8), intent(in) :: y(veclen,gas_pcnst)
957 : real(r8), intent(in) :: rxt(veclen,rxntot)
958 : real(r8), intent(in) :: het_rates(veclen,gas_pcnst)
959 : real(r8), intent(inout) :: mat(veclen,nzcnt)
960 : !----------------------------------------------
961 : ! ... local variables
962 : !----------------------------------------------
963 : integer :: k
964 60717998 : do k = 1,avec_len
965 58835600 : mat(k,456) = -( het_rates(k,296) )
966 58835600 : mat(k,939) = -( het_rates(k,297) )
967 58835600 : mat(k,1336) = -( het_rates(k,298) )
968 58835600 : mat(k,951) = -( het_rates(k,299) )
969 58835600 : mat(k,1006) = -( het_rates(k,300) )
970 58835600 : mat(k,2654) = -( het_rates(k,301) )
971 58835600 : mat(k,2360) = rxt(k,93)
972 58835600 : mat(k,780) = rxt(k,98)
973 58835600 : mat(k,2745) = -( het_rates(k,302) )
974 58835600 : mat(k,659) = rxt(k,95) + rxt(k,790)
975 58835600 : mat(k,2701) = -( het_rates(k,303) )
976 58835600 : mat(k,1291) = rxt(k,94)
977 58835600 : mat(k,365) = rxt(k,99)
978 58835600 : mat(k,2792) = -( het_rates(k,304) )
979 58835600 : mat(k,667) = rxt(k,97) + rxt(k,791)
980 58835600 : mat(k,2235) = -( het_rates(k,305) )
981 58835600 : mat(k,2677) = -( het_rates(k,306) )
982 58835600 : mat(k,1720) = rxt(k,96)
983 58835600 : mat(k,370) = rxt(k,100)
984 58835600 : mat(k,2840) = -( het_rates(k,307) )
985 58835600 : mat(k,426) = rxt(k,101) + rxt(k,792)
986 58835600 : mat(k,797) = -( het_rates(k,308) )
987 58835600 : mat(k,960) = -( het_rates(k,309) )
988 58835600 : mat(k,1218) = -( het_rates(k,310) )
989 58835600 : mat(k,1015) = -( het_rates(k,311) )
990 58835600 : mat(k,805) = -( het_rates(k,312) )
991 58835600 : mat(k,813) = -( het_rates(k,313) )
992 58835600 : mat(k,873) = -( het_rates(k,314) )
993 58835600 : mat(k,107) = -( het_rates(k,315) )
994 58835600 : mat(k,895) = -( het_rates(k,316) )
995 58835600 : mat(k,113) = -( het_rates(k,317) )
996 58835600 : mat(k,536) = -( het_rates(k,318) )
997 58835600 : mat(k,4128) = -( rxt(k,1) + rxt(k,2) + rxt(k,3) + het_rates(k,319) )
998 58835600 : mat(k,2271) = .050_r8*rxt(k,39)
999 58835600 : mat(k,155) = rxt(k,153)
1000 60717998 : mat(k,3379) = rxt(k,812)
1001 : end do
1002 1882398 : end subroutine linmat05
1003 1882398 : subroutine linmat( avec_len, mat, y, rxt, het_rates )
1004 : !----------------------------------------------
1005 : ! ... linear matrix entries for implicit species
1006 : !----------------------------------------------
1007 : use chem_mods, only : gas_pcnst, rxntot, nzcnt
1008 : use shr_kind_mod, only : r8 => shr_kind_r8
1009 : implicit none
1010 : !----------------------------------------------
1011 : ! ... dummy arguments
1012 : !----------------------------------------------
1013 : integer, intent(in) :: avec_len
1014 : real(r8), intent(in) :: y(veclen,gas_pcnst)
1015 : real(r8), intent(in) :: rxt(veclen,rxntot)
1016 : real(r8), intent(in) :: het_rates(veclen,gas_pcnst)
1017 : real(r8), intent(inout) :: mat(veclen,nzcnt)
1018 1882398 : call linmat01( avec_len, mat, y, rxt, het_rates )
1019 1882398 : call linmat02( avec_len, mat, y, rxt, het_rates )
1020 1882398 : call linmat03( avec_len, mat, y, rxt, het_rates )
1021 1882398 : call linmat04( avec_len, mat, y, rxt, het_rates )
1022 1882398 : call linmat05( avec_len, mat, y, rxt, het_rates )
1023 1882398 : end subroutine linmat
1024 : end module mo_lin_matrix
|