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

Generated by: LCOV version 1.14