Line data Source code
1 : module mo_lin_matrix
2 : use chem_mods, only: veclen
3 : private
4 : public :: linmat
5 : contains
6 1050636 : 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 34670988 : do k = 1,avec_len
26 33620352 : mat(k,532) = -( rxt(k,19) + het_rates(k,1) )
27 33620352 : mat(k,521) = -( rxt(k,20) + het_rates(k,2) )
28 33620352 : mat(k,759) = -( het_rates(k,4) )
29 33620352 : mat(k,88) = -( het_rates(k,5) )
30 33620352 : mat(k,313) = -( rxt(k,21) + het_rates(k,6) )
31 33620352 : mat(k,94) = -( rxt(k,22) + het_rates(k,7) )
32 33620352 : mat(k,319) = -( rxt(k,23) + het_rates(k,8) )
33 33620352 : mat(k,352) = -( rxt(k,24) + het_rates(k,9) )
34 33620352 : mat(k,314) = .500_r8*rxt(k,21)
35 33620352 : mat(k,95) = rxt(k,22)
36 33620352 : mat(k,492) = .200_r8*rxt(k,70)
37 33620352 : mat(k,552) = .060_r8*rxt(k,72)
38 33620352 : mat(k,207) = -( rxt(k,25) + het_rates(k,10) )
39 33620352 : mat(k,491) = .200_r8*rxt(k,70)
40 33620352 : mat(k,550) = .200_r8*rxt(k,72)
41 33620352 : mat(k,502) = -( rxt(k,26) + het_rates(k,11) )
42 33620352 : mat(k,150) = rxt(k,46)
43 33620352 : mat(k,869) = rxt(k,56)
44 33620352 : mat(k,494) = .200_r8*rxt(k,70)
45 33620352 : mat(k,553) = .150_r8*rxt(k,72)
46 33620352 : mat(k,244) = -( rxt(k,27) + het_rates(k,12) )
47 33620352 : mat(k,551) = .210_r8*rxt(k,72)
48 33620352 : mat(k,154) = -( het_rates(k,13) )
49 33620352 : mat(k,257) = -( het_rates(k,14) )
50 33620352 : mat(k,1247) = -( het_rates(k,15) )
51 33620352 : mat(k,164) = rxt(k,74)
52 33620352 : mat(k,1518) = rxt(k,75)
53 33620352 : mat(k,416) = rxt(k,77)
54 33620352 : mat(k,695) = rxt(k,99)
55 33620352 : mat(k,649) = rxt(k,105)
56 : mat(k,1340) = rxt(k,190)*y(k,32) + rxt(k,216)*y(k,33) &
57 : + 3.000_r8*rxt(k,217)*y(k,53) + 2.000_r8*rxt(k,218)*y(k,73) &
58 33620352 : + 2.000_r8*rxt(k,239)*y(k,39) + rxt(k,240)*y(k,41)
59 : mat(k,1951) = 2.000_r8*rxt(k,227)*y(k,39) + rxt(k,229)*y(k,41) &
60 33620352 : + 3.000_r8*rxt(k,234)*y(k,53)
61 : mat(k,1494) = 2.000_r8*rxt(k,228)*y(k,39) + rxt(k,230)*y(k,41) &
62 33620352 : + 3.000_r8*rxt(k,235)*y(k,53)
63 33620352 : mat(k,163) = -( rxt(k,74) + het_rates(k,16) )
64 33620352 : mat(k,1524) = -( rxt(k,75) + het_rates(k,17) )
65 33620352 : mat(k,418) = rxt(k,76)
66 : mat(k,414) = -( rxt(k,76) + rxt(k,77) + rxt(k,514) + rxt(k,517) + rxt(k,522) &
67 33620352 : + het_rates(k,18) )
68 33620352 : mat(k,157) = -( het_rates(k,20) )
69 33620352 : mat(k,238) = rxt(k,28)
70 33620352 : mat(k,239) = -( rxt(k,28) + het_rates(k,21) )
71 33620352 : mat(k,201) = -( het_rates(k,22) )
72 33620352 : mat(k,442) = -( het_rates(k,23) )
73 33620352 : mat(k,166) = -( het_rates(k,24) )
74 33620352 : mat(k,213) = -( rxt(k,29) + het_rates(k,25) )
75 33620352 : mat(k,195) = -( het_rates(k,26) )
76 33620352 : mat(k,840) = -( het_rates(k,27) )
77 33620352 : mat(k,1130) = .700_r8*rxt(k,55)
78 33620352 : mat(k,307) = -( rxt(k,30) + het_rates(k,28) )
79 33620352 : mat(k,66) = -( het_rates(k,29) )
80 33620352 : mat(k,170) = -( rxt(k,31) + het_rates(k,30) )
81 33620352 : mat(k,1548) = -( rxt(k,32) + rxt(k,33) + het_rates(k,40) )
82 33620352 : mat(k,539) = .100_r8*rxt(k,19)
83 33620352 : mat(k,529) = .100_r8*rxt(k,20)
84 33620352 : mat(k,299) = rxt(k,38)
85 33620352 : mat(k,867) = rxt(k,43)
86 33620352 : mat(k,920) = .330_r8*rxt(k,45)
87 33620352 : mat(k,929) = rxt(k,47)
88 33620352 : mat(k,601) = .690_r8*rxt(k,49)
89 33620352 : mat(k,1067) = 1.340_r8*rxt(k,50)
90 33620352 : mat(k,733) = rxt(k,57)
91 33620352 : mat(k,427) = rxt(k,62)
92 33620352 : mat(k,305) = rxt(k,63)
93 33620352 : mat(k,489) = .375_r8*rxt(k,65)
94 33620352 : mat(k,371) = .400_r8*rxt(k,67)
95 33620352 : mat(k,891) = .680_r8*rxt(k,69)
96 33620352 : mat(k,341) = rxt(k,259)
97 33620352 : mat(k,181) = 2.000_r8*rxt(k,289)
98 33620352 : mat(k,1347) = rxt(k,262)*y(k,52) + rxt(k,263)*y(k,52)
99 33620352 : mat(k,894) = -( rxt(k,34) + het_rates(k,43) )
100 33620352 : mat(k,536) = .400_r8*rxt(k,19)
101 33620352 : mat(k,526) = .400_r8*rxt(k,20)
102 33620352 : mat(k,215) = rxt(k,29)
103 33620352 : mat(k,910) = .330_r8*rxt(k,45)
104 33620352 : mat(k,225) = rxt(k,53)
105 33620352 : mat(k,424) = rxt(k,62)
106 33620352 : mat(k,57) = -( het_rates(k,45) )
107 33620352 : mat(k,818) = -( rxt(k,35) + het_rates(k,46) )
108 33620352 : mat(k,535) = .250_r8*rxt(k,19)
109 33620352 : mat(k,525) = .250_r8*rxt(k,20)
110 33620352 : mat(k,309) = .820_r8*rxt(k,30)
111 33620352 : mat(k,908) = .170_r8*rxt(k,45)
112 33620352 : mat(k,483) = .300_r8*rxt(k,65)
113 33620352 : mat(k,367) = .050_r8*rxt(k,67)
114 33620352 : mat(k,884) = .500_r8*rxt(k,69)
115 33620352 : mat(k,1072) = -( rxt(k,36) + het_rates(k,47) )
116 33620352 : mat(k,322) = .180_r8*rxt(k,23)
117 33620352 : mat(k,246) = rxt(k,27)
118 33620352 : mat(k,499) = .400_r8*rxt(k,70)
119 33620352 : mat(k,561) = .540_r8*rxt(k,72)
120 33620352 : mat(k,328) = .510_r8*rxt(k,73)
121 33620352 : mat(k,430) = -( het_rates(k,48) )
122 33620352 : mat(k,401) = -( rxt(k,37) + het_rates(k,49) )
123 33620352 : mat(k,656) = -( het_rates(k,50) )
124 33620352 : mat(k,295) = -( rxt(k,38) + het_rates(k,51) )
125 : mat(k,1966) = -( rxt(k,165)*y(k,52) + rxt(k,227)*y(k,39) + rxt(k,229)*y(k,41) &
126 33620352 : + rxt(k,232)*y(k,44) + rxt(k,234)*y(k,53) + het_rates(k,54) )
127 33620352 : mat(k,165) = rxt(k,74)
128 33620352 : mat(k,86) = 2.000_r8*rxt(k,91)
129 33620352 : mat(k,62) = 2.000_r8*rxt(k,92)
130 33620352 : mat(k,1718) = rxt(k,93)
131 33620352 : mat(k,833) = rxt(k,94)
132 33620352 : mat(k,106) = rxt(k,97)
133 33620352 : mat(k,1932) = rxt(k,103)
134 33620352 : mat(k,681) = rxt(k,106)
135 : mat(k,1355) = 4.000_r8*rxt(k,189)*y(k,31) + rxt(k,190)*y(k,32) &
136 : + 2.000_r8*rxt(k,191)*y(k,34) + 2.000_r8*rxt(k,192)*y(k,35) &
137 : + 2.000_r8*rxt(k,193)*y(k,36) + rxt(k,194)*y(k,37) &
138 : + 2.000_r8*rxt(k,195)*y(k,38) + rxt(k,241)*y(k,77) &
139 33620352 : + rxt(k,242)*y(k,78) + rxt(k,243)*y(k,79)
140 : mat(k,1509) = 3.000_r8*rxt(k,231)*y(k,42) + rxt(k,233)*y(k,44) &
141 33620352 : + rxt(k,236)*y(k,77) + rxt(k,237)*y(k,78) + rxt(k,238)*y(k,79)
142 33620352 : mat(k,85) = -( rxt(k,91) + het_rates(k,55) )
143 33620352 : mat(k,60) = -( rxt(k,92) + rxt(k,199) + het_rates(k,56) )
144 33620352 : mat(k,1713) = -( rxt(k,93) + het_rates(k,57) )
145 33620352 : mat(k,830) = rxt(k,95)
146 33620352 : mat(k,232) = rxt(k,107)
147 33620352 : mat(k,61) = 2.000_r8*rxt(k,199)
148 : mat(k,826) = -( rxt(k,94) + rxt(k,95) + rxt(k,516) + rxt(k,521) + rxt(k,527) &
149 33620352 : + het_rates(k,58) )
150 33620352 : mat(k,903) = -( het_rates(k,60) )
151 33620352 : mat(k,96) = 1.500_r8*rxt(k,22)
152 33620352 : mat(k,321) = .450_r8*rxt(k,23)
153 33620352 : mat(k,504) = .600_r8*rxt(k,26)
154 33620352 : mat(k,245) = rxt(k,27)
155 33620352 : mat(k,1539) = rxt(k,32) + rxt(k,33)
156 33620352 : mat(k,895) = rxt(k,34)
157 33620352 : mat(k,1071) = rxt(k,36)
158 33620352 : mat(k,865) = rxt(k,43)
159 33620352 : mat(k,737) = 2.000_r8*rxt(k,44)
160 33620352 : mat(k,911) = .330_r8*rxt(k,45)
161 33620352 : mat(k,1059) = 1.340_r8*rxt(k,51)
162 33620352 : mat(k,1132) = .700_r8*rxt(k,55)
163 33620352 : mat(k,125) = 1.500_r8*rxt(k,64)
164 33620352 : mat(k,486) = .250_r8*rxt(k,65)
165 33620352 : mat(k,857) = rxt(k,68)
166 33620352 : mat(k,886) = 1.700_r8*rxt(k,69)
167 33620352 : mat(k,252) = rxt(k,110)
168 33620352 : mat(k,1948) = rxt(k,232)*y(k,44)
169 33620352 : mat(k,70) = -( rxt(k,96) + het_rates(k,62) )
170 : mat(k,1334) = rxt(k,190)*y(k,32) + rxt(k,192)*y(k,35) &
171 : + 2.000_r8*rxt(k,193)*y(k,36) + 2.000_r8*rxt(k,194)*y(k,37) &
172 : + rxt(k,195)*y(k,38) + rxt(k,216)*y(k,33) &
173 : + 2.000_r8*rxt(k,218)*y(k,73) + rxt(k,242)*y(k,78) &
174 33620352 : + rxt(k,243)*y(k,79)
175 33620352 : mat(k,1375) = rxt(k,237)*y(k,78) + rxt(k,238)*y(k,79)
176 33620352 : mat(k,103) = -( rxt(k,97) + het_rates(k,63) )
177 33620352 : mat(k,1335) = rxt(k,191)*y(k,34) + rxt(k,192)*y(k,35) + rxt(k,241)*y(k,77)
178 33620352 : mat(k,1380) = rxt(k,236)*y(k,77)
179 33620352 : mat(k,119) = -( het_rates(k,64) )
180 33620352 : mat(k,183) = -( het_rates(k,65) )
181 33620352 : mat(k,73) = -( rxt(k,42) + het_rates(k,67) )
182 33620352 : mat(k,639) = -( rxt(k,221)*y(k,52) + het_rates(k,68) )
183 33620352 : mat(k,71) = 2.000_r8*rxt(k,96)
184 33620352 : mat(k,104) = rxt(k,97)
185 33620352 : mat(k,147) = rxt(k,104)
186 33620352 : mat(k,1337) = rxt(k,194)*y(k,37) + rxt(k,216)*y(k,33)
187 33620352 : mat(k,864) = -( rxt(k,43) + het_rates(k,69) )
188 33620352 : mat(k,909) = .330_r8*rxt(k,45)
189 33620352 : mat(k,484) = .250_r8*rxt(k,65)
190 33620352 : mat(k,180) = rxt(k,290)
191 33620352 : mat(k,736) = -( rxt(k,44) + rxt(k,470) + het_rates(k,70) )
192 33620352 : mat(k,316) = rxt(k,21)
193 33620352 : mat(k,320) = .130_r8*rxt(k,23)
194 33620352 : mat(k,235) = .700_r8*rxt(k,61)
195 33620352 : mat(k,498) = .600_r8*rxt(k,70)
196 33620352 : mat(k,558) = .340_r8*rxt(k,72)
197 33620352 : mat(k,327) = .170_r8*rxt(k,73)
198 33620352 : mat(k,1273) = -( rxt(k,127) + het_rates(k,71) )
199 33620352 : mat(k,2035) = rxt(k,2) + 2.000_r8*rxt(k,3)
200 33620352 : mat(k,1543) = 2.000_r8*rxt(k,32)
201 33620352 : mat(k,296) = rxt(k,38)
202 33620352 : mat(k,696) = rxt(k,99)
203 33620352 : mat(k,1919) = rxt(k,103)
204 33620352 : mat(k,148) = rxt(k,104)
205 33620352 : mat(k,1342) = rxt(k,262)*y(k,52)
206 33620352 : mat(k,1024) = -( het_rates(k,72) )
207 33620352 : mat(k,2031) = rxt(k,1)
208 33620352 : mat(k,1540) = rxt(k,33)
209 33620352 : mat(k,1339) = rxt(k,263)*y(k,52)
210 33620352 : mat(k,466) = -( rxt(k,4) + het_rates(k,74) )
211 33620352 : mat(k,76) = -( rxt(k,109) + het_rates(k,75) )
212 33620352 : mat(k,694) = -( rxt(k,99) + het_rates(k,76) )
213 33620352 : mat(k,1931) = -( rxt(k,103) + het_rates(k,80) )
214 : mat(k,1965) = rxt(k,165)*y(k,52) + rxt(k,227)*y(k,39) + rxt(k,229)*y(k,41) &
215 33620352 : + 2.000_r8*rxt(k,232)*y(k,44) + rxt(k,234)*y(k,53)
216 33620352 : mat(k,107) = -( het_rates(k,81) )
217 33620352 : mat(k,671) = -( het_rates(k,82) )
218 33620352 : mat(k,146) = -( rxt(k,104) + het_rates(k,83) )
219 33620352 : mat(k,638) = rxt(k,221)*y(k,52)
220 33620352 : mat(k,1260) = -( rxt(k,9) + het_rates(k,84) )
221 33620352 : mat(k,916) = rxt(k,472)
222 33620352 : mat(k,477) = rxt(k,473)
223 33620352 : mat(k,439) = rxt(k,474)
224 : mat(k,190) = 2.000_r8*rxt(k,475) + 2.000_r8*rxt(k,512) + 2.000_r8*rxt(k,515) &
225 33620352 : + 2.000_r8*rxt(k,526)
226 33620352 : mat(k,286) = rxt(k,476)
227 33620352 : mat(k,877) = rxt(k,477)
228 33620352 : mat(k,1895) = .500_r8*rxt(k,479)
229 33620352 : mat(k,2009) = rxt(k,480)
230 33620352 : mat(k,292) = rxt(k,481)
231 33620352 : mat(k,161) = rxt(k,482)
232 33620352 : mat(k,508) = rxt(k,483)
233 33620352 : mat(k,417) = rxt(k,514) + rxt(k,517) + rxt(k,522)
234 34670988 : mat(k,827) = rxt(k,516) + rxt(k,521) + rxt(k,527)
235 : end do
236 1050636 : end subroutine linmat01
237 1050636 : 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 34670988 : do k = 1,avec_len
257 33620352 : mat(k,265) = -( rxt(k,10) + rxt(k,11) + rxt(k,162) + het_rates(k,85) )
258 33620352 : mat(k,648) = -( rxt(k,105) + het_rates(k,86) )
259 33620352 : mat(k,415) = rxt(k,514) + rxt(k,517) + rxt(k,522)
260 33620352 : mat(k,676) = -( rxt(k,106) + het_rates(k,87) )
261 33620352 : mat(k,825) = rxt(k,516) + rxt(k,521) + rxt(k,527)
262 33620352 : mat(k,912) = -( rxt(k,45) + rxt(k,472) + het_rates(k,88) )
263 33620352 : mat(k,149) = -( rxt(k,46) + het_rates(k,89) )
264 33620352 : mat(k,1096) = rxt(k,363)
265 33620352 : mat(k,925) = -( rxt(k,47) + het_rates(k,90) )
266 33620352 : mat(k,913) = .170_r8*rxt(k,45)
267 33620352 : mat(k,210) = -( het_rates(k,91) )
268 33620352 : mat(k,79) = -( het_rates(k,92) )
269 33620352 : mat(k,706) = -( het_rates(k,93) )
270 33620352 : mat(k,473) = -( rxt(k,473) + het_rates(k,94) )
271 33620352 : mat(k,434) = -( rxt(k,474) + het_rates(k,95) )
272 33620352 : mat(k,1044) = -( het_rates(k,96) )
273 33620352 : mat(k,271) = -( rxt(k,48) + het_rates(k,97) )
274 33620352 : mat(k,596) = -( rxt(k,49) + het_rates(k,98) )
275 33620352 : mat(k,272) = rxt(k,48)
276 33620352 : mat(k,38) = -( het_rates(k,99) )
277 33620352 : mat(k,1060) = -( rxt(k,50) + rxt(k,51) + het_rates(k,100) )
278 33620352 : mat(k,598) = .288_r8*rxt(k,49)
279 33620352 : mat(k,218) = -( het_rates(k,101) )
280 33620352 : mat(k,396) = -( rxt(k,52) + het_rates(k,102) )
281 33620352 : mat(k,531) = .800_r8*rxt(k,19)
282 33620352 : mat(k,520) = .800_r8*rxt(k,20)
283 33620352 : mat(k,223) = -( rxt(k,53) + het_rates(k,103) )
284 33620352 : mat(k,458) = -( rxt(k,54) + rxt(k,345) + het_rates(k,104) )
285 33620352 : mat(k,786) = -( het_rates(k,105) )
286 33620352 : mat(k,1135) = -( rxt(k,55) + het_rates(k,106) )
287 33620352 : mat(k,599) = .402_r8*rxt(k,49)
288 33620352 : mat(k,277) = -( rxt(k,144) + het_rates(k,107) )
289 33620352 : mat(k,1739) = rxt(k,15)
290 : mat(k,189) = -( rxt(k,13) + rxt(k,14) + rxt(k,163) + rxt(k,475) + rxt(k,512) &
291 33620352 : + rxt(k,515) + rxt(k,526) + het_rates(k,109) )
292 33620352 : mat(k,283) = -( rxt(k,476) + het_rates(k,110) )
293 33620352 : mat(k,873) = -( rxt(k,56) + rxt(k,477) + het_rates(k,111) )
294 33620352 : mat(k,63) = -( het_rates(k,112) )
295 33620352 : mat(k,1) = -( rxt(k,478) + het_rates(k,113) )
296 33620352 : mat(k,1804) = -( rxt(k,15) + het_rates(k,116) )
297 33620352 : mat(k,192) = rxt(k,14)
298 33620352 : mat(k,1905) = rxt(k,16) + .500_r8*rxt(k,479)
299 33620352 : mat(k,2019) = rxt(k,17)
300 33620352 : mat(k,281) = rxt(k,144)
301 33620352 : mat(k,1351) = 2.000_r8*rxt(k,156)*y(k,108)
302 33620352 : mat(k,1907) = -( rxt(k,16) + rxt(k,479) + het_rates(k,117) )
303 33620352 : mat(k,1266) = rxt(k,9)
304 33620352 : mat(k,268) = rxt(k,11) + rxt(k,162)
305 33620352 : mat(k,193) = rxt(k,13) + rxt(k,163)
306 33620352 : mat(k,2021) = rxt(k,18)
307 33620352 : mat(k,541) = rxt(k,19)
308 33620352 : mat(k,922) = rxt(k,45)
309 33620352 : mat(k,276) = rxt(k,48)
310 33620352 : mat(k,464) = rxt(k,54) + rxt(k,345)
311 33620352 : mat(k,883) = rxt(k,56)
312 33620352 : mat(k,734) = rxt(k,57)
313 33620352 : mat(k,294) = rxt(k,58)
314 33620352 : mat(k,162) = rxt(k,59)
315 33620352 : mat(k,360) = .600_r8*rxt(k,60) + rxt(k,296)
316 33620352 : mat(k,511) = rxt(k,66)
317 33620352 : mat(k,420) = rxt(k,76)
318 33620352 : mat(k,831) = rxt(k,95)
319 33620352 : mat(k,84) = rxt(k,420)
320 33620352 : mat(k,2024) = -( rxt(k,17) + rxt(k,18) + rxt(k,480) + het_rates(k,118) )
321 33620352 : mat(k,269) = rxt(k,10)
322 33620352 : mat(k,194) = rxt(k,13) + rxt(k,14) + rxt(k,163)
323 33620352 : mat(k,361) = .400_r8*rxt(k,60)
324 33620352 : mat(k,421) = rxt(k,77)
325 33620352 : mat(k,834) = rxt(k,94)
326 33620352 : mat(k,729) = -( rxt(k,57) + het_rates(k,119) )
327 33620352 : mat(k,289) = -( rxt(k,58) + rxt(k,481) + het_rates(k,120) )
328 33620352 : mat(k,1579) = -( rxt(k,121) + het_rates(k,121) )
329 33620352 : mat(k,2041) = rxt(k,3)
330 33620352 : mat(k,1861) = rxt(k,8)
331 33620352 : mat(k,191) = rxt(k,14)
332 33620352 : mat(k,1801) = rxt(k,15)
333 33620352 : mat(k,1902) = rxt(k,16)
334 33620352 : mat(k,2016) = rxt(k,18)
335 33620352 : mat(k,1526) = rxt(k,75)
336 33620352 : mat(k,1711) = rxt(k,93)
337 33620352 : mat(k,231) = rxt(k,107)
338 33620352 : mat(k,1088) = rxt(k,111) + rxt(k,462)
339 33620352 : mat(k,726) = rxt(k,112)
340 33620352 : mat(k,177) = rxt(k,113)
341 33620352 : mat(k,1348) = rxt(k,116) + rxt(k,117)
342 33620352 : mat(k,280) = rxt(k,144)
343 33620352 : mat(k,394) = rxt(k,456)
344 33620352 : mat(k,1865) = -( rxt(k,7) + rxt(k,8) + het_rates(k,122) )
345 33620352 : mat(k,1583) = rxt(k,121)
346 33620352 : mat(k,228) = -( rxt(k,107) + het_rates(k,124) )
347 33620352 : mat(k,249) = -( rxt(k,110) + het_rates(k,125) )
348 33620352 : mat(k,160) = -( rxt(k,59) + rxt(k,482) + het_rates(k,126) )
349 33620352 : mat(k,355) = -( rxt(k,60) + rxt(k,296) + het_rates(k,127) )
350 33620352 : mat(k,82) = -( rxt(k,420) + het_rates(k,128) )
351 33620352 : mat(k,362) = -( het_rates(k,129) )
352 33620352 : mat(k,171) = rxt(k,31)
353 33620352 : mat(k,98) = -( het_rates(k,130) )
354 33620352 : mat(k,233) = -( rxt(k,61) + het_rates(k,131) )
355 33620352 : mat(k,422) = -( rxt(k,62) + het_rates(k,132) )
356 33620352 : mat(k,301) = -( rxt(k,63) + het_rates(k,133) )
357 33620352 : mat(k,390) = -( rxt(k,456) + het_rates(k,134) )
358 33620352 : mat(k,250) = rxt(k,110)
359 33620352 : mat(k,1081) = rxt(k,111)
360 33620352 : mat(k,1083) = -( rxt(k,111) + rxt(k,462) + het_rates(k,136) )
361 33620352 : mat(k,724) = rxt(k,112)
362 33620352 : mat(k,391) = rxt(k,456)
363 33620352 : mat(k,723) = -( rxt(k,112) + het_rates(k,137) )
364 33620352 : mat(k,176) = rxt(k,113)
365 33620352 : mat(k,1082) = rxt(k,462)
366 33620352 : mat(k,175) = -( rxt(k,113) + het_rates(k,138) )
367 33620352 : mat(k,77) = rxt(k,109)
368 33620352 : mat(k,2) = -( het_rates(k,139) )
369 33620352 : mat(k,735) = rxt(k,470)
370 33620352 : mat(k,3) = -( het_rates(k,140) )
371 33620352 : mat(k,4) = -( het_rates(k,141) )
372 33620352 : mat(k,5) = -( het_rates(k,142) )
373 33620352 : mat(k,6) = -( het_rates(k,143) )
374 33620352 : mat(k,12) = -( het_rates(k,145) )
375 33620352 : mat(k,124) = -( rxt(k,64) + het_rates(k,146) )
376 33620352 : mat(k,482) = -( rxt(k,65) + het_rates(k,147) )
377 33620352 : mat(k,506) = -( rxt(k,66) + rxt(k,483) + het_rates(k,148) )
378 33620352 : mat(k,366) = -( rxt(k,67) + het_rates(k,149) )
379 33620352 : mat(k,855) = -( rxt(k,68) + het_rates(k,150) )
380 33620352 : mat(k,290) = rxt(k,58)
381 33620352 : mat(k,507) = rxt(k,66)
382 33620352 : mat(k,368) = rxt(k,67)
383 33620352 : mat(k,885) = -( rxt(k,69) + het_rates(k,151) )
384 33620352 : mat(k,485) = rxt(k,65)
385 33620352 : mat(k,856) = rxt(k,68)
386 33620352 : mat(k,493) = -( rxt(k,70) + het_rates(k,152) )
387 33620352 : mat(k,112) = -( het_rates(k,153) )
388 33620352 : mat(k,128) = -( rxt(k,71) + het_rates(k,154) )
389 33620352 : mat(k,133) = -( het_rates(k,155) )
390 33620352 : mat(k,554) = -( rxt(k,72) + het_rates(k,156) )
391 33620352 : mat(k,141) = -( het_rates(k,157) )
392 33620352 : mat(k,325) = -( rxt(k,73) + het_rates(k,158) )
393 33620352 : mat(k,408) = -( het_rates(k,161) )
394 33620352 : mat(k,83) = rxt(k,420)
395 33620352 : mat(k,808) = -( het_rates(k,162) )
396 33620352 : mat(k,18) = -( het_rates(k,163) )
397 33620352 : mat(k,375) = -( het_rates(k,164) )
398 33620352 : mat(k,24) = -( het_rates(k,165) )
399 33620352 : mat(k,333) = -( het_rates(k,166) )
400 33620352 : mat(k,686) = -( het_rates(k,167) )
401 33620352 : mat(k,398) = rxt(k,52)
402 33620352 : mat(k,661) = -( het_rates(k,168) )
403 33620352 : mat(k,514) = -( het_rates(k,169) )
404 33620352 : mat(k,1233) = -( het_rates(k,170) )
405 33620352 : mat(k,323) = .130_r8*rxt(k,23)
406 33620352 : mat(k,247) = rxt(k,27)
407 33620352 : mat(k,820) = rxt(k,35)
408 33620352 : mat(k,1073) = rxt(k,36)
409 33620352 : mat(k,915) = .330_r8*rxt(k,45)
410 33620352 : mat(k,927) = rxt(k,47)
411 33620352 : mat(k,1064) = 1.340_r8*rxt(k,50)
412 33620352 : mat(k,399) = rxt(k,52)
413 33620352 : mat(k,226) = rxt(k,53)
414 33620352 : mat(k,1137) = .300_r8*rxt(k,55)
415 33620352 : mat(k,731) = rxt(k,57)
416 33620352 : mat(k,356) = .600_r8*rxt(k,60) + rxt(k,296)
417 33620352 : mat(k,303) = rxt(k,63)
418 33620352 : mat(k,126) = .500_r8*rxt(k,64)
419 33620352 : mat(k,888) = .650_r8*rxt(k,69)
420 33620352 : mat(k,1320) = -( het_rates(k,171) )
421 33620352 : mat(k,898) = rxt(k,34)
422 33620352 : mat(k,821) = rxt(k,35)
423 33620352 : mat(k,403) = rxt(k,37)
424 33620352 : mat(k,1140) = .300_r8*rxt(k,55)
425 33620352 : mat(k,357) = .400_r8*rxt(k,60)
426 33620352 : mat(k,1954) = rxt(k,165)*y(k,52)
427 33620352 : mat(k,643) = rxt(k,221)*y(k,52)
428 33620352 : mat(k,1497) = rxt(k,254)*y(k,52)
429 33620352 : mat(k,1343) = rxt(k,261)*y(k,52)
430 33620352 : mat(k,620) = -( het_rates(k,172) )
431 33620352 : mat(k,208) = .600_r8*rxt(k,25)
432 33620352 : mat(k,450) = -( het_rates(k,173) )
433 33620352 : mat(k,179) = -( rxt(k,289) + rxt(k,290) + het_rates(k,174) )
434 33620352 : mat(k,74) = rxt(k,42)
435 33620352 : mat(k,567) = -( het_rates(k,175) )
436 33620352 : mat(k,1686) = -( rxt(k,471) + het_rates(k,176) )
437 33620352 : mat(k,267) = rxt(k,11) + rxt(k,162)
438 33620352 : mat(k,540) = rxt(k,19)
439 33620352 : mat(k,530) = .900_r8*rxt(k,20)
440 33620352 : mat(k,318) = rxt(k,21)
441 33620352 : mat(k,97) = 1.500_r8*rxt(k,22)
442 33620352 : mat(k,324) = .560_r8*rxt(k,23)
443 33620352 : mat(k,354) = rxt(k,24)
444 33620352 : mat(k,209) = .600_r8*rxt(k,25)
445 33620352 : mat(k,505) = .600_r8*rxt(k,26)
446 33620352 : mat(k,248) = rxt(k,27)
447 33620352 : mat(k,243) = rxt(k,28)
448 33620352 : mat(k,217) = rxt(k,29)
449 33620352 : mat(k,311) = rxt(k,30)
450 33620352 : mat(k,900) = rxt(k,34)
451 33620352 : mat(k,1077) = rxt(k,36)
452 33620352 : mat(k,868) = 2.000_r8*rxt(k,43)
453 33620352 : mat(k,739) = 2.000_r8*rxt(k,44)
454 33620352 : mat(k,921) = .670_r8*rxt(k,45)
455 33620352 : mat(k,153) = rxt(k,46)
456 33620352 : mat(k,930) = rxt(k,47)
457 33620352 : mat(k,275) = rxt(k,48)
458 33620352 : mat(k,602) = rxt(k,49)
459 33620352 : mat(k,1068) = 1.340_r8*rxt(k,50) + .660_r8*rxt(k,51)
460 33620352 : mat(k,881) = rxt(k,56)
461 33620352 : mat(k,237) = rxt(k,61)
462 33620352 : mat(k,428) = rxt(k,62)
463 33620352 : mat(k,127) = rxt(k,64)
464 33620352 : mat(k,490) = rxt(k,65)
465 33620352 : mat(k,510) = rxt(k,66)
466 33620352 : mat(k,372) = rxt(k,67)
467 33620352 : mat(k,861) = rxt(k,68)
468 33620352 : mat(k,892) = 1.200_r8*rxt(k,69)
469 33620352 : mat(k,501) = rxt(k,70)
470 33620352 : mat(k,564) = rxt(k,72)
471 33620352 : mat(k,330) = rxt(k,73)
472 33620352 : mat(k,1278) = rxt(k,127)
473 33620352 : mat(k,342) = rxt(k,259)
474 33620352 : mat(k,182) = rxt(k,289) + rxt(k,290)
475 33620352 : mat(k,1123) = rxt(k,363)
476 33620352 : mat(k,1960) = rxt(k,229)*y(k,41) + rxt(k,232)*y(k,44)
477 33620352 : mat(k,1503) = rxt(k,230)*y(k,41) + rxt(k,233)*y(k,44)
478 34670988 : mat(k,1349) = rxt(k,262)*y(k,52)
479 : end do
480 1050636 : end subroutine linmat02
481 1050636 : subroutine linmat03( avec_len, mat, y, rxt, het_rates )
482 : !----------------------------------------------
483 : ! ... linear matrix entries for implicit species
484 : !----------------------------------------------
485 : use chem_mods, only : gas_pcnst, rxntot, nzcnt
486 : use shr_kind_mod, only : r8 => shr_kind_r8
487 : implicit none
488 : !----------------------------------------------
489 : ! ... dummy arguments
490 : !----------------------------------------------
491 : integer, intent(in) :: avec_len
492 : real(r8), intent(in) :: y(veclen,gas_pcnst)
493 : real(r8), intent(in) :: rxt(veclen,rxntot)
494 : real(r8), intent(in) :: het_rates(veclen,gas_pcnst)
495 : real(r8), intent(inout) :: mat(veclen,nzcnt)
496 : !----------------------------------------------
497 : ! ... local variables
498 : !----------------------------------------------
499 : integer :: k
500 34670988 : do k = 1,avec_len
501 33620352 : mat(k,339) = -( rxt(k,259) + het_rates(k,177) )
502 33620352 : mat(k,1183) = -( het_rates(k,178) )
503 33620352 : mat(k,1113) = -( rxt(k,363) + het_rates(k,179) )
504 33620352 : mat(k,30) = -( het_rates(k,180) )
505 33620352 : mat(k,36) = -( het_rates(k,181) )
506 33620352 : mat(k,1157) = -( het_rates(k,182) )
507 33620352 : mat(k,574) = -( het_rates(k,183) )
508 33620352 : mat(k,353) = .600_r8*rxt(k,24)
509 33620352 : mat(k,1202) = -( het_rates(k,184) )
510 33620352 : mat(k,1063) = .660_r8*rxt(k,50)
511 33620352 : mat(k,460) = rxt(k,54) + rxt(k,345)
512 33620352 : mat(k,741) = -( het_rates(k,185) )
513 33620352 : mat(k,503) = .600_r8*rxt(k,26)
514 33620352 : mat(k,543) = -( het_rates(k,186) )
515 33620352 : mat(k,44) = -( het_rates(k,187) )
516 33620352 : mat(k,979) = -( het_rates(k,188) )
517 : mat(k,1344) = -( rxt(k,116) + rxt(k,117) + rxt(k,156)*y(k,108) &
518 : + rxt(k,157)*y(k,108) + rxt(k,189)*y(k,31) + rxt(k,190)*y(k,32) &
519 : + rxt(k,191)*y(k,34) + rxt(k,192)*y(k,35) + rxt(k,193)*y(k,36) &
520 : + rxt(k,194)*y(k,37) + rxt(k,195)*y(k,38) + rxt(k,216)*y(k,33) &
521 : + rxt(k,217)*y(k,53) + rxt(k,218)*y(k,73) + rxt(k,239)*y(k,39) &
522 : + rxt(k,240)*y(k,41) + rxt(k,241)*y(k,77) + rxt(k,242)*y(k,78) &
523 : + rxt(k,243)*y(k,79) + rxt(k,261)*y(k,52) + rxt(k,262)*y(k,52) &
524 33620352 : + rxt(k,263)*y(k,52) + het_rates(k,189) )
525 33620352 : mat(k,2037) = rxt(k,1)
526 33620352 : mat(k,1857) = rxt(k,7)
527 : mat(k,1499) = -( rxt(k,228)*y(k,39) + rxt(k,230)*y(k,41) + rxt(k,231)*y(k,42) &
528 : + rxt(k,233)*y(k,44) + rxt(k,235)*y(k,53) + rxt(k,236)*y(k,77) &
529 : + rxt(k,237)*y(k,78) + rxt(k,238)*y(k,79) + rxt(k,254)*y(k,52) &
530 33620352 : + het_rates(k,190) )
531 33620352 : mat(k,2038) = rxt(k,2)
532 33620352 : mat(k,467) = 2.000_r8*rxt(k,4)
533 33620352 : mat(k,1264) = rxt(k,9)
534 33620352 : mat(k,266) = rxt(k,10)
535 33620352 : mat(k,528) = rxt(k,20)
536 33620352 : mat(k,317) = rxt(k,21)
537 33620352 : mat(k,242) = rxt(k,28)
538 33620352 : mat(k,216) = rxt(k,29)
539 33620352 : mat(k,310) = rxt(k,30)
540 33620352 : mat(k,173) = rxt(k,31)
541 33620352 : mat(k,404) = rxt(k,37)
542 33620352 : mat(k,298) = rxt(k,38)
543 33620352 : mat(k,75) = rxt(k,42)
544 33620352 : mat(k,152) = rxt(k,46)
545 33620352 : mat(k,227) = rxt(k,53)
546 33620352 : mat(k,293) = rxt(k,58)
547 33620352 : mat(k,236) = rxt(k,61)
548 33620352 : mat(k,426) = rxt(k,62)
549 33620352 : mat(k,304) = rxt(k,63)
550 33620352 : mat(k,488) = rxt(k,65)
551 33620352 : mat(k,370) = rxt(k,67)
552 33620352 : mat(k,500) = rxt(k,70)
553 33620352 : mat(k,130) = rxt(k,71)
554 33620352 : mat(k,563) = rxt(k,72)
555 33620352 : mat(k,329) = rxt(k,73)
556 33620352 : mat(k,650) = rxt(k,105)
557 33620352 : mat(k,677) = rxt(k,106)
558 33620352 : mat(k,1899) = .500_r8*rxt(k,479)
559 33620352 : mat(k,1345) = rxt(k,261)*y(k,52)
560 33620352 : mat(k,346) = -( het_rates(k,191) )
561 33620352 : mat(k,629) = -( het_rates(k,192) )
562 33620352 : mat(k,995) = -( het_rates(k,193) )
563 33620352 : mat(k,887) = .150_r8*rxt(k,69)
564 33620352 : mat(k,960) = -( het_rates(k,194) )
565 33620352 : mat(k,938) = -( het_rates(k,195) )
566 33620352 : mat(k,585) = -( het_rates(k,196) )
567 33620352 : mat(k,50) = -( het_rates(k,197) )
568 33620352 : mat(k,1011) = -( het_rates(k,198) )
569 33620352 : mat(k,609) = -( het_rates(k,199) )
570 33620352 : mat(k,56) = -( het_rates(k,200) )
571 33620352 : mat(k,383) = -( het_rates(k,201) )
572 33620352 : mat(k,2050) = -( rxt(k,1) + rxt(k,2) + rxt(k,3) + het_rates(k,202) )
573 33620352 : mat(k,78) = rxt(k,109)
574 33620352 : mat(k,1694) = rxt(k,471)
575 : mat(k,1511) = rxt(k,228)*y(k,39) + rxt(k,230)*y(k,41) + rxt(k,231)*y(k,42) &
576 34670988 : + rxt(k,233)*y(k,44) + rxt(k,238)*y(k,79) + rxt(k,254)*y(k,52)
577 : end do
578 1050636 : end subroutine linmat03
579 1050636 : subroutine linmat( avec_len, mat, y, rxt, het_rates )
580 : !----------------------------------------------
581 : ! ... linear matrix entries for implicit species
582 : !----------------------------------------------
583 : use chem_mods, only : gas_pcnst, rxntot, nzcnt
584 : use shr_kind_mod, only : r8 => shr_kind_r8
585 : implicit none
586 : !----------------------------------------------
587 : ! ... dummy arguments
588 : !----------------------------------------------
589 : integer, intent(in) :: avec_len
590 : real(r8), intent(in) :: y(veclen,gas_pcnst)
591 : real(r8), intent(in) :: rxt(veclen,rxntot)
592 : real(r8), intent(in) :: het_rates(veclen,gas_pcnst)
593 : real(r8), intent(inout) :: mat(veclen,nzcnt)
594 1050636 : call linmat01( avec_len, mat, y, rxt, het_rates )
595 1050636 : call linmat02( avec_len, mat, y, rxt, het_rates )
596 1050636 : call linmat03( avec_len, mat, y, rxt, het_rates )
597 1050636 : end subroutine linmat
598 : end module mo_lin_matrix
|