LCOV - code coverage report
Current view: top level - chemistry/pp_waccm_ma_noaero - mo_lu_solve.F90 (source / functions) Hit Total Coverage
Test: coverage.info Lines: 763 763 100.0 %
Date: 2025-03-14 01:33:33 Functions: 5 5 100.0 %

          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

Generated by: LCOV version 1.14