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

Generated by: LCOV version 1.14