Line data Source code
1 : module mo_lin_matrix
2 : use chem_mods, only: veclen
3 : private
4 : public :: linmat
5 : contains
6 1050672 : 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 34672176 : do k = 1,avec_len
26 33621504 : mat(k,688) = -( rxt(k,19) + het_rates(k,1) )
27 33621504 : mat(k,677) = -( rxt(k,20) + het_rates(k,2) )
28 33621504 : mat(k,1) = -( het_rates(k,3) )
29 33621504 : mat(k,2) = -( het_rates(k,4) )
30 33621504 : mat(k,3) = -( het_rates(k,5) )
31 33621504 : mat(k,1015) = -( het_rates(k,6) )
32 33621504 : mat(k,82) = -( het_rates(k,7) )
33 33621504 : mat(k,207) = -( het_rates(k,8) )
34 33621504 : mat(k,113) = -( het_rates(k,9) )
35 33621504 : mat(k,472) = -( rxt(k,21) + het_rates(k,10) )
36 33621504 : mat(k,213) = -( rxt(k,22) + het_rates(k,11) )
37 33621504 : mat(k,430) = -( rxt(k,23) + het_rates(k,12) )
38 33621504 : mat(k,505) = -( rxt(k,24) + het_rates(k,13) )
39 33621504 : mat(k,473) = .500_r8*rxt(k,21)
40 33621504 : mat(k,214) = rxt(k,22)
41 33621504 : mat(k,717) = .200_r8*rxt(k,70)
42 33621504 : mat(k,736) = .060_r8*rxt(k,72)
43 33621504 : mat(k,318) = -( rxt(k,25) + het_rates(k,14) )
44 33621504 : mat(k,716) = .200_r8*rxt(k,70)
45 33621504 : mat(k,734) = .200_r8*rxt(k,72)
46 33621504 : mat(k,642) = -( rxt(k,26) + het_rates(k,15) )
47 33621504 : mat(k,279) = rxt(k,46)
48 33621504 : mat(k,1065) = rxt(k,56)
49 33621504 : mat(k,718) = .200_r8*rxt(k,70)
50 33621504 : mat(k,737) = .150_r8*rxt(k,72)
51 33621504 : mat(k,355) = -( rxt(k,27) + het_rates(k,16) )
52 33621504 : mat(k,735) = .210_r8*rxt(k,72)
53 33621504 : mat(k,266) = -( het_rates(k,17) )
54 33621504 : mat(k,394) = -( het_rates(k,18) )
55 33621504 : mat(k,1462) = -( het_rates(k,19) )
56 33621504 : mat(k,273) = rxt(k,74)
57 33621504 : mat(k,1840) = rxt(k,75)
58 33621504 : mat(k,579) = rxt(k,77)
59 33621504 : mat(k,182) = rxt(k,79)
60 33621504 : mat(k,188) = rxt(k,80)
61 33621504 : mat(k,509) = 2.000_r8*rxt(k,86)
62 33621504 : mat(k,627) = rxt(k,87)
63 33621504 : mat(k,461) = 3.000_r8*rxt(k,90)
64 33621504 : mat(k,152) = 2.000_r8*rxt(k,98)
65 33621504 : mat(k,847) = rxt(k,99)
66 33621504 : mat(k,824) = rxt(k,105)
67 33621504 : mat(k,272) = -( rxt(k,74) + het_rates(k,20) )
68 33621504 : mat(k,1848) = -( rxt(k,75) + het_rates(k,21) )
69 33621504 : mat(k,583) = rxt(k,76)
70 : mat(k,577) = -( rxt(k,76) + rxt(k,77) + rxt(k,547) + rxt(k,550) + rxt(k,555) &
71 33621504 : + het_rates(k,22) )
72 33621504 : mat(k,4) = -( het_rates(k,23) )
73 33621504 : mat(k,275) = -( het_rates(k,24) )
74 33621504 : mat(k,370) = rxt(k,28)
75 33621504 : mat(k,371) = -( rxt(k,28) + het_rates(k,25) )
76 33621504 : mat(k,321) = -( het_rates(k,26) )
77 33621504 : mat(k,601) = -( het_rates(k,27) )
78 33621504 : mat(k,306) = -( het_rates(k,28) )
79 33621504 : mat(k,376) = -( rxt(k,29) + het_rates(k,29) )
80 33621504 : mat(k,327) = -( het_rates(k,30) )
81 33621504 : mat(k,1048) = -( het_rates(k,31) )
82 33621504 : mat(k,1373) = .700_r8*rxt(k,55)
83 33621504 : mat(k,436) = -( rxt(k,30) + het_rates(k,32) )
84 33621504 : mat(k,154) = -( het_rates(k,33) )
85 33621504 : mat(k,310) = -( rxt(k,31) + het_rates(k,34) )
86 33621504 : mat(k,141) = -( rxt(k,78) + het_rates(k,35) )
87 33621504 : mat(k,180) = -( rxt(k,79) + het_rates(k,36) )
88 33621504 : mat(k,185) = -( rxt(k,80) + het_rates(k,37) )
89 33621504 : mat(k,158) = -( rxt(k,81) + het_rates(k,38) )
90 33621504 : mat(k,190) = -( rxt(k,82) + het_rates(k,39) )
91 33621504 : mat(k,162) = -( rxt(k,83) + het_rates(k,40) )
92 33621504 : mat(k,195) = -( rxt(k,84) + het_rates(k,41) )
93 33621504 : mat(k,166) = -( rxt(k,85) + het_rates(k,42) )
94 33621504 : mat(k,508) = -( rxt(k,86) + het_rates(k,43) )
95 33621504 : mat(k,1532) = -( rxt(k,32) + rxt(k,33) + het_rates(k,44) )
96 33621504 : mat(k,694) = .100_r8*rxt(k,19)
97 33621504 : mat(k,684) = .100_r8*rxt(k,20)
98 33621504 : mat(k,456) = rxt(k,38)
99 33621504 : mat(k,1480) = .180_r8*rxt(k,39)
100 33621504 : mat(k,1094) = rxt(k,43)
101 33621504 : mat(k,1141) = .330_r8*rxt(k,45)
102 33621504 : mat(k,1152) = rxt(k,47)
103 33621504 : mat(k,784) = rxt(k,49)
104 33621504 : mat(k,1258) = 1.340_r8*rxt(k,51)
105 33621504 : mat(k,898) = rxt(k,57)
106 33621504 : mat(k,589) = rxt(k,62)
107 33621504 : mat(k,421) = rxt(k,63)
108 33621504 : mat(k,713) = .375_r8*rxt(k,65)
109 33621504 : mat(k,519) = .400_r8*rxt(k,67)
110 33621504 : mat(k,1120) = .680_r8*rxt(k,69)
111 33621504 : mat(k,494) = rxt(k,288)
112 33621504 : mat(k,316) = 2.000_r8*rxt(k,318)
113 33621504 : mat(k,626) = -( rxt(k,87) + het_rates(k,45) )
114 33621504 : mat(k,170) = -( rxt(k,88) + het_rates(k,46) )
115 33621504 : mat(k,1081) = -( rxt(k,34) + het_rates(k,47) )
116 33621504 : mat(k,692) = .400_r8*rxt(k,19)
117 33621504 : mat(k,682) = .400_r8*rxt(k,20)
118 33621504 : mat(k,378) = rxt(k,29)
119 33621504 : mat(k,1133) = .330_r8*rxt(k,45)
120 33621504 : mat(k,391) = rxt(k,53)
121 33621504 : mat(k,587) = rxt(k,62)
122 33621504 : mat(k,402) = -( rxt(k,89) + het_rates(k,48) )
123 33621504 : mat(k,144) = -( het_rates(k,49) )
124 33621504 : mat(k,982) = -( rxt(k,35) + het_rates(k,50) )
125 33621504 : mat(k,691) = .250_r8*rxt(k,19)
126 33621504 : mat(k,681) = .250_r8*rxt(k,20)
127 33621504 : mat(k,438) = .820_r8*rxt(k,30)
128 33621504 : mat(k,1132) = .170_r8*rxt(k,45)
129 33621504 : mat(k,708) = .300_r8*rxt(k,65)
130 33621504 : mat(k,516) = .050_r8*rxt(k,67)
131 33621504 : mat(k,1115) = .500_r8*rxt(k,69)
132 33621504 : mat(k,1265) = -( rxt(k,36) + het_rates(k,51) )
133 33621504 : mat(k,433) = .180_r8*rxt(k,23)
134 33621504 : mat(k,357) = rxt(k,27)
135 33621504 : mat(k,726) = .400_r8*rxt(k,70)
136 33621504 : mat(k,745) = .540_r8*rxt(k,72)
137 33621504 : mat(k,481) = .510_r8*rxt(k,73)
138 33621504 : mat(k,729) = -( het_rates(k,52) )
139 33621504 : mat(k,635) = -( rxt(k,37) + het_rates(k,53) )
140 33621504 : mat(k,831) = -( het_rates(k,54) )
141 33621504 : mat(k,454) = -( rxt(k,38) + het_rates(k,55) )
142 33621504 : mat(k,1477) = -( rxt(k,39) + rxt(k,40) + het_rates(k,56) )
143 33621504 : mat(k,460) = -( rxt(k,90) + het_rates(k,57) )
144 33621504 : mat(k,2129) = -( het_rates(k,58) )
145 33621504 : mat(k,274) = rxt(k,74)
146 33621504 : mat(k,143) = 4.000_r8*rxt(k,78)
147 33621504 : mat(k,184) = rxt(k,79)
148 33621504 : mat(k,161) = 2.000_r8*rxt(k,81)
149 33621504 : mat(k,194) = 2.000_r8*rxt(k,82)
150 33621504 : mat(k,165) = 2.000_r8*rxt(k,83)
151 33621504 : mat(k,199) = rxt(k,84)
152 33621504 : mat(k,169) = 2.000_r8*rxt(k,85)
153 33621504 : mat(k,172) = 3.000_r8*rxt(k,88)
154 33621504 : mat(k,407) = rxt(k,89)
155 33621504 : mat(k,223) = 2.000_r8*rxt(k,91)
156 33621504 : mat(k,148) = 2.000_r8*rxt(k,92)
157 33621504 : mat(k,2335) = rxt(k,93)
158 33621504 : mat(k,979) = rxt(k,95)
159 33621504 : mat(k,294) = rxt(k,97)
160 33621504 : mat(k,290) = rxt(k,100)
161 33621504 : mat(k,300) = rxt(k,101)
162 33621504 : mat(k,338) = rxt(k,102)
163 33621504 : mat(k,2031) = rxt(k,103)
164 33621504 : mat(k,859) = rxt(k,106)
165 33621504 : mat(k,222) = -( rxt(k,91) + het_rates(k,59) )
166 33621504 : mat(k,147) = -( rxt(k,92) + rxt(k,229) + het_rates(k,60) )
167 33621504 : mat(k,2338) = -( rxt(k,93) + het_rates(k,61) )
168 33621504 : mat(k,980) = rxt(k,94)
169 33621504 : mat(k,364) = rxt(k,107)
170 33621504 : mat(k,149) = 2.000_r8*rxt(k,229)
171 : mat(k,972) = -( rxt(k,94) + rxt(k,95) + rxt(k,549) + rxt(k,554) + rxt(k,560) &
172 33621504 : + het_rates(k,62) )
173 33621504 : mat(k,5) = -( het_rates(k,63) )
174 33621504 : mat(k,1127) = -( het_rates(k,64) )
175 33621504 : mat(k,215) = 1.500_r8*rxt(k,22)
176 33621504 : mat(k,432) = .450_r8*rxt(k,23)
177 33621504 : mat(k,644) = .600_r8*rxt(k,26)
178 33621504 : mat(k,356) = rxt(k,27)
179 33621504 : mat(k,1526) = rxt(k,32) + rxt(k,33)
180 33621504 : mat(k,1082) = rxt(k,34)
181 33621504 : mat(k,1264) = rxt(k,36)
182 33621504 : mat(k,1475) = .380_r8*rxt(k,39)
183 33621504 : mat(k,874) = rxt(k,41)
184 33621504 : mat(k,1093) = rxt(k,43)
185 33621504 : mat(k,998) = 2.000_r8*rxt(k,44)
186 33621504 : mat(k,1135) = .330_r8*rxt(k,45)
187 33621504 : mat(k,1252) = 1.340_r8*rxt(k,50)
188 33621504 : mat(k,1375) = .700_r8*rxt(k,55)
189 33621504 : mat(k,245) = 1.500_r8*rxt(k,64)
190 33621504 : mat(k,711) = .250_r8*rxt(k,65)
191 33621504 : mat(k,1038) = rxt(k,68)
192 33621504 : mat(k,1117) = 1.700_r8*rxt(k,69)
193 33621504 : mat(k,413) = rxt(k,110)
194 33621504 : mat(k,873) = -( rxt(k,41) + het_rates(k,65) )
195 33621504 : mat(k,636) = rxt(k,37)
196 33621504 : mat(k,1473) = .440_r8*rxt(k,39)
197 33621504 : mat(k,570) = .400_r8*rxt(k,60)
198 33621504 : mat(k,707) = rxt(k,65)
199 33621504 : mat(k,1114) = .800_r8*rxt(k,69)
200 33621504 : mat(k,283) = -( rxt(k,96) + het_rates(k,66) )
201 33621504 : mat(k,181) = rxt(k,79)
202 33621504 : mat(k,186) = rxt(k,80)
203 33621504 : mat(k,191) = rxt(k,82)
204 33621504 : mat(k,163) = 2.000_r8*rxt(k,83)
205 33621504 : mat(k,196) = 2.000_r8*rxt(k,84)
206 33621504 : mat(k,167) = rxt(k,85)
207 33621504 : mat(k,151) = 2.000_r8*rxt(k,98)
208 33621504 : mat(k,295) = rxt(k,101)
209 33621504 : mat(k,333) = rxt(k,102)
210 33621504 : mat(k,291) = -( rxt(k,97) + het_rates(k,67) )
211 33621504 : mat(k,159) = rxt(k,81)
212 33621504 : mat(k,192) = rxt(k,82)
213 33621504 : mat(k,287) = rxt(k,100)
214 33621504 : mat(k,239) = -( het_rates(k,68) )
215 33621504 : mat(k,349) = -( het_rates(k,69) )
216 33621504 : mat(k,6) = -( het_rates(k,70) )
217 33621504 : mat(k,7) = -( het_rates(k,71) )
218 33621504 : mat(k,8) = -( het_rates(k,72) )
219 33621504 : mat(k,9) = -( rxt(k,562) + het_rates(k,73) )
220 33621504 : mat(k,200) = -( rxt(k,42) + het_rates(k,74) )
221 33621504 : mat(k,909) = -( het_rates(k,75) )
222 33621504 : mat(k,187) = rxt(k,80)
223 33621504 : mat(k,197) = rxt(k,84)
224 33621504 : mat(k,284) = 2.000_r8*rxt(k,96)
225 33621504 : mat(k,292) = rxt(k,97)
226 34672176 : mat(k,341) = rxt(k,104)
227 : end do
228 1050672 : end subroutine linmat01
229 1050672 : subroutine linmat02( avec_len, mat, y, rxt, het_rates )
230 : !----------------------------------------------
231 : ! ... linear matrix entries for implicit species
232 : !----------------------------------------------
233 : use chem_mods, only : gas_pcnst, rxntot, nzcnt
234 : use shr_kind_mod, only : r8 => shr_kind_r8
235 : implicit none
236 : !----------------------------------------------
237 : ! ... dummy arguments
238 : !----------------------------------------------
239 : integer, intent(in) :: avec_len
240 : real(r8), intent(in) :: y(veclen,gas_pcnst)
241 : real(r8), intent(in) :: rxt(veclen,rxntot)
242 : real(r8), intent(in) :: het_rates(veclen,gas_pcnst)
243 : real(r8), intent(inout) :: mat(veclen,nzcnt)
244 : !----------------------------------------------
245 : ! ... local variables
246 : !----------------------------------------------
247 : integer :: k
248 34672176 : do k = 1,avec_len
249 33621504 : mat(k,1092) = -( rxt(k,43) + het_rates(k,76) )
250 33621504 : mat(k,1134) = .330_r8*rxt(k,45)
251 33621504 : mat(k,709) = .250_r8*rxt(k,65)
252 33621504 : mat(k,315) = rxt(k,319)
253 33621504 : mat(k,997) = -( rxt(k,44) + rxt(k,541) + het_rates(k,77) )
254 33621504 : mat(k,475) = rxt(k,21)
255 33621504 : mat(k,431) = .130_r8*rxt(k,23)
256 33621504 : mat(k,367) = .700_r8*rxt(k,61)
257 33621504 : mat(k,724) = .600_r8*rxt(k,70)
258 33621504 : mat(k,743) = .340_r8*rxt(k,72)
259 33621504 : mat(k,480) = .170_r8*rxt(k,73)
260 33621504 : mat(k,1510) = -( rxt(k,157) + het_rates(k,78) )
261 33621504 : mat(k,2350) = rxt(k,2) + 2.000_r8*rxt(k,3)
262 33621504 : mat(k,1531) = 2.000_r8*rxt(k,33)
263 33621504 : mat(k,455) = rxt(k,38)
264 33621504 : mat(k,1479) = .330_r8*rxt(k,39) + rxt(k,40)
265 33621504 : mat(k,848) = rxt(k,99)
266 33621504 : mat(k,2020) = rxt(k,103)
267 33621504 : mat(k,342) = rxt(k,104)
268 33621504 : mat(k,1448) = -( het_rates(k,79) )
269 33621504 : mat(k,2346) = rxt(k,1)
270 33621504 : mat(k,1527) = rxt(k,32)
271 33621504 : mat(k,1476) = 1.440_r8*rxt(k,39)
272 33621504 : mat(k,150) = -( rxt(k,98) + het_rates(k,80) )
273 33621504 : mat(k,646) = -( rxt(k,4) + het_rates(k,81) )
274 33621504 : mat(k,2247) = .500_r8*rxt(k,499)
275 33621504 : mat(k,203) = -( rxt(k,109) + het_rates(k,82) )
276 33621504 : mat(k,846) = -( rxt(k,99) + het_rates(k,83) )
277 33621504 : mat(k,286) = -( rxt(k,100) + het_rates(k,84) )
278 33621504 : mat(k,296) = -( rxt(k,101) + het_rates(k,85) )
279 33621504 : mat(k,334) = -( rxt(k,102) + het_rates(k,86) )
280 33621504 : mat(k,2029) = -( rxt(k,103) + het_rates(k,87) )
281 33621504 : mat(k,227) = -( het_rates(k,88) )
282 33621504 : mat(k,989) = -( het_rates(k,89) )
283 33621504 : mat(k,340) = -( rxt(k,104) + het_rates(k,90) )
284 33621504 : mat(k,1494) = -( rxt(k,9) + het_rates(k,91) )
285 33621504 : mat(k,1140) = rxt(k,500)
286 33621504 : mat(k,621) = rxt(k,501)
287 33621504 : mat(k,598) = rxt(k,502)
288 : mat(k,344) = 2.000_r8*rxt(k,503) + 2.000_r8*rxt(k,545) + 2.000_r8*rxt(k,548) &
289 33621504 : + 2.000_r8*rxt(k,559)
290 33621504 : mat(k,469) = rxt(k,504)
291 33621504 : mat(k,1073) = rxt(k,505)
292 33621504 : mat(k,1573) = .500_r8*rxt(k,507)
293 33621504 : mat(k,2078) = rxt(k,508)
294 33621504 : mat(k,451) = rxt(k,509)
295 33621504 : mat(k,270) = rxt(k,510)
296 33621504 : mat(k,664) = rxt(k,511)
297 33621504 : mat(k,580) = rxt(k,547) + rxt(k,550) + rxt(k,555)
298 33621504 : mat(k,973) = rxt(k,549) + rxt(k,554) + rxt(k,560)
299 33621504 : mat(k,442) = -( rxt(k,10) + rxt(k,11) + rxt(k,192) + het_rates(k,92) )
300 33621504 : mat(k,823) = -( rxt(k,105) + het_rates(k,93) )
301 33621504 : mat(k,578) = rxt(k,547) + rxt(k,550) + rxt(k,555)
302 33621504 : mat(k,855) = -( rxt(k,106) + het_rates(k,94) )
303 33621504 : mat(k,971) = rxt(k,549) + rxt(k,554) + rxt(k,560)
304 33621504 : mat(k,1136) = -( rxt(k,45) + rxt(k,500) + het_rates(k,95) )
305 33621504 : mat(k,278) = -( rxt(k,46) + het_rates(k,96) )
306 33621504 : mat(k,1317) = rxt(k,392)
307 33621504 : mat(k,1149) = -( rxt(k,47) + het_rates(k,97) )
308 33621504 : mat(k,1137) = .170_r8*rxt(k,45)
309 33621504 : mat(k,381) = -( het_rates(k,98) )
310 33621504 : mat(k,174) = -( het_rates(k,99) )
311 33621504 : mat(k,879) = -( het_rates(k,100) )
312 33621504 : mat(k,617) = -( rxt(k,501) + het_rates(k,101) )
313 33621504 : mat(k,593) = -( rxt(k,502) + het_rates(k,102) )
314 33621504 : mat(k,1237) = -( het_rates(k,103) )
315 33621504 : mat(k,424) = -( rxt(k,48) + het_rates(k,104) )
316 33621504 : mat(k,88) = -( het_rates(k,105) )
317 33621504 : mat(k,780) = -( rxt(k,49) + het_rates(k,106) )
318 33621504 : mat(k,425) = rxt(k,48)
319 33621504 : mat(k,71) = -( het_rates(k,107) )
320 33621504 : mat(k,69) = -( het_rates(k,108) )
321 33621504 : mat(k,107) = -( het_rates(k,109) )
322 33621504 : mat(k,105) = -( het_rates(k,110) )
323 33621504 : mat(k,1253) = -( rxt(k,50) + rxt(k,51) + het_rates(k,111) )
324 33621504 : mat(k,782) = .300_r8*rxt(k,49)
325 33621504 : mat(k,384) = -( het_rates(k,112) )
326 33621504 : mat(k,551) = -( rxt(k,52) + het_rates(k,113) )
327 33621504 : mat(k,687) = .800_r8*rxt(k,19)
328 33621504 : mat(k,676) = .800_r8*rxt(k,20)
329 33621504 : mat(k,389) = -( rxt(k,53) + het_rates(k,114) )
330 33621504 : mat(k,653) = -( rxt(k,54) + rxt(k,374) + het_rates(k,115) )
331 33621504 : mat(k,936) = -( het_rates(k,116) )
332 33621504 : mat(k,94) = -( het_rates(k,117) )
333 33621504 : mat(k,1379) = -( rxt(k,55) + het_rates(k,118) )
334 33621504 : mat(k,783) = .700_r8*rxt(k,49)
335 33621504 : mat(k,527) = -( rxt(k,174) + het_rates(k,119) )
336 33621504 : mat(k,1892) = rxt(k,15)
337 33621504 : mat(k,224) = -( rxt(k,12) + het_rates(k,120) )
338 : mat(k,343) = -( rxt(k,13) + rxt(k,14) + rxt(k,193) + rxt(k,503) + rxt(k,545) &
339 33621504 : + rxt(k,548) + rxt(k,559) + het_rates(k,121) )
340 33621504 : mat(k,466) = -( rxt(k,504) + het_rates(k,122) )
341 33621504 : mat(k,1069) = -( rxt(k,56) + rxt(k,505) + het_rates(k,123) )
342 33621504 : mat(k,10) = -( het_rates(k,124) )
343 33621504 : mat(k,11) = -( het_rates(k,125) )
344 33621504 : mat(k,12) = -( het_rates(k,126) )
345 33621504 : mat(k,138) = -( het_rates(k,127) )
346 33621504 : mat(k,13) = -( rxt(k,506) + het_rates(k,128) )
347 33621504 : mat(k,1952) = -( rxt(k,15) + het_rates(k,129) )
348 33621504 : mat(k,347) = rxt(k,13)
349 33621504 : mat(k,1581) = rxt(k,16) + .500_r8*rxt(k,507)
350 33621504 : mat(k,2086) = rxt(k,17)
351 33621504 : mat(k,533) = rxt(k,174)
352 33621504 : mat(k,1576) = -( rxt(k,16) + rxt(k,507) + het_rates(k,130) )
353 33621504 : mat(k,1497) = rxt(k,9)
354 33621504 : mat(k,443) = rxt(k,11) + rxt(k,192)
355 33621504 : mat(k,345) = rxt(k,14) + rxt(k,193)
356 33621504 : mat(k,2081) = rxt(k,18)
357 33621504 : mat(k,695) = rxt(k,19)
358 33621504 : mat(k,1142) = rxt(k,45)
359 33621504 : mat(k,427) = rxt(k,48)
360 33621504 : mat(k,658) = rxt(k,54) + rxt(k,374)
361 33621504 : mat(k,1075) = rxt(k,56)
362 33621504 : mat(k,899) = rxt(k,57)
363 33621504 : mat(k,452) = rxt(k,58)
364 33621504 : mat(k,271) = rxt(k,59)
365 33621504 : mat(k,573) = .600_r8*rxt(k,60) + rxt(k,325)
366 33621504 : mat(k,665) = rxt(k,66)
367 33621504 : mat(k,581) = rxt(k,76)
368 33621504 : mat(k,974) = rxt(k,94)
369 33621504 : mat(k,179) = rxt(k,449)
370 33621504 : mat(k,2089) = -( rxt(k,17) + rxt(k,18) + rxt(k,508) + het_rates(k,131) )
371 33621504 : mat(k,445) = rxt(k,10)
372 33621504 : mat(k,348) = rxt(k,13) + rxt(k,14) + rxt(k,193)
373 33621504 : mat(k,576) = .400_r8*rxt(k,60)
374 33621504 : mat(k,584) = rxt(k,77)
375 33621504 : mat(k,978) = rxt(k,95)
376 33621504 : mat(k,895) = -( rxt(k,57) + het_rates(k,132) )
377 33621504 : mat(k,448) = -( rxt(k,58) + rxt(k,509) + het_rates(k,133) )
378 33621504 : mat(k,14) = -( het_rates(k,134) )
379 33621504 : mat(k,15) = -( het_rates(k,135) )
380 33621504 : mat(k,16) = -( het_rates(k,136) )
381 33621504 : mat(k,17) = -( het_rates(k,137) )
382 33621504 : mat(k,18) = -( het_rates(k,138) )
383 33621504 : mat(k,1608) = -( rxt(k,151) + het_rates(k,139) )
384 33621504 : mat(k,2353) = rxt(k,3)
385 33621504 : mat(k,2183) = rxt(k,8)
386 33621504 : mat(k,346) = rxt(k,13)
387 33621504 : mat(k,1948) = rxt(k,15)
388 33621504 : mat(k,1577) = rxt(k,16)
389 33621504 : mat(k,2082) = rxt(k,18)
390 33621504 : mat(k,1481) = .180_r8*rxt(k,39)
391 33621504 : mat(k,875) = rxt(k,41)
392 33621504 : mat(k,1845) = rxt(k,75)
393 33621504 : mat(k,2327) = rxt(k,93)
394 33621504 : mat(k,363) = rxt(k,107)
395 33621504 : mat(k,1280) = rxt(k,111) + rxt(k,492)
396 33621504 : mat(k,904) = rxt(k,112)
397 33621504 : mat(k,304) = rxt(k,113)
398 33621504 : mat(k,1649) = rxt(k,146) + rxt(k,147)
399 33621504 : mat(k,530) = rxt(k,174)
400 33621504 : mat(k,559) = rxt(k,485)
401 33621504 : mat(k,2192) = -( rxt(k,7) + rxt(k,8) + het_rates(k,140) )
402 33621504 : mat(k,1617) = rxt(k,151)
403 33621504 : mat(k,19) = -( het_rates(k,141) )
404 33621504 : mat(k,360) = -( rxt(k,107) + het_rates(k,142) )
405 33621504 : mat(k,410) = -( rxt(k,110) + het_rates(k,143) )
406 33621504 : mat(k,269) = -( rxt(k,59) + rxt(k,510) + het_rates(k,144) )
407 33621504 : mat(k,569) = -( rxt(k,60) + rxt(k,325) + het_rates(k,145) )
408 33621504 : mat(k,177) = -( rxt(k,449) + het_rates(k,146) )
409 33621504 : mat(k,522) = -( het_rates(k,147) )
410 33621504 : mat(k,311) = rxt(k,31)
411 33621504 : mat(k,217) = -( het_rates(k,148) )
412 33621504 : mat(k,365) = -( rxt(k,61) + het_rates(k,149) )
413 33621504 : mat(k,20) = -( het_rates(k,150) )
414 33621504 : mat(k,21) = -( het_rates(k,151) )
415 33621504 : mat(k,22) = -( het_rates(k,152) )
416 33621504 : mat(k,23) = -( het_rates(k,153) )
417 33621504 : mat(k,585) = -( rxt(k,62) + het_rates(k,154) )
418 33621504 : mat(k,418) = -( rxt(k,63) + het_rates(k,155) )
419 33621504 : mat(k,556) = -( rxt(k,485) + het_rates(k,156) )
420 33621504 : mat(k,411) = rxt(k,110)
421 33621504 : mat(k,1274) = rxt(k,111)
422 33621504 : mat(k,24) = -( rxt(k,108) + het_rates(k,157) )
423 33621504 : mat(k,1276) = -( rxt(k,111) + rxt(k,492) + het_rates(k,158) )
424 33621504 : mat(k,903) = rxt(k,112)
425 33621504 : mat(k,557) = rxt(k,485)
426 33621504 : mat(k,902) = -( rxt(k,112) + het_rates(k,159) )
427 33621504 : mat(k,303) = rxt(k,113)
428 33621504 : mat(k,1275) = rxt(k,492)
429 33621504 : mat(k,302) = -( rxt(k,113) + het_rates(k,160) )
430 33621504 : mat(k,204) = rxt(k,109)
431 33621504 : mat(k,25) = -( het_rates(k,161) )
432 33621504 : mat(k,26) = -( het_rates(k,162) )
433 33621504 : mat(k,27) = -( het_rates(k,163) )
434 33621504 : mat(k,28) = -( het_rates(k,164) )
435 33621504 : mat(k,29) = -( rxt(k,114) + het_rates(k,165) )
436 33621504 : mat(k,30) = -( rxt(k,115) + het_rates(k,166) )
437 33621504 : mat(k,31) = -( rxt(k,116) + het_rates(k,167) )
438 33621504 : mat(k,32) = -( rxt(k,117) + het_rates(k,168) )
439 33621504 : mat(k,33) = -( rxt(k,118) + het_rates(k,169) )
440 33621504 : mat(k,34) = -( rxt(k,119) + het_rates(k,170) )
441 33621504 : mat(k,35) = -( rxt(k,120) + het_rates(k,171) )
442 33621504 : mat(k,36) = -( rxt(k,121) + het_rates(k,172) )
443 33621504 : mat(k,37) = -( rxt(k,122) + het_rates(k,173) )
444 33621504 : mat(k,38) = -( rxt(k,123) + het_rates(k,174) )
445 33621504 : mat(k,39) = -( rxt(k,124) + het_rates(k,175) )
446 33621504 : mat(k,40) = -( rxt(k,125) + het_rates(k,176) )
447 33621504 : mat(k,41) = -( rxt(k,126) + het_rates(k,177) )
448 33621504 : mat(k,42) = -( rxt(k,127) + het_rates(k,178) )
449 34672176 : mat(k,43) = -( rxt(k,128) + het_rates(k,179) )
450 : end do
451 1050672 : end subroutine linmat02
452 1050672 : subroutine linmat03( avec_len, mat, y, rxt, het_rates )
453 : !----------------------------------------------
454 : ! ... linear matrix entries for implicit species
455 : !----------------------------------------------
456 : use chem_mods, only : gas_pcnst, rxntot, nzcnt
457 : use shr_kind_mod, only : r8 => shr_kind_r8
458 : implicit none
459 : !----------------------------------------------
460 : ! ... dummy arguments
461 : !----------------------------------------------
462 : integer, intent(in) :: avec_len
463 : real(r8), intent(in) :: y(veclen,gas_pcnst)
464 : real(r8), intent(in) :: rxt(veclen,rxntot)
465 : real(r8), intent(in) :: het_rates(veclen,gas_pcnst)
466 : real(r8), intent(inout) :: mat(veclen,nzcnt)
467 : !----------------------------------------------
468 : ! ... local variables
469 : !----------------------------------------------
470 : integer :: k
471 34672176 : do k = 1,avec_len
472 33621504 : mat(k,44) = -( rxt(k,129) + het_rates(k,180) )
473 33621504 : mat(k,45) = -( rxt(k,130) + het_rates(k,181) )
474 33621504 : mat(k,46) = -( rxt(k,131) + het_rates(k,182) )
475 33621504 : mat(k,47) = -( rxt(k,132) + het_rates(k,183) )
476 33621504 : mat(k,48) = -( rxt(k,133) + het_rates(k,184) )
477 33621504 : mat(k,49) = -( rxt(k,134) + het_rates(k,185) )
478 33621504 : mat(k,50) = -( rxt(k,135) + het_rates(k,186) )
479 33621504 : mat(k,51) = -( rxt(k,136) + het_rates(k,187) )
480 33621504 : mat(k,52) = -( rxt(k,137) + het_rates(k,188) )
481 33621504 : mat(k,53) = -( rxt(k,138) + het_rates(k,189) )
482 33621504 : mat(k,54) = -( rxt(k,139) + het_rates(k,190) )
483 33621504 : mat(k,55) = -( rxt(k,140) + het_rates(k,191) )
484 33621504 : mat(k,56) = -( rxt(k,141) + het_rates(k,192) )
485 33621504 : mat(k,57) = -( rxt(k,142) + het_rates(k,193) )
486 33621504 : mat(k,58) = -( rxt(k,143) + het_rates(k,194) )
487 33621504 : mat(k,59) = -( het_rates(k,195) )
488 33621504 : mat(k,60) = -( het_rates(k,196) )
489 33621504 : mat(k,61) = -( het_rates(k,197) )
490 33621504 : mat(k,62) = -( het_rates(k,198) )
491 33621504 : mat(k,63) = -( het_rates(k,199) )
492 33621504 : mat(k,72) = -( het_rates(k,200) )
493 33621504 : mat(k,995) = rxt(k,541)
494 33621504 : mat(k,73) = -( het_rates(k,201) )
495 33621504 : mat(k,74) = -( het_rates(k,202) )
496 33621504 : mat(k,75) = -( het_rates(k,203) )
497 33621504 : mat(k,76) = -( het_rates(k,204) )
498 33621504 : mat(k,95) = -( het_rates(k,205) )
499 33621504 : mat(k,96) = -( het_rates(k,206) )
500 33621504 : mat(k,97) = -( het_rates(k,207) )
501 33621504 : mat(k,98) = -( het_rates(k,208) )
502 33621504 : mat(k,99) = -( het_rates(k,209) )
503 33621504 : mat(k,119) = -( het_rates(k,210) )
504 33621504 : mat(k,125) = -( het_rates(k,211) )
505 33621504 : mat(k,244) = -( rxt(k,64) + het_rates(k,212) )
506 33621504 : mat(k,706) = -( rxt(k,65) + het_rates(k,213) )
507 33621504 : mat(k,662) = -( rxt(k,66) + rxt(k,511) + het_rates(k,214) )
508 33621504 : mat(k,515) = -( rxt(k,67) + het_rates(k,215) )
509 33621504 : mat(k,1035) = -( rxt(k,68) + het_rates(k,216) )
510 33621504 : mat(k,449) = rxt(k,58)
511 33621504 : mat(k,663) = rxt(k,66)
512 33621504 : mat(k,517) = rxt(k,67)
513 33621504 : mat(k,1116) = -( rxt(k,69) + het_rates(k,217) )
514 33621504 : mat(k,710) = rxt(k,65)
515 33621504 : mat(k,1037) = rxt(k,68)
516 33621504 : mat(k,719) = -( rxt(k,70) + het_rates(k,218) )
517 33621504 : mat(k,232) = -( het_rates(k,219) )
518 33621504 : mat(k,131) = -( het_rates(k,220) )
519 33621504 : mat(k,248) = -( rxt(k,71) + het_rates(k,221) )
520 33621504 : mat(k,253) = -( het_rates(k,222) )
521 33621504 : mat(k,738) = -( rxt(k,72) + het_rates(k,223) )
522 33621504 : mat(k,137) = -( het_rates(k,224) )
523 33621504 : mat(k,261) = -( het_rates(k,225) )
524 33621504 : mat(k,478) = -( rxt(k,73) + het_rates(k,226) )
525 33621504 : mat(k,563) = -( het_rates(k,229) )
526 33621504 : mat(k,178) = rxt(k,449)
527 33621504 : mat(k,960) = -( het_rates(k,230) )
528 33621504 : mat(k,536) = -( het_rates(k,231) )
529 33621504 : mat(k,486) = -( het_rates(k,232) )
530 33621504 : mat(k,865) = -( het_rates(k,233) )
531 33621504 : mat(k,553) = rxt(k,52)
532 33621504 : mat(k,836) = -( het_rates(k,234) )
533 33621504 : mat(k,670) = -( het_rates(k,235) )
534 33621504 : mat(k,1433) = -( het_rates(k,236) )
535 33621504 : mat(k,434) = .130_r8*rxt(k,23)
536 33621504 : mat(k,358) = rxt(k,27)
537 33621504 : mat(k,984) = rxt(k,35)
538 33621504 : mat(k,1266) = rxt(k,36)
539 33621504 : mat(k,1139) = .330_r8*rxt(k,45)
540 33621504 : mat(k,1151) = rxt(k,47)
541 33621504 : mat(k,1257) = 1.340_r8*rxt(k,51)
542 33621504 : mat(k,554) = rxt(k,52)
543 33621504 : mat(k,392) = rxt(k,53)
544 33621504 : mat(k,1381) = .300_r8*rxt(k,55)
545 33621504 : mat(k,897) = rxt(k,57)
546 33621504 : mat(k,571) = .600_r8*rxt(k,60) + rxt(k,325)
547 33621504 : mat(k,420) = rxt(k,63)
548 33621504 : mat(k,246) = .500_r8*rxt(k,64)
549 33621504 : mat(k,1119) = .650_r8*rxt(k,69)
550 33621504 : mat(k,2005) = -( het_rates(k,237) )
551 33621504 : mat(k,1086) = rxt(k,34)
552 33621504 : mat(k,986) = rxt(k,35)
553 33621504 : mat(k,640) = rxt(k,37)
554 33621504 : mat(k,1484) = rxt(k,40)
555 33621504 : mat(k,1389) = .300_r8*rxt(k,55)
556 33621504 : mat(k,575) = .400_r8*rxt(k,60)
557 33621504 : mat(k,630) = rxt(k,87)
558 33621504 : mat(k,405) = rxt(k,89)
559 33621504 : mat(k,804) = -( het_rates(k,238) )
560 33621504 : mat(k,319) = .600_r8*rxt(k,25)
561 33621504 : mat(k,609) = -( het_rates(k,239) )
562 33621504 : mat(k,314) = -( rxt(k,318) + rxt(k,319) + het_rates(k,240) )
563 33621504 : mat(k,201) = rxt(k,42)
564 33621504 : mat(k,751) = -( het_rates(k,241) )
565 33621504 : mat(k,2311) = -( rxt(k,499) + het_rates(k,242) )
566 33621504 : mat(k,446) = rxt(k,11) + rxt(k,192)
567 33621504 : mat(k,697) = rxt(k,19)
568 33621504 : mat(k,686) = .900_r8*rxt(k,20)
569 33621504 : mat(k,477) = rxt(k,21)
570 33621504 : mat(k,216) = 1.500_r8*rxt(k,22)
571 33621504 : mat(k,435) = .560_r8*rxt(k,23)
572 33621504 : mat(k,507) = rxt(k,24)
573 33621504 : mat(k,320) = .600_r8*rxt(k,25)
574 33621504 : mat(k,645) = .600_r8*rxt(k,26)
575 33621504 : mat(k,359) = rxt(k,27)
576 33621504 : mat(k,375) = rxt(k,28)
577 33621504 : mat(k,380) = rxt(k,29)
578 33621504 : mat(k,440) = rxt(k,30)
579 33621504 : mat(k,1088) = rxt(k,34)
580 33621504 : mat(k,1271) = rxt(k,36)
581 33621504 : mat(k,1097) = 2.000_r8*rxt(k,43)
582 33621504 : mat(k,1001) = 2.000_r8*rxt(k,44)
583 33621504 : mat(k,1147) = .670_r8*rxt(k,45)
584 33621504 : mat(k,282) = rxt(k,46)
585 33621504 : mat(k,1154) = rxt(k,47)
586 33621504 : mat(k,429) = rxt(k,48)
587 33621504 : mat(k,786) = rxt(k,49)
588 33621504 : mat(k,1262) = .660_r8*rxt(k,50) + 1.340_r8*rxt(k,51)
589 33621504 : mat(k,1080) = rxt(k,56)
590 33621504 : mat(k,369) = rxt(k,61)
591 33621504 : mat(k,591) = rxt(k,62)
592 33621504 : mat(k,247) = rxt(k,64)
593 33621504 : mat(k,715) = rxt(k,65)
594 33621504 : mat(k,667) = rxt(k,66)
595 33621504 : mat(k,521) = rxt(k,67)
596 33621504 : mat(k,1042) = rxt(k,68)
597 33621504 : mat(k,1124) = 1.200_r8*rxt(k,69)
598 33621504 : mat(k,728) = rxt(k,70)
599 33621504 : mat(k,748) = rxt(k,72)
600 33621504 : mat(k,483) = rxt(k,73)
601 33621504 : mat(k,1521) = rxt(k,157)
602 33621504 : mat(k,497) = rxt(k,288)
603 33621504 : mat(k,317) = rxt(k,318) + rxt(k,319)
604 33621504 : mat(k,1348) = rxt(k,392)
605 33621504 : mat(k,492) = -( rxt(k,288) + het_rates(k,243) )
606 33621504 : mat(k,1301) = -( het_rates(k,244) )
607 33621504 : mat(k,1334) = -( rxt(k,392) + het_rates(k,245) )
608 33621504 : mat(k,1358) = -( het_rates(k,246) )
609 33621504 : mat(k,758) = -( het_rates(k,247) )
610 33621504 : mat(k,506) = .600_r8*rxt(k,24)
611 33621504 : mat(k,1401) = -( het_rates(k,248) )
612 33621504 : mat(k,1256) = .660_r8*rxt(k,51)
613 33621504 : mat(k,656) = rxt(k,54) + rxt(k,374)
614 33621504 : mat(k,918) = -( het_rates(k,249) )
615 33621504 : mat(k,643) = .600_r8*rxt(k,26)
616 33621504 : mat(k,699) = -( het_rates(k,250) )
617 33621504 : mat(k,1102) = -( het_rates(k,251) )
618 33621504 : mat(k,1650) = -( rxt(k,146) + rxt(k,147) + het_rates(k,252) )
619 33621504 : mat(k,2354) = rxt(k,1)
620 33621504 : mat(k,2184) = rxt(k,7)
621 33621504 : mat(k,225) = rxt(k,12)
622 33621504 : mat(k,1823) = -( het_rates(k,253) )
623 33621504 : mat(k,2355) = rxt(k,2)
624 33621504 : mat(k,648) = 2.000_r8*rxt(k,4)
625 33621504 : mat(k,1500) = rxt(k,9)
626 33621504 : mat(k,444) = rxt(k,10)
627 33621504 : mat(k,685) = rxt(k,20)
628 33621504 : mat(k,476) = rxt(k,21)
629 33621504 : mat(k,374) = rxt(k,28)
630 33621504 : mat(k,379) = rxt(k,29)
631 33621504 : mat(k,439) = rxt(k,30)
632 33621504 : mat(k,313) = rxt(k,31)
633 33621504 : mat(k,639) = rxt(k,37)
634 33621504 : mat(k,457) = rxt(k,38)
635 33621504 : mat(k,1483) = .330_r8*rxt(k,39)
636 33621504 : mat(k,202) = rxt(k,42)
637 33621504 : mat(k,281) = rxt(k,46)
638 33621504 : mat(k,785) = rxt(k,49)
639 33621504 : mat(k,393) = rxt(k,53)
640 33621504 : mat(k,453) = rxt(k,58)
641 33621504 : mat(k,368) = rxt(k,61)
642 33621504 : mat(k,590) = rxt(k,62)
643 33621504 : mat(k,422) = rxt(k,63)
644 33621504 : mat(k,714) = rxt(k,65)
645 33621504 : mat(k,520) = rxt(k,67)
646 33621504 : mat(k,727) = rxt(k,70)
647 33621504 : mat(k,250) = rxt(k,71)
648 33621504 : mat(k,747) = rxt(k,72)
649 33621504 : mat(k,482) = rxt(k,73)
650 33621504 : mat(k,826) = rxt(k,105)
651 33621504 : mat(k,857) = rxt(k,106)
652 33621504 : mat(k,1579) = .500_r8*rxt(k,507)
653 33621504 : mat(k,499) = -( het_rates(k,254) )
654 33621504 : mat(k,813) = -( het_rates(k,255) )
655 33621504 : mat(k,1200) = -( het_rates(k,256) )
656 33621504 : mat(k,1118) = .150_r8*rxt(k,69)
657 33621504 : mat(k,1163) = -( het_rates(k,257) )
658 33621504 : mat(k,1184) = -( het_rates(k,258) )
659 33621504 : mat(k,769) = -( het_rates(k,259) )
660 33621504 : mat(k,1217) = -( het_rates(k,260) )
661 33621504 : mat(k,793) = -( het_rates(k,261) )
662 33621504 : mat(k,544) = -( het_rates(k,262) )
663 33621504 : mat(k,2365) = -( rxt(k,1) + rxt(k,2) + rxt(k,3) + het_rates(k,263) )
664 33621504 : mat(k,1489) = .050_r8*rxt(k,39)
665 34672176 : mat(k,205) = rxt(k,109)
666 : end do
667 1050672 : end subroutine linmat03
668 1050672 : subroutine linmat( avec_len, mat, y, rxt, het_rates )
669 : !----------------------------------------------
670 : ! ... linear matrix entries for implicit species
671 : !----------------------------------------------
672 : use chem_mods, only : gas_pcnst, rxntot, nzcnt
673 : use shr_kind_mod, only : r8 => shr_kind_r8
674 : implicit none
675 : !----------------------------------------------
676 : ! ... dummy arguments
677 : !----------------------------------------------
678 : integer, intent(in) :: avec_len
679 : real(r8), intent(in) :: y(veclen,gas_pcnst)
680 : real(r8), intent(in) :: rxt(veclen,rxntot)
681 : real(r8), intent(in) :: het_rates(veclen,gas_pcnst)
682 : real(r8), intent(inout) :: mat(veclen,nzcnt)
683 1050672 : call linmat01( avec_len, mat, y, rxt, het_rates )
684 1050672 : call linmat02( avec_len, mat, y, rxt, het_rates )
685 1050672 : call linmat03( avec_len, mat, y, rxt, het_rates )
686 1050672 : end subroutine linmat
687 : end module mo_lin_matrix
|