LCOV - code coverage report
Current view: top level - chemistry/pp_trop_strat_mam5_ts2 - mo_lin_matrix.F90 (source / functions) Hit Total Coverage
Test: coverage.info Lines: 905 905 100.0 %
Date: 2025-03-14 01:18:36 Functions: 6 6 100.0 %

          Line data    Source code
       1             :       module mo_lin_matrix
       2             :       use chem_mods, only: veclen
       3             :       private
       4             :       public :: linmat
       5             :       contains
       6     1882398 :       subroutine linmat01( avec_len, mat, y, rxt, het_rates )
       7             : !----------------------------------------------
       8             : ! ... linear matrix entries for implicit species
       9             : !----------------------------------------------
      10             :       use chem_mods, only : gas_pcnst, rxntot, nzcnt
      11             :       use shr_kind_mod, only : r8 => shr_kind_r8
      12             :       implicit none
      13             : !----------------------------------------------
      14             : ! ... dummy arguments
      15             : !----------------------------------------------
      16             :       integer, intent(in) :: avec_len
      17             :       real(r8), intent(in) :: y(veclen,gas_pcnst)
      18             :       real(r8), intent(in) :: rxt(veclen,rxntot)
      19             :       real(r8), intent(in) :: het_rates(veclen,gas_pcnst)
      20             :       real(r8), intent(inout) :: mat(veclen,nzcnt)
      21             : !----------------------------------------------
      22             : ! ... local variables
      23             : !----------------------------------------------
      24             :       integer :: k
      25    60717998 :       do k = 1,avec_len
      26    58835600 :          mat(k,752) = -( rxt(k,19) + het_rates(k,1) )
      27    58835600 :          mat(k,718) = -( rxt(k,20) + het_rates(k,2) )
      28    58835600 :          mat(k,1) = -( het_rates(k,3) )
      29    58835600 :          mat(k,1272) = -( het_rates(k,4) )
      30    58835600 :          mat(k,2) = -( het_rates(k,5) )
      31    58835600 :          mat(k,3) = -( het_rates(k,6) )
      32    58835600 :          mat(k,1041) = -( het_rates(k,7) )
      33    58835600 :          mat(k,182) = -( het_rates(k,8) )
      34    58835600 :          mat(k,417) = -( rxt(k,21) + het_rates(k,9) )
      35    58835600 :          mat(k,188) = -( rxt(k,22) + het_rates(k,10) )
      36    58835600 :          mat(k,468) = -( rxt(k,23) + het_rates(k,11) )
      37    58835600 :          mat(k,418) = .500_r8*rxt(k,21)
      38    58835600 :          mat(k,189) = rxt(k,22)
      39    58835600 :          mat(k,740) = .200_r8*rxt(k,115)
      40    58835600 :          mat(k,841) = .060_r8*rxt(k,116)
      41    58835600 :          mat(k,301) = -( rxt(k,24) + het_rates(k,12) )
      42    58835600 :          mat(k,738) = .200_r8*rxt(k,115)
      43    58835600 :          mat(k,838) = .200_r8*rxt(k,116)
      44    58835600 :          mat(k,401) = -( rxt(k,25) + het_rates(k,13) )
      45    58835600 :          mat(k,739) = .200_r8*rxt(k,115)
      46    58835600 :          mat(k,840) = .150_r8*rxt(k,116)
      47    58835600 :          mat(k,337) = -( rxt(k,26) + het_rates(k,14) )
      48    58835600 :          mat(k,839) = .210_r8*rxt(k,116)
      49    58835600 :          mat(k,204) = -( het_rates(k,15) )
      50    58835600 :          mat(k,377) = -( het_rates(k,16) )
      51    58835600 :          mat(k,1092) = -( het_rates(k,17) )
      52    58835600 :          mat(k,2199) = -( het_rates(k,18) )
      53    58835600 :          mat(k,243) = rxt(k,118)
      54    58835600 :          mat(k,3479) = rxt(k,119)
      55    58835600 :          mat(k,563) = rxt(k,121)
      56    58835600 :          mat(k,161) = rxt(k,123)
      57    58835600 :          mat(k,167) = rxt(k,124)
      58    58835600 :          mat(k,496) = 2.000_r8*rxt(k,130)
      59    58835600 :          mat(k,647) = rxt(k,131)
      60    58835600 :          mat(k,463) = 3.000_r8*rxt(k,134)
      61    58835600 :          mat(k,128) = 2.000_r8*rxt(k,142)
      62    58835600 :          mat(k,1151) = rxt(k,143)
      63    58835600 :          mat(k,996) = rxt(k,149)
      64    58835600 :          mat(k,242) = -( rxt(k,118) + het_rates(k,19) )
      65    58835600 :          mat(k,3488) = -( rxt(k,119) + het_rates(k,20) )
      66    58835600 :          mat(k,566) = rxt(k,120)
      67             :          mat(k,561) = -( rxt(k,120) + rxt(k,121) + rxt(k,886) + rxt(k,889) + rxt(k,894) &
      68    58835600 :                  + het_rates(k,21) )
      69    58835600 :          mat(k,4) = -( het_rates(k,22) )
      70    58835600 :          mat(k,245) = -( het_rates(k,23) )
      71    58835600 :          mat(k,352) = rxt(k,27)
      72    58835600 :          mat(k,353) = -( rxt(k,27) + het_rates(k,24) )
      73    58835600 :          mat(k,310) = -( het_rates(k,25) )
      74    58835600 :          mat(k,585) = -( het_rates(k,26) )
      75    58835600 :          mat(k,283) = -( het_rates(k,27) )
      76    58835600 :          mat(k,358) = -( rxt(k,28) + het_rates(k,28) )
      77    58835600 :          mat(k,316) = -( het_rates(k,29) )
      78    58835600 :          mat(k,1385) = -( het_rates(k,30) )
      79    58835600 :          mat(k,2032) = .700_r8*rxt(k,79)
      80    58835600 :          mat(k,411) = -( rxt(k,29) + het_rates(k,31) )
      81    58835600 :          mat(k,130) = -( het_rates(k,32) )
      82    58835600 :          mat(k,287) = -( rxt(k,30) + het_rates(k,33) )
      83    58835600 :          mat(k,120) = -( rxt(k,122) + het_rates(k,34) )
      84    58835600 :          mat(k,159) = -( rxt(k,123) + het_rates(k,35) )
      85    58835600 :          mat(k,164) = -( rxt(k,124) + het_rates(k,36) )
      86    58835600 :          mat(k,134) = -( rxt(k,125) + het_rates(k,37) )
      87    58835600 :          mat(k,169) = -( rxt(k,126) + het_rates(k,38) )
      88    58835600 :          mat(k,138) = -( rxt(k,127) + het_rates(k,39) )
      89    58835600 :          mat(k,174) = -( rxt(k,128) + het_rates(k,40) )
      90    58835600 :          mat(k,142) = -( rxt(k,129) + het_rates(k,41) )
      91    58835600 :          mat(k,495) = -( rxt(k,130) + het_rates(k,42) )
      92    58835600 :          mat(k,3188) = -( rxt(k,31) + rxt(k,32) + het_rates(k,43) )
      93    58835600 :          mat(k,758) = .100_r8*rxt(k,19)
      94    58835600 :          mat(k,725) = .100_r8*rxt(k,20)
      95    58835600 :          mat(k,451) = rxt(k,37)
      96    58835600 :          mat(k,2264) = .180_r8*rxt(k,39)
      97    58835600 :          mat(k,643) = .500_r8*rxt(k,41)
      98    58835600 :          mat(k,1715) = rxt(k,43)
      99    58835600 :          mat(k,886) = rxt(k,45)
     100    58835600 :          mat(k,1212) = rxt(k,46)
     101    58835600 :          mat(k,982) = .330_r8*rxt(k,47)
     102    58835600 :          mat(k,1773) = rxt(k,52)
     103    58835600 :          mat(k,927) = rxt(k,55) + rxt(k,56)
     104    58835600 :          mat(k,678) = rxt(k,65)
     105    58835600 :          mat(k,597) = rxt(k,66)
     106    58835600 :          mat(k,734) = rxt(k,68)
     107    58835600 :          mat(k,1206) = rxt(k,69)
     108    58835600 :          mat(k,1907) = rxt(k,71)
     109    58835600 :          mat(k,2023) = rxt(k,72)
     110    58835600 :          mat(k,1782) = .250_r8*rxt(k,74)
     111    58835600 :          mat(k,1465) = .140_r8*rxt(k,75)
     112    58835600 :          mat(k,1922) = .250_r8*rxt(k,80)
     113    58835600 :          mat(k,1503) = .440_r8*rxt(k,81)
     114    58835600 :          mat(k,1457) = rxt(k,83)
     115    58835600 :          mat(k,1484) = rxt(k,84)
     116    58835600 :          mat(k,581) = rxt(k,88)
     117    58835600 :          mat(k,408) = rxt(k,89)
     118    58835600 :          mat(k,697) = rxt(k,313)
     119    58835600 :          mat(k,293) = 2.000_r8*rxt(k,343)
     120    58835600 :          mat(k,1963) = rxt(k,427)
     121    58835600 :          mat(k,2002) = rxt(k,433)
     122    58835600 :          mat(k,646) = -( rxt(k,131) + het_rates(k,44) )
     123    58835600 :          mat(k,146) = -( rxt(k,132) + het_rates(k,45) )
     124    58835600 :          mat(k,1431) = -( rxt(k,33) + het_rates(k,46) )
     125    58835600 :          mat(k,755) = .400_r8*rxt(k,19)
     126    58835600 :          mat(k,722) = .400_r8*rxt(k,20)
     127    58835600 :          mat(k,360) = rxt(k,28)
     128    58835600 :          mat(k,975) = .330_r8*rxt(k,47)
     129    58835600 :          mat(k,334) = rxt(k,77)
     130    58835600 :          mat(k,579) = rxt(k,88)
     131    58835600 :          mat(k,393) = -( rxt(k,133) + het_rates(k,47) )
     132    58835600 :          mat(k,123) = -( het_rates(k,48) )
     133    58835600 :          mat(k,2277) = -( rxt(k,34) + het_rates(k,49) )
     134    58835600 :          mat(k,756) = .250_r8*rxt(k,19)
     135    58835600 :          mat(k,723) = .250_r8*rxt(k,20)
     136    58835600 :          mat(k,413) = .820_r8*rxt(k,29)
     137    58835600 :          mat(k,979) = .170_r8*rxt(k,47)
     138    58835600 :          mat(k,1926) = -( rxt(k,35) + het_rates(k,50) )
     139    58835600 :          mat(k,338) = rxt(k,26)
     140    58835600 :          mat(k,641) = .500_r8*rxt(k,41)
     141    58835600 :          mat(k,619) = .680_r8*rxt(k,48)
     142    58835600 :          mat(k,632) = .670_r8*rxt(k,49)
     143    58835600 :          mat(k,1874) = rxt(k,54)
     144    58835600 :          mat(k,1116) = .500_r8*rxt(k,60)
     145    58835600 :          mat(k,1795) = .500_r8*rxt(k,61)
     146    58835600 :          mat(k,774) = .720_r8*rxt(k,63)
     147    58835600 :          mat(k,1779) = .250_r8*rxt(k,74)
     148    58835600 :          mat(k,1463) = .140_r8*rxt(k,75)
     149    58835600 :          mat(k,1917) = .250_r8*rxt(k,80)
     150    58835600 :          mat(k,1500) = .440_r8*rxt(k,81)
     151    58835600 :          mat(k,747) = .400_r8*rxt(k,115)
     152    58835600 :          mat(k,848) = .540_r8*rxt(k,116)
     153    58835600 :          mat(k,432) = .510_r8*rxt(k,117)
     154    58835600 :          mat(k,791) = -( het_rates(k,51) )
     155    58835600 :          mat(k,702) = -( rxt(k,36) + het_rates(k,52) )
     156    58835600 :          mat(k,1494) = -( het_rates(k,53) )
     157    58835600 :          mat(k,449) = -( rxt(k,37) + het_rates(k,54) )
     158    58835600 :          mat(k,2259) = -( rxt(k,38) + rxt(k,39) + het_rates(k,55) )
     159    58835600 :          mat(k,462) = -( rxt(k,134) + het_rates(k,56) )
     160    58835600 :          mat(k,3850) = -( het_rates(k,57) )
     161    58835600 :          mat(k,244) = rxt(k,118)
     162    58835600 :          mat(k,122) = 4.000_r8*rxt(k,122)
     163    58835600 :          mat(k,163) = rxt(k,123)
     164    58835600 :          mat(k,137) = 2.000_r8*rxt(k,125)
     165    58835600 :          mat(k,173) = 2.000_r8*rxt(k,126)
     166    58835600 :          mat(k,141) = 2.000_r8*rxt(k,127)
     167    58835600 :          mat(k,178) = rxt(k,128)
     168    58835600 :          mat(k,145) = 2.000_r8*rxt(k,129)
     169    58835600 :          mat(k,147) = 3.000_r8*rxt(k,132)
     170    58835600 :          mat(k,398) = rxt(k,133)
     171    58835600 :          mat(k,180) = 2.000_r8*rxt(k,135)
     172    58835600 :          mat(k,116) = 2.000_r8*rxt(k,136)
     173    58835600 :          mat(k,3520) = rxt(k,137)
     174    58835600 :          mat(k,1332) = rxt(k,138)
     175    58835600 :          mat(k,259) = rxt(k,141)
     176    58835600 :          mat(k,254) = rxt(k,144)
     177    58835600 :          mat(k,264) = rxt(k,145)
     178    58835600 :          mat(k,329) = rxt(k,146)
     179    58835600 :          mat(k,3140) = rxt(k,147)
     180    58835600 :          mat(k,1163) = rxt(k,150)
     181    58835600 :          mat(k,179) = -( rxt(k,135) + het_rates(k,58) )
     182    58835600 :          mat(k,114) = -( rxt(k,136) + rxt(k,253) + het_rates(k,59) )
     183    58835600 :          mat(k,3515) = -( rxt(k,137) + het_rates(k,60) )
     184    58835600 :          mat(k,1329) = rxt(k,139)
     185    58835600 :          mat(k,346) = rxt(k,151)
     186    58835600 :          mat(k,115) = 2.000_r8*rxt(k,253)
     187             :          mat(k,1325) = -( rxt(k,138) + rxt(k,139) + rxt(k,888) + rxt(k,893) + rxt(k,899) &
     188    58835600 :                  + het_rates(k,61) )
     189    58835600 :          mat(k,5) = -( het_rates(k,62) )
     190    58835600 :          mat(k,2057) = -( het_rates(k,63) )
     191    58835600 :          mat(k,190) = 1.500_r8*rxt(k,22)
     192    58835600 :          mat(k,403) = .600_r8*rxt(k,25)
     193    58835600 :          mat(k,339) = rxt(k,26)
     194    58835600 :          mat(k,3180) = rxt(k,31) + rxt(k,32)
     195    58835600 :          mat(k,1432) = rxt(k,33)
     196    58835600 :          mat(k,1927) = rxt(k,35)
     197    58835600 :          mat(k,2258) = .380_r8*rxt(k,39)
     198    58835600 :          mat(k,1614) = rxt(k,40)
     199    58835600 :          mat(k,642) = .500_r8*rxt(k,41)
     200    58835600 :          mat(k,1713) = rxt(k,43)
     201    58835600 :          mat(k,1478) = 2.000_r8*rxt(k,44)
     202    58835600 :          mat(k,885) = rxt(k,45)
     203    58835600 :          mat(k,978) = .330_r8*rxt(k,47)
     204    58835600 :          mat(k,621) = 1.320_r8*rxt(k,48)
     205    58835600 :          mat(k,634) = 1.740_r8*rxt(k,49)
     206    58835600 :          mat(k,492) = rxt(k,50)
     207    58835600 :          mat(k,525) = rxt(k,51)
     208    58835600 :          mat(k,1875) = 1.500_r8*rxt(k,53) + rxt(k,54)
     209    58835600 :          mat(k,2077) = .550_r8*rxt(k,64)
     210    58835600 :          mat(k,2109) = .550_r8*rxt(k,67)
     211    58835600 :          mat(k,2017) = 1.650_r8*rxt(k,72)
     212    58835600 :          mat(k,1780) = .750_r8*rxt(k,74)
     213    58835600 :          mat(k,1464) = .860_r8*rxt(k,75)
     214    58835600 :          mat(k,2042) = .700_r8*rxt(k,79)
     215    58835600 :          mat(k,1456) = rxt(k,83)
     216    58835600 :          mat(k,224) = 1.500_r8*rxt(k,90)
     217    58835600 :          mat(k,2358) = rxt(k,93)
     218    58835600 :          mat(k,1290) = rxt(k,94)
     219    58835600 :          mat(k,1719) = rxt(k,96)
     220    58835600 :          mat(k,389) = rxt(k,154)
     221    58835600 :          mat(k,1548) = rxt(k,384)
     222    58835600 :          mat(k,1647) = rxt(k,500)
     223    58835600 :          mat(k,1855) = .600_r8*rxt(k,529)
     224    58835600 :          mat(k,1823) = .600_r8*rxt(k,532)
     225    58835600 :          mat(k,1613) = -( rxt(k,40) + het_rates(k,64) )
     226    58835600 :          mat(k,703) = rxt(k,36)
     227    58835600 :          mat(k,2256) = .440_r8*rxt(k,39)
     228    58835600 :          mat(k,618) = .170_r8*rxt(k,48)
     229    58835600 :          mat(k,631) = .280_r8*rxt(k,49)
     230    58835600 :          mat(k,1868) = rxt(k,54)
     231    58835600 :          mat(k,570) = .400_r8*rxt(k,86)
     232    58835600 :          mat(k,779) = rxt(k,98)
     233    58835600 :          mat(k,364) = rxt(k,99)
     234    60717998 :          mat(k,369) = rxt(k,100)
     235             :       end do
     236     1882398 :       end subroutine linmat01
     237     1882398 :       subroutine linmat02( avec_len, mat, y, rxt, het_rates )
     238             : !----------------------------------------------
     239             : ! ... linear matrix entries for implicit species
     240             : !----------------------------------------------
     241             :       use chem_mods, only : gas_pcnst, rxntot, nzcnt
     242             :       use shr_kind_mod, only : r8 => shr_kind_r8
     243             :       implicit none
     244             : !----------------------------------------------
     245             : ! ... dummy arguments
     246             : !----------------------------------------------
     247             :       integer, intent(in) :: avec_len
     248             :       real(r8), intent(in) :: y(veclen,gas_pcnst)
     249             :       real(r8), intent(in) :: rxt(veclen,rxntot)
     250             :       real(r8), intent(in) :: het_rates(veclen,gas_pcnst)
     251             :       real(r8), intent(inout) :: mat(veclen,nzcnt)
     252             : !----------------------------------------------
     253             : ! ... local variables
     254             : !----------------------------------------------
     255             :       integer :: k
     256    60717998 :       do k = 1,avec_len
     257    58835600 :          mat(k,248) = -( rxt(k,140) + het_rates(k,65) )
     258    58835600 :          mat(k,160) = rxt(k,123)
     259    58835600 :          mat(k,165) = rxt(k,124)
     260    58835600 :          mat(k,170) = rxt(k,126)
     261    58835600 :          mat(k,139) = 2.000_r8*rxt(k,127)
     262    58835600 :          mat(k,175) = 2.000_r8*rxt(k,128)
     263    58835600 :          mat(k,143) = rxt(k,129)
     264    58835600 :          mat(k,127) = 2.000_r8*rxt(k,142)
     265    58835600 :          mat(k,260) = rxt(k,145)
     266    58835600 :          mat(k,325) = rxt(k,146)
     267    58835600 :          mat(k,256) = -( rxt(k,141) + het_rates(k,66) )
     268    58835600 :          mat(k,135) = rxt(k,125)
     269    58835600 :          mat(k,171) = rxt(k,126)
     270    58835600 :          mat(k,252) = rxt(k,144)
     271    58835600 :          mat(k,218) = -( het_rates(k,67) )
     272    58835600 :          mat(k,639) = -( rxt(k,41) + het_rates(k,68) )
     273    58835600 :          mat(k,1837) = .600_r8*rxt(k,529)
     274    58835600 :          mat(k,1806) = .600_r8*rxt(k,532)
     275    58835600 :          mat(k,304) = -( het_rates(k,69) )
     276    58835600 :          mat(k,6) = -( het_rates(k,70) )
     277    58835600 :          mat(k,7) = -( het_rates(k,71) )
     278    58835600 :          mat(k,8) = -( het_rates(k,72) )
     279    58835600 :          mat(k,9) = -( rxt(k,901) + het_rates(k,73) )
     280    58835600 :          mat(k,150) = -( rxt(k,42) + het_rates(k,74) )
     281    58835600 :          mat(k,1242) = -( het_rates(k,75) )
     282    58835600 :          mat(k,166) = rxt(k,124)
     283    58835600 :          mat(k,176) = rxt(k,128)
     284    58835600 :          mat(k,249) = 2.000_r8*rxt(k,140)
     285    58835600 :          mat(k,257) = rxt(k,141)
     286    58835600 :          mat(k,323) = rxt(k,148)
     287    58835600 :          mat(k,1712) = -( rxt(k,43) + het_rates(k,76) )
     288    58835600 :          mat(k,976) = .330_r8*rxt(k,47)
     289    58835600 :          mat(k,1869) = .500_r8*rxt(k,53)
     290    58835600 :          mat(k,1660) = rxt(k,59)
     291    58835600 :          mat(k,1112) = .500_r8*rxt(k,60)
     292    58835600 :          mat(k,1790) = .500_r8*rxt(k,61)
     293    58835600 :          mat(k,1469) = rxt(k,62)
     294    58835600 :          mat(k,772) = .720_r8*rxt(k,63)
     295    58835600 :          mat(k,1915) = .500_r8*rxt(k,80)
     296    58835600 :          mat(k,1499) = .560_r8*rxt(k,81)
     297    58835600 :          mat(k,292) = rxt(k,344)
     298    58835600 :          mat(k,1476) = -( rxt(k,44) + rxt(k,811) + het_rates(k,77) )
     299    58835600 :          mat(k,420) = rxt(k,21)
     300    58835600 :          mat(k,1111) = .500_r8*rxt(k,60)
     301    58835600 :          mat(k,1787) = .500_r8*rxt(k,61)
     302    58835600 :          mat(k,771) = .280_r8*rxt(k,63)
     303    58835600 :          mat(k,349) = .700_r8*rxt(k,87)
     304    58835600 :          mat(k,746) = .600_r8*rxt(k,115)
     305    58835600 :          mat(k,847) = .340_r8*rxt(k,116)
     306    58835600 :          mat(k,431) = .170_r8*rxt(k,117)
     307    58835600 :          mat(k,2931) = -( rxt(k,181) + het_rates(k,78) )
     308    58835600 :          mat(k,4112) = rxt(k,2) + 2.000_r8*rxt(k,3)
     309    58835600 :          mat(k,3183) = 2.000_r8*rxt(k,31)
     310    58835600 :          mat(k,450) = rxt(k,37)
     311    58835600 :          mat(k,2260) = rxt(k,38) + .330_r8*rxt(k,39)
     312    58835600 :          mat(k,1152) = rxt(k,143)
     313    58835600 :          mat(k,3127) = rxt(k,147)
     314    58835600 :          mat(k,324) = rxt(k,148)
     315    58835600 :          mat(k,1673) = -( het_rates(k,79) )
     316    58835600 :          mat(k,4109) = rxt(k,1)
     317    58835600 :          mat(k,3179) = rxt(k,32)
     318    58835600 :          mat(k,2257) = 1.440_r8*rxt(k,39)
     319    58835600 :          mat(k,126) = -( rxt(k,142) + het_rates(k,80) )
     320    58835600 :          mat(k,1487) = -( rxt(k,4) + het_rates(k,81) )
     321    58835600 :          mat(k,153) = -( rxt(k,153) + het_rates(k,82) )
     322    58835600 :          mat(k,1150) = -( rxt(k,143) + het_rates(k,83) )
     323    58835600 :          mat(k,251) = -( rxt(k,144) + het_rates(k,84) )
     324    58835600 :          mat(k,261) = -( rxt(k,145) + het_rates(k,85) )
     325    58835600 :          mat(k,326) = -( rxt(k,146) + het_rates(k,86) )
     326    58835600 :          mat(k,3129) = -( rxt(k,147) + het_rates(k,87) )
     327    58835600 :          mat(k,197) = -( het_rates(k,88) )
     328    58835600 :          mat(k,883) = -( rxt(k,45) + het_rates(k,89) )
     329    58835600 :          mat(k,1377) = -( het_rates(k,90) )
     330    58835600 :          mat(k,616) = .410_r8*rxt(k,48)
     331    58835600 :          mat(k,322) = -( rxt(k,148) + het_rates(k,91) )
     332    58835600 :          mat(k,1210) = -( rxt(k,46) + het_rates(k,92) )
     333    58835600 :          mat(k,2949) = -( rxt(k,9) + het_rates(k,93) )
     334    58835600 :          mat(k,981) = rxt(k,813)
     335    58835600 :          mat(k,507) = rxt(k,816)
     336    58835600 :          mat(k,1260) = rxt(k,817)
     337    58835600 :          mat(k,1586) = rxt(k,818)
     338    58835600 :          mat(k,1666) = rxt(k,819)
     339    58835600 :          mat(k,1118) = rxt(k,820)
     340    58835600 :          mat(k,2081) = rxt(k,824)
     341    58835600 :          mat(k,677) = rxt(k,825)
     342    58835600 :          mat(k,2113) = rxt(k,826)
     343             :          mat(k,296) = 2.000_r8*rxt(k,827) + 2.000_r8*rxt(k,884) + 2.000_r8*rxt(k,887) &
     344    58835600 :                       + 2.000_r8*rxt(k,898)
     345    58835600 :          mat(k,2142) = rxt(k,828)
     346    58835600 :          mat(k,3653) = .500_r8*rxt(k,830)
     347    58835600 :          mat(k,3601) = rxt(k,831)
     348    58835600 :          mat(k,208) = rxt(k,832)
     349    58835600 :          mat(k,1230) = rxt(k,835)
     350    58835600 :          mat(k,787) = rxt(k,837)
     351    58835600 :          mat(k,1146) = rxt(k,838)
     352    58835600 :          mat(k,1705) = rxt(k,839)
     353    58835600 :          mat(k,1538) = rxt(k,840)
     354    58835600 :          mat(k,564) = rxt(k,886) + rxt(k,889) + rxt(k,894)
     355    58835600 :          mat(k,1326) = rxt(k,888) + rxt(k,893) + rxt(k,899)
     356    58835600 :          mat(k,443) = -( rxt(k,10) + rxt(k,11) + rxt(k,216) + het_rates(k,94) )
     357    58835600 :          mat(k,995) = -( rxt(k,149) + het_rates(k,95) )
     358    58835600 :          mat(k,562) = rxt(k,886) + rxt(k,889) + rxt(k,894)
     359    58835600 :          mat(k,1159) = -( rxt(k,150) + het_rates(k,96) )
     360    58835600 :          mat(k,1324) = rxt(k,888) + rxt(k,893) + rxt(k,899)
     361    58835600 :          mat(k,974) = -( rxt(k,47) + rxt(k,813) + het_rates(k,97) )
     362    58835600 :          mat(k,613) = -( rxt(k,48) + het_rates(k,98) )
     363    58835600 :          mat(k,1836) = .250_r8*rxt(k,529)
     364    58835600 :          mat(k,626) = -( rxt(k,49) + het_rates(k,99) )
     365    58835600 :          mat(k,1805) = .250_r8*rxt(k,532)
     366    58835600 :          mat(k,488) = -( rxt(k,50) + het_rates(k,100) )
     367    58835600 :          mat(k,1835) = .150_r8*rxt(k,529)
     368    58835600 :          mat(k,521) = -( rxt(k,51) + het_rates(k,101) )
     369    58835600 :          mat(k,1804) = .150_r8*rxt(k,532)
     370    58835600 :          mat(k,1770) = -( rxt(k,52) + het_rates(k,102) )
     371    58835600 :          mat(k,977) = .170_r8*rxt(k,47)
     372    58835600 :          mat(k,1870) = .500_r8*rxt(k,53)
     373    58835600 :          mat(k,1661) = rxt(k,59)
     374    58835600 :          mat(k,1113) = .500_r8*rxt(k,60)
     375    58835600 :          mat(k,1791) = .500_r8*rxt(k,61)
     376    58835600 :          mat(k,1470) = rxt(k,62)
     377    58835600 :          mat(k,773) = .280_r8*rxt(k,63)
     378    58835600 :          mat(k,1777) = .500_r8*rxt(k,74)
     379    58835600 :          mat(k,1462) = .860_r8*rxt(k,75)
     380    58835600 :          mat(k,1545) = rxt(k,384)
     381    58835600 :          mat(k,1872) = -( rxt(k,53) + rxt(k,54) + het_rates(k,103) )
     382    58835600 :          mat(k,2074) = .450_r8*rxt(k,64)
     383    58835600 :          mat(k,2106) = .450_r8*rxt(k,67)
     384    58835600 :          mat(k,2136) = rxt(k,82)
     385    58835600 :          mat(k,924) = -( rxt(k,55) + rxt(k,56) + het_rates(k,104) )
     386    58835600 :          mat(k,640) = .500_r8*rxt(k,41)
     387    58835600 :          mat(k,914) = -( rxt(k,814) + het_rates(k,105) )
     388    58835600 :          mat(k,503) = rxt(k,57)
     389    58835600 :          mat(k,1251) = rxt(k,58)
     390    58835600 :          mat(k,1524) = -( rxt(k,815) + het_rates(k,106) )
     391    58835600 :          mat(k,502) = -( rxt(k,57) + rxt(k,816) + het_rates(k,107) )
     392    58835600 :          mat(k,1252) = -( rxt(k,58) + rxt(k,817) + het_rates(k,108) )
     393    58835600 :          mat(k,1410) = -( het_rates(k,109) )
     394    58835600 :          mat(k,1659) = -( rxt(k,59) + rxt(k,819) + het_rates(k,110) )
     395    58835600 :          mat(k,1110) = -( rxt(k,60) + rxt(k,820) + het_rates(k,111) )
     396    58835600 :          mat(k,1793) = -( rxt(k,61) + rxt(k,821) + het_rates(k,112) )
     397    58835600 :          mat(k,1172) = rxt(k,462)
     398    58835600 :          mat(k,1057) = rxt(k,465)
     399    58835600 :          mat(k,1468) = -( rxt(k,62) + rxt(k,822) + het_rates(k,113) )
     400    58835600 :          mat(k,1122) = rxt(k,458)
     401    58835600 :          mat(k,1134) = rxt(k,468)
     402    58835600 :          mat(k,1311) = rxt(k,480)
     403    58835600 :          mat(k,1363) = rxt(k,483)
     404    58835600 :          mat(k,770) = -( rxt(k,63) + rxt(k,823) + het_rates(k,114) )
     405    58835600 :          mat(k,2078) = -( rxt(k,64) + rxt(k,824) + het_rates(k,115) )
     406    58835600 :          mat(k,673) = -( rxt(k,65) + rxt(k,825) + het_rates(k,116) )
     407    58835600 :          mat(k,593) = -( rxt(k,66) + het_rates(k,117) )
     408    58835600 :          mat(k,2110) = -( rxt(k,67) + rxt(k,826) + het_rates(k,118) )
     409    58835600 :          mat(k,728) = -( rxt(k,68) + het_rates(k,119) )
     410    58835600 :          mat(k,1194) = -( rxt(k,69) + het_rates(k,120) )
     411    58835600 :          mat(k,1572) = -( rxt(k,70) + rxt(k,818) + het_rates(k,121) )
     412    58835600 :          mat(k,919) = -( het_rates(k,122) )
     413    58835600 :          mat(k,1896) = -( rxt(k,71) + het_rates(k,123) )
     414    58835600 :          mat(k,89) = -( het_rates(k,124) )
     415    58835600 :          mat(k,1071) = -( het_rates(k,125) )
     416    58835600 :          mat(k,2016) = -( rxt(k,72) + rxt(k,73) + het_rates(k,126) )
     417    58835600 :          mat(k,524) = rxt(k,51)
     418    58835600 :          mat(k,596) = rxt(k,66)
     419    58835600 :          mat(k,731) = .500_r8*rxt(k,68)
     420    58835600 :          mat(k,1200) = .120_r8*rxt(k,69)
     421    58835600 :          mat(k,1901) = .300_r8*rxt(k,71)
     422    58835600 :          mat(k,1992) = rxt(k,433)
     423    58835600 :          mat(k,1778) = -( rxt(k,74) + het_rates(k,127) )
     424    58835600 :          mat(k,1643) = .510_r8*rxt(k,500)
     425    58835600 :          mat(k,1461) = -( rxt(k,75) + het_rates(k,128) )
     426    58835600 :          mat(k,2062) = .550_r8*rxt(k,64)
     427    58835600 :          mat(k,556) = -( rxt(k,76) + het_rates(k,129) )
     428    58835600 :          mat(k,751) = .800_r8*rxt(k,19)
     429    58835600 :          mat(k,717) = .800_r8*rxt(k,20)
     430    58835600 :          mat(k,332) = -( rxt(k,77) + het_rates(k,130) )
     431    58835600 :          mat(k,528) = -( rxt(k,78) + rxt(k,407) + het_rates(k,131) )
     432    58835600 :          mat(k,2041) = -( rxt(k,79) + het_rates(k,132) )
     433    58835600 :          mat(k,491) = rxt(k,50)
     434    58835600 :          mat(k,676) = rxt(k,65)
     435    58835600 :          mat(k,732) = .500_r8*rxt(k,68)
     436    58835600 :          mat(k,1201) = .880_r8*rxt(k,69)
     437    58835600 :          mat(k,1902) = .700_r8*rxt(k,71)
     438    58835600 :          mat(k,1956) = rxt(k,427)
     439    58835600 :          mat(k,1916) = -( rxt(k,80) + het_rates(k,133) )
     440    58835600 :          mat(k,1645) = .490_r8*rxt(k,500)
     441    58835600 :          mat(k,1498) = -( rxt(k,81) + het_rates(k,134) )
     442    58835600 :          mat(k,2098) = .550_r8*rxt(k,67)
     443    58835600 :          mat(k,827) = -( het_rates(k,135) )
     444    58835600 :          mat(k,477) = -( rxt(k,198) + het_rates(k,136) )
     445    58835600 :          mat(k,2986) = rxt(k,15)
     446    58835600 :          mat(k,201) = -( rxt(k,12) + het_rates(k,137) )
     447             :          mat(k,295) = -( rxt(k,13) + rxt(k,14) + rxt(k,217) + rxt(k,827) + rxt(k,884) &
     448    58835600 :                       + rxt(k,887) + rxt(k,898) + het_rates(k,138) )
     449    58835600 :          mat(k,2140) = -( rxt(k,82) + rxt(k,828) + het_rates(k,139) )
     450    58835600 :          mat(k,1583) = rxt(k,70)
     451    58835600 :          mat(k,10) = -( het_rates(k,140) )
     452    58835600 :          mat(k,11) = -( het_rates(k,141) )
     453    58835600 :          mat(k,12) = -( het_rates(k,142) )
     454    58835600 :          mat(k,117) = -( het_rates(k,143) )
     455    58835600 :          mat(k,13) = -( rxt(k,829) + het_rates(k,144) )
     456    58835600 :          mat(k,14) = -( rxt(k,903) + het_rates(k,145) )
     457    60717998 :          mat(k,15) = -( rxt(k,902) + het_rates(k,146) )
     458             :       end do
     459     1882398 :       end subroutine linmat02
     460     1882398 :       subroutine linmat03( avec_len, mat, y, rxt, het_rates )
     461             : !----------------------------------------------
     462             : ! ... linear matrix entries for implicit species
     463             : !----------------------------------------------
     464             :       use chem_mods, only : gas_pcnst, rxntot, nzcnt
     465             :       use shr_kind_mod, only : r8 => shr_kind_r8
     466             :       implicit none
     467             : !----------------------------------------------
     468             : ! ... dummy arguments
     469             : !----------------------------------------------
     470             :       integer, intent(in) :: avec_len
     471             :       real(r8), intent(in) :: y(veclen,gas_pcnst)
     472             :       real(r8), intent(in) :: rxt(veclen,rxntot)
     473             :       real(r8), intent(in) :: het_rates(veclen,gas_pcnst)
     474             :       real(r8), intent(inout) :: mat(veclen,nzcnt)
     475             : !----------------------------------------------
     476             : ! ... local variables
     477             : !----------------------------------------------
     478             :       integer :: k
     479    60717998 :       do k = 1,avec_len
     480    58835600 :          mat(k,3106) = -( rxt(k,15) + het_rates(k,147) )
     481    58835600 :          mat(k,297) = rxt(k,14)
     482    58835600 :          mat(k,3654) = rxt(k,16) + .500_r8*rxt(k,830)
     483    58835600 :          mat(k,3602) = rxt(k,17)
     484    58835600 :          mat(k,479) = rxt(k,198)
     485    58835600 :          mat(k,3663) = -( rxt(k,16) + rxt(k,830) + het_rates(k,148) )
     486    58835600 :          mat(k,2956) = rxt(k,9)
     487    58835600 :          mat(k,446) = rxt(k,11) + rxt(k,216)
     488    58835600 :          mat(k,300) = rxt(k,13) + rxt(k,217)
     489    58835600 :          mat(k,3611) = rxt(k,18)
     490    58835600 :          mat(k,760) = rxt(k,19)
     491    58835600 :          mat(k,984) = rxt(k,47)
     492    58835600 :          mat(k,510) = rxt(k,57)
     493    58835600 :          mat(k,1263) = rxt(k,58)
     494    58835600 :          mat(k,1669) = 2.000_r8*rxt(k,59)
     495    58835600 :          mat(k,1119) = 2.000_r8*rxt(k,60)
     496    58835600 :          mat(k,1801) = rxt(k,61)
     497    58835600 :          mat(k,1473) = rxt(k,62)
     498    58835600 :          mat(k,2088) = rxt(k,64)
     499    58835600 :          mat(k,680) = rxt(k,65)
     500    58835600 :          mat(k,599) = rxt(k,66)
     501    58835600 :          mat(k,2120) = rxt(k,67)
     502    58835600 :          mat(k,736) = rxt(k,68)
     503    58835600 :          mat(k,1208) = rxt(k,69)
     504    58835600 :          mat(k,1784) = .750_r8*rxt(k,74)
     505    58835600 :          mat(k,533) = rxt(k,78) + rxt(k,407)
     506    58835600 :          mat(k,1924) = .750_r8*rxt(k,80)
     507    58835600 :          mat(k,2149) = rxt(k,82)
     508    58835600 :          mat(k,1459) = rxt(k,83)
     509    58835600 :          mat(k,1485) = rxt(k,84)
     510    58835600 :          mat(k,209) = rxt(k,85)
     511    58835600 :          mat(k,575) = .600_r8*rxt(k,86) + rxt(k,352)
     512    58835600 :          mat(k,662) = rxt(k,95) + rxt(k,790)
     513    58835600 :          mat(k,671) = rxt(k,97) + rxt(k,791)
     514    58835600 :          mat(k,427) = rxt(k,101) + rxt(k,792)
     515    58835600 :          mat(k,1232) = rxt(k,103)
     516    58835600 :          mat(k,991) = .500_r8*rxt(k,105)
     517    58835600 :          mat(k,687) = .460_r8*rxt(k,106)
     518    58835600 :          mat(k,1147) = rxt(k,107)
     519    58835600 :          mat(k,789) = .460_r8*rxt(k,108)
     520    58835600 :          mat(k,1560) = rxt(k,109)
     521    58835600 :          mat(k,1695) = rxt(k,110)
     522    58835600 :          mat(k,1540) = rxt(k,111)
     523    58835600 :          mat(k,1708) = rxt(k,112)
     524    58835600 :          mat(k,568) = rxt(k,120)
     525    58835600 :          mat(k,1331) = rxt(k,139)
     526    58835600 :          mat(k,158) = rxt(k,575)
     527    58835600 :          mat(k,3610) = -( rxt(k,17) + rxt(k,18) + rxt(k,831) + het_rates(k,149) )
     528    58835600 :          mat(k,445) = rxt(k,10)
     529    58835600 :          mat(k,299) = rxt(k,13) + rxt(k,14) + rxt(k,217)
     530    58835600 :          mat(k,574) = .400_r8*rxt(k,86)
     531    58835600 :          mat(k,567) = rxt(k,121)
     532    58835600 :          mat(k,1330) = rxt(k,138)
     533    58835600 :          mat(k,1454) = -( rxt(k,83) + het_rates(k,150) )
     534    58835600 :          mat(k,1912) = .250_r8*rxt(k,80)
     535    58835600 :          mat(k,1481) = -( rxt(k,84) + het_rates(k,151) )
     536    58835600 :          mat(k,1776) = .250_r8*rxt(k,74)
     537    58835600 :          mat(k,16) = -( het_rates(k,152) )
     538    58835600 :          mat(k,17) = -( het_rates(k,153) )
     539    58835600 :          mat(k,18) = -( het_rates(k,154) )
     540    58835600 :          mat(k,19) = -( het_rates(k,155) )
     541    58835600 :          mat(k,20) = -( het_rates(k,156) )
     542    58835600 :          mat(k,3161) = -( rxt(k,175) + het_rates(k,157) )
     543    58835600 :          mat(k,4116) = rxt(k,3)
     544    58835600 :          mat(k,3758) = rxt(k,8)
     545    58835600 :          mat(k,298) = rxt(k,14)
     546    58835600 :          mat(k,3108) = rxt(k,15)
     547    58835600 :          mat(k,3656) = rxt(k,16)
     548    58835600 :          mat(k,3604) = rxt(k,18)
     549    58835600 :          mat(k,2263) = .180_r8*rxt(k,39)
     550    58835600 :          mat(k,1615) = rxt(k,40)
     551    58835600 :          mat(k,3484) = rxt(k,119)
     552    58835600 :          mat(k,3510) = rxt(k,137)
     553    58835600 :          mat(k,345) = rxt(k,151)
     554    58835600 :          mat(k,1604) = rxt(k,155) + rxt(k,804)
     555    58835600 :          mat(k,1237) = rxt(k,156)
     556    58835600 :          mat(k,281) = rxt(k,157)
     557    58835600 :          mat(k,3799) = rxt(k,170) + rxt(k,171)
     558    58835600 :          mat(k,480) = rxt(k,198)
     559    58835600 :          mat(k,546) = rxt(k,797)
     560    58835600 :          mat(k,3766) = -( rxt(k,7) + rxt(k,8) + het_rates(k,158) )
     561    58835600 :          mat(k,3169) = rxt(k,175)
     562    58835600 :          mat(k,21) = -( het_rates(k,159) )
     563    58835600 :          mat(k,342) = -( rxt(k,151) + het_rates(k,160) )
     564    58835600 :          mat(k,385) = -( rxt(k,154) + het_rates(k,161) )
     565    58835600 :          mat(k,207) = -( rxt(k,85) + rxt(k,832) + het_rates(k,162) )
     566    58835600 :          mat(k,569) = -( rxt(k,86) + rxt(k,352) + het_rates(k,163) )
     567    58835600 :          mat(k,156) = -( rxt(k,575) + het_rates(k,164) )
     568    58835600 :          mat(k,484) = -( het_rates(k,165) )
     569    58835600 :          mat(k,288) = rxt(k,30)
     570    58835600 :          mat(k,192) = -( het_rates(k,166) )
     571    58835600 :          mat(k,347) = -( rxt(k,87) + het_rates(k,167) )
     572    58835600 :          mat(k,22) = -( het_rates(k,168) )
     573    58835600 :          mat(k,23) = -( het_rates(k,169) )
     574    58835600 :          mat(k,577) = -( rxt(k,88) + het_rates(k,170) )
     575    58835600 :          mat(k,405) = -( rxt(k,89) + het_rates(k,171) )
     576    58835600 :          mat(k,543) = -( rxt(k,797) + het_rates(k,172) )
     577    58835600 :          mat(k,386) = rxt(k,154)
     578    58835600 :          mat(k,1598) = rxt(k,155)
     579    58835600 :          mat(k,24) = -( rxt(k,152) + het_rates(k,173) )
     580    58835600 :          mat(k,1600) = -( rxt(k,155) + rxt(k,804) + het_rates(k,174) )
     581    58835600 :          mat(k,1236) = rxt(k,156)
     582    58835600 :          mat(k,544) = rxt(k,797)
     583    58835600 :          mat(k,1235) = -( rxt(k,156) + het_rates(k,175) )
     584    58835600 :          mat(k,280) = rxt(k,157)
     585    58835600 :          mat(k,1599) = rxt(k,804)
     586    58835600 :          mat(k,279) = -( rxt(k,157) + het_rates(k,176) )
     587    58835600 :          mat(k,154) = rxt(k,153)
     588    58835600 :          mat(k,25) = -( het_rates(k,177) )
     589    58835600 :          mat(k,26) = -( het_rates(k,178) )
     590    58835600 :          mat(k,27) = -( het_rates(k,179) )
     591    58835600 :          mat(k,28) = -( het_rates(k,180) )
     592    58835600 :          mat(k,29) = -( rxt(k,158) + het_rates(k,181) )
     593    58835600 :          mat(k,30) = -( rxt(k,159) + het_rates(k,182) )
     594    58835600 :          mat(k,31) = -( rxt(k,160) + het_rates(k,183) )
     595    58835600 :          mat(k,32) = -( rxt(k,161) + het_rates(k,184) )
     596    58835600 :          mat(k,33) = -( rxt(k,162) + het_rates(k,185) )
     597    58835600 :          mat(k,34) = -( rxt(k,163) + het_rates(k,186) )
     598    58835600 :          mat(k,35) = -( rxt(k,164) + het_rates(k,187) )
     599    58835600 :          mat(k,36) = -( rxt(k,165) + het_rates(k,188) )
     600    58835600 :          mat(k,37) = -( rxt(k,166) + het_rates(k,189) )
     601    58835600 :          mat(k,38) = -( rxt(k,167) + het_rates(k,190) )
     602    58835600 :          mat(k,39) = -( het_rates(k,191) )
     603    58835600 :          mat(k,1475) = rxt(k,811)
     604    58835600 :          mat(k,40) = -( het_rates(k,192) )
     605    58835600 :          mat(k,41) = -( het_rates(k,193) )
     606    58835600 :          mat(k,42) = -( het_rates(k,194) )
     607    58835600 :          mat(k,43) = -( het_rates(k,195) )
     608    58835600 :          mat(k,44) = -( rxt(k,833) + het_rates(k,196) )
     609    58835600 :          mat(k,45) = -( rxt(k,904) + het_rates(k,197) )
     610    58835600 :          mat(k,51) = -( het_rates(k,198) )
     611    58835600 :          mat(k,223) = -( rxt(k,90) + het_rates(k,199) )
     612    58835600 :          mat(k,2320) = -( rxt(k,91) + het_rates(k,200) )
     613    58835600 :          mat(k,471) = -( rxt(k,92) + het_rates(k,201) )
     614    58835600 :          mat(k,2359) = -( rxt(k,93) + het_rates(k,202) )
     615    58835600 :          mat(k,988) = .500_r8*rxt(k,105)
     616    58835600 :          mat(k,1145) = rxt(k,107)
     617    58835600 :          mat(k,1558) = rxt(k,109)
     618    58835600 :          mat(k,1537) = rxt(k,111)
     619    58835600 :          mat(k,690) = rxt(k,113)
     620    58835600 :          mat(k,1289) = -( rxt(k,94) + het_rates(k,203) )
     621    58835600 :          mat(k,655) = -( rxt(k,95) + rxt(k,790) + het_rates(k,204) )
     622    58835600 :          mat(k,1718) = -( rxt(k,96) + het_rates(k,205) )
     623    58835600 :          mat(k,602) = rxt(k,114)
     624    58835600 :          mat(k,664) = -( rxt(k,97) + rxt(k,791) + het_rates(k,206) )
     625    58835600 :          mat(k,778) = -( rxt(k,98) + het_rates(k,207) )
     626    58835600 :          mat(k,363) = -( rxt(k,99) + het_rates(k,208) )
     627    58835600 :          mat(k,368) = -( rxt(k,100) + het_rates(k,209) )
     628    58835600 :          mat(k,423) = -( rxt(k,101) + rxt(k,792) + het_rates(k,210) )
     629    58835600 :          mat(k,373) = -( rxt(k,102) + rxt(k,834) + het_rates(k,211) )
     630    58835600 :          mat(k,2629) = -( het_rates(k,212) )
     631    58835600 :          mat(k,2322) = rxt(k,91)
     632    58835600 :          mat(k,685) = .460_r8*rxt(k,106)
     633    58835600 :          mat(k,786) = .460_r8*rxt(k,108)
     634    58835600 :          mat(k,1691) = rxt(k,110)
     635    58835600 :          mat(k,1704) = rxt(k,112)
     636    58835600 :          mat(k,2600) = -( het_rates(k,213) )
     637    58835600 :          mat(k,473) = rxt(k,92)
     638    58835600 :          mat(k,1228) = -( rxt(k,103) + rxt(k,835) + het_rates(k,214) )
     639    58835600 :          mat(k,969) = -( rxt(k,104) + rxt(k,836) + het_rates(k,215) )
     640    58835600 :          mat(k,1106) = -( het_rates(k,216) )
     641    58835600 :          mat(k,986) = -( rxt(k,105) + het_rates(k,217) )
     642    58835600 :          mat(k,682) = -( rxt(k,106) + het_rates(k,218) )
     643    58835600 :          mat(k,1143) = -( rxt(k,107) + rxt(k,838) + het_rates(k,219) )
     644    58835600 :          mat(k,783) = -( rxt(k,108) + rxt(k,837) + het_rates(k,220) )
     645    58835600 :          mat(k,1557) = -( rxt(k,109) + het_rates(k,221) )
     646    58835600 :          mat(k,1229) = rxt(k,103)
     647    58835600 :          mat(k,970) = rxt(k,104)
     648    58835600 :          mat(k,987) = .500_r8*rxt(k,105)
     649    58835600 :          mat(k,1689) = -( rxt(k,110) + het_rates(k,222) )
     650    58835600 :          mat(k,684) = .540_r8*rxt(k,106)
     651    58835600 :          mat(k,1536) = -( rxt(k,111) + rxt(k,840) + het_rates(k,223) )
     652    58835600 :          mat(k,1702) = -( rxt(k,112) + rxt(k,839) + het_rates(k,224) )
     653    58835600 :          mat(k,785) = .540_r8*rxt(k,108)
     654    58835600 :          mat(k,689) = -( rxt(k,113) + het_rates(k,225) )
     655    58835600 :          mat(k,374) = rxt(k,102)
     656    58835600 :          mat(k,601) = -( rxt(k,114) + het_rates(k,226) )
     657    58835600 :          mat(k,741) = -( rxt(k,115) + het_rates(k,227) )
     658    58835600 :          mat(k,211) = -( het_rates(k,228) )
     659    58835600 :          mat(k,229) = -( het_rates(k,229) )
     660    58835600 :          mat(k,842) = -( rxt(k,116) + het_rates(k,230) )
     661    58835600 :          mat(k,237) = -( het_rates(k,231) )
     662    58835600 :          mat(k,429) = -( rxt(k,117) + het_rates(k,232) )
     663    58835600 :          mat(k,550) = -( het_rates(k,235) )
     664    58835600 :          mat(k,157) = rxt(k,575)
     665    58835600 :          mat(k,1182) = -( het_rates(k,236) )
     666    58835600 :          mat(k,2296) = -( het_rates(k,237) )
     667    58835600 :          mat(k,2441) = -( het_rates(k,238) )
     668    58835600 :          mat(k,57) = -( het_rates(k,239) )
     669    58835600 :          mat(k,2213) = -( het_rates(k,240) )
     670    58835600 :          mat(k,2408) = -( het_rates(k,241) )
     671    58835600 :          mat(k,63) = -( het_rates(k,242) )
     672    58835600 :          mat(k,514) = -( het_rates(k,243) )
     673    58835600 :          mat(k,69) = -( het_rates(k,244) )
     674    58835600 :          mat(k,2536) = -( het_rates(k,245) )
     675    58835600 :          mat(k,2380) = -( het_rates(k,246) )
     676    58835600 :          mat(k,75) = -( het_rates(k,247) )
     677    58835600 :          mat(k,437) = -( het_rates(k,248) )
     678    58835600 :          mat(k,1350) = -( het_rates(k,249) )
     679    58835600 :          mat(k,558) = rxt(k,76)
     680    60717998 :          mat(k,1024) = -( het_rates(k,250) )
     681             :       end do
     682     1882398 :       end subroutine linmat03
     683     1882398 :       subroutine linmat04( avec_len, mat, y, rxt, het_rates )
     684             : !----------------------------------------------
     685             : ! ... linear matrix entries for implicit species
     686             : !----------------------------------------------
     687             :       use chem_mods, only : gas_pcnst, rxntot, nzcnt
     688             :       use shr_kind_mod, only : r8 => shr_kind_r8
     689             :       implicit none
     690             : !----------------------------------------------
     691             : ! ... dummy arguments
     692             : !----------------------------------------------
     693             :       integer, intent(in) :: avec_len
     694             :       real(r8), intent(in) :: y(veclen,gas_pcnst)
     695             :       real(r8), intent(in) :: rxt(veclen,rxntot)
     696             :       real(r8), intent(in) :: het_rates(veclen,gas_pcnst)
     697             :       real(r8), intent(inout) :: mat(veclen,nzcnt)
     698             : !----------------------------------------------
     699             : ! ... local variables
     700             : !----------------------------------------------
     701             :       integer :: k
     702    60717998 :       do k = 1,avec_len
     703    58835600 :          mat(k,711) = -( het_rates(k,251) )
     704    58835600 :          mat(k,2913) = -( het_rates(k,252) )
     705    58835600 :          mat(k,340) = rxt(k,26)
     706    58835600 :          mat(k,2278) = rxt(k,34)
     707    58835600 :          mat(k,1928) = rxt(k,35)
     708    58835600 :          mat(k,980) = .330_r8*rxt(k,47)
     709    58835600 :          mat(k,622) = .050_r8*rxt(k,48)
     710    58835600 :          mat(k,635) = .070_r8*rxt(k,49)
     711    58835600 :          mat(k,1772) = rxt(k,52)
     712    58835600 :          mat(k,1876) = .500_r8*rxt(k,53)
     713    58835600 :          mat(k,926) = rxt(k,55) + rxt(k,56)
     714    58835600 :          mat(k,2019) = .350_r8*rxt(k,72)
     715    58835600 :          mat(k,559) = rxt(k,76)
     716    58835600 :          mat(k,335) = rxt(k,77)
     717    58835600 :          mat(k,2044) = .300_r8*rxt(k,79)
     718    58835600 :          mat(k,1919) = .750_r8*rxt(k,80)
     719    58835600 :          mat(k,1502) = .560_r8*rxt(k,81)
     720    58835600 :          mat(k,1483) = rxt(k,84)
     721    58835600 :          mat(k,571) = .600_r8*rxt(k,86) + rxt(k,352)
     722    58835600 :          mat(k,407) = rxt(k,89)
     723    58835600 :          mat(k,225) = .500_r8*rxt(k,90)
     724    58835600 :          mat(k,3463) = -( het_rates(k,253) )
     725    58835600 :          mat(k,1436) = rxt(k,33)
     726    58835600 :          mat(k,2284) = rxt(k,34)
     727    58835600 :          mat(k,706) = rxt(k,36)
     728    58835600 :          mat(k,2266) = rxt(k,38)
     729    58835600 :          mat(k,624) = .040_r8*rxt(k,48)
     730    58835600 :          mat(k,637) = .070_r8*rxt(k,49)
     731    58835600 :          mat(k,2025) = .650_r8*rxt(k,72)
     732    58835600 :          mat(k,2050) = .300_r8*rxt(k,79)
     733    58835600 :          mat(k,573) = .400_r8*rxt(k,86)
     734    58835600 :          mat(k,650) = rxt(k,131)
     735    58835600 :          mat(k,397) = rxt(k,133)
     736    58835600 :          mat(k,906) = -( het_rates(k,254) )
     737    58835600 :          mat(k,302) = .600_r8*rxt(k,24)
     738    58835600 :          mat(k,605) = -( het_rates(k,255) )
     739    58835600 :          mat(k,291) = -( rxt(k,343) + rxt(k,344) + het_rates(k,256) )
     740    58835600 :          mat(k,151) = rxt(k,42)
     741    58835600 :          mat(k,855) = -( het_rates(k,257) )
     742    58835600 :          mat(k,3369) = -( rxt(k,812) + het_rates(k,258) )
     743    58835600 :          mat(k,444) = rxt(k,11) + rxt(k,216)
     744    58835600 :          mat(k,759) = rxt(k,19)
     745    58835600 :          mat(k,726) = .900_r8*rxt(k,20)
     746    58835600 :          mat(k,421) = rxt(k,21)
     747    58835600 :          mat(k,191) = 1.500_r8*rxt(k,22)
     748    58835600 :          mat(k,470) = rxt(k,23)
     749    58835600 :          mat(k,303) = .600_r8*rxt(k,24)
     750    58835600 :          mat(k,404) = .600_r8*rxt(k,25)
     751    58835600 :          mat(k,341) = rxt(k,26)
     752    58835600 :          mat(k,356) = rxt(k,27)
     753    58835600 :          mat(k,361) = rxt(k,28)
     754    58835600 :          mat(k,414) = rxt(k,29)
     755    58835600 :          mat(k,1435) = rxt(k,33)
     756    58835600 :          mat(k,1930) = rxt(k,35)
     757    58835600 :          mat(k,644) = .500_r8*rxt(k,41)
     758    58835600 :          mat(k,1716) = 2.000_r8*rxt(k,43)
     759    58835600 :          mat(k,1479) = 2.000_r8*rxt(k,44)
     760    58835600 :          mat(k,887) = rxt(k,45)
     761    58835600 :          mat(k,983) = .670_r8*rxt(k,47)
     762    58835600 :          mat(k,623) = .620_r8*rxt(k,48)
     763    58835600 :          mat(k,636) = .560_r8*rxt(k,49)
     764    58835600 :          mat(k,493) = rxt(k,50)
     765    58835600 :          mat(k,526) = rxt(k,51)
     766    58835600 :          mat(k,1774) = rxt(k,52)
     767    58835600 :          mat(k,1880) = 1.500_r8*rxt(k,53) + rxt(k,54)
     768    58835600 :          mat(k,509) = rxt(k,57)
     769    58835600 :          mat(k,1262) = rxt(k,58)
     770    58835600 :          mat(k,776) = rxt(k,63)
     771    58835600 :          mat(k,2086) = .450_r8*rxt(k,64)
     772    58835600 :          mat(k,679) = rxt(k,65)
     773    58835600 :          mat(k,598) = rxt(k,66)
     774    58835600 :          mat(k,2118) = .450_r8*rxt(k,67)
     775    58835600 :          mat(k,735) = rxt(k,68)
     776    58835600 :          mat(k,1591) = rxt(k,70)
     777    58835600 :          mat(k,1908) = rxt(k,71)
     778    58835600 :          mat(k,2024) = rxt(k,72) + rxt(k,73)
     779    58835600 :          mat(k,1783) = 1.250_r8*rxt(k,74)
     780    58835600 :          mat(k,1466) = rxt(k,75)
     781    58835600 :          mat(k,1923) = .500_r8*rxt(k,80)
     782    58835600 :          mat(k,1504) = .440_r8*rxt(k,81)
     783    58835600 :          mat(k,2147) = rxt(k,82)
     784    58835600 :          mat(k,1458) = rxt(k,83)
     785    58835600 :          mat(k,350) = rxt(k,87)
     786    58835600 :          mat(k,582) = rxt(k,88)
     787    58835600 :          mat(k,226) = rxt(k,90)
     788    58835600 :          mat(k,2329) = rxt(k,91)
     789    58835600 :          mat(k,474) = rxt(k,92)
     790    58835600 :          mat(k,2365) = rxt(k,93)
     791    58835600 :          mat(k,1294) = rxt(k,94)
     792    58835600 :          mat(k,1723) = rxt(k,96)
     793    58835600 :          mat(k,375) = rxt(k,102)
     794    58835600 :          mat(k,1231) = rxt(k,103)
     795    58835600 :          mat(k,971) = rxt(k,104)
     796    58835600 :          mat(k,990) = .500_r8*rxt(k,105)
     797    58835600 :          mat(k,686) = .540_r8*rxt(k,106)
     798    58835600 :          mat(k,788) = .540_r8*rxt(k,108)
     799    58835600 :          mat(k,1559) = rxt(k,109)
     800    58835600 :          mat(k,1694) = rxt(k,110)
     801    58835600 :          mat(k,1539) = rxt(k,111)
     802    58835600 :          mat(k,1707) = rxt(k,112)
     803    58835600 :          mat(k,691) = rxt(k,113)
     804    58835600 :          mat(k,603) = rxt(k,114)
     805    58835600 :          mat(k,749) = rxt(k,115)
     806    58835600 :          mat(k,851) = rxt(k,116)
     807    58835600 :          mat(k,433) = rxt(k,117)
     808    58835600 :          mat(k,2936) = rxt(k,181)
     809    58835600 :          mat(k,698) = rxt(k,313)
     810    58835600 :          mat(k,294) = rxt(k,343) + rxt(k,344)
     811    58835600 :          mat(k,1129) = rxt(k,458)
     812    58835600 :          mat(k,1175) = rxt(k,462)
     813    58835600 :          mat(k,1061) = rxt(k,465)
     814    58835600 :          mat(k,1140) = rxt(k,468)
     815    58835600 :          mat(k,1861) = .400_r8*rxt(k,529)
     816    58835600 :          mat(k,1830) = .400_r8*rxt(k,532)
     817    58835600 :          mat(k,693) = -( rxt(k,313) + het_rates(k,259) )
     818    58835600 :          mat(k,1298) = -( het_rates(k,260) )
     819    58835600 :          mat(k,1953) = -( rxt(k,427) + rxt(k,428) + rxt(k,429) + het_rates(k,261) )
     820    58835600 :          mat(k,268) = rxt(k,436)
     821    58835600 :          mat(k,271) = rxt(k,438)
     822    58835600 :          mat(k,1991) = -( rxt(k,433) + rxt(k,434) + rxt(k,435) + het_rates(k,262) )
     823    58835600 :          mat(k,274) = rxt(k,440)
     824    58835600 :          mat(k,277) = rxt(k,442)
     825    58835600 :          mat(k,266) = -( rxt(k,436) + rxt(k,437) + het_rates(k,263) )
     826    58835600 :          mat(k,1934) = rxt(k,428)
     827    58835600 :          mat(k,1834) = rxt(k,494)
     828    58835600 :          mat(k,269) = -( rxt(k,438) + rxt(k,439) + het_rates(k,264) )
     829    58835600 :          mat(k,1935) = rxt(k,429)
     830    58835600 :          mat(k,1726) = rxt(k,447)
     831    58835600 :          mat(k,272) = -( rxt(k,440) + rxt(k,441) + het_rates(k,265) )
     832    58835600 :          mat(k,1970) = rxt(k,434)
     833    58835600 :          mat(k,1803) = rxt(k,498)
     834    58835600 :          mat(k,275) = -( rxt(k,442) + rxt(k,443) + het_rates(k,266) )
     835    58835600 :          mat(k,1971) = rxt(k,435)
     836    58835600 :          mat(k,1748) = rxt(k,451)
     837    58835600 :          mat(k,1732) = -( rxt(k,447) + het_rates(k,267) )
     838    58835600 :          mat(k,270) = rxt(k,439)
     839    58835600 :          mat(k,1754) = -( rxt(k,451) + het_rates(k,268) )
     840    58835600 :          mat(k,276) = rxt(k,443)
     841    58835600 :          mat(k,1121) = -( rxt(k,458) + het_rates(k,269) )
     842    58835600 :          mat(k,1166) = -( rxt(k,462) + het_rates(k,270) )
     843    58835600 :          mat(k,1054) = -( rxt(k,465) + het_rates(k,271) )
     844    58835600 :          mat(k,1132) = -( rxt(k,468) + het_rates(k,272) )
     845    58835600 :          mat(k,1440) = -( het_rates(k,273) )
     846    58835600 :          mat(k,2180) = -( het_rates(k,274) )
     847    58835600 :          mat(k,1309) = -( rxt(k,480) + het_rates(k,275) )
     848    58835600 :          mat(k,1361) = -( rxt(k,483) + het_rates(k,276) )
     849    58835600 :          mat(k,81) = -( het_rates(k,277) )
     850    58835600 :          mat(k,1848) = -( rxt(k,494) + rxt(k,529) + het_rates(k,278) )
     851    58835600 :          mat(k,267) = rxt(k,437)
     852    58835600 :          mat(k,1817) = -( rxt(k,498) + rxt(k,532) + het_rates(k,279) )
     853    58835600 :          mat(k,273) = rxt(k,441)
     854    58835600 :          mat(k,87) = -( het_rates(k,280) )
     855    58835600 :          mat(k,2505) = -( het_rates(k,281) )
     856    58835600 :          mat(k,2339) = -( het_rates(k,282) )
     857    58835600 :          mat(k,95) = -( het_rates(k,283) )
     858    58835600 :          mat(k,1543) = -( rxt(k,384) + het_rates(k,284) )
     859    58835600 :          mat(k,630) = .190_r8*rxt(k,49)
     860    58835600 :          mat(k,862) = -( het_rates(k,285) )
     861    58835600 :          mat(k,469) = .600_r8*rxt(k,23)
     862    58835600 :          mat(k,1620) = -( het_rates(k,286) )
     863    58835600 :          mat(k,2012) = rxt(k,73)
     864    58835600 :          mat(k,529) = rxt(k,78) + rxt(k,407)
     865    58835600 :          mat(k,929) = -( het_rates(k,287) )
     866    58835600 :          mat(k,402) = .600_r8*rxt(k,25)
     867    58835600 :          mat(k,763) = -( het_rates(k,288) )
     868    58835600 :          mat(k,1508) = -( het_rates(k,289) )
     869    58835600 :          mat(k,617) = .230_r8*rxt(k,48)
     870    58835600 :          mat(k,2570) = -( het_rates(k,290) )
     871    58835600 :          mat(k,2471) = -( het_rates(k,291) )
     872    58835600 :          mat(k,101) = -( het_rates(k,292) )
     873    58835600 :          mat(k,1640) = -( rxt(k,500) + het_rates(k,293) )
     874    58835600 :          mat(k,3808) = -( rxt(k,170) + rxt(k,171) + het_rates(k,294) )
     875    58835600 :          mat(k,4125) = rxt(k,1)
     876    58835600 :          mat(k,3767) = rxt(k,7)
     877    58835600 :          mat(k,203) = rxt(k,12)
     878    58835600 :          mat(k,4101) = -( het_rates(k,295) )
     879    58835600 :          mat(k,4127) = rxt(k,2)
     880    58835600 :          mat(k,1492) = 2.000_r8*rxt(k,4)
     881    58835600 :          mat(k,2960) = rxt(k,9)
     882    58835600 :          mat(k,447) = rxt(k,10)
     883    58835600 :          mat(k,727) = rxt(k,20)
     884    58835600 :          mat(k,422) = rxt(k,21)
     885    58835600 :          mat(k,357) = rxt(k,27)
     886    58835600 :          mat(k,362) = rxt(k,28)
     887    58835600 :          mat(k,415) = rxt(k,29)
     888    58835600 :          mat(k,290) = rxt(k,30)
     889    58835600 :          mat(k,707) = rxt(k,36)
     890    58835600 :          mat(k,453) = rxt(k,37)
     891    58835600 :          mat(k,2270) = .330_r8*rxt(k,39)
     892    58835600 :          mat(k,645) = 1.500_r8*rxt(k,41)
     893    58835600 :          mat(k,152) = rxt(k,42)
     894    58835600 :          mat(k,888) = rxt(k,45)
     895    58835600 :          mat(k,1214) = 2.000_r8*rxt(k,46)
     896    58835600 :          mat(k,625) = 1.110_r8*rxt(k,48)
     897    58835600 :          mat(k,638) = 1.180_r8*rxt(k,49)
     898    58835600 :          mat(k,494) = rxt(k,50)
     899    58835600 :          mat(k,527) = rxt(k,51)
     900    58835600 :          mat(k,1882) = 3.000_r8*rxt(k,54)
     901    58835600 :          mat(k,928) = rxt(k,55) + rxt(k,56)
     902    58835600 :          mat(k,1802) = rxt(k,61)
     903    58835600 :          mat(k,1474) = rxt(k,62)
     904    58835600 :          mat(k,777) = rxt(k,63)
     905    58835600 :          mat(k,2091) = .550_r8*rxt(k,64)
     906    58835600 :          mat(k,2123) = .550_r8*rxt(k,67)
     907    58835600 :          mat(k,1209) = rxt(k,69)
     908    58835600 :          mat(k,1595) = rxt(k,70)
     909    58835600 :          mat(k,1910) = rxt(k,71)
     910    58835600 :          mat(k,1467) = rxt(k,75)
     911    58835600 :          mat(k,336) = rxt(k,77)
     912    58835600 :          mat(k,1505) = rxt(k,81)
     913    58835600 :          mat(k,351) = rxt(k,87)
     914    58835600 :          mat(k,583) = rxt(k,88)
     915    58835600 :          mat(k,409) = rxt(k,89)
     916    58835600 :          mat(k,2332) = rxt(k,91)
     917    58835600 :          mat(k,475) = rxt(k,92)
     918    58835600 :          mat(k,782) = rxt(k,98)
     919    58835600 :          mat(k,367) = rxt(k,99)
     920    58835600 :          mat(k,372) = rxt(k,100)
     921    58835600 :          mat(k,376) = rxt(k,102)
     922    58835600 :          mat(k,972) = rxt(k,104)
     923    58835600 :          mat(k,992) = rxt(k,105)
     924    58835600 :          mat(k,688) = rxt(k,106)
     925    58835600 :          mat(k,1148) = rxt(k,107)
     926    58835600 :          mat(k,790) = rxt(k,108)
     927    58835600 :          mat(k,692) = rxt(k,113)
     928    58835600 :          mat(k,604) = rxt(k,114)
     929    58835600 :          mat(k,750) = rxt(k,115)
     930    58835600 :          mat(k,852) = rxt(k,116)
     931    58835600 :          mat(k,434) = rxt(k,117)
     932    58835600 :          mat(k,1001) = rxt(k,149)
     933    58835600 :          mat(k,1164) = rxt(k,150)
     934    58835600 :          mat(k,1556) = rxt(k,384)
     935    58835600 :          mat(k,1968) = rxt(k,427)
     936    58835600 :          mat(k,2007) = rxt(k,433)
     937    58835600 :          mat(k,1322) = rxt(k,480)
     938    58835600 :          mat(k,1376) = rxt(k,483)
     939    58835600 :          mat(k,1655) = rxt(k,500)
     940    58835600 :          mat(k,1864) = .600_r8*rxt(k,529)
     941    58835600 :          mat(k,1833) = .600_r8*rxt(k,532)
     942    60717998 :          mat(k,3667) = .500_r8*rxt(k,830)
     943             :       end do
     944     1882398 :       end subroutine linmat04
     945     1882398 :       subroutine linmat05( avec_len, mat, y, rxt, het_rates )
     946             : !----------------------------------------------
     947             : ! ... linear matrix entries for implicit species
     948             : !----------------------------------------------
     949             :       use chem_mods, only : gas_pcnst, rxntot, nzcnt
     950             :       use shr_kind_mod, only : r8 => shr_kind_r8
     951             :       implicit none
     952             : !----------------------------------------------
     953             : ! ... dummy arguments
     954             : !----------------------------------------------
     955             :       integer, intent(in) :: avec_len
     956             :       real(r8), intent(in) :: y(veclen,gas_pcnst)
     957             :       real(r8), intent(in) :: rxt(veclen,rxntot)
     958             :       real(r8), intent(in) :: het_rates(veclen,gas_pcnst)
     959             :       real(r8), intent(inout) :: mat(veclen,nzcnt)
     960             : !----------------------------------------------
     961             : ! ... local variables
     962             : !----------------------------------------------
     963             :       integer :: k
     964    60717998 :       do k = 1,avec_len
     965    58835600 :          mat(k,456) = -( het_rates(k,296) )
     966    58835600 :          mat(k,939) = -( het_rates(k,297) )
     967    58835600 :          mat(k,1336) = -( het_rates(k,298) )
     968    58835600 :          mat(k,951) = -( het_rates(k,299) )
     969    58835600 :          mat(k,1006) = -( het_rates(k,300) )
     970    58835600 :          mat(k,2654) = -( het_rates(k,301) )
     971    58835600 :          mat(k,2360) = rxt(k,93)
     972    58835600 :          mat(k,780) = rxt(k,98)
     973    58835600 :          mat(k,2745) = -( het_rates(k,302) )
     974    58835600 :          mat(k,659) = rxt(k,95) + rxt(k,790)
     975    58835600 :          mat(k,2701) = -( het_rates(k,303) )
     976    58835600 :          mat(k,1291) = rxt(k,94)
     977    58835600 :          mat(k,365) = rxt(k,99)
     978    58835600 :          mat(k,2792) = -( het_rates(k,304) )
     979    58835600 :          mat(k,667) = rxt(k,97) + rxt(k,791)
     980    58835600 :          mat(k,2235) = -( het_rates(k,305) )
     981    58835600 :          mat(k,2677) = -( het_rates(k,306) )
     982    58835600 :          mat(k,1720) = rxt(k,96)
     983    58835600 :          mat(k,370) = rxt(k,100)
     984    58835600 :          mat(k,2840) = -( het_rates(k,307) )
     985    58835600 :          mat(k,426) = rxt(k,101) + rxt(k,792)
     986    58835600 :          mat(k,797) = -( het_rates(k,308) )
     987    58835600 :          mat(k,960) = -( het_rates(k,309) )
     988    58835600 :          mat(k,1218) = -( het_rates(k,310) )
     989    58835600 :          mat(k,1015) = -( het_rates(k,311) )
     990    58835600 :          mat(k,805) = -( het_rates(k,312) )
     991    58835600 :          mat(k,813) = -( het_rates(k,313) )
     992    58835600 :          mat(k,873) = -( het_rates(k,314) )
     993    58835600 :          mat(k,107) = -( het_rates(k,315) )
     994    58835600 :          mat(k,895) = -( het_rates(k,316) )
     995    58835600 :          mat(k,113) = -( het_rates(k,317) )
     996    58835600 :          mat(k,536) = -( het_rates(k,318) )
     997    58835600 :          mat(k,4128) = -( rxt(k,1) + rxt(k,2) + rxt(k,3) + het_rates(k,319) )
     998    58835600 :          mat(k,2271) = .050_r8*rxt(k,39)
     999    58835600 :          mat(k,155) = rxt(k,153)
    1000    60717998 :          mat(k,3379) = rxt(k,812)
    1001             :       end do
    1002     1882398 :       end subroutine linmat05
    1003     1882398 :       subroutine linmat( avec_len, mat, y, rxt, het_rates )
    1004             : !----------------------------------------------
    1005             : ! ... linear matrix entries for implicit species
    1006             : !----------------------------------------------
    1007             :       use chem_mods, only : gas_pcnst, rxntot, nzcnt
    1008             :       use shr_kind_mod, only : r8 => shr_kind_r8
    1009             :       implicit none
    1010             : !----------------------------------------------
    1011             : ! ... dummy arguments
    1012             : !----------------------------------------------
    1013             :       integer, intent(in) :: avec_len
    1014             :       real(r8), intent(in) :: y(veclen,gas_pcnst)
    1015             :       real(r8), intent(in) :: rxt(veclen,rxntot)
    1016             :       real(r8), intent(in) :: het_rates(veclen,gas_pcnst)
    1017             :       real(r8), intent(inout) :: mat(veclen,nzcnt)
    1018     1882398 :       call linmat01( avec_len, mat, y, rxt, het_rates )
    1019     1882398 :       call linmat02( avec_len, mat, y, rxt, het_rates )
    1020     1882398 :       call linmat03( avec_len, mat, y, rxt, het_rates )
    1021     1882398 :       call linmat04( avec_len, mat, y, rxt, het_rates )
    1022     1882398 :       call linmat05( avec_len, mat, y, rxt, het_rates )
    1023     1882398 :       end subroutine linmat
    1024             :       end module mo_lin_matrix

Generated by: LCOV version 1.14