Line data Source code
1 : module mo_lin_matrix
2 : use chem_mods, only: veclen
3 : private
4 : public :: linmat
5 : contains
6 1072512 : 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 35217792 : do k = 1,avec_len
26 34145280 : mat(k,1) = -( het_rates(k,1) )
27 34145280 : mat(k,2) = -( het_rates(k,2) )
28 34145280 : mat(k,582) = -( het_rates(k,3) )
29 34145280 : mat(k,96) = rxt(k,27)
30 34145280 : mat(k,714) = rxt(k,28)
31 34145280 : mat(k,208) = rxt(k,30)
32 34145280 : mat(k,57) = rxt(k,32)
33 34145280 : mat(k,63) = rxt(k,33)
34 34145280 : mat(k,187) = 2.000_r8*rxt(k,39)
35 34145280 : mat(k,223) = rxt(k,40)
36 34145280 : mat(k,162) = 3.000_r8*rxt(k,43)
37 34145280 : mat(k,34) = 2.000_r8*rxt(k,51)
38 34145280 : mat(k,325) = rxt(k,52)
39 34145280 : mat(k,310) = rxt(k,58)
40 34145280 : mat(k,95) = -( rxt(k,27) + het_rates(k,4) )
41 34145280 : mat(k,715) = -( rxt(k,28) + het_rates(k,5) )
42 34145280 : mat(k,209) = rxt(k,29)
43 : mat(k,206) = -( rxt(k,29) + rxt(k,30) + rxt(k,564) + rxt(k,567) + rxt(k,572) &
44 34145280 : + het_rates(k,6) )
45 34145280 : mat(k,3) = -( het_rates(k,7) )
46 34145280 : mat(k,29) = -( rxt(k,31) + het_rates(k,8) )
47 34145280 : mat(k,55) = -( rxt(k,32) + het_rates(k,9) )
48 34145280 : mat(k,60) = -( rxt(k,33) + het_rates(k,10) )
49 34145280 : mat(k,36) = -( rxt(k,34) + het_rates(k,11) )
50 34145280 : mat(k,65) = -( rxt(k,35) + het_rates(k,12) )
51 34145280 : mat(k,40) = -( rxt(k,36) + het_rates(k,13) )
52 34145280 : mat(k,70) = -( rxt(k,37) + het_rates(k,14) )
53 34145280 : mat(k,44) = -( rxt(k,38) + het_rates(k,15) )
54 34145280 : mat(k,186) = -( rxt(k,39) + het_rates(k,16) )
55 34145280 : mat(k,738) = -( rxt(k,21) + rxt(k,22) + het_rates(k,17) )
56 34145280 : mat(k,157) = rxt(k,23)
57 34145280 : mat(k,419) = .180_r8*rxt(k,25)
58 34145280 : mat(k,221) = -( rxt(k,40) + het_rates(k,18) )
59 34145280 : mat(k,48) = -( rxt(k,41) + het_rates(k,19) )
60 34145280 : mat(k,147) = -( rxt(k,42) + het_rates(k,20) )
61 34145280 : mat(k,432) = -( het_rates(k,21) )
62 34145280 : mat(k,417) = rxt(k,24)
63 34145280 : mat(k,222) = rxt(k,40)
64 34145280 : mat(k,149) = rxt(k,42)
65 34145280 : mat(k,155) = -( rxt(k,23) + het_rates(k,22) )
66 34145280 : mat(k,416) = -( rxt(k,24) + rxt(k,25) + het_rates(k,23) )
67 34145280 : mat(k,161) = -( rxt(k,43) + het_rates(k,24) )
68 34145280 : mat(k,1487) = -( het_rates(k,25) )
69 34145280 : mat(k,97) = rxt(k,27)
70 34145280 : mat(k,31) = 4.000_r8*rxt(k,31)
71 34145280 : mat(k,59) = rxt(k,32)
72 34145280 : mat(k,39) = 2.000_r8*rxt(k,34)
73 34145280 : mat(k,69) = 2.000_r8*rxt(k,35)
74 34145280 : mat(k,43) = 2.000_r8*rxt(k,36)
75 34145280 : mat(k,74) = rxt(k,37)
76 34145280 : mat(k,47) = 2.000_r8*rxt(k,38)
77 34145280 : mat(k,50) = 3.000_r8*rxt(k,41)
78 34145280 : mat(k,152) = rxt(k,42)
79 34145280 : mat(k,76) = 2.000_r8*rxt(k,44)
80 34145280 : mat(k,28) = 2.000_r8*rxt(k,45)
81 34145280 : mat(k,1112) = rxt(k,46)
82 34145280 : mat(k,363) = rxt(k,47)
83 34145280 : mat(k,88) = rxt(k,50)
84 34145280 : mat(k,84) = rxt(k,53)
85 34145280 : mat(k,94) = rxt(k,54)
86 34145280 : mat(k,120) = rxt(k,55)
87 34145280 : mat(k,2016) = rxt(k,56)
88 34145280 : mat(k,337) = rxt(k,59)
89 34145280 : mat(k,75) = -( rxt(k,44) + het_rates(k,26) )
90 34145280 : mat(k,26) = -( rxt(k,45) + rxt(k,485) + het_rates(k,27) )
91 34145280 : mat(k,1104) = -( rxt(k,46) + het_rates(k,28) )
92 34145280 : mat(k,361) = rxt(k,48)
93 34145280 : mat(k,137) = rxt(k,60)
94 34145280 : mat(k,27) = 2.000_r8*rxt(k,485)
95 : mat(k,359) = -( rxt(k,47) + rxt(k,48) + rxt(k,566) + rxt(k,571) + rxt(k,577) &
96 34145280 : + het_rates(k,29) )
97 34145280 : mat(k,4) = -( het_rates(k,30) )
98 34145280 : mat(k,252) = -( het_rates(k,31) )
99 34145280 : mat(k,733) = rxt(k,21) + rxt(k,22)
100 34145280 : mat(k,414) = .380_r8*rxt(k,25)
101 34145280 : mat(k,1263) = rxt(k,26) + rxt(k,62)
102 34145280 : mat(k,140) = rxt(k,101)
103 34145280 : mat(k,1284) = -( rxt(k,26) + rxt(k,62) + het_rates(k,32) )
104 34145280 : mat(k,423) = .440_r8*rxt(k,25)
105 34145280 : mat(k,1020) = rxt(k,63)
106 34145280 : mat(k,844) = rxt(k,65)
107 34145280 : mat(k,267) = rxt(k,369)
108 34145280 : mat(k,77) = -( rxt(k,49) + het_rates(k,33) )
109 34145280 : mat(k,56) = rxt(k,32)
110 34145280 : mat(k,61) = rxt(k,33)
111 34145280 : mat(k,66) = rxt(k,35)
112 34145280 : mat(k,41) = 2.000_r8*rxt(k,36)
113 34145280 : mat(k,71) = 2.000_r8*rxt(k,37)
114 34145280 : mat(k,45) = rxt(k,38)
115 34145280 : mat(k,33) = 2.000_r8*rxt(k,51)
116 34145280 : mat(k,89) = rxt(k,54)
117 34145280 : mat(k,115) = rxt(k,55)
118 34145280 : mat(k,85) = -( rxt(k,50) + het_rates(k,34) )
119 34145280 : mat(k,37) = rxt(k,34)
120 34145280 : mat(k,67) = rxt(k,35)
121 34145280 : mat(k,81) = rxt(k,53)
122 34145280 : mat(k,125) = -( het_rates(k,35) )
123 34145280 : mat(k,5) = -( het_rates(k,36) )
124 34145280 : mat(k,6) = -( het_rates(k,37) )
125 34145280 : mat(k,7) = -( het_rates(k,38) )
126 34145280 : mat(k,341) = -( het_rates(k,39) )
127 34145280 : mat(k,62) = rxt(k,33)
128 34145280 : mat(k,72) = rxt(k,37)
129 34145280 : mat(k,78) = 2.000_r8*rxt(k,49)
130 34145280 : mat(k,86) = rxt(k,50)
131 34145280 : mat(k,123) = rxt(k,57)
132 34145280 : mat(k,1778) = -( het_rates(k,40) )
133 34145280 : mat(k,2083) = 2.000_r8*rxt(k,2) + rxt(k,3)
134 34145280 : mat(k,750) = 2.000_r8*rxt(k,21)
135 34145280 : mat(k,159) = rxt(k,23)
136 34145280 : mat(k,428) = rxt(k,24) + .330_r8*rxt(k,25)
137 34145280 : mat(k,330) = rxt(k,52)
138 34145280 : mat(k,2023) = rxt(k,56)
139 34145280 : mat(k,124) = rxt(k,57)
140 34145280 : mat(k,647) = -( het_rates(k,41) )
141 34145280 : mat(k,2055) = rxt(k,1)
142 34145280 : mat(k,736) = rxt(k,22)
143 34145280 : mat(k,418) = 1.440_r8*rxt(k,25)
144 34145280 : mat(k,32) = -( rxt(k,51) + het_rates(k,42) )
145 34145280 : mat(k,214) = -( rxt(k,4) + het_rates(k,43) )
146 34145280 : mat(k,889) = .500_r8*rxt(k,558)
147 34145280 : mat(k,52) = -( rxt(k,100) + het_rates(k,44) )
148 34145280 : mat(k,324) = -( rxt(k,52) + het_rates(k,45) )
149 34145280 : mat(k,80) = -( rxt(k,53) + het_rates(k,46) )
150 34145280 : mat(k,90) = -( rxt(k,54) + het_rates(k,47) )
151 34145280 : mat(k,116) = -( rxt(k,55) + het_rates(k,48) )
152 34145280 : mat(k,2029) = -( rxt(k,56) + het_rates(k,49) )
153 34145280 : mat(k,532) = rxt(k,386)
154 34145280 : mat(k,122) = -( rxt(k,57) + het_rates(k,50) )
155 34145280 : mat(k,1529) = -( rxt(k,9) + het_rates(k,51) )
156 34145280 : mat(k,616) = rxt(k,275)
157 : mat(k,406) = 2.000_r8*rxt(k,559) + 2.000_r8*rxt(k,562) + 2.000_r8*rxt(k,565) &
158 34145280 : + 2.000_r8*rxt(k,576)
159 34145280 : mat(k,1820) = .500_r8*rxt(k,560)
160 34145280 : mat(k,1736) = rxt(k,561)
161 34145280 : mat(k,211) = rxt(k,564) + rxt(k,567) + rxt(k,572)
162 34145280 : mat(k,364) = rxt(k,566) + rxt(k,571) + rxt(k,577)
163 34145280 : mat(k,179) = -( rxt(k,10) + rxt(k,11) + rxt(k,448) + het_rates(k,52) )
164 34145280 : mat(k,309) = -( rxt(k,58) + het_rates(k,53) )
165 34145280 : mat(k,207) = rxt(k,564) + rxt(k,567) + rxt(k,572)
166 34145280 : mat(k,333) = -( rxt(k,59) + het_rates(k,54) )
167 34145280 : mat(k,358) = rxt(k,566) + rxt(k,571) + rxt(k,577)
168 34145280 : mat(k,278) = -( rxt(k,12) + het_rates(k,55) )
169 34145280 : mat(k,446) = -( rxt(k,66) + het_rates(k,56) )
170 34145280 : mat(k,1947) = rxt(k,17)
171 34145280 : mat(k,389) = rxt(k,595)
172 34145280 : mat(k,98) = -( rxt(k,13) + het_rates(k,57) )
173 : mat(k,401) = -( rxt(k,14) + rxt(k,15) + rxt(k,449) + rxt(k,559) + rxt(k,562) &
174 34145280 : + rxt(k,565) + rxt(k,576) + het_rates(k,58) )
175 34145280 : mat(k,8) = -( het_rates(k,59) )
176 34145280 : mat(k,9) = -( het_rates(k,60) )
177 34145280 : mat(k,10) = -( het_rates(k,61) )
178 34145280 : mat(k,1983) = -( rxt(k,16) + rxt(k,17) + het_rates(k,62) )
179 34145280 : mat(k,281) = rxt(k,12)
180 34145280 : mat(k,411) = rxt(k,15)
181 34145280 : mat(k,1831) = rxt(k,18) + .500_r8*rxt(k,560)
182 34145280 : mat(k,1747) = rxt(k,20)
183 34145280 : mat(k,1621) = rxt(k,592)
184 34145280 : mat(k,199) = rxt(k,605)
185 34145280 : mat(k,1827) = -( rxt(k,18) + rxt(k,560) + het_rates(k,63) )
186 34145280 : mat(k,1536) = rxt(k,9)
187 34145280 : mat(k,184) = rxt(k,11) + rxt(k,448)
188 34145280 : mat(k,410) = rxt(k,14) + rxt(k,449)
189 34145280 : mat(k,1743) = rxt(k,19)
190 34145280 : mat(k,213) = rxt(k,29)
191 34145280 : mat(k,366) = rxt(k,48)
192 34145280 : mat(k,943) = rxt(k,75)
193 34145280 : mat(k,1741) = -( rxt(k,19) + rxt(k,20) + rxt(k,561) + het_rates(k,64) )
194 34145280 : mat(k,183) = rxt(k,10)
195 34145280 : mat(k,409) = rxt(k,14) + rxt(k,15) + rxt(k,449)
196 34145280 : mat(k,212) = rxt(k,30)
197 34145280 : mat(k,365) = rxt(k,47)
198 34145280 : mat(k,880) = rxt(k,76)
199 34145280 : mat(k,11) = -( het_rates(k,65) )
200 34145280 : mat(k,12) = -( het_rates(k,66) )
201 34145280 : mat(k,13) = -( het_rates(k,67) )
202 34145280 : mat(k,14) = -( het_rates(k,68) )
203 34145280 : mat(k,15) = -( het_rates(k,69) )
204 : mat(k,1388) = -( rxt(k,77) + rxt(k,78) + rxt(k,79) + rxt(k,80) + rxt(k,81) &
205 34145280 : + rxt(k,82) + het_rates(k,70) )
206 34145280 : mat(k,2074) = rxt(k,2)
207 : mat(k,1437) = 2.000_r8*rxt(k,5) + rxt(k,6) + rxt(k,83) + rxt(k,85) + rxt(k,87) &
208 : + 2.000_r8*rxt(k,88) + 2.000_r8*rxt(k,89) + rxt(k,90) + rxt(k,91) &
209 34145280 : + rxt(k,92)
210 34145280 : mat(k,1927) = rxt(k,8)
211 34145280 : mat(k,405) = rxt(k,15)
212 34145280 : mat(k,1969) = rxt(k,17)
213 34145280 : mat(k,1817) = rxt(k,18)
214 34145280 : mat(k,1733) = rxt(k,19)
215 34145280 : mat(k,424) = .180_r8*rxt(k,25)
216 34145280 : mat(k,1286) = rxt(k,26) + rxt(k,62)
217 34145280 : mat(k,722) = rxt(k,28)
218 34145280 : mat(k,1110) = rxt(k,46)
219 34145280 : mat(k,138) = rxt(k,60)
220 34145280 : mat(k,1886) = rxt(k,99) + rxt(k,358)
221 34145280 : mat(k,482) = rxt(k,102)
222 34145280 : mat(k,355) = rxt(k,103)
223 34145280 : mat(k,105) = rxt(k,104)
224 34145280 : mat(k,794) = rxt(k,391)
225 34145280 : mat(k,203) = rxt(k,599)
226 35217792 : mat(k,198) = rxt(k,604)
227 : end do
228 1072512 : end subroutine linmat01
229 1072512 : 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 35217792 : do k = 1,avec_len
249 34145280 : mat(k,787) = -( rxt(k,391) + het_rates(k,71) )
250 34145280 : mat(k,2060) = rxt(k,1)
251 34145280 : mat(k,1423) = rxt(k,6)
252 34145280 : mat(k,1913) = rxt(k,7)
253 34145280 : mat(k,99) = rxt(k,13)
254 : mat(k,1438) = -( rxt(k,5) + rxt(k,6) + rxt(k,83) + rxt(k,84) + rxt(k,85) &
255 : + rxt(k,86) + rxt(k,87) + rxt(k,88) + rxt(k,89) + rxt(k,90) &
256 34145280 : + rxt(k,91) + rxt(k,92) + het_rates(k,72) )
257 34145280 : mat(k,1928) = rxt(k,8)
258 34145280 : mat(k,1734) = rxt(k,20)
259 34145280 : mat(k,1563) = rxt(k,93) + rxt(k,137)
260 34145280 : mat(k,601) = rxt(k,95)
261 34145280 : mat(k,244) = rxt(k,97)
262 34145280 : mat(k,380) = rxt(k,387) + rxt(k,395)
263 34145280 : mat(k,133) = rxt(k,388)
264 34145280 : mat(k,1940) = -( rxt(k,7) + rxt(k,8) + het_rates(k,73) )
265 34145280 : mat(k,607) = rxt(k,96)
266 34145280 : mat(k,134) = -( rxt(k,60) + het_rates(k,74) )
267 34145280 : mat(k,139) = -( rxt(k,101) + het_rates(k,75) )
268 34145280 : mat(k,16) = -( het_rates(k,76) )
269 34145280 : mat(k,17) = -( het_rates(k,77) )
270 34145280 : mat(k,271) = -( het_rates(k,78) )
271 34145280 : mat(k,141) = rxt(k,101)
272 34145280 : mat(k,474) = rxt(k,102)
273 34145280 : mat(k,18) = -( rxt(k,61) + het_rates(k,79) )
274 34145280 : mat(k,476) = -( rxt(k,102) + het_rates(k,80) )
275 34145280 : mat(k,352) = rxt(k,103)
276 34145280 : mat(k,351) = -( rxt(k,103) + het_rates(k,81) )
277 34145280 : mat(k,104) = rxt(k,104)
278 34145280 : mat(k,103) = -( rxt(k,104) + het_rates(k,82) )
279 34145280 : mat(k,53) = rxt(k,100)
280 34145280 : mat(k,19) = -( het_rates(k,83) )
281 34145280 : mat(k,20) = -( het_rates(k,84) )
282 34145280 : mat(k,21) = -( het_rates(k,85) )
283 34145280 : mat(k,22) = -( het_rates(k,86) )
284 34145280 : mat(k,23) = -( het_rates(k,87) )
285 34145280 : mat(k,24) = -( het_rates(k,88) )
286 34145280 : mat(k,25) = -( het_rates(k,89) )
287 34145280 : mat(k,811) = -( het_rates(k,90) )
288 34145280 : mat(k,536) = rxt(k,385)
289 34145280 : mat(k,520) = rxt(k,386)
290 34145280 : mat(k,535) = -( rxt(k,385) + het_rates(k,91) )
291 34145280 : mat(k,519) = -( rxt(k,386) + het_rates(k,92) )
292 34145280 : mat(k,369) = -( het_rates(k,93) )
293 34145280 : mat(k,1014) = -( rxt(k,63) + het_rates(k,94) )
294 34145280 : mat(k,673) = rxt(k,64) + rxt(k,283)
295 34145280 : mat(k,504) = -( rxt(k,284) + het_rates(k,95) )
296 34145280 : mat(k,669) = -( rxt(k,64) + rxt(k,283) + het_rates(k,96) )
297 34145280 : mat(k,505) = rxt(k,284)
298 34145280 : mat(k,833) = -( rxt(k,65) + het_rates(k,97) )
299 34145280 : mat(k,1058) = -( het_rates(k,98) )
300 34145280 : mat(k,1962) = rxt(k,16)
301 34145280 : mat(k,450) = rxt(k,66)
302 34145280 : mat(k,928) = rxt(k,75)
303 34145280 : mat(k,868) = rxt(k,76)
304 : mat(k,1381) = rxt(k,77) + rxt(k,78) + rxt(k,79) + rxt(k,80) + rxt(k,81) &
305 34145280 : + rxt(k,82)
306 : mat(k,1430) = rxt(k,83) + rxt(k,84) + rxt(k,85) + rxt(k,86) + rxt(k,87) &
307 34145280 : + rxt(k,90) + rxt(k,91) + rxt(k,92)
308 34145280 : mat(k,1555) = rxt(k,93) + rxt(k,137)
309 34145280 : mat(k,598) = rxt(k,96)
310 34145280 : mat(k,1843) = rxt(k,98)
311 34145280 : mat(k,1879) = rxt(k,99) + rxt(k,358)
312 34145280 : mat(k,167) = -( het_rates(k,99) )
313 34145280 : mat(k,490) = -( het_rates(k,100) )
314 34145280 : mat(k,900) = -( rxt(k,558) + het_rates(k,101) )
315 34145280 : mat(k,180) = rxt(k,11) + rxt(k,448)
316 34145280 : mat(k,246) = -( rxt(k,373) + het_rates(k,102) )
317 34145280 : mat(k,1218) = rxt(k,375)
318 34145280 : mat(k,1241) = -( rxt(k,375) + het_rates(k,103) )
319 34145280 : mat(k,1690) = rxt(k,377)
320 34145280 : mat(k,107) = -( het_rates(k,104) )
321 34145280 : mat(k,1700) = -( rxt(k,377) + het_rates(k,105) )
322 34145280 : mat(k,1657) = rxt(k,379)
323 34145280 : mat(k,111) = -( het_rates(k,106) )
324 34145280 : mat(k,1656) = -( rxt(k,379) + het_rates(k,107) )
325 34145280 : mat(k,284) = -( het_rates(k,108) )
326 34145280 : mat(k,247) = rxt(k,373)
327 34145280 : mat(k,300) = -( het_rates(k,109) )
328 34145280 : mat(k,230) = -( het_rates(k,110) )
329 34145280 : mat(k,201) = rxt(k,599)
330 34145280 : mat(k,195) = rxt(k,604)
331 34145280 : mat(k,926) = -( rxt(k,75) + het_rates(k,111) )
332 34145280 : mat(k,551) = rxt(k,273)
333 34145280 : mat(k,550) = -( rxt(k,273) + het_rates(k,112) )
334 34145280 : mat(k,866) = -( rxt(k,76) + het_rates(k,113) )
335 34145280 : mat(k,610) = rxt(k,275)
336 34145280 : mat(k,692) = rxt(k,282)
337 34145280 : mat(k,625) = -( rxt(k,274) + het_rates(k,114) )
338 34145280 : mat(k,691) = -( rxt(k,282) + het_rates(k,115) )
339 34145280 : mat(k,626) = rxt(k,274)
340 34145280 : mat(k,564) = -( het_rates(k,116) )
341 34145280 : mat(k,609) = -( rxt(k,275) + het_rates(k,117) )
342 34145280 : mat(k,1153) = -( rxt(k,370) + het_rates(k,118) )
343 34145280 : mat(k,1964) = rxt(k,16)
344 34145280 : mat(k,266) = rxt(k,369)
345 34145280 : mat(k,259) = rxt(k,371)
346 34145280 : mat(k,1602) = rxt(k,592)
347 34145280 : mat(k,393) = rxt(k,595)
348 34145280 : mat(k,1197) = -( het_rates(k,119) )
349 34145280 : mat(k,173) = -( het_rates(k,120) )
350 34145280 : mat(k,264) = -( rxt(k,369) + het_rates(k,121) )
351 34145280 : mat(k,1327) = -( het_rates(k,122) )
352 34145280 : mat(k,256) = -( rxt(k,371) + het_rates(k,123) )
353 34145280 : mat(k,1127) = rxt(k,370)
354 34145280 : mat(k,317) = -( het_rates(k,124) )
355 34145280 : mat(k,444) = rxt(k,66)
356 34145280 : mat(k,196) = rxt(k,605)
357 34145280 : mat(k,377) = -( rxt(k,387) + rxt(k,395) + het_rates(k,125) )
358 34145280 : mat(k,1906) = rxt(k,7)
359 34145280 : mat(k,132) = rxt(k,399)
360 34145280 : mat(k,131) = -( rxt(k,388) + rxt(k,399) + het_rates(k,126) )
361 34145280 : mat(k,1566) = -( rxt(k,93) + rxt(k,137) + het_rates(k,127) )
362 34145280 : mat(k,850) = rxt(k,65)
363 34145280 : mat(k,245) = rxt(k,97)
364 34145280 : mat(k,1612) = -( rxt(k,592) + het_rates(k,128) )
365 34145280 : mat(k,1442) = rxt(k,84) + rxt(k,86)
366 34145280 : mat(k,297) = rxt(k,94)
367 34145280 : mat(k,292) = -( rxt(k,94) + het_rates(k,129) )
368 34145280 : mat(k,594) = -( rxt(k,95) + rxt(k,96) + het_rates(k,130) )
369 34145280 : mat(k,239) = -( rxt(k,97) + het_rates(k,131) )
370 34145280 : mat(k,461) = -( het_rates(k,132) )
371 34145280 : mat(k,984) = -( het_rates(k,133) )
372 34145280 : mat(k,2065) = rxt(k,3)
373 34145280 : mat(k,216) = 2.000_r8*rxt(k,4)
374 34145280 : mat(k,1517) = rxt(k,9)
375 34145280 : mat(k,181) = rxt(k,10)
376 34145280 : mat(k,279) = rxt(k,12)
377 34145280 : mat(k,158) = rxt(k,23)
378 34145280 : mat(k,422) = .330_r8*rxt(k,25)
379 34145280 : mat(k,312) = rxt(k,58)
380 34145280 : mat(k,334) = rxt(k,59)
381 34145280 : mat(k,1841) = rxt(k,98)
382 34145280 : mat(k,1808) = .500_r8*rxt(k,560)
383 34145280 : mat(k,1861) = -( rxt(k,98) + het_rates(k,134) )
384 34145280 : mat(k,1898) = -( rxt(k,99) + rxt(k,358) + het_rates(k,135) )
385 34145280 : mat(k,1034) = rxt(k,63)
386 34145280 : mat(k,606) = rxt(k,95)
387 34145280 : mat(k,388) = -( rxt(k,595) + het_rates(k,136) )
388 34145280 : mat(k,1364) = rxt(k,77) + rxt(k,81)
389 34145280 : mat(k,1415) = rxt(k,85) + rxt(k,87)
390 34145280 : mat(k,197) = rxt(k,579)
391 34145280 : mat(k,202) = rxt(k,580)
392 34145280 : mat(k,200) = -( rxt(k,580) + rxt(k,599) + het_rates(k,137) )
393 34145280 : mat(k,1348) = rxt(k,78) + rxt(k,82)
394 34145280 : mat(k,1407) = rxt(k,83) + rxt(k,92)
395 34145280 : mat(k,194) = rxt(k,581)
396 : mat(k,193) = -( rxt(k,579) + rxt(k,581) + rxt(k,604) + rxt(k,605) &
397 34145280 : + het_rates(k,138) )
398 34145280 : mat(k,1347) = rxt(k,79) + rxt(k,80)
399 34145280 : mat(k,1406) = rxt(k,90) + rxt(k,91)
400 34145280 : mat(k,2090) = -( rxt(k,1) + rxt(k,2) + rxt(k,3) + het_rates(k,139) )
401 34145280 : mat(k,430) = .050_r8*rxt(k,25)
402 34145280 : mat(k,687) = rxt(k,64) + rxt(k,283)
403 34145280 : mat(k,299) = rxt(k,94)
404 34145280 : mat(k,54) = rxt(k,100)
405 34145280 : mat(k,563) = rxt(k,273)
406 34145280 : mat(k,642) = rxt(k,274)
407 34145280 : mat(k,707) = rxt(k,282)
408 34145280 : mat(k,518) = rxt(k,284)
409 34145280 : mat(k,251) = rxt(k,373)
410 34145280 : mat(k,1260) = rxt(k,375)
411 34145280 : mat(k,1709) = rxt(k,377)
412 34145280 : mat(k,1666) = rxt(k,379)
413 35217792 : mat(k,549) = rxt(k,385)
414 : end do
415 1072512 : end subroutine linmat02
416 1072512 : subroutine linmat( avec_len, mat, y, rxt, het_rates )
417 : !----------------------------------------------
418 : ! ... linear matrix entries for implicit species
419 : !----------------------------------------------
420 : use chem_mods, only : gas_pcnst, rxntot, nzcnt
421 : use shr_kind_mod, only : r8 => shr_kind_r8
422 : implicit none
423 : !----------------------------------------------
424 : ! ... dummy arguments
425 : !----------------------------------------------
426 : integer, intent(in) :: avec_len
427 : real(r8), intent(in) :: y(veclen,gas_pcnst)
428 : real(r8), intent(in) :: rxt(veclen,rxntot)
429 : real(r8), intent(in) :: het_rates(veclen,gas_pcnst)
430 : real(r8), intent(inout) :: mat(veclen,nzcnt)
431 1072512 : call linmat01( avec_len, mat, y, rxt, het_rates )
432 1072512 : call linmat02( avec_len, mat, y, rxt, het_rates )
433 1072512 : end subroutine linmat
434 : end module mo_lin_matrix
|