Line data Source code
1 : module mo_lu_solve
2 : use chem_mods, only: veclen
3 : private
4 : public :: lu_slv
5 : contains
6 9751000 : subroutine lu_slv01( avec_len, lu, b )
7 : use shr_kind_mod, only : r8 => shr_kind_r8
8 : use chem_mods, only : clscnt4, nzcnt
9 : implicit none
10 : !-----------------------------------------------------------------------
11 : ! ... Dummy args
12 : !-----------------------------------------------------------------------
13 : integer, intent(in) :: avec_len
14 : real(r8), intent(in) :: lu(veclen,max(1,nzcnt))
15 : real(r8), intent(inout) :: b(veclen,clscnt4)
16 : !-----------------------------------------------------------------------
17 : ! ... Local variables
18 : !-----------------------------------------------------------------------
19 : integer :: k
20 : !-----------------------------------------------------------------------
21 : ! ... solve L * y = b
22 : !-----------------------------------------------------------------------
23 318792954 : do k = 1,avec_len
24 309041954 : b(k,47) = b(k,47) - lu(k,3) * b(k,2)
25 309041954 : b(k,48) = b(k,48) - lu(k,4) * b(k,2)
26 309041954 : b(k,26) = b(k,26) - lu(k,6) * b(k,3)
27 309041954 : b(k,50) = b(k,50) - lu(k,7) * b(k,3)
28 309041954 : b(k,11) = b(k,11) - lu(k,9) * b(k,4)
29 309041954 : b(k,58) = b(k,58) - lu(k,10) * b(k,4)
30 309041954 : b(k,49) = b(k,49) - lu(k,12) * b(k,5)
31 309041954 : b(k,49) = b(k,49) - lu(k,15) * b(k,6)
32 309041954 : b(k,48) = b(k,48) - lu(k,17) * b(k,7)
33 309041954 : b(k,26) = b(k,26) - lu(k,19) * b(k,8)
34 309041954 : b(k,48) = b(k,48) - lu(k,20) * b(k,8)
35 309041954 : b(k,50) = b(k,50) - lu(k,21) * b(k,8)
36 309041954 : b(k,41) = b(k,41) - lu(k,23) * b(k,9)
37 309041954 : b(k,48) = b(k,48) - lu(k,24) * b(k,9)
38 309041954 : b(k,26) = b(k,26) - lu(k,26) * b(k,10)
39 309041954 : b(k,40) = b(k,40) - lu(k,27) * b(k,10)
40 309041954 : b(k,36) = b(k,36) - lu(k,30) * b(k,11)
41 309041954 : b(k,46) = b(k,46) - lu(k,31) * b(k,11)
42 309041954 : b(k,58) = b(k,58) - lu(k,32) * b(k,11)
43 309041954 : b(k,36) = b(k,36) - lu(k,34) * b(k,12)
44 309041954 : b(k,38) = b(k,38) - lu(k,35) * b(k,12)
45 309041954 : b(k,44) = b(k,44) - lu(k,36) * b(k,12)
46 309041954 : b(k,45) = b(k,45) - lu(k,37) * b(k,12)
47 309041954 : b(k,54) = b(k,54) - lu(k,38) * b(k,12)
48 309041954 : b(k,38) = b(k,38) - lu(k,40) * b(k,13)
49 309041954 : b(k,44) = b(k,44) - lu(k,41) * b(k,13)
50 309041954 : b(k,46) = b(k,46) - lu(k,42) * b(k,13)
51 309041954 : b(k,53) = b(k,53) - lu(k,43) * b(k,13)
52 309041954 : b(k,55) = b(k,55) - lu(k,44) * b(k,13)
53 309041954 : b(k,36) = b(k,36) - lu(k,46) * b(k,14)
54 309041954 : b(k,39) = b(k,39) - lu(k,47) * b(k,14)
55 309041954 : b(k,46) = b(k,46) - lu(k,48) * b(k,14)
56 309041954 : b(k,47) = b(k,47) - lu(k,49) * b(k,14)
57 309041954 : b(k,21) = b(k,21) - lu(k,51) * b(k,15)
58 309041954 : b(k,24) = b(k,24) - lu(k,52) * b(k,15)
59 309041954 : b(k,36) = b(k,36) - lu(k,53) * b(k,15)
60 309041954 : b(k,39) = b(k,39) - lu(k,54) * b(k,15)
61 309041954 : b(k,40) = b(k,40) - lu(k,55) * b(k,15)
62 309041954 : b(k,46) = b(k,46) - lu(k,56) * b(k,15)
63 309041954 : b(k,54) = b(k,54) - lu(k,57) * b(k,15)
64 309041954 : b(k,40) = b(k,40) - lu(k,59) * b(k,16)
65 309041954 : b(k,43) = b(k,43) - lu(k,60) * b(k,16)
66 309041954 : b(k,51) = b(k,51) - lu(k,61) * b(k,16)
67 309041954 : b(k,54) = b(k,54) - lu(k,62) * b(k,16)
68 309041954 : b(k,58) = b(k,58) - lu(k,63) * b(k,16)
69 309041954 : b(k,44) = b(k,44) - lu(k,65) * b(k,17)
70 309041954 : b(k,45) = b(k,45) - lu(k,66) * b(k,17)
71 309041954 : b(k,49) = b(k,49) - lu(k,67) * b(k,17)
72 309041954 : b(k,53) = b(k,53) - lu(k,68) * b(k,17)
73 309041954 : b(k,54) = b(k,54) - lu(k,69) * b(k,17)
74 309041954 : b(k,58) = b(k,58) - lu(k,70) * b(k,17)
75 309041954 : b(k,19) = b(k,19) - lu(k,72) * b(k,18)
76 309041954 : b(k,23) = b(k,23) - lu(k,73) * b(k,18)
77 309041954 : b(k,30) = b(k,30) - lu(k,74) * b(k,18)
78 309041954 : b(k,31) = b(k,31) - lu(k,75) * b(k,18)
79 309041954 : b(k,46) = b(k,46) - lu(k,76) * b(k,18)
80 309041954 : b(k,55) = b(k,55) - lu(k,77) * b(k,18)
81 309041954 : b(k,23) = b(k,23) - lu(k,79) * b(k,19)
82 309041954 : b(k,31) = b(k,31) - lu(k,80) * b(k,19)
83 309041954 : b(k,32) = b(k,32) - lu(k,81) * b(k,19)
84 309041954 : b(k,46) = b(k,46) - lu(k,82) * b(k,19)
85 309041954 : b(k,49) = b(k,49) - lu(k,83) * b(k,19)
86 309041954 : b(k,27) = b(k,27) - lu(k,85) * b(k,20)
87 309041954 : b(k,38) = b(k,38) - lu(k,86) * b(k,20)
88 309041954 : b(k,41) = b(k,41) - lu(k,87) * b(k,20)
89 309041954 : b(k,44) = b(k,44) - lu(k,88) * b(k,20)
90 309041954 : b(k,46) = b(k,46) - lu(k,89) * b(k,20)
91 309041954 : b(k,53) = b(k,53) - lu(k,90) * b(k,20)
92 309041954 : b(k,57) = b(k,57) - lu(k,91) * b(k,20)
93 309041954 : b(k,40) = b(k,40) - lu(k,93) * b(k,21)
94 309041954 : b(k,45) = b(k,45) - lu(k,94) * b(k,21)
95 309041954 : b(k,54) = b(k,54) - lu(k,95) * b(k,21)
96 309041954 : b(k,42) = b(k,42) - lu(k,97) * b(k,22)
97 309041954 : b(k,45) = b(k,45) - lu(k,98) * b(k,22)
98 309041954 : b(k,46) = b(k,46) - lu(k,99) * b(k,22)
99 309041954 : b(k,48) = b(k,48) - lu(k,100) * b(k,22)
100 309041954 : b(k,54) = b(k,54) - lu(k,101) * b(k,22)
101 309041954 : b(k,58) = b(k,58) - lu(k,102) * b(k,22)
102 309041954 : b(k,25) = b(k,25) - lu(k,104) * b(k,23)
103 309041954 : b(k,31) = b(k,31) - lu(k,105) * b(k,23)
104 309041954 : b(k,32) = b(k,32) - lu(k,106) * b(k,23)
105 309041954 : b(k,33) = b(k,33) - lu(k,107) * b(k,23)
106 309041954 : b(k,34) = b(k,34) - lu(k,108) * b(k,23)
107 309041954 : b(k,35) = b(k,35) - lu(k,109) * b(k,23)
108 309041954 : b(k,46) = b(k,46) - lu(k,110) * b(k,23)
109 309041954 : b(k,49) = b(k,49) - lu(k,111) * b(k,23)
110 309041954 : b(k,39) = b(k,39) - lu(k,113) * b(k,24)
111 309041954 : b(k,40) = b(k,40) - lu(k,114) * b(k,24)
112 309041954 : b(k,46) = b(k,46) - lu(k,115) * b(k,24)
113 309041954 : b(k,49) = b(k,49) - lu(k,116) * b(k,24)
114 309041954 : b(k,52) = b(k,52) - lu(k,117) * b(k,24)
115 309041954 : b(k,54) = b(k,54) - lu(k,118) * b(k,24)
116 309041954 : b(k,33) = b(k,33) - lu(k,120) * b(k,25)
117 309041954 : b(k,34) = b(k,34) - lu(k,121) * b(k,25)
118 309041954 : b(k,35) = b(k,35) - lu(k,122) * b(k,25)
119 309041954 : b(k,46) = b(k,46) - lu(k,123) * b(k,25)
120 309041954 : b(k,38) = b(k,38) - lu(k,126) * b(k,26)
121 309041954 : b(k,40) = b(k,40) - lu(k,127) * b(k,26)
122 309041954 : b(k,43) = b(k,43) - lu(k,128) * b(k,26)
123 309041954 : b(k,44) = b(k,44) - lu(k,129) * b(k,26)
124 309041954 : b(k,54) = b(k,54) - lu(k,130) * b(k,26)
125 309041954 : b(k,56) = b(k,56) - lu(k,131) * b(k,26)
126 309041954 : b(k,58) = b(k,58) - lu(k,132) * b(k,26)
127 309041954 : b(k,41) = b(k,41) - lu(k,135) * b(k,27)
128 309041954 : b(k,42) = b(k,42) - lu(k,136) * b(k,27)
129 309041954 : b(k,46) = b(k,46) - lu(k,137) * b(k,27)
130 309041954 : b(k,48) = b(k,48) - lu(k,138) * b(k,27)
131 309041954 : b(k,54) = b(k,54) - lu(k,139) * b(k,27)
132 309041954 : b(k,57) = b(k,57) - lu(k,140) * b(k,27)
133 309041954 : b(k,58) = b(k,58) - lu(k,141) * b(k,27)
134 309041954 : b(k,42) = b(k,42) - lu(k,144) * b(k,28)
135 309041954 : b(k,46) = b(k,46) - lu(k,145) * b(k,28)
136 309041954 : b(k,47) = b(k,47) - lu(k,146) * b(k,28)
137 309041954 : b(k,48) = b(k,48) - lu(k,147) * b(k,28)
138 309041954 : b(k,54) = b(k,54) - lu(k,148) * b(k,28)
139 309041954 : b(k,58) = b(k,58) - lu(k,149) * b(k,28)
140 309041954 : b(k,40) = b(k,40) - lu(k,151) * b(k,29)
141 309041954 : b(k,41) = b(k,41) - lu(k,152) * b(k,29)
142 309041954 : b(k,46) = b(k,46) - lu(k,153) * b(k,29)
143 309041954 : b(k,50) = b(k,50) - lu(k,154) * b(k,29)
144 309041954 : b(k,54) = b(k,54) - lu(k,155) * b(k,29)
145 309041954 : b(k,57) = b(k,57) - lu(k,156) * b(k,29)
146 309041954 : b(k,58) = b(k,58) - lu(k,157) * b(k,29)
147 309041954 : b(k,31) = b(k,31) - lu(k,160) * b(k,30)
148 309041954 : b(k,32) = b(k,32) - lu(k,161) * b(k,30)
149 309041954 : b(k,33) = b(k,33) - lu(k,162) * b(k,30)
150 309041954 : b(k,34) = b(k,34) - lu(k,163) * b(k,30)
151 309041954 : b(k,35) = b(k,35) - lu(k,164) * b(k,30)
152 309041954 : b(k,46) = b(k,46) - lu(k,165) * b(k,30)
153 309041954 : b(k,49) = b(k,49) - lu(k,166) * b(k,30)
154 309041954 : b(k,32) = b(k,32) - lu(k,171) * b(k,31)
155 309041954 : b(k,33) = b(k,33) - lu(k,172) * b(k,31)
156 309041954 : b(k,34) = b(k,34) - lu(k,173) * b(k,31)
157 309041954 : b(k,35) = b(k,35) - lu(k,174) * b(k,31)
158 309041954 : b(k,40) = b(k,40) - lu(k,175) * b(k,31)
159 309041954 : b(k,45) = b(k,45) - lu(k,176) * b(k,31)
160 309041954 : b(k,46) = b(k,46) - lu(k,177) * b(k,31)
161 309041954 : b(k,49) = b(k,49) - lu(k,178) * b(k,31)
162 309041954 : b(k,54) = b(k,54) - lu(k,179) * b(k,31)
163 309041954 : b(k,33) = b(k,33) - lu(k,182) * b(k,32)
164 309041954 : b(k,34) = b(k,34) - lu(k,183) * b(k,32)
165 309041954 : b(k,35) = b(k,35) - lu(k,184) * b(k,32)
166 309041954 : b(k,46) = b(k,46) - lu(k,185) * b(k,32)
167 309041954 : b(k,49) = b(k,49) - lu(k,186) * b(k,32)
168 309041954 : b(k,50) = b(k,50) - lu(k,187) * b(k,32)
169 309041954 : b(k,55) = b(k,55) - lu(k,188) * b(k,32)
170 309041954 : b(k,34) = b(k,34) - lu(k,197) * b(k,33)
171 309041954 : b(k,35) = b(k,35) - lu(k,198) * b(k,33)
172 309041954 : b(k,40) = b(k,40) - lu(k,199) * b(k,33)
173 309041954 : b(k,45) = b(k,45) - lu(k,200) * b(k,33)
174 309041954 : b(k,46) = b(k,46) - lu(k,201) * b(k,33)
175 309041954 : b(k,49) = b(k,49) - lu(k,202) * b(k,33)
176 309041954 : b(k,50) = b(k,50) - lu(k,203) * b(k,33)
177 309041954 : b(k,54) = b(k,54) - lu(k,204) * b(k,33)
178 309041954 : b(k,55) = b(k,55) - lu(k,205) * b(k,33)
179 309041954 : b(k,35) = b(k,35) - lu(k,211) * b(k,34)
180 309041954 : b(k,40) = b(k,40) - lu(k,212) * b(k,34)
181 309041954 : b(k,45) = b(k,45) - lu(k,213) * b(k,34)
182 309041954 : b(k,46) = b(k,46) - lu(k,214) * b(k,34)
183 309041954 : b(k,49) = b(k,49) - lu(k,215) * b(k,34)
184 309041954 : b(k,50) = b(k,50) - lu(k,216) * b(k,34)
185 309041954 : b(k,54) = b(k,54) - lu(k,217) * b(k,34)
186 309041954 : b(k,55) = b(k,55) - lu(k,218) * b(k,34)
187 309041954 : b(k,40) = b(k,40) - lu(k,226) * b(k,35)
188 309041954 : b(k,45) = b(k,45) - lu(k,227) * b(k,35)
189 309041954 : b(k,46) = b(k,46) - lu(k,228) * b(k,35)
190 309041954 : b(k,49) = b(k,49) - lu(k,229) * b(k,35)
191 309041954 : b(k,50) = b(k,50) - lu(k,230) * b(k,35)
192 309041954 : b(k,53) = b(k,53) - lu(k,231) * b(k,35)
193 309041954 : b(k,54) = b(k,54) - lu(k,232) * b(k,35)
194 309041954 : b(k,55) = b(k,55) - lu(k,233) * b(k,35)
195 309041954 : b(k,39) = b(k,39) - lu(k,236) * b(k,36)
196 309041954 : b(k,45) = b(k,45) - lu(k,237) * b(k,36)
197 309041954 : b(k,46) = b(k,46) - lu(k,238) * b(k,36)
198 309041954 : b(k,54) = b(k,54) - lu(k,239) * b(k,36)
199 309041954 : b(k,58) = b(k,58) - lu(k,240) * b(k,36)
200 309041954 : b(k,38) = b(k,38) - lu(k,244) * b(k,37)
201 309041954 : b(k,42) = b(k,42) - lu(k,245) * b(k,37)
202 309041954 : b(k,44) = b(k,44) - lu(k,246) * b(k,37)
203 309041954 : b(k,46) = b(k,46) - lu(k,247) * b(k,37)
204 309041954 : b(k,47) = b(k,47) - lu(k,248) * b(k,37)
205 309041954 : b(k,48) = b(k,48) - lu(k,249) * b(k,37)
206 309041954 : b(k,53) = b(k,53) - lu(k,250) * b(k,37)
207 309041954 : b(k,54) = b(k,54) - lu(k,251) * b(k,37)
208 309041954 : b(k,58) = b(k,58) - lu(k,252) * b(k,37)
209 309041954 : b(k,40) = b(k,40) - lu(k,256) * b(k,38)
210 309041954 : b(k,43) = b(k,43) - lu(k,257) * b(k,38)
211 309041954 : b(k,44) = b(k,44) - lu(k,258) * b(k,38)
212 309041954 : b(k,53) = b(k,53) - lu(k,259) * b(k,38)
213 309041954 : b(k,54) = b(k,54) - lu(k,260) * b(k,38)
214 309041954 : b(k,56) = b(k,56) - lu(k,261) * b(k,38)
215 309041954 : b(k,58) = b(k,58) - lu(k,262) * b(k,38)
216 309041954 : b(k,40) = b(k,40) - lu(k,267) * b(k,39)
217 309041954 : b(k,41) = b(k,41) - lu(k,268) * b(k,39)
218 309041954 : b(k,45) = b(k,45) - lu(k,269) * b(k,39)
219 309041954 : b(k,46) = b(k,46) - lu(k,270) * b(k,39)
220 309041954 : b(k,47) = b(k,47) - lu(k,271) * b(k,39)
221 309041954 : b(k,48) = b(k,48) - lu(k,272) * b(k,39)
222 309041954 : b(k,49) = b(k,49) - lu(k,273) * b(k,39)
223 309041954 : b(k,52) = b(k,52) - lu(k,274) * b(k,39)
224 309041954 : b(k,53) = b(k,53) - lu(k,275) * b(k,39)
225 309041954 : b(k,54) = b(k,54) - lu(k,276) * b(k,39)
226 309041954 : b(k,55) = b(k,55) - lu(k,277) * b(k,39)
227 309041954 : b(k,57) = b(k,57) - lu(k,278) * b(k,39)
228 318792954 : b(k,58) = b(k,58) - lu(k,279) * b(k,39)
229 : end do
230 9751000 : end subroutine lu_slv01
231 9751000 : subroutine lu_slv02( avec_len, lu, b )
232 : use shr_kind_mod, only : r8 => shr_kind_r8
233 : use chem_mods, only : clscnt4, nzcnt
234 : implicit none
235 : !-----------------------------------------------------------------------
236 : ! ... Dummy args
237 : !-----------------------------------------------------------------------
238 : integer, intent(in) :: avec_len
239 : real(r8), intent(in) :: lu(veclen,max(1,nzcnt))
240 : real(r8), intent(inout) :: b(veclen,clscnt4)
241 : !-----------------------------------------------------------------------
242 : ! ... Local variables
243 : !-----------------------------------------------------------------------
244 : integer :: k
245 : !-----------------------------------------------------------------------
246 : ! ... solve L * y = b
247 : !-----------------------------------------------------------------------
248 318792954 : do k = 1,avec_len
249 309041954 : b(k,45) = b(k,45) - lu(k,281) * b(k,40)
250 309041954 : b(k,46) = b(k,46) - lu(k,282) * b(k,40)
251 309041954 : b(k,49) = b(k,49) - lu(k,283) * b(k,40)
252 309041954 : b(k,52) = b(k,52) - lu(k,284) * b(k,40)
253 309041954 : b(k,54) = b(k,54) - lu(k,285) * b(k,40)
254 309041954 : b(k,56) = b(k,56) - lu(k,286) * b(k,40)
255 309041954 : b(k,58) = b(k,58) - lu(k,287) * b(k,40)
256 309041954 : b(k,45) = b(k,45) - lu(k,292) * b(k,41)
257 309041954 : b(k,46) = b(k,46) - lu(k,293) * b(k,41)
258 309041954 : b(k,49) = b(k,49) - lu(k,294) * b(k,41)
259 309041954 : b(k,50) = b(k,50) - lu(k,295) * b(k,41)
260 309041954 : b(k,51) = b(k,51) - lu(k,296) * b(k,41)
261 309041954 : b(k,52) = b(k,52) - lu(k,297) * b(k,41)
262 309041954 : b(k,54) = b(k,54) - lu(k,298) * b(k,41)
263 309041954 : b(k,56) = b(k,56) - lu(k,299) * b(k,41)
264 309041954 : b(k,57) = b(k,57) - lu(k,300) * b(k,41)
265 309041954 : b(k,58) = b(k,58) - lu(k,301) * b(k,41)
266 309041954 : b(k,43) = b(k,43) - lu(k,311) * b(k,42)
267 309041954 : b(k,44) = b(k,44) - lu(k,312) * b(k,42)
268 309041954 : b(k,45) = b(k,45) - lu(k,313) * b(k,42)
269 309041954 : b(k,46) = b(k,46) - lu(k,314) * b(k,42)
270 309041954 : b(k,47) = b(k,47) - lu(k,315) * b(k,42)
271 309041954 : b(k,48) = b(k,48) - lu(k,316) * b(k,42)
272 309041954 : b(k,49) = b(k,49) - lu(k,317) * b(k,42)
273 309041954 : b(k,50) = b(k,50) - lu(k,318) * b(k,42)
274 309041954 : b(k,51) = b(k,51) - lu(k,319) * b(k,42)
275 309041954 : b(k,52) = b(k,52) - lu(k,320) * b(k,42)
276 309041954 : b(k,53) = b(k,53) - lu(k,321) * b(k,42)
277 309041954 : b(k,54) = b(k,54) - lu(k,322) * b(k,42)
278 309041954 : b(k,56) = b(k,56) - lu(k,323) * b(k,42)
279 309041954 : b(k,57) = b(k,57) - lu(k,324) * b(k,42)
280 309041954 : b(k,58) = b(k,58) - lu(k,325) * b(k,42)
281 309041954 : b(k,45) = b(k,45) - lu(k,329) * b(k,43)
282 309041954 : b(k,46) = b(k,46) - lu(k,330) * b(k,43)
283 309041954 : b(k,47) = b(k,47) - lu(k,331) * b(k,43)
284 309041954 : b(k,48) = b(k,48) - lu(k,332) * b(k,43)
285 309041954 : b(k,49) = b(k,49) - lu(k,333) * b(k,43)
286 309041954 : b(k,51) = b(k,51) - lu(k,334) * b(k,43)
287 309041954 : b(k,52) = b(k,52) - lu(k,335) * b(k,43)
288 309041954 : b(k,53) = b(k,53) - lu(k,336) * b(k,43)
289 309041954 : b(k,54) = b(k,54) - lu(k,337) * b(k,43)
290 309041954 : b(k,55) = b(k,55) - lu(k,338) * b(k,43)
291 309041954 : b(k,56) = b(k,56) - lu(k,339) * b(k,43)
292 309041954 : b(k,58) = b(k,58) - lu(k,340) * b(k,43)
293 309041954 : b(k,45) = b(k,45) - lu(k,351) * b(k,44)
294 309041954 : b(k,46) = b(k,46) - lu(k,352) * b(k,44)
295 309041954 : b(k,47) = b(k,47) - lu(k,353) * b(k,44)
296 309041954 : b(k,48) = b(k,48) - lu(k,354) * b(k,44)
297 309041954 : b(k,49) = b(k,49) - lu(k,355) * b(k,44)
298 309041954 : b(k,50) = b(k,50) - lu(k,356) * b(k,44)
299 309041954 : b(k,51) = b(k,51) - lu(k,357) * b(k,44)
300 309041954 : b(k,52) = b(k,52) - lu(k,358) * b(k,44)
301 309041954 : b(k,53) = b(k,53) - lu(k,359) * b(k,44)
302 309041954 : b(k,54) = b(k,54) - lu(k,360) * b(k,44)
303 309041954 : b(k,55) = b(k,55) - lu(k,361) * b(k,44)
304 309041954 : b(k,56) = b(k,56) - lu(k,362) * b(k,44)
305 309041954 : b(k,57) = b(k,57) - lu(k,363) * b(k,44)
306 309041954 : b(k,58) = b(k,58) - lu(k,364) * b(k,44)
307 309041954 : b(k,46) = b(k,46) - lu(k,377) * b(k,45)
308 309041954 : b(k,47) = b(k,47) - lu(k,378) * b(k,45)
309 309041954 : b(k,48) = b(k,48) - lu(k,379) * b(k,45)
310 309041954 : b(k,49) = b(k,49) - lu(k,380) * b(k,45)
311 309041954 : b(k,50) = b(k,50) - lu(k,381) * b(k,45)
312 309041954 : b(k,51) = b(k,51) - lu(k,382) * b(k,45)
313 309041954 : b(k,52) = b(k,52) - lu(k,383) * b(k,45)
314 309041954 : b(k,53) = b(k,53) - lu(k,384) * b(k,45)
315 309041954 : b(k,54) = b(k,54) - lu(k,385) * b(k,45)
316 309041954 : b(k,55) = b(k,55) - lu(k,386) * b(k,45)
317 309041954 : b(k,56) = b(k,56) - lu(k,387) * b(k,45)
318 309041954 : b(k,57) = b(k,57) - lu(k,388) * b(k,45)
319 309041954 : b(k,58) = b(k,58) - lu(k,389) * b(k,45)
320 309041954 : b(k,47) = b(k,47) - lu(k,421) * b(k,46)
321 309041954 : b(k,48) = b(k,48) - lu(k,422) * b(k,46)
322 309041954 : b(k,49) = b(k,49) - lu(k,423) * b(k,46)
323 309041954 : b(k,50) = b(k,50) - lu(k,424) * b(k,46)
324 309041954 : b(k,51) = b(k,51) - lu(k,425) * b(k,46)
325 309041954 : b(k,52) = b(k,52) - lu(k,426) * b(k,46)
326 309041954 : b(k,53) = b(k,53) - lu(k,427) * b(k,46)
327 309041954 : b(k,54) = b(k,54) - lu(k,428) * b(k,46)
328 309041954 : b(k,55) = b(k,55) - lu(k,429) * b(k,46)
329 309041954 : b(k,56) = b(k,56) - lu(k,430) * b(k,46)
330 309041954 : b(k,57) = b(k,57) - lu(k,431) * b(k,46)
331 309041954 : b(k,58) = b(k,58) - lu(k,432) * b(k,46)
332 309041954 : b(k,48) = b(k,48) - lu(k,450) * b(k,47)
333 309041954 : b(k,49) = b(k,49) - lu(k,451) * b(k,47)
334 309041954 : b(k,50) = b(k,50) - lu(k,452) * b(k,47)
335 309041954 : b(k,51) = b(k,51) - lu(k,453) * b(k,47)
336 309041954 : b(k,52) = b(k,52) - lu(k,454) * b(k,47)
337 309041954 : b(k,53) = b(k,53) - lu(k,455) * b(k,47)
338 309041954 : b(k,54) = b(k,54) - lu(k,456) * b(k,47)
339 309041954 : b(k,55) = b(k,55) - lu(k,457) * b(k,47)
340 309041954 : b(k,56) = b(k,56) - lu(k,458) * b(k,47)
341 309041954 : b(k,57) = b(k,57) - lu(k,459) * b(k,47)
342 309041954 : b(k,58) = b(k,58) - lu(k,460) * b(k,47)
343 309041954 : b(k,49) = b(k,49) - lu(k,476) * b(k,48)
344 309041954 : b(k,50) = b(k,50) - lu(k,477) * b(k,48)
345 309041954 : b(k,51) = b(k,51) - lu(k,478) * b(k,48)
346 309041954 : b(k,52) = b(k,52) - lu(k,479) * b(k,48)
347 309041954 : b(k,53) = b(k,53) - lu(k,480) * b(k,48)
348 309041954 : b(k,54) = b(k,54) - lu(k,481) * b(k,48)
349 309041954 : b(k,55) = b(k,55) - lu(k,482) * b(k,48)
350 309041954 : b(k,56) = b(k,56) - lu(k,483) * b(k,48)
351 309041954 : b(k,57) = b(k,57) - lu(k,484) * b(k,48)
352 309041954 : b(k,58) = b(k,58) - lu(k,485) * b(k,48)
353 309041954 : b(k,50) = b(k,50) - lu(k,508) * b(k,49)
354 309041954 : b(k,51) = b(k,51) - lu(k,509) * b(k,49)
355 309041954 : b(k,52) = b(k,52) - lu(k,510) * b(k,49)
356 309041954 : b(k,53) = b(k,53) - lu(k,511) * b(k,49)
357 309041954 : b(k,54) = b(k,54) - lu(k,512) * b(k,49)
358 309041954 : b(k,55) = b(k,55) - lu(k,513) * b(k,49)
359 309041954 : b(k,56) = b(k,56) - lu(k,514) * b(k,49)
360 309041954 : b(k,57) = b(k,57) - lu(k,515) * b(k,49)
361 309041954 : b(k,58) = b(k,58) - lu(k,516) * b(k,49)
362 309041954 : b(k,51) = b(k,51) - lu(k,534) * b(k,50)
363 309041954 : b(k,52) = b(k,52) - lu(k,535) * b(k,50)
364 309041954 : b(k,53) = b(k,53) - lu(k,536) * b(k,50)
365 309041954 : b(k,54) = b(k,54) - lu(k,537) * b(k,50)
366 309041954 : b(k,55) = b(k,55) - lu(k,538) * b(k,50)
367 309041954 : b(k,56) = b(k,56) - lu(k,539) * b(k,50)
368 309041954 : b(k,57) = b(k,57) - lu(k,540) * b(k,50)
369 309041954 : b(k,58) = b(k,58) - lu(k,541) * b(k,50)
370 309041954 : b(k,52) = b(k,52) - lu(k,557) * b(k,51)
371 309041954 : b(k,53) = b(k,53) - lu(k,558) * b(k,51)
372 309041954 : b(k,54) = b(k,54) - lu(k,559) * b(k,51)
373 309041954 : b(k,55) = b(k,55) - lu(k,560) * b(k,51)
374 309041954 : b(k,56) = b(k,56) - lu(k,561) * b(k,51)
375 309041954 : b(k,57) = b(k,57) - lu(k,562) * b(k,51)
376 309041954 : b(k,58) = b(k,58) - lu(k,563) * b(k,51)
377 309041954 : b(k,53) = b(k,53) - lu(k,580) * b(k,52)
378 309041954 : b(k,54) = b(k,54) - lu(k,581) * b(k,52)
379 309041954 : b(k,55) = b(k,55) - lu(k,582) * b(k,52)
380 309041954 : b(k,56) = b(k,56) - lu(k,583) * b(k,52)
381 309041954 : b(k,57) = b(k,57) - lu(k,584) * b(k,52)
382 309041954 : b(k,58) = b(k,58) - lu(k,585) * b(k,52)
383 309041954 : b(k,54) = b(k,54) - lu(k,609) * b(k,53)
384 309041954 : b(k,55) = b(k,55) - lu(k,610) * b(k,53)
385 309041954 : b(k,56) = b(k,56) - lu(k,611) * b(k,53)
386 309041954 : b(k,57) = b(k,57) - lu(k,612) * b(k,53)
387 309041954 : b(k,58) = b(k,58) - lu(k,613) * b(k,53)
388 309041954 : b(k,55) = b(k,55) - lu(k,647) * b(k,54)
389 309041954 : b(k,56) = b(k,56) - lu(k,648) * b(k,54)
390 309041954 : b(k,57) = b(k,57) - lu(k,649) * b(k,54)
391 309041954 : b(k,58) = b(k,58) - lu(k,650) * b(k,54)
392 309041954 : b(k,56) = b(k,56) - lu(k,671) * b(k,55)
393 309041954 : b(k,57) = b(k,57) - lu(k,672) * b(k,55)
394 309041954 : b(k,58) = b(k,58) - lu(k,673) * b(k,55)
395 309041954 : b(k,57) = b(k,57) - lu(k,693) * b(k,56)
396 309041954 : b(k,58) = b(k,58) - lu(k,694) * b(k,56)
397 318792954 : b(k,58) = b(k,58) - lu(k,720) * b(k,57)
398 : end do
399 9751000 : end subroutine lu_slv02
400 9751000 : subroutine lu_slv03( avec_len, lu, b )
401 : use shr_kind_mod, only : r8 => shr_kind_r8
402 : use chem_mods, only : clscnt4, nzcnt
403 : implicit none
404 : !-----------------------------------------------------------------------
405 : ! ... Dummy args
406 : !-----------------------------------------------------------------------
407 : integer, intent(in) :: avec_len
408 : real(r8), intent(in) :: lu(veclen,max(1,nzcnt))
409 : real(r8), intent(inout) :: b(veclen,clscnt4)
410 : !-----------------------------------------------------------------------
411 : ! ... Local variables
412 : !-----------------------------------------------------------------------
413 : integer :: k
414 : !-----------------------------------------------------------------------
415 : ! ... solve L * y = b
416 : !-----------------------------------------------------------------------
417 318792954 : do k = 1,avec_len
418 : !-----------------------------------------------------------------------
419 : ! ... Solve U * x = y
420 : !-----------------------------------------------------------------------
421 309041954 : b(k,58) = b(k,58) * lu(k,745)
422 309041954 : b(k,57) = b(k,57) - lu(k,744) * b(k,58)
423 309041954 : b(k,56) = b(k,56) - lu(k,743) * b(k,58)
424 309041954 : b(k,55) = b(k,55) - lu(k,742) * b(k,58)
425 309041954 : b(k,54) = b(k,54) - lu(k,741) * b(k,58)
426 309041954 : b(k,53) = b(k,53) - lu(k,740) * b(k,58)
427 309041954 : b(k,52) = b(k,52) - lu(k,739) * b(k,58)
428 309041954 : b(k,51) = b(k,51) - lu(k,738) * b(k,58)
429 309041954 : b(k,50) = b(k,50) - lu(k,737) * b(k,58)
430 309041954 : b(k,49) = b(k,49) - lu(k,736) * b(k,58)
431 309041954 : b(k,48) = b(k,48) - lu(k,735) * b(k,58)
432 309041954 : b(k,47) = b(k,47) - lu(k,734) * b(k,58)
433 309041954 : b(k,46) = b(k,46) - lu(k,733) * b(k,58)
434 309041954 : b(k,45) = b(k,45) - lu(k,732) * b(k,58)
435 309041954 : b(k,44) = b(k,44) - lu(k,731) * b(k,58)
436 309041954 : b(k,43) = b(k,43) - lu(k,730) * b(k,58)
437 309041954 : b(k,41) = b(k,41) - lu(k,729) * b(k,58)
438 309041954 : b(k,40) = b(k,40) - lu(k,728) * b(k,58)
439 309041954 : b(k,39) = b(k,39) - lu(k,727) * b(k,58)
440 309041954 : b(k,38) = b(k,38) - lu(k,726) * b(k,58)
441 309041954 : b(k,36) = b(k,36) - lu(k,725) * b(k,58)
442 309041954 : b(k,26) = b(k,26) - lu(k,724) * b(k,58)
443 309041954 : b(k,11) = b(k,11) - lu(k,723) * b(k,58)
444 309041954 : b(k,10) = b(k,10) - lu(k,722) * b(k,58)
445 309041954 : b(k,4) = b(k,4) - lu(k,721) * b(k,58)
446 309041954 : b(k,57) = b(k,57) * lu(k,719)
447 309041954 : b(k,56) = b(k,56) - lu(k,718) * b(k,57)
448 309041954 : b(k,55) = b(k,55) - lu(k,717) * b(k,57)
449 309041954 : b(k,54) = b(k,54) - lu(k,716) * b(k,57)
450 309041954 : b(k,53) = b(k,53) - lu(k,715) * b(k,57)
451 309041954 : b(k,52) = b(k,52) - lu(k,714) * b(k,57)
452 309041954 : b(k,51) = b(k,51) - lu(k,713) * b(k,57)
453 309041954 : b(k,50) = b(k,50) - lu(k,712) * b(k,57)
454 309041954 : b(k,49) = b(k,49) - lu(k,711) * b(k,57)
455 309041954 : b(k,48) = b(k,48) - lu(k,710) * b(k,57)
456 309041954 : b(k,47) = b(k,47) - lu(k,709) * b(k,57)
457 309041954 : b(k,46) = b(k,46) - lu(k,708) * b(k,57)
458 309041954 : b(k,45) = b(k,45) - lu(k,707) * b(k,57)
459 309041954 : b(k,44) = b(k,44) - lu(k,706) * b(k,57)
460 309041954 : b(k,43) = b(k,43) - lu(k,705) * b(k,57)
461 309041954 : b(k,42) = b(k,42) - lu(k,704) * b(k,57)
462 309041954 : b(k,41) = b(k,41) - lu(k,703) * b(k,57)
463 309041954 : b(k,40) = b(k,40) - lu(k,702) * b(k,57)
464 309041954 : b(k,39) = b(k,39) - lu(k,701) * b(k,57)
465 309041954 : b(k,38) = b(k,38) - lu(k,700) * b(k,57)
466 309041954 : b(k,36) = b(k,36) - lu(k,699) * b(k,57)
467 309041954 : b(k,27) = b(k,27) - lu(k,698) * b(k,57)
468 309041954 : b(k,20) = b(k,20) - lu(k,697) * b(k,57)
469 309041954 : b(k,14) = b(k,14) - lu(k,696) * b(k,57)
470 309041954 : b(k,9) = b(k,9) - lu(k,695) * b(k,57)
471 309041954 : b(k,56) = b(k,56) * lu(k,692)
472 309041954 : b(k,55) = b(k,55) - lu(k,691) * b(k,56)
473 309041954 : b(k,54) = b(k,54) - lu(k,690) * b(k,56)
474 309041954 : b(k,53) = b(k,53) - lu(k,689) * b(k,56)
475 309041954 : b(k,52) = b(k,52) - lu(k,688) * b(k,56)
476 309041954 : b(k,51) = b(k,51) - lu(k,687) * b(k,56)
477 309041954 : b(k,50) = b(k,50) - lu(k,686) * b(k,56)
478 309041954 : b(k,49) = b(k,49) - lu(k,685) * b(k,56)
479 309041954 : b(k,48) = b(k,48) - lu(k,684) * b(k,56)
480 309041954 : b(k,47) = b(k,47) - lu(k,683) * b(k,56)
481 309041954 : b(k,46) = b(k,46) - lu(k,682) * b(k,56)
482 309041954 : b(k,45) = b(k,45) - lu(k,681) * b(k,56)
483 309041954 : b(k,44) = b(k,44) - lu(k,680) * b(k,56)
484 309041954 : b(k,43) = b(k,43) - lu(k,679) * b(k,56)
485 309041954 : b(k,42) = b(k,42) - lu(k,678) * b(k,56)
486 309041954 : b(k,40) = b(k,40) - lu(k,677) * b(k,56)
487 309041954 : b(k,38) = b(k,38) - lu(k,676) * b(k,56)
488 309041954 : b(k,26) = b(k,26) - lu(k,675) * b(k,56)
489 309041954 : b(k,10) = b(k,10) - lu(k,674) * b(k,56)
490 309041954 : b(k,55) = b(k,55) * lu(k,670)
491 309041954 : b(k,54) = b(k,54) - lu(k,669) * b(k,55)
492 309041954 : b(k,53) = b(k,53) - lu(k,668) * b(k,55)
493 309041954 : b(k,52) = b(k,52) - lu(k,667) * b(k,55)
494 309041954 : b(k,51) = b(k,51) - lu(k,666) * b(k,55)
495 309041954 : b(k,50) = b(k,50) - lu(k,665) * b(k,55)
496 309041954 : b(k,49) = b(k,49) - lu(k,664) * b(k,55)
497 309041954 : b(k,48) = b(k,48) - lu(k,663) * b(k,55)
498 309041954 : b(k,47) = b(k,47) - lu(k,662) * b(k,55)
499 309041954 : b(k,46) = b(k,46) - lu(k,661) * b(k,55)
500 309041954 : b(k,45) = b(k,45) - lu(k,660) * b(k,55)
501 309041954 : b(k,44) = b(k,44) - lu(k,659) * b(k,55)
502 309041954 : b(k,43) = b(k,43) - lu(k,658) * b(k,55)
503 309041954 : b(k,41) = b(k,41) - lu(k,657) * b(k,55)
504 309041954 : b(k,40) = b(k,40) - lu(k,656) * b(k,55)
505 309041954 : b(k,35) = b(k,35) - lu(k,655) * b(k,55)
506 309041954 : b(k,34) = b(k,34) - lu(k,654) * b(k,55)
507 309041954 : b(k,33) = b(k,33) - lu(k,653) * b(k,55)
508 309041954 : b(k,32) = b(k,32) - lu(k,652) * b(k,55)
509 309041954 : b(k,25) = b(k,25) - lu(k,651) * b(k,55)
510 309041954 : b(k,54) = b(k,54) * lu(k,646)
511 309041954 : b(k,53) = b(k,53) - lu(k,645) * b(k,54)
512 309041954 : b(k,52) = b(k,52) - lu(k,644) * b(k,54)
513 309041954 : b(k,51) = b(k,51) - lu(k,643) * b(k,54)
514 309041954 : b(k,50) = b(k,50) - lu(k,642) * b(k,54)
515 309041954 : b(k,49) = b(k,49) - lu(k,641) * b(k,54)
516 309041954 : b(k,48) = b(k,48) - lu(k,640) * b(k,54)
517 309041954 : b(k,47) = b(k,47) - lu(k,639) * b(k,54)
518 309041954 : b(k,46) = b(k,46) - lu(k,638) * b(k,54)
519 309041954 : b(k,45) = b(k,45) - lu(k,637) * b(k,54)
520 309041954 : b(k,44) = b(k,44) - lu(k,636) * b(k,54)
521 309041954 : b(k,43) = b(k,43) - lu(k,635) * b(k,54)
522 309041954 : b(k,42) = b(k,42) - lu(k,634) * b(k,54)
523 309041954 : b(k,41) = b(k,41) - lu(k,633) * b(k,54)
524 309041954 : b(k,40) = b(k,40) - lu(k,632) * b(k,54)
525 309041954 : b(k,39) = b(k,39) - lu(k,631) * b(k,54)
526 309041954 : b(k,38) = b(k,38) - lu(k,630) * b(k,54)
527 309041954 : b(k,37) = b(k,37) - lu(k,629) * b(k,54)
528 309041954 : b(k,36) = b(k,36) - lu(k,628) * b(k,54)
529 309041954 : b(k,35) = b(k,35) - lu(k,627) * b(k,54)
530 309041954 : b(k,29) = b(k,29) - lu(k,626) * b(k,54)
531 309041954 : b(k,28) = b(k,28) - lu(k,625) * b(k,54)
532 309041954 : b(k,26) = b(k,26) - lu(k,624) * b(k,54)
533 309041954 : b(k,24) = b(k,24) - lu(k,623) * b(k,54)
534 309041954 : b(k,22) = b(k,22) - lu(k,622) * b(k,54)
535 309041954 : b(k,21) = b(k,21) - lu(k,621) * b(k,54)
536 309041954 : b(k,17) = b(k,17) - lu(k,620) * b(k,54)
537 309041954 : b(k,16) = b(k,16) - lu(k,619) * b(k,54)
538 309041954 : b(k,15) = b(k,15) - lu(k,618) * b(k,54)
539 309041954 : b(k,12) = b(k,12) - lu(k,617) * b(k,54)
540 309041954 : b(k,11) = b(k,11) - lu(k,616) * b(k,54)
541 309041954 : b(k,8) = b(k,8) - lu(k,615) * b(k,54)
542 309041954 : b(k,3) = b(k,3) - lu(k,614) * b(k,54)
543 309041954 : b(k,53) = b(k,53) * lu(k,608)
544 309041954 : b(k,52) = b(k,52) - lu(k,607) * b(k,53)
545 309041954 : b(k,51) = b(k,51) - lu(k,606) * b(k,53)
546 309041954 : b(k,50) = b(k,50) - lu(k,605) * b(k,53)
547 309041954 : b(k,49) = b(k,49) - lu(k,604) * b(k,53)
548 309041954 : b(k,48) = b(k,48) - lu(k,603) * b(k,53)
549 309041954 : b(k,47) = b(k,47) - lu(k,602) * b(k,53)
550 309041954 : b(k,46) = b(k,46) - lu(k,601) * b(k,53)
551 309041954 : b(k,45) = b(k,45) - lu(k,600) * b(k,53)
552 309041954 : b(k,44) = b(k,44) - lu(k,599) * b(k,53)
553 309041954 : b(k,43) = b(k,43) - lu(k,598) * b(k,53)
554 309041954 : b(k,42) = b(k,42) - lu(k,597) * b(k,53)
555 309041954 : b(k,41) = b(k,41) - lu(k,596) * b(k,53)
556 309041954 : b(k,40) = b(k,40) - lu(k,595) * b(k,53)
557 309041954 : b(k,39) = b(k,39) - lu(k,594) * b(k,53)
558 309041954 : b(k,38) = b(k,38) - lu(k,593) * b(k,53)
559 309041954 : b(k,37) = b(k,37) - lu(k,592) * b(k,53)
560 309041954 : b(k,36) = b(k,36) - lu(k,591) * b(k,53)
561 309041954 : b(k,35) = b(k,35) - lu(k,590) * b(k,53)
562 309041954 : b(k,27) = b(k,27) - lu(k,589) * b(k,53)
563 309041954 : b(k,20) = b(k,20) - lu(k,588) * b(k,53)
564 309041954 : b(k,17) = b(k,17) - lu(k,587) * b(k,53)
565 309041954 : b(k,13) = b(k,13) - lu(k,586) * b(k,53)
566 309041954 : b(k,52) = b(k,52) * lu(k,579)
567 309041954 : b(k,51) = b(k,51) - lu(k,578) * b(k,52)
568 309041954 : b(k,50) = b(k,50) - lu(k,577) * b(k,52)
569 309041954 : b(k,49) = b(k,49) - lu(k,576) * b(k,52)
570 309041954 : b(k,48) = b(k,48) - lu(k,575) * b(k,52)
571 309041954 : b(k,47) = b(k,47) - lu(k,574) * b(k,52)
572 309041954 : b(k,46) = b(k,46) - lu(k,573) * b(k,52)
573 309041954 : b(k,45) = b(k,45) - lu(k,572) * b(k,52)
574 309041954 : b(k,44) = b(k,44) - lu(k,571) * b(k,52)
575 309041954 : b(k,41) = b(k,41) - lu(k,570) * b(k,52)
576 309041954 : b(k,40) = b(k,40) - lu(k,569) * b(k,52)
577 309041954 : b(k,39) = b(k,39) - lu(k,568) * b(k,52)
578 309041954 : b(k,36) = b(k,36) - lu(k,567) * b(k,52)
579 309041954 : b(k,24) = b(k,24) - lu(k,566) * b(k,52)
580 309041954 : b(k,6) = b(k,6) - lu(k,565) * b(k,52)
581 309041954 : b(k,5) = b(k,5) - lu(k,564) * b(k,52)
582 309041954 : b(k,51) = b(k,51) * lu(k,556)
583 309041954 : b(k,50) = b(k,50) - lu(k,555) * b(k,51)
584 309041954 : b(k,49) = b(k,49) - lu(k,554) * b(k,51)
585 309041954 : b(k,48) = b(k,48) - lu(k,553) * b(k,51)
586 309041954 : b(k,47) = b(k,47) - lu(k,552) * b(k,51)
587 309041954 : b(k,46) = b(k,46) - lu(k,551) * b(k,51)
588 309041954 : b(k,45) = b(k,45) - lu(k,550) * b(k,51)
589 309041954 : b(k,44) = b(k,44) - lu(k,549) * b(k,51)
590 309041954 : b(k,43) = b(k,43) - lu(k,548) * b(k,51)
591 309041954 : b(k,42) = b(k,42) - lu(k,547) * b(k,51)
592 309041954 : b(k,41) = b(k,41) - lu(k,546) * b(k,51)
593 309041954 : b(k,40) = b(k,40) - lu(k,545) * b(k,51)
594 309041954 : b(k,38) = b(k,38) - lu(k,544) * b(k,51)
595 309041954 : b(k,29) = b(k,29) - lu(k,543) * b(k,51)
596 309041954 : b(k,21) = b(k,21) - lu(k,542) * b(k,51)
597 309041954 : b(k,50) = b(k,50) * lu(k,533)
598 309041954 : b(k,49) = b(k,49) - lu(k,532) * b(k,50)
599 309041954 : b(k,48) = b(k,48) - lu(k,531) * b(k,50)
600 309041954 : b(k,47) = b(k,47) - lu(k,530) * b(k,50)
601 309041954 : b(k,46) = b(k,46) - lu(k,529) * b(k,50)
602 309041954 : b(k,45) = b(k,45) - lu(k,528) * b(k,50)
603 309041954 : b(k,44) = b(k,44) - lu(k,527) * b(k,50)
604 309041954 : b(k,43) = b(k,43) - lu(k,526) * b(k,50)
605 309041954 : b(k,42) = b(k,42) - lu(k,525) * b(k,50)
606 309041954 : b(k,41) = b(k,41) - lu(k,524) * b(k,50)
607 309041954 : b(k,40) = b(k,40) - lu(k,523) * b(k,50)
608 309041954 : b(k,38) = b(k,38) - lu(k,522) * b(k,50)
609 309041954 : b(k,29) = b(k,29) - lu(k,521) * b(k,50)
610 309041954 : b(k,26) = b(k,26) - lu(k,520) * b(k,50)
611 309041954 : b(k,8) = b(k,8) - lu(k,519) * b(k,50)
612 309041954 : b(k,6) = b(k,6) - lu(k,518) * b(k,50)
613 309041954 : b(k,3) = b(k,3) - lu(k,517) * b(k,50)
614 309041954 : b(k,49) = b(k,49) * lu(k,507)
615 309041954 : b(k,48) = b(k,48) - lu(k,506) * b(k,49)
616 309041954 : b(k,47) = b(k,47) - lu(k,505) * b(k,49)
617 309041954 : b(k,46) = b(k,46) - lu(k,504) * b(k,49)
618 309041954 : b(k,45) = b(k,45) - lu(k,503) * b(k,49)
619 309041954 : b(k,41) = b(k,41) - lu(k,502) * b(k,49)
620 309041954 : b(k,40) = b(k,40) - lu(k,501) * b(k,49)
621 309041954 : b(k,39) = b(k,39) - lu(k,500) * b(k,49)
622 309041954 : b(k,36) = b(k,36) - lu(k,499) * b(k,49)
623 309041954 : b(k,35) = b(k,35) - lu(k,498) * b(k,49)
624 309041954 : b(k,34) = b(k,34) - lu(k,497) * b(k,49)
625 309041954 : b(k,33) = b(k,33) - lu(k,496) * b(k,49)
626 309041954 : b(k,32) = b(k,32) - lu(k,495) * b(k,49)
627 309041954 : b(k,31) = b(k,31) - lu(k,494) * b(k,49)
628 309041954 : b(k,30) = b(k,30) - lu(k,493) * b(k,49)
629 309041954 : b(k,25) = b(k,25) - lu(k,492) * b(k,49)
630 309041954 : b(k,24) = b(k,24) - lu(k,491) * b(k,49)
631 309041954 : b(k,23) = b(k,23) - lu(k,490) * b(k,49)
632 309041954 : b(k,19) = b(k,19) - lu(k,489) * b(k,49)
633 309041954 : b(k,18) = b(k,18) - lu(k,488) * b(k,49)
634 309041954 : b(k,6) = b(k,6) - lu(k,487) * b(k,49)
635 318792954 : b(k,5) = b(k,5) - lu(k,486) * b(k,49)
636 : end do
637 9751000 : end subroutine lu_slv03
638 9751000 : subroutine lu_slv04( avec_len, lu, b )
639 : use shr_kind_mod, only : r8 => shr_kind_r8
640 : use chem_mods, only : clscnt4, nzcnt
641 : implicit none
642 : !-----------------------------------------------------------------------
643 : ! ... Dummy args
644 : !-----------------------------------------------------------------------
645 : integer, intent(in) :: avec_len
646 : real(r8), intent(in) :: lu(veclen,max(1,nzcnt))
647 : real(r8), intent(inout) :: b(veclen,clscnt4)
648 : !-----------------------------------------------------------------------
649 : ! ... Local variables
650 : !-----------------------------------------------------------------------
651 : integer :: k
652 : !-----------------------------------------------------------------------
653 : ! ... solve L * y = b
654 : !-----------------------------------------------------------------------
655 318792954 : do k = 1,avec_len
656 309041954 : b(k,48) = b(k,48) * lu(k,475)
657 309041954 : b(k,47) = b(k,47) - lu(k,474) * b(k,48)
658 309041954 : b(k,46) = b(k,46) - lu(k,473) * b(k,48)
659 309041954 : b(k,45) = b(k,45) - lu(k,472) * b(k,48)
660 309041954 : b(k,44) = b(k,44) - lu(k,471) * b(k,48)
661 309041954 : b(k,43) = b(k,43) - lu(k,470) * b(k,48)
662 309041954 : b(k,42) = b(k,42) - lu(k,469) * b(k,48)
663 309041954 : b(k,41) = b(k,41) - lu(k,468) * b(k,48)
664 309041954 : b(k,40) = b(k,40) - lu(k,467) * b(k,48)
665 309041954 : b(k,38) = b(k,38) - lu(k,466) * b(k,48)
666 309041954 : b(k,37) = b(k,37) - lu(k,465) * b(k,48)
667 309041954 : b(k,28) = b(k,28) - lu(k,464) * b(k,48)
668 309041954 : b(k,22) = b(k,22) - lu(k,463) * b(k,48)
669 309041954 : b(k,21) = b(k,21) - lu(k,462) * b(k,48)
670 309041954 : b(k,7) = b(k,7) - lu(k,461) * b(k,48)
671 309041954 : b(k,47) = b(k,47) * lu(k,449)
672 309041954 : b(k,46) = b(k,46) - lu(k,448) * b(k,47)
673 309041954 : b(k,45) = b(k,45) - lu(k,447) * b(k,47)
674 309041954 : b(k,44) = b(k,44) - lu(k,446) * b(k,47)
675 309041954 : b(k,43) = b(k,43) - lu(k,445) * b(k,47)
676 309041954 : b(k,42) = b(k,42) - lu(k,444) * b(k,47)
677 309041954 : b(k,41) = b(k,41) - lu(k,443) * b(k,47)
678 309041954 : b(k,40) = b(k,40) - lu(k,442) * b(k,47)
679 309041954 : b(k,39) = b(k,39) - lu(k,441) * b(k,47)
680 309041954 : b(k,38) = b(k,38) - lu(k,440) * b(k,47)
681 309041954 : b(k,37) = b(k,37) - lu(k,439) * b(k,47)
682 309041954 : b(k,36) = b(k,36) - lu(k,438) * b(k,47)
683 309041954 : b(k,28) = b(k,28) - lu(k,437) * b(k,47)
684 309041954 : b(k,14) = b(k,14) - lu(k,436) * b(k,47)
685 309041954 : b(k,9) = b(k,9) - lu(k,435) * b(k,47)
686 309041954 : b(k,7) = b(k,7) - lu(k,434) * b(k,47)
687 309041954 : b(k,2) = b(k,2) - lu(k,433) * b(k,47)
688 309041954 : b(k,46) = b(k,46) * lu(k,420)
689 309041954 : b(k,45) = b(k,45) - lu(k,419) * b(k,46)
690 309041954 : b(k,44) = b(k,44) - lu(k,418) * b(k,46)
691 309041954 : b(k,43) = b(k,43) - lu(k,417) * b(k,46)
692 309041954 : b(k,42) = b(k,42) - lu(k,416) * b(k,46)
693 309041954 : b(k,41) = b(k,41) - lu(k,415) * b(k,46)
694 309041954 : b(k,40) = b(k,40) - lu(k,414) * b(k,46)
695 309041954 : b(k,39) = b(k,39) - lu(k,413) * b(k,46)
696 309041954 : b(k,38) = b(k,38) - lu(k,412) * b(k,46)
697 309041954 : b(k,37) = b(k,37) - lu(k,411) * b(k,46)
698 309041954 : b(k,36) = b(k,36) - lu(k,410) * b(k,46)
699 309041954 : b(k,35) = b(k,35) - lu(k,409) * b(k,46)
700 309041954 : b(k,34) = b(k,34) - lu(k,408) * b(k,46)
701 309041954 : b(k,33) = b(k,33) - lu(k,407) * b(k,46)
702 309041954 : b(k,32) = b(k,32) - lu(k,406) * b(k,46)
703 309041954 : b(k,31) = b(k,31) - lu(k,405) * b(k,46)
704 309041954 : b(k,30) = b(k,30) - lu(k,404) * b(k,46)
705 309041954 : b(k,29) = b(k,29) - lu(k,403) * b(k,46)
706 309041954 : b(k,28) = b(k,28) - lu(k,402) * b(k,46)
707 309041954 : b(k,27) = b(k,27) - lu(k,401) * b(k,46)
708 309041954 : b(k,25) = b(k,25) - lu(k,400) * b(k,46)
709 309041954 : b(k,24) = b(k,24) - lu(k,399) * b(k,46)
710 309041954 : b(k,23) = b(k,23) - lu(k,398) * b(k,46)
711 309041954 : b(k,22) = b(k,22) - lu(k,397) * b(k,46)
712 309041954 : b(k,21) = b(k,21) - lu(k,396) * b(k,46)
713 309041954 : b(k,20) = b(k,20) - lu(k,395) * b(k,46)
714 309041954 : b(k,19) = b(k,19) - lu(k,394) * b(k,46)
715 309041954 : b(k,18) = b(k,18) - lu(k,393) * b(k,46)
716 309041954 : b(k,15) = b(k,15) - lu(k,392) * b(k,46)
717 309041954 : b(k,6) = b(k,6) - lu(k,391) * b(k,46)
718 309041954 : b(k,5) = b(k,5) - lu(k,390) * b(k,46)
719 309041954 : b(k,45) = b(k,45) * lu(k,376)
720 309041954 : b(k,44) = b(k,44) - lu(k,375) * b(k,45)
721 309041954 : b(k,43) = b(k,43) - lu(k,374) * b(k,45)
722 309041954 : b(k,42) = b(k,42) - lu(k,373) * b(k,45)
723 309041954 : b(k,41) = b(k,41) - lu(k,372) * b(k,45)
724 309041954 : b(k,40) = b(k,40) - lu(k,371) * b(k,45)
725 309041954 : b(k,29) = b(k,29) - lu(k,370) * b(k,45)
726 309041954 : b(k,28) = b(k,28) - lu(k,369) * b(k,45)
727 309041954 : b(k,27) = b(k,27) - lu(k,368) * b(k,45)
728 309041954 : b(k,22) = b(k,22) - lu(k,367) * b(k,45)
729 309041954 : b(k,17) = b(k,17) - lu(k,366) * b(k,45)
730 309041954 : b(k,16) = b(k,16) - lu(k,365) * b(k,45)
731 309041954 : b(k,44) = b(k,44) * lu(k,350)
732 309041954 : b(k,43) = b(k,43) - lu(k,349) * b(k,44)
733 309041954 : b(k,41) = b(k,41) - lu(k,348) * b(k,44)
734 309041954 : b(k,40) = b(k,40) - lu(k,347) * b(k,44)
735 309041954 : b(k,39) = b(k,39) - lu(k,346) * b(k,44)
736 309041954 : b(k,38) = b(k,38) - lu(k,345) * b(k,44)
737 309041954 : b(k,36) = b(k,36) - lu(k,344) * b(k,44)
738 309041954 : b(k,21) = b(k,21) - lu(k,343) * b(k,44)
739 309041954 : b(k,13) = b(k,13) - lu(k,342) * b(k,44)
740 309041954 : b(k,12) = b(k,12) - lu(k,341) * b(k,44)
741 309041954 : b(k,43) = b(k,43) * lu(k,328)
742 309041954 : b(k,40) = b(k,40) - lu(k,327) * b(k,43)
743 309041954 : b(k,16) = b(k,16) - lu(k,326) * b(k,43)
744 309041954 : b(k,42) = b(k,42) * lu(k,310)
745 309041954 : b(k,41) = b(k,41) - lu(k,309) * b(k,42)
746 309041954 : b(k,40) = b(k,40) - lu(k,308) * b(k,42)
747 309041954 : b(k,38) = b(k,38) - lu(k,307) * b(k,42)
748 309041954 : b(k,37) = b(k,37) - lu(k,306) * b(k,42)
749 309041954 : b(k,28) = b(k,28) - lu(k,305) * b(k,42)
750 309041954 : b(k,27) = b(k,27) - lu(k,304) * b(k,42)
751 309041954 : b(k,9) = b(k,9) - lu(k,303) * b(k,42)
752 309041954 : b(k,7) = b(k,7) - lu(k,302) * b(k,42)
753 309041954 : b(k,41) = b(k,41) * lu(k,291)
754 309041954 : b(k,40) = b(k,40) - lu(k,290) * b(k,41)
755 309041954 : b(k,29) = b(k,29) - lu(k,289) * b(k,41)
756 309041954 : b(k,21) = b(k,21) - lu(k,288) * b(k,41)
757 309041954 : b(k,40) = b(k,40) * lu(k,280)
758 309041954 : b(k,39) = b(k,39) * lu(k,266)
759 309041954 : b(k,36) = b(k,36) - lu(k,265) * b(k,39)
760 309041954 : b(k,24) = b(k,24) - lu(k,264) * b(k,39)
761 309041954 : b(k,14) = b(k,14) - lu(k,263) * b(k,39)
762 309041954 : b(k,38) = b(k,38) * lu(k,255)
763 309041954 : b(k,26) = b(k,26) - lu(k,254) * b(k,38)
764 309041954 : b(k,10) = b(k,10) - lu(k,253) * b(k,38)
765 309041954 : b(k,37) = b(k,37) * lu(k,243)
766 309041954 : b(k,28) = b(k,28) - lu(k,242) * b(k,37)
767 309041954 : b(k,7) = b(k,7) - lu(k,241) * b(k,37)
768 309041954 : b(k,36) = b(k,36) * lu(k,235)
769 309041954 : b(k,11) = b(k,11) - lu(k,234) * b(k,36)
770 309041954 : b(k,35) = b(k,35) * lu(k,225)
771 309041954 : b(k,34) = b(k,34) - lu(k,224) * b(k,35)
772 309041954 : b(k,33) = b(k,33) - lu(k,223) * b(k,35)
773 309041954 : b(k,32) = b(k,32) - lu(k,222) * b(k,35)
774 309041954 : b(k,31) = b(k,31) - lu(k,221) * b(k,35)
775 309041954 : b(k,30) = b(k,30) - lu(k,220) * b(k,35)
776 309041954 : b(k,25) = b(k,25) - lu(k,219) * b(k,35)
777 309041954 : b(k,34) = b(k,34) * lu(k,210)
778 309041954 : b(k,33) = b(k,33) - lu(k,209) * b(k,34)
779 309041954 : b(k,32) = b(k,32) - lu(k,208) * b(k,34)
780 309041954 : b(k,31) = b(k,31) - lu(k,207) * b(k,34)
781 309041954 : b(k,30) = b(k,30) - lu(k,206) * b(k,34)
782 309041954 : b(k,33) = b(k,33) * lu(k,196)
783 309041954 : b(k,32) = b(k,32) - lu(k,195) * b(k,33)
784 309041954 : b(k,31) = b(k,31) - lu(k,194) * b(k,33)
785 309041954 : b(k,30) = b(k,30) - lu(k,193) * b(k,33)
786 309041954 : b(k,25) = b(k,25) - lu(k,192) * b(k,33)
787 309041954 : b(k,23) = b(k,23) - lu(k,191) * b(k,33)
788 309041954 : b(k,19) = b(k,19) - lu(k,190) * b(k,33)
789 309041954 : b(k,18) = b(k,18) - lu(k,189) * b(k,33)
790 309041954 : b(k,32) = b(k,32) * lu(k,181)
791 309041954 : b(k,25) = b(k,25) - lu(k,180) * b(k,32)
792 309041954 : b(k,31) = b(k,31) * lu(k,170)
793 309041954 : b(k,30) = b(k,30) - lu(k,169) * b(k,31)
794 309041954 : b(k,25) = b(k,25) - lu(k,168) * b(k,31)
795 309041954 : b(k,21) = b(k,21) - lu(k,167) * b(k,31)
796 309041954 : b(k,30) = b(k,30) * lu(k,159)
797 309041954 : b(k,25) = b(k,25) - lu(k,158) * b(k,30)
798 309041954 : b(k,29) = b(k,29) * lu(k,150)
799 309041954 : b(k,28) = b(k,28) * lu(k,143)
800 309041954 : b(k,7) = b(k,7) - lu(k,142) * b(k,28)
801 309041954 : b(k,27) = b(k,27) * lu(k,134)
802 309041954 : b(k,9) = b(k,9) - lu(k,133) * b(k,27)
803 309041954 : b(k,26) = b(k,26) * lu(k,125)
804 309041954 : b(k,10) = b(k,10) - lu(k,124) * b(k,26)
805 309041954 : b(k,25) = b(k,25) * lu(k,119)
806 309041954 : b(k,24) = b(k,24) * lu(k,112)
807 309041954 : b(k,23) = b(k,23) * lu(k,103)
808 309041954 : b(k,22) = b(k,22) * lu(k,96)
809 309041954 : b(k,21) = b(k,21) * lu(k,92)
810 309041954 : b(k,20) = b(k,20) * lu(k,84)
811 309041954 : b(k,19) = b(k,19) * lu(k,78)
812 309041954 : b(k,18) = b(k,18) * lu(k,71)
813 309041954 : b(k,17) = b(k,17) * lu(k,64)
814 309041954 : b(k,16) = b(k,16) * lu(k,58)
815 309041954 : b(k,15) = b(k,15) * lu(k,50)
816 309041954 : b(k,14) = b(k,14) * lu(k,45)
817 309041954 : b(k,13) = b(k,13) * lu(k,39)
818 309041954 : b(k,12) = b(k,12) * lu(k,33)
819 309041954 : b(k,11) = b(k,11) * lu(k,29)
820 309041954 : b(k,4) = b(k,4) - lu(k,28) * b(k,11)
821 309041954 : b(k,10) = b(k,10) * lu(k,25)
822 309041954 : b(k,9) = b(k,9) * lu(k,22)
823 309041954 : b(k,8) = b(k,8) * lu(k,18)
824 309041954 : b(k,7) = b(k,7) * lu(k,16)
825 309041954 : b(k,6) = b(k,6) * lu(k,14)
826 309041954 : b(k,5) = b(k,5) - lu(k,13) * b(k,6)
827 309041954 : b(k,5) = b(k,5) * lu(k,11)
828 309041954 : b(k,4) = b(k,4) * lu(k,8)
829 309041954 : b(k,3) = b(k,3) * lu(k,5)
830 309041954 : b(k,2) = b(k,2) * lu(k,2)
831 318792954 : b(k,1) = b(k,1) * lu(k,1)
832 : end do
833 9751000 : end subroutine lu_slv04
834 9751000 : subroutine lu_slv( avec_len, lu, b )
835 : use shr_kind_mod, only : r8 => shr_kind_r8
836 : use chem_mods, only : clscnt4, nzcnt
837 : implicit none
838 : !-----------------------------------------------------------------------
839 : ! ... Dummy args
840 : !-----------------------------------------------------------------------
841 : integer, intent(in) :: avec_len
842 : real(r8), intent(in) :: lu(veclen,max(1,nzcnt))
843 : real(r8), intent(inout) :: b(veclen,clscnt4)
844 9751000 : call lu_slv01( avec_len, lu, b )
845 9751000 : call lu_slv02( avec_len, lu, b )
846 9751000 : call lu_slv03( avec_len, lu, b )
847 9751000 : call lu_slv04( avec_len, lu, b )
848 9751000 : end subroutine lu_slv
849 : end module mo_lu_solve
|