LCOV - code coverage report
Current view: top level - chemistry/pp_ghg_mam4 - mo_prod_loss.F90 (source / functions) Hit Total Coverage
Test: coverage.info Lines: 66 66 100.0 %
Date: 2025-03-13 18:42:46 Functions: 2 2 100.0 %

          Line data    Source code
       1             :       module mo_prod_loss
       2             :       use shr_kind_mod, only : r8 => shr_kind_r8
       3             :       private
       4             :       public :: exp_prod_loss
       5             :       public :: imp_prod_loss
       6             :       contains
       7       58824 :       subroutine exp_prod_loss( prod, loss, y, rxt, het_rates )
       8             :       use ppgrid, only : pver
       9             :       implicit none
      10             : !--------------------------------------------------------------------
      11             : ! ... dummy args
      12             : !--------------------------------------------------------------------
      13             :       real(r8), dimension(:,:,:), intent(out) :: &
      14             :             prod, &
      15             :             loss
      16             :       real(r8), intent(in) :: y(:,:,:)
      17             :       real(r8), intent(in) :: rxt(:,:,:)
      18             :       real(r8), intent(in) :: het_rates(:,:,:)
      19             : !--------------------------------------------------------------------
      20             : ! ... loss and production for Explicit method
      21             : !--------------------------------------------------------------------
      22    91464480 :          loss(:,:,1) = ( + het_rates(:,:,6))* y(:,:,6)
      23    91464480 :          prod(:,:,1) = 0._r8
      24       58824 :       end subroutine exp_prod_loss
      25   171752400 :       subroutine imp_prod_loss( prod, loss, y, rxt, het_rates )
      26             :       use ppgrid, only : pver
      27             :       implicit none
      28             : !--------------------------------------------------------------------
      29             : ! ... dummy args
      30             : !--------------------------------------------------------------------
      31             :       real(r8), dimension(:), intent(out) :: &
      32             :             prod, &
      33             :             loss
      34             :       real(r8), intent(in) :: y(:)
      35             :       real(r8), intent(in) :: rxt(:)
      36             :       real(r8), intent(in) :: het_rates(:)
      37             : !--------------------------------------------------------------------
      38             : ! ... loss and production for Implicit method
      39             : !--------------------------------------------------------------------
      40   171752400 :          loss(1) = ( + het_rates(1))* y(1)
      41   171752400 :          prod(1) = 0._r8
      42   171752400 :          loss(2) = ( + het_rates(2))* y(2)
      43   171752400 :          prod(2) = 0._r8
      44   171752400 :          loss(3) = ( + rxt(8) + het_rates(3))* y(3)
      45   171752400 :          prod(3) = 0._r8
      46   171752400 :          loss(4) = ( + rxt(9) + het_rates(4))* y(4)
      47   171752400 :          prod(4) = 0._r8
      48   171752400 :          loss(5) = ( + rxt(10) + het_rates(5))* y(5)
      49   171752400 :          prod(5) = 0._r8
      50   171752400 :          loss(6) = ( + rxt(11) + rxt(12) + rxt(14) + het_rates(7))* y(7)
      51   171752400 :          prod(6) = 0._r8
      52   171752400 :          loss(7) = ( + het_rates(8))* y(8)
      53   171752400 :          prod(7) = 0._r8
      54   171752400 :          loss(8) = ( + het_rates(9))* y(9)
      55   171752400 :          prod(8) = 0._r8
      56   171752400 :          loss(9) = ( + het_rates(10))* y(10)
      57   171752400 :          prod(9) = 0._r8
      58   171752400 :          loss(10) = ( + rxt(1) + rxt(5) + het_rates(11))* y(11)
      59   171752400 :          prod(10) = 0._r8
      60   171752400 :          loss(11) = ( + het_rates(12))* y(12)
      61   171752400 :          prod(11) =rxt(13)*y(23)
      62   171752400 :          loss(12) = ( + rxt(7) + het_rates(13))* y(13)
      63   171752400 :          prod(12) = 0._r8
      64   171752400 :          loss(13) = ( + het_rates(14))* y(14)
      65   171752400 :          prod(13) = 0._r8
      66   171752400 :          loss(14) = ( + het_rates(15))* y(15)
      67   171752400 :          prod(14) = 0._r8
      68   171752400 :          loss(15) = ( + het_rates(16))* y(16)
      69   171752400 :          prod(15) = 0._r8
      70   171752400 :          loss(16) = ( + het_rates(17))* y(17)
      71   171752400 :          prod(16) = 0._r8
      72   171752400 :          loss(17) = ( + het_rates(18))* y(18)
      73   171752400 :          prod(17) = 0._r8
      74   171752400 :          loss(18) = ( + het_rates(19))* y(19)
      75   171752400 :          prod(18) = 0._r8
      76   171752400 :          loss(19) = ( + het_rates(20))* y(20)
      77   171752400 :          prod(19) = 0._r8
      78   171752400 :          loss(20) = ( + het_rates(21))* y(21)
      79   171752400 :          prod(20) = 0._r8
      80   171752400 :          loss(21) = ( + het_rates(22))* y(22)
      81   171752400 :          prod(21) = 0._r8
      82   171752400 :          loss(22) = ( + rxt(13) + het_rates(23))* y(23)
      83   171752400 :          prod(22) = (rxt(11) +rxt(12) +.500_r8*rxt(14))*y(7)
      84   171752400 :          loss(23) = ( + het_rates(24))* y(24)
      85   171752400 :          prod(23) = 0._r8
      86   171752400 :          loss(24) = ( + het_rates(25))* y(25)
      87   171752400 :          prod(24) = 0._r8
      88   171752400 :          loss(25) = ( + het_rates(26))* y(26)
      89   171752400 :          prod(25) = 0._r8
      90   171752400 :          loss(26) = ( + rxt(2) + het_rates(27))* y(27)
      91   171752400 :          prod(26) = 0._r8
      92   171752400 :          loss(27) = ( + rxt(3) + het_rates(28))* y(28)
      93   171752400 :          prod(27) = 0._r8
      94   171752400 :          loss(28) = ( + rxt(15) + het_rates(29))* y(29)
      95   171752400 :          prod(28) = 0._r8
      96   171752400 :          loss(29) = ( + het_rates(30))* y(30)
      97   171752400 :          prod(29) =rxt(15)*y(29)
      98   171752400 :          loss(30) = ( + rxt(4) + het_rates(31))* y(31)
      99   171752400 :          prod(30) =2.000_r8*rxt(10)*y(5) +rxt(5)*y(11)
     100   171752400 :       end subroutine imp_prod_loss
     101             :       end module mo_prod_loss

Generated by: LCOV version 1.14