LCOV - code coverage report
Current view: top level - chemistry/pp_trop_strat_noaero - mo_indprd.F90 (source / functions) Hit Total Coverage
Test: coverage.info Lines: 207 212 97.6 %
Date: 2025-03-14 01:30:37 Functions: 1 1 100.0 %

          Line data    Source code
       1             :       module mo_indprd
       2             :       use shr_kind_mod, only : r8 => shr_kind_r8
       3             :       private
       4             :       public :: indprd
       5             :       contains
       6      145920 :       subroutine indprd( class, prod, nprod, y, extfrc, rxt, chnkpnts )
       7             :       use chem_mods, only : gas_pcnst, extcnt, rxntot
       8             :       implicit none
       9             : !--------------------------------------------------------------------
      10             : ! ... dummy arguments
      11             : !--------------------------------------------------------------------
      12             :       integer, intent(in) :: class
      13             :       integer, intent(in) :: chnkpnts
      14             :       integer, intent(in) :: nprod
      15             :       real(r8), intent(in) :: y(chnkpnts,gas_pcnst)
      16             :       real(r8), intent(in) :: rxt(chnkpnts,rxntot)
      17             :       real(r8), intent(in) :: extfrc(chnkpnts,extcnt)
      18             :       real(r8), intent(inout) :: prod(chnkpnts,nprod)
      19             : !--------------------------------------------------------------------
      20             : ! ... "independent" production for Explicit species
      21             : !--------------------------------------------------------------------
      22      145920 :       if( class == 1 ) then
      23    33765888 :          prod(:,1) = + extfrc(:,5)
      24    33692928 :          prod(:,2) = 0._r8
      25    33692928 :          prod(:,3) = 0._r8
      26    33692928 :          prod(:,4) = 0._r8
      27    33765888 :          prod(:,5) = 0._r8
      28    33692928 :          prod(:,6) = 0._r8
      29    33692928 :          prod(:,7) = 0._r8
      30    33692928 :          prod(:,8) = 0._r8
      31    33692928 :          prod(:,9) = 0._r8
      32    33692928 :          prod(:,10) = 0._r8
      33    33692928 :          prod(:,11) = 0._r8
      34    33692928 :          prod(:,12) = 0._r8
      35    33692928 :          prod(:,13) = 0._r8
      36    33692928 :          prod(:,14) = 0._r8
      37    33692928 :          prod(:,15) =.100_r8*rxt(:,298)*y(:,122)*y(:,27)
      38    33692928 :          prod(:,16) = 0._r8
      39    33692928 :          prod(:,17) = 0._r8
      40           0 :          prod(:,18) = (rxt(:,255)*y(:,60) +rxt(:,257)*y(:,82) +rxt(:,265)*y(:,60) + &
      41             :                  rxt(:,285)*y(:,48) +.500_r8*rxt(:,286)*y(:,49) + &
      42             :                  .800_r8*rxt(:,291)*y(:,69) +rxt(:,292)*y(:,70) + &
      43             :                  .500_r8*rxt(:,341)*y(:,104) +1.800_r8*rxt(:,451)*y(:,151))*y(:,190) &
      44             :                   + (2.000_r8*rxt(:,281)*y(:,170) +.900_r8*rxt(:,282)*y(:,171) + &
      45             :                  rxt(:,284)*y(:,116) +2.000_r8*rxt(:,331)*y(:,184) + &
      46             :                  rxt(:,355)*y(:,178) +rxt(:,380)*y(:,198))*y(:,170) &
      47             :                   + (.200_r8*rxt(:,298)*y(:,27) +.100_r8*rxt(:,342)*y(:,106) + &
      48             :                  .270_r8*rxt(:,430)*y(:,4) +.270_r8*rxt(:,433)*y(:,105))*y(:,122) &
      49             :                   + (rxt(:,332)*y(:,171) +.450_r8*rxt(:,333)*y(:,176) + &
      50             :                  2.000_r8*rxt(:,334)*y(:,184))*y(:,184) &
      51             :                   + (.500_r8*rxt(:,440)*y(:,171) +.900_r8*rxt(:,442)*y(:,116)) &
      52             :                  *y(:,194) +rxt(:,37)*y(:,49) +.400_r8*rxt(:,60)*y(:,127) +rxt(:,65) &
      53    33692928 :                  *y(:,147) +.800_r8*rxt(:,69)*y(:,151)
      54    33692928 :          prod(:,19) = 0._r8
      55    33692928 :          prod(:,20) = 0._r8
      56    33692928 :          prod(:,21) = 0._r8
      57    33692928 :          prod(:,22) = 0._r8
      58    33692928 :          prod(:,23) = 0._r8
      59    33692928 :          prod(:,24) =rxt(:,141)*y(:,117)*y(:,107)
      60    33692928 :          prod(:,25) = 0._r8
      61    33692928 :          prod(:,26) = 0._r8
      62    33765888 :          prod(:,27) = 0._r8
      63    33692928 :          prod(:,28) = 0._r8
      64    33692928 :          prod(:,29) = 0._r8
      65    33692928 :          prod(:,30) =rxt(:,469)*y(:,190)*y(:,112) +rxt(:,478)*y(:,113)
      66           0 :          prod(:,31) = (rxt(:,402)*y(:,172) +rxt(:,405)*y(:,183) +rxt(:,408)*y(:,185) + &
      67             :                  rxt(:,412)*y(:,129))*y(:,117) +.500_r8*rxt(:,341)*y(:,190)*y(:,104) &
      68             :                   +.200_r8*rxt(:,437)*y(:,188)*y(:,116) +.500_r8*rxt(:,449)*y(:,150) &
      69    33692928 :                  *y(:,118)
      70             : !--------------------------------------------------------------------
      71             : ! ... "independent" production for Implicit species
      72             : !--------------------------------------------------------------------
      73       72960 :       else if( class == 4 ) then
      74    33692928 :          prod(:,101) = 0._r8
      75    33692928 :          prod(:,100) = 0._r8
      76    33692928 :          prod(:,124) = 0._r8
      77    33692928 :          prod(:,26) = 0._r8
      78    33692928 :          prod(:,70) = 0._r8
      79    33692928 :          prod(:,27) = 0._r8
      80    33692928 :          prod(:,71) = 0._r8
      81    33692928 :          prod(:,76) = 0._r8
      82    33692928 :          prod(:,51) = 0._r8
      83    33692928 :          prod(:,97) = 0._r8
      84    33692928 :          prod(:,59) = 0._r8
      85    33692928 :          prod(:,39) = 0._r8
      86    33692928 :          prod(:,61) = 0._r8
      87           0 :          prod(:,154) =rxt(:,79)*y(:,32) +rxt(:,80)*y(:,33) +2.000_r8*rxt(:,86)*y(:,39) &
      88             :                   +rxt(:,87)*y(:,41) +3.000_r8*rxt(:,90)*y(:,53) +2.000_r8*rxt(:,98) &
      89    33692928 :                  *y(:,73)
      90    33692928 :          prod(:,42) = 0._r8
      91    33692928 :          prod(:,160) = 0._r8
      92    33765888 :          prod(:,86) = 0._r8
      93    33692928 :          prod(:,40) = 0._r8
      94    33692928 :          prod(:,58) = 0._r8
      95    33692928 :          prod(:,50) = 0._r8
      96    33765888 :          prod(:,90) = 0._r8
      97    33692928 :          prod(:,43) = 0._r8
      98    33765888 :          prod(:,53) = 0._r8
      99    33692928 :          prod(:,49) = 0._r8
     100    33692928 :          prod(:,129) = 0._r8
     101    33692928 :          prod(:,69) = 0._r8
     102    33692928 :          prod(:,19) = 0._r8
     103    33692928 :          prod(:,44) = 0._r8
     104    33692928 :          prod(:,161) =.180_r8*rxt(:,40)*y(:,52)
     105    33692928 :          prod(:,134) = 0._r8
     106    33692928 :          prod(:,16) = 0._r8
     107    33692928 :          prod(:,127) = 0._r8
     108    33692928 :          prod(:,146) = 0._r8
     109    33692928 :          prod(:,88) = 0._r8
     110    33692928 :          prod(:,84) = 0._r8
     111    33692928 :          prod(:,113) = 0._r8
     112    33692928 :          prod(:,67) = 0._r8
     113           0 :          prod(:,169) =4.000_r8*rxt(:,78)*y(:,31) +rxt(:,79)*y(:,32) &
     114             :                   +2.000_r8*rxt(:,81)*y(:,34) +2.000_r8*rxt(:,82)*y(:,35) &
     115             :                   +2.000_r8*rxt(:,83)*y(:,36) +rxt(:,84)*y(:,37) +2.000_r8*rxt(:,85) &
     116             :                  *y(:,38) +3.000_r8*rxt(:,88)*y(:,42) +rxt(:,89)*y(:,44) +rxt(:,100) &
     117    33692928 :                  *y(:,77) +rxt(:,101)*y(:,78) +rxt(:,102)*y(:,79)
     118    33692928 :          prod(:,25) = 0._r8
     119    33692928 :          prod(:,17) = 0._r8
     120    33692928 :          prod(:,164) = 0._r8
     121    33692928 :          prod(:,128) = 0._r8
     122    33692928 :          prod(:,135) =.380_r8*rxt(:,40)*y(:,52) +rxt(:,41)*y(:,61) + extfrc(:,1)
     123       72960 :          prod(:,20) =rxt(:,79)*y(:,32) +rxt(:,80)*y(:,33) +rxt(:,82)*y(:,35) &
     124             :                   +2.000_r8*rxt(:,83)*y(:,36) +2.000_r8*rxt(:,84)*y(:,37) +rxt(:,85) &
     125             :                  *y(:,38) +2.000_r8*rxt(:,98)*y(:,73) +rxt(:,101)*y(:,78) +rxt(:,102) &
     126    33692928 :                  *y(:,79)
     127    33692928 :          prod(:,29) =rxt(:,81)*y(:,34) +rxt(:,82)*y(:,35) +rxt(:,100)*y(:,77)
     128    33765888 :          prod(:,32) = 0._r8
     129    33692928 :          prod(:,47) = 0._r8
     130    33692928 :          prod(:,21) = 0._r8
     131    33692928 :          prod(:,111) =rxt(:,80)*y(:,33) +rxt(:,84)*y(:,37)
     132    33692928 :          prod(:,131) = 0._r8
     133    33692928 :          prod(:,122) = 0._r8
     134    33692928 :          prod(:,156) = (rxt(:,39) +.330_r8*rxt(:,40))*y(:,52)
     135    33692928 :          prod(:,143) =1.440_r8*rxt(:,40)*y(:,52)
     136    33692928 :          prod(:,93) = 0._r8
     137    33692928 :          prod(:,22) = 0._r8
     138    33692928 :          prod(:,118) = 0._r8
     139    33692928 :          prod(:,168) = 0._r8
     140    33692928 :          prod(:,30) = 0._r8
     141    33692928 :          prod(:,115) = 0._r8
     142    33765888 :          prod(:,37) = 0._r8
     143    33692928 :          prod(:,155) = 0._r8
     144    33692928 :          prod(:,62) = 0._r8
     145    33692928 :          prod(:,112) = 0._r8
     146    33692928 :          prod(:,116) = 0._r8
     147    33692928 :          prod(:,136) = 0._r8
     148    33765888 :          prod(:,38) = 0._r8
     149    33692928 :          prod(:,137) = 0._r8
     150    33765888 :          prod(:,52) = 0._r8
     151    33692928 :          prod(:,23) = 0._r8
     152    33692928 :          prod(:,119) = 0._r8
     153    33692928 :          prod(:,94) = 0._r8
     154    33765888 :          prod(:,89) = 0._r8
     155    33692928 :          prod(:,144) = 0._r8
     156    33692928 :          prod(:,63) = 0._r8
     157    33692928 :          prod(:,107) = 0._r8
     158    33692928 :          prod(:,12) = 0._r8
     159    33692928 :          prod(:,145) = 0._r8
     160    33692928 :          prod(:,54) = 0._r8
     161    33765888 :          prod(:,83) = 0._r8
     162    33692928 :          prod(:,55) = 0._r8
     163    33692928 :          prod(:,92) = 0._r8
     164    33692928 :          prod(:,125) = 0._r8
     165    33692928 :          prod(:,149) = 0._r8
     166    33692928 :          prod(:,64) = + extfrc(:,6)
     167    33692928 :          prod(:,48) = 0._r8
     168    33692928 :          prod(:,65) = 0._r8
     169    33692928 :          prod(:,132) = 0._r8
     170    33692928 :          prod(:,18) = 0._r8
     171    33765888 :          prod(:,1) = 0._r8
     172    33692928 :          prod(:,165) = + extfrc(:,2)
     173    33692928 :          prod(:,167) = + extfrc(:,3)
     174    33692928 :          prod(:,170) = 0._r8
     175    33692928 :          prod(:,121) = 0._r8
     176    33692928 :          prod(:,66) = 0._r8
     177           0 :          prod(:,162) =.180_r8*rxt(:,40)*y(:,52) +rxt(:,41)*y(:,61) + (rxt(:,5) + &
     178    33692928 :                  2.000_r8*rxt(:,6))
     179    33692928 :          prod(:,166) = 0._r8
     180    33692928 :          prod(:,56) = 0._r8
     181    33692928 :          prod(:,60) = 0._r8
     182    33765888 :          prod(:,41) = 0._r8
     183    33765888 :          prod(:,77) = 0._r8
     184    33692928 :          prod(:,24) = 0._r8
     185    33765888 :          prod(:,78) = 0._r8
     186    33692928 :          prod(:,28) = 0._r8
     187    33692928 :          prod(:,57) = 0._r8
     188    33765888 :          prod(:,87) = 0._r8
     189    33692928 :          prod(:,68) = 0._r8
     190    33765888 :          prod(:,82) = 0._r8
     191    33692928 :          prod(:,147) = 0._r8
     192    33692928 :          prod(:,120) = + extfrc(:,4)
     193    33692928 :          prod(:,45) = 0._r8
     194    33765888 :          prod(:,2) = 0._r8
     195    33765888 :          prod(:,3) = 0._r8
     196    33765888 :          prod(:,4) = 0._r8
     197    33765888 :          prod(:,5) = 0._r8
     198    33765888 :          prod(:,6) = 0._r8
     199    33692928 :          prod(:,7) = 0._r8
     200    33765888 :          prod(:,33) = 0._r8
     201    33692928 :          prod(:,95) = 0._r8
     202    33765888 :          prod(:,98) = 0._r8
     203    33765888 :          prod(:,79) = 0._r8
     204    33692928 :          prod(:,130) = 0._r8
     205    33692928 :          prod(:,133) = 0._r8
     206    33692928 :          prod(:,96) = 0._r8
     207    33765888 :          prod(:,31) = 0._r8
     208    33765888 :          prod(:,34) = 0._r8
     209    33765888 :          prod(:,35) = 0._r8
     210    33692928 :          prod(:,103) = 0._r8
     211    33765888 :          prod(:,36) = 0._r8
     212    33692928 :          prod(:,72) = 0._r8
     213    33765888 :          prod(:,85) = 0._r8
     214    33692928 :          prod(:,126) = 0._r8
     215    33692928 :          prod(:,8) = 0._r8
     216    33765888 :          prod(:,80) = 0._r8
     217    33692928 :          prod(:,9) = 0._r8
     218    33765888 :          prod(:,73) = 0._r8
     219    33692928 :          prod(:,117) = 0._r8
     220    33692928 :          prod(:,114) = 0._r8
     221    33692928 :          prod(:,99) = 0._r8
     222    33692928 :          prod(:,153) = 0._r8
     223    33692928 :          prod(:,157) =rxt(:,87)*y(:,41) +rxt(:,89)*y(:,44) +rxt(:,39)*y(:,52)
     224    33692928 :          prod(:,109) = 0._r8
     225    33692928 :          prod(:,91) = 0._r8
     226    33692928 :          prod(:,46) = 0._r8
     227    33692928 :          prod(:,104) = 0._r8
     228    33692928 :          prod(:,163) = 0._r8
     229    33692928 :          prod(:,74) = 0._r8
     230    33692928 :          prod(:,151) = 0._r8
     231    33692928 :          prod(:,148) = 0._r8
     232    33692928 :          prod(:,10) = 0._r8
     233    33692928 :          prod(:,11) = 0._r8
     234    33692928 :          prod(:,150) = 0._r8
     235    33692928 :          prod(:,105) = 0._r8
     236    33692928 :          prod(:,152) = 0._r8
     237    33692928 :          prod(:,123) = 0._r8
     238    33765888 :          prod(:,102) = 0._r8
     239    33692928 :          prod(:,13) = 0._r8
     240    33692928 :          prod(:,140) = 0._r8
     241    33692928 :          prod(:,158) =rxt(:,12)*y(:,108) +rxt(:,5)
     242    33692928 :          prod(:,159) =.330_r8*rxt(:,40)*y(:,52)
     243    33692928 :          prod(:,75) = 0._r8
     244    33692928 :          prod(:,110) = 0._r8
     245    33692928 :          prod(:,141) = 0._r8
     246    33692928 :          prod(:,139) = 0._r8
     247    33692928 :          prod(:,138) = 0._r8
     248    33692928 :          prod(:,106) = 0._r8
     249    33692928 :          prod(:,14) = 0._r8
     250    33692928 :          prod(:,142) = 0._r8
     251    33765888 :          prod(:,108) = 0._r8
     252    33692928 :          prod(:,15) = 0._r8
     253    33765888 :          prod(:,81) = 0._r8
     254    33692928 :          prod(:,171) =.050_r8*rxt(:,40)*y(:,52)
     255             :       end if
     256      145920 :       end subroutine indprd
     257             :       end module mo_indprd

Generated by: LCOV version 1.14