module MO_SETRXT

      CONTAINS

      subroutine SETRXT( rate, temp, m )

      use MO_GRID,   only : plonl, plev
      use CHEM_MODS, only : rxntot
      use MO_JPL,    only : JPL

      implicit none

!-------------------------------------------------------
!       ... Dummy arguments
!-------------------------------------------------------
      real, intent(in)    :: temp(plonl,plev), m(plonl,plev)
      real, intent(inout) :: rate(plonl,plev,rxntot)

!-------------------------------------------------------
!       ... Local variables
!-------------------------------------------------------
      real  ::  itemp(plonl,plev)
      real, dimension(plonl,plev) :: ko, kinf

      rate(:plonl,:,38) = 2.2e-10
      rate(:plonl,:,39) = 6.7e-11
      rate(:plonl,:,40) = 4.9e-11
      rate(:plonl,:,48) = 0.
      rate(:plonl,:,56) = 1.5e-10
      rate(:plonl,:,63) = 1e-11
      rate(:plonl,:,65) = 1.1e-10
      rate(:plonl,:,87) = 1e-12
      rate(:plonl,:,94) = 2.e-13
      rate(:plonl,:,95) = 6.8e-14
      rate(:plonl,:,99) = 1.e-14
      rate(:plonl,:,105) = 2.4e-12
      rate(:plonl,:,108) = 1.4e-11
      rate(:plonl,:,115) = 2.4e-12
      rate(:plonl,:,118) = 1.4e-11
      rate(:plonl,:,121) = 5.e-12
      rate(:plonl,:,144) = 6.8e-13
      rate(:plonl,:,147) = 2.4e-12
      rate(:plonl,:,151) = 1.5e-11
      rate(:plonl,:,155) = 2.4e-12
      rate(:plonl,:,165) = 4.e-14
      rate(:plonl,:,166) = 3.e-12
      rate(:plonl,:,167) = 1.e-11
      rate(:plonl,:,168) = 2.1e-6
      itemp(:plonl,:) = 1. / temp(:plonl,:)
      rate(:plonl,:,35) = 8e-12 * EXP( -2060. * itemp(:plonl,:) )
      rate(:plonl,:,36) = 1.8e-11 * EXP( 110. * itemp(:plonl,:) )
      rate(:plonl,:,37) = 3.2e-11 * EXP( 70. * itemp(:plonl,:) )
      rate(:plonl,:,41) = 3.5e-12 * EXP( 250. * itemp(:plonl,:) )
      rate(:plonl,:,42) = 3e-12 * EXP( -1500. * itemp(:plonl,:) )
      rate(:plonl,:,43) = 5.6e-12 * EXP( 180. * itemp(:plonl,:) )
      rate(:plonl,:,44) = 1.2e-13 * EXP( -2450. * itemp(:plonl,:) )
      rate(:plonl,:,45) = 2.3e-12 * EXP( 170. * itemp(:plonl,:) )
      rate(:plonl,:,51) = 1.5e-11 * EXP( 170. * itemp(:plonl,:) )
      rate(:plonl,:,53) = 1.3e-12 * EXP( 380. * itemp(:plonl,:) )
      rate(:plonl,:,55) = 2.45e-12 * EXP( -1775. * itemp(:plonl,:) )
      rate(:plonl,:,57) = 3.e-12 * EXP( 280. * itemp(:plonl,:) )
      rate(:plonl,:,58) = 5.e-13 * EXP( -424. * itemp(:plonl,:) )
      rate(:plonl,:,59) = 1.9e-14 * EXP( 706. * itemp(:plonl,:) )
      rate(:plonl,:,60) = 3.8e-13 * EXP( 800. * itemp(:plonl,:) )
      rate(:plonl,:,61) = 3.8e-12 * EXP( 200. * itemp(:plonl,:) )
      rate(:plonl,:,62) = 6.0e-13 * EXP( -2058. * itemp(:plonl,:) )
      rate(:plonl,:,66) = 2.2e-11 * EXP( 120. * itemp(:plonl,:) )
      rate(:plonl,:,67) = 3e-11 * EXP( 200. * itemp(:plonl,:) )
      rate(:plonl,:,68) = 1.5e-12 * EXP( -880. * itemp(:plonl,:) )
      rate(:plonl,:,69) = 2e-14 * EXP( -680. * itemp(:plonl,:) )
      rate(:plonl,:,71) = 2.9e-12 * EXP( -160. * itemp(:plonl,:) )
      rate(:plonl,:,72) = 4.8e-11 * EXP( 250. * itemp(:plonl,:) )
      rate(:plonl,:,73) = 4.2e-12 * EXP( -240. * itemp(:plonl,:) )
      rate(:plonl,:,74) = 5.5e-12 * EXP( -2000. * itemp(:plonl,:) )
      rate(:plonl,:,76) = 6.5e-15 * EXP( -1900. * itemp(:plonl,:) )
      rate(:plonl,:,77) = 4.6e-13 * EXP( -1156. * itemp(:plonl,:) )
      rate(:plonl,:,78) = 4.2e-12 * EXP( 180. * itemp(:plonl,:) )
      rate(:plonl,:,79) = 7.5e-13 * EXP( 700. * itemp(:plonl,:) )
      rate(:plonl,:,80) = 3.8e-12 * EXP( 200. * itemp(:plonl,:) )
      rate(:plonl,:,81) = 5.6e-12 * EXP( 270. * itemp(:plonl,:) )
      rate(:plonl,:,82) = 1.4e-12 * EXP( -1900. * itemp(:plonl,:) )
      rate(:plonl,:,83) = 8.1e-12 * EXP( 270. * itemp(:plonl,:) )
      rate(:plonl,:,85) = 4.3e-13 * EXP( 1040. * itemp(:plonl,:) )
      rate(:plonl,:,86) = 1.3e-12 * EXP( 640. * itemp(:plonl,:) )
      rate(:plonl,:,89) = 2.5e-12 * EXP( 500. * itemp(:plonl,:) )
      rate(:plonl,:,90) = 1.05e-14 * EXP( -2000. * itemp(:plonl,:) )
      rate(:plonl,:,91) = 8.7e-12 * EXP( -1070. * itemp(:plonl,:) )
      rate(:plonl,:,92) = 2.6e-12 * EXP( 365. * itemp(:plonl,:) )
      rate(:plonl,:,93) = 7.5e-13 * EXP( 700. * itemp(:plonl,:) )
      rate(:plonl,:,96) = 3.8e-12 * EXP( 200. * itemp(:plonl,:) )
      rate(:plonl,:,98) = 4.2e-12 * EXP( 180. * itemp(:plonl,:) )
      rate(:plonl,:,100) = 1.6e11 * EXP( -4150. * itemp(:plonl,:) )
      rate(:plonl,:,101) = 1.2e-14 * EXP( -2630. * itemp(:plonl,:) )
      rate(:plonl,:,102) = 2.54e-11 * EXP( 410. * itemp(:plonl,:) )
      rate(:plonl,:,103) = 1.55e-11 * EXP( -540. * itemp(:plonl,:) )
      rate(:plonl,:,104) = 2.2e-12 * EXP( 180. * itemp(:plonl,:) )
      rate(:plonl,:,106) = 8.e-13 * EXP( 700. * itemp(:plonl,:) )
      rate(:plonl,:,107) = 5.e-13 * EXP( 400. * itemp(:plonl,:) )
      rate(:plonl,:,109) = 4.13e-12 * EXP( 452. * itemp(:plonl,:) )
      rate(:plonl,:,110) = 7.52e-16 * EXP( -1521. * itemp(:plonl,:) )
      rate(:plonl,:,111) = 1.86e-11 * EXP( 175. * itemp(:plonl,:) )
      rate(:plonl,:,112) = 4.4e-15 * EXP( -2500. * itemp(:plonl,:) )
      rate(:plonl,:,113) = 2.7e-12 * EXP( 360. * itemp(:plonl,:) )
      rate(:plonl,:,114) = 1.3e-13 * EXP( 360. * itemp(:plonl,:) )
      rate(:plonl,:,116) = 8.e-13 * EXP( 700. * itemp(:plonl,:) )
      rate(:plonl,:,117) = 5.e-13 * EXP( 400. * itemp(:plonl,:) )
      rate(:plonl,:,119) = 2.3e-11 * EXP( 200. * itemp(:plonl,:) )
      rate(:plonl,:,120) = 5.3e-12 * EXP( 360. * itemp(:plonl,:) )
      rate(:plonl,:,122) = 4.30e-13 * EXP( 1040. * itemp(:plonl,:) )
      rate(:plonl,:,123) = 1.3e-12 * EXP( 640. * itemp(:plonl,:) )
      rate(:plonl,:,124) = 4.6e-12 * EXP( 530. * itemp(:plonl,:) )
      rate(:plonl,:,125) = 2.3e-12 * EXP( 530. * itemp(:plonl,:) )
      rate(:plonl,:,128) = 1.2e-11 * EXP( 444. * itemp(:plonl,:) )
      rate(:plonl,:,129) = 9.9e-15 * EXP( -730. * itemp(:plonl,:) )
      rate(:plonl,:,130) = 5.6e-11 * EXP( -650. * itemp(:plonl,:) )
      rate(:plonl,:,133) = 1.5e-11 * EXP( -3600. * itemp(:plonl,:) )
      rate(:plonl,:,134) = 2.1e-11 * EXP( 100. * itemp(:plonl,:) )
      rate(:plonl,:,135) = 1.0e-11 * EXP( -660. * itemp(:plonl,:) )
      rate(:plonl,:,136) = 4.2e-12 * EXP( 180. * itemp(:plonl,:) )
      rate(:plonl,:,137) = 7.5e-13 * EXP( 700. * itemp(:plonl,:) )
      rate(:plonl,:,138) = 3.75e-13 * EXP( -40. * itemp(:plonl,:) )
      rate(:plonl,:,139) = 3.8e-12 * EXP( 200. * itemp(:plonl,:) )
      rate(:plonl,:,141) = 4.2e-12 * EXP( 180. * itemp(:plonl,:) )
      rate(:plonl,:,142) = 7.5e-13 * EXP( 700. * itemp(:plonl,:) )
      rate(:plonl,:,143) = 3.8e-12 * EXP( 200. * itemp(:plonl,:) )
      rate(:plonl,:,145) = 3.03e-12 * EXP( -446. * itemp(:plonl,:) )
      rate(:plonl,:,146) = 2.7e-12 * EXP( 360. * itemp(:plonl,:) )
      rate(:plonl,:,148) = 8.e-13 * EXP( 700. * itemp(:plonl,:) )
      rate(:plonl,:,149) = 8.4e-13 * EXP( 830. * itemp(:plonl,:) )
      rate(:plonl,:,150) = 1.4e-12 * EXP( -1860. * itemp(:plonl,:) )
      rate(:plonl,:,152) = 1.4e-12 * EXP( -1860. * itemp(:plonl,:) )
      rate(:plonl,:,153) = 1.86e-11 * EXP( 175. * itemp(:plonl,:) )
      rate(:plonl,:,154) = 2.7e-12 * EXP( 360. * itemp(:plonl,:) )
      rate(:plonl,:,156) = 8.e-13 * EXP( 700. * itemp(:plonl,:) )
      rate(:plonl,:,157) = 5.e-13 * EXP( 400. * itemp(:plonl,:) )
      rate(:plonl,:,158) = 1.3e-12 * EXP( 640. * itemp(:plonl,:) )
      rate(:plonl,:,159) = 1.90e-12 * EXP( 190. * itemp(:plonl,:) )
      rate(:plonl,:,161) = 3.8e-12 * EXP( 200. * itemp(:plonl,:) )
      rate(:plonl,:,162) = 6.7e-12 * EXP( -600. * itemp(:plonl,:) )
      rate(:plonl,:,163) = 7.e-12 * EXP( -235. * itemp(:plonl,:) )

      itemp(:,:) = 300. * itemp(:,:)

      ko(:,:) = 2.e-30 * itemp(:,:)**4.4
      kinf(:,:) = 1.4e-12 * itemp(:,:)**.7
      call JPL( rate(1,1,46), m, .6, ko, kinf )

      ko(:,:) = 2.4e-30 * itemp(:,:)**3.1
      kinf(:,:) = 1.7e-11 * itemp(:,:)**2.1
      call JPL( rate(1,1,49), m, .6, ko, kinf )

      ko(:,:) = 1.8e-31 * itemp(:,:)**3.2
      kinf(:,:) = 4.7e-12 * itemp(:,:)**1.4
      call JPL( rate(1,1,52), m, .6, ko, kinf )

      ko(:,:) = 8.e-27 * itemp(:,:)**3.5
      kinf(:,:) = 3.e-11
      call JPL( rate(1,1,75), m, .5, ko, kinf )

      ko(:,:) = 8.5e-29 * itemp(:,:)**6.5
      kinf(:,:) = 1.1e-11 * itemp(:,:)
      call JPL( rate(1,1,84), m, .6, ko, kinf )

      ko(:,:) = 1.e-28 * itemp(:,:)**.8
      kinf(:,:) = 8.8e-12
      call JPL( rate(1,1,97), m, .6, ko, kinf )

      ko(:,:) = 8.e-27 * itemp(:,:)**3.5
      kinf(:,:) = 3.e-11
      call JPL( rate(1,1,164), m, .5, ko, kinf )

      end subroutine SETRXT

      end module MO_SETRXT
                                                                        
      module MO_ADJRXT                                                  
                                                                        
      CONTAINS                                                          
                                                                        
      subroutine ADJRXT( rate, inv, m )                                 
                                                                        
      use MO_GRID,   only : plnplv                                      
      use CHEM_MODS, only : nfs, rxntot                                 
                                                                        
      implicit none                                                     
                                                                        
!--------------------------------------------------------------------   
!       ... Dummy arguments                                             
!--------------------------------------------------------------------   
      real, intent(in)    :: inv(plnplv,nfs)                            
      real, intent(in)    :: m(plnplv)                                  
      real, intent(inout) :: rate(plnplv,rxntot)                        
                                                                        
!--------------------------------------------------------------------   
!       ... Local variables                                             
!--------------------------------------------------------------------   
      real    ::  im(plnplv)                                            
                                                                        
      rate(:, 36) = rate(:, 36) * inv(:, 2)                             
      rate(:, 37) = rate(:, 37) * inv(:, 3)                             
      rate(:, 38) = rate(:, 38) * inv(:, 4)                             
      rate(:, 46) = rate(:, 46) * inv(:, 1)                             
      rate(:, 47) = rate(:, 47) * inv(:, 1)                             
      rate(:, 48) = rate(:, 48) * inv(:, 4)                             
      rate(:, 49) = rate(:, 49) * inv(:, 1)                             
      rate(:, 52) = rate(:, 52) * inv(:, 1)                             
      rate(:, 54) = rate(:, 54) * inv(:, 1)                             
      rate(:, 75) = rate(:, 75) * inv(:, 1)                             
      rate(:, 84) = rate(:, 84) * inv(:, 1)                             
      rate(:, 88) = rate(:, 88) * inv(:, 1)                             
      rate(:, 97) = rate(:, 97) * inv(:, 1)                             
      rate(:, 99) = rate(:, 99) * inv(:, 3)                             
      rate(:,126) = rate(:,126) * inv(:, 1)                             
      rate(:,127) = rate(:,127) * inv(:, 1)                             
      rate(:,133) = rate(:,133) * inv(:, 3)                             
      rate(:, 34) = rate(:, 34) * inv(:, 3) * inv(:, 1)                 
      rate(:, 35) = rate(:, 35) * m(:)                                  
      rate(:, 39) = rate(:, 39) * m(:)                                  
      rate(:, 40) = rate(:, 40) * m(:)                                  
      rate(:, 41) = rate(:, 41) * m(:)                                  
      rate(:, 42) = rate(:, 42) * m(:)                                  
      rate(:, 43) = rate(:, 43) * m(:)                                  
      rate(:, 44) = rate(:, 44) * m(:)                                  
      rate(:, 45) = rate(:, 45) * m(:)                                  
      rate(:, 46) = rate(:, 46) * m(:)                                  
      rate(:, 49) = rate(:, 49) * m(:)                                  
      rate(:, 50) = rate(:, 50) * m(:)                                  
      rate(:, 51) = rate(:, 51) * m(:)                                  
      rate(:, 52) = rate(:, 52) * m(:)                                  
      rate(:, 53) = rate(:, 53) * m(:)                                  
      rate(:, 55) = rate(:, 55) * m(:)                                  
      rate(:, 56) = rate(:, 56) * m(:)                                  
      rate(:, 57) = rate(:, 57) * m(:)                                  
      rate(:, 58) = rate(:, 58) * m(:)                                  
      rate(:, 59) = rate(:, 59) * m(:)                                  
      rate(:, 60) = rate(:, 60) * m(:)                                  
      rate(:, 61) = rate(:, 61) * m(:)                                  
      rate(:, 62) = rate(:, 62) * m(:)                                  
      rate(:, 63) = rate(:, 63) * m(:)                                  
      rate(:, 64) = rate(:, 64) * m(:)                                  
      rate(:, 65) = rate(:, 65) * m(:)                                  
      rate(:, 66) = rate(:, 66) * m(:)                                  
      rate(:, 67) = rate(:, 67) * m(:)                                  
      rate(:, 68) = rate(:, 68) * m(:)                                  
      rate(:, 69) = rate(:, 69) * m(:)                                  
      rate(:, 70) = rate(:, 70) * m(:)                                  
      rate(:, 71) = rate(:, 71) * m(:)                                  
      rate(:, 72) = rate(:, 72) * m(:)                                  
      rate(:, 73) = rate(:, 73) * m(:)                                  
      rate(:, 74) = rate(:, 74) * m(:)                                  
      rate(:, 75) = rate(:, 75) * m(:)                                  
      rate(:, 76) = rate(:, 76) * m(:)                                  
      rate(:, 77) = rate(:, 77) * m(:)                                  
      rate(:, 78) = rate(:, 78) * m(:)                                  
      rate(:, 79) = rate(:, 79) * m(:)                                  
      rate(:, 80) = rate(:, 80) * m(:)                                  
      rate(:, 81) = rate(:, 81) * m(:)                                  
      rate(:, 82) = rate(:, 82) * m(:)                                  
      rate(:, 83) = rate(:, 83) * m(:)                                  
      rate(:, 84) = rate(:, 84) * m(:)                                  
      rate(:, 85) = rate(:, 85) * m(:)                                  
      rate(:, 86) = rate(:, 86) * m(:)                                  
      rate(:, 87) = rate(:, 87) * m(:)                                  
      rate(:, 89) = rate(:, 89) * m(:)                                  
      rate(:, 90) = rate(:, 90) * m(:)                                  
      rate(:, 91) = rate(:, 91) * m(:)                                  
      rate(:, 92) = rate(:, 92) * m(:)                                  
      rate(:, 93) = rate(:, 93) * m(:)                                  
      rate(:, 94) = rate(:, 94) * m(:)                                  
      rate(:, 95) = rate(:, 95) * m(:)                                  
      rate(:, 96) = rate(:, 96) * m(:)                                  
      rate(:, 97) = rate(:, 97) * m(:)                                  
      rate(:, 98) = rate(:, 98) * m(:)                                  
      rate(:,101) = rate(:,101) * m(:)                                  
      rate(:,102) = rate(:,102) * m(:)                                  
      rate(:,103) = rate(:,103) * m(:)                                  
      rate(:,104) = rate(:,104) * m(:)                                  
      rate(:,105) = rate(:,105) * m(:)                                  
      rate(:,106) = rate(:,106) * m(:)                                  
      rate(:,107) = rate(:,107) * m(:)                                  
      rate(:,108) = rate(:,108) * m(:)                                  
      rate(:,109) = rate(:,109) * m(:)                                  
      rate(:,110) = rate(:,110) * m(:)                                  
      rate(:,111) = rate(:,111) * m(:)                                  
      rate(:,112) = rate(:,112) * m(:)                                  
      rate(:,113) = rate(:,113) * m(:)                                  
      rate(:,114) = rate(:,114) * m(:)                                  
      rate(:,115) = rate(:,115) * m(:)                                  
      rate(:,116) = rate(:,116) * m(:)                                  
      rate(:,117) = rate(:,117) * m(:)                                  
      rate(:,118) = rate(:,118) * m(:)                                  
      rate(:,119) = rate(:,119) * m(:)                                  
      rate(:,120) = rate(:,120) * m(:)                                  
      rate(:,121) = rate(:,121) * m(:)                                  
      rate(:,122) = rate(:,122) * m(:)                                  
      rate(:,123) = rate(:,123) * m(:)                                  
      rate(:,124) = rate(:,124) * m(:)                                  
      rate(:,125) = rate(:,125) * m(:)                                  
      rate(:,126) = rate(:,126) * m(:)                                  
      rate(:,128) = rate(:,128) * m(:)                                  
      rate(:,129) = rate(:,129) * m(:)                                  
      rate(:,130) = rate(:,130) * m(:)                                  
      rate(:,134) = rate(:,134) * m(:)                                  
      rate(:,135) = rate(:,135) * m(:)                                  
      rate(:,136) = rate(:,136) * m(:)                                  
      rate(:,137) = rate(:,137) * m(:)                                  
      rate(:,138) = rate(:,138) * m(:)                                  
      rate(:,139) = rate(:,139) * m(:)                                  
      rate(:,140) = rate(:,140) * m(:)                                  
      rate(:,141) = rate(:,141) * m(:)                                  
      rate(:,142) = rate(:,142) * m(:)                                  
      rate(:,143) = rate(:,143) * m(:)                                  
      rate(:,144) = rate(:,144) * m(:)                                  
      rate(:,145) = rate(:,145) * m(:)                                  
      rate(:,146) = rate(:,146) * m(:)                                  
      rate(:,147) = rate(:,147) * m(:)                                  
      rate(:,148) = rate(:,148) * m(:)                                  
      rate(:,149) = rate(:,149) * m(:)                                  
      rate(:,150) = rate(:,150) * m(:)                                  
      rate(:,151) = rate(:,151) * m(:)                                  
      rate(:,152) = rate(:,152) * m(:)                                  
      rate(:,153) = rate(:,153) * m(:)                                  
      rate(:,154) = rate(:,154) * m(:)                                  
      rate(:,155) = rate(:,155) * m(:)                                  
      rate(:,156) = rate(:,156) * m(:)                                  
      rate(:,157) = rate(:,157) * m(:)                                  
      rate(:,158) = rate(:,158) * m(:)                                  
      rate(:,159) = rate(:,159) * m(:)                                  
      rate(:,160) = rate(:,160) * m(:)                                  
      rate(:,161) = rate(:,161) * m(:)                                  
      rate(:,162) = rate(:,162) * m(:)                                  
      rate(:,163) = rate(:,163) * m(:)                                  
      rate(:,164) = rate(:,164) * m(:)                                  
      rate(:,165) = rate(:,165) * m(:)                                  
      rate(:,166) = rate(:,166) * m(:)                                  
      rate(:,167) = rate(:,167) * m(:)                                  
                                                                        
      end subroutine ADJRXT                                             
                                                                        
      end module MO_ADJRXT                                              
                                                                        
      module MO_PHTADJ                                                  
                                                                        
      CONTAINS                                                          
                                                                        
      subroutine PHTADJ( p_rate, inv, m )                               
                                                                        
      use MO_GRID,   only : plnplv                                      
      use CHEM_MODS, only : nfs, phtcnt                                 
                                                                        
      implicit none                                                     
                                                                        
!--------------------------------------------------------------------   
!       ... Dummy arguments                                             
!--------------------------------------------------------------------   
      real, intent(in)    :: inv(plnplv,nfs)                            
      real, intent(in)    :: m(plnplv)                                  
      real, intent(inout) :: p_rate(plnplv,phtcnt)                      
                                                                        
!--------------------------------------------------------------------   
!       ... Local variables                                             
!--------------------------------------------------------------------   
      real    ::  im(plnplv)                                            
                                                                        
      im(:) = 1. / m(:)                                                 
      p_rate(:,  1) = p_rate(:,  1)  * inv(:, 3) * im(:)                
      p_rate(:, 14) = p_rate(:, 14)  * inv(:, 4) * im(:)                
                                                                        
      end subroutine PHTADJ                                             
                                                                        
      end module MO_PHTADJ                                              

      module MO_RXT_MOD

      CONTAINS

      subroutine RXT_MOD( rate, het_rates, grp_ratios )

      use MO_GRID,   only : plnplv
      use CHEM_MODS, only : rxntot, hetcnt, grpcnt

      implicit none

!---------------------------------------------------------------------------
!       ... Dummy arguments
!---------------------------------------------------------------------------
      real, intent(inout) ::      rate(plnplv,rxntot)
      real, intent(inout) ::      het_rates(plnplv,hetcnt)
      real, intent(in)    ::      grp_ratios(plnplv,grpcnt)

      rate(:, 35) = rate(:, 35)  * grp_ratios(:, 3) &
                                 * grp_ratios(:, 1)
      rate(:, 38) = rate(:, 38)  * grp_ratios(:, 2)
      rate(:, 39) = rate(:, 39)  * grp_ratios(:, 2)
      rate(:, 40) = rate(:, 40)  * grp_ratios(:, 2)
      rate(:, 42) = rate(:, 42)  * grp_ratios(:, 1)
      rate(:, 43) = rate(:, 43)  * grp_ratios(:, 3)
      rate(:, 44) = rate(:, 44)  * grp_ratios(:, 1)
      rate(:, 56) = rate(:, 56)  * grp_ratios(:, 2)
      rate(:, 65) = rate(:, 65)  * grp_ratios(:, 2)
      rate(:, 66) = rate(:, 66)  * grp_ratios(:, 3)
      rate(:, 67) = rate(:, 67)  * grp_ratios(:, 3)
      rate(:, 68) = rate(:, 68)  * grp_ratios(:, 1)
      rate(:, 69) = rate(:, 69)  * grp_ratios(:, 1)
      rate(:, 76) = rate(:, 76)  * grp_ratios(:, 1)
      rate(:, 90) = rate(:, 90)  * grp_ratios(:, 1)
      rate(:,101) = rate(:,101)  * grp_ratios(:, 1)
      rate(:,110) = rate(:,110)  * grp_ratios(:, 1)
      rate(:,112) = rate(:,112)  * grp_ratios(:, 1)
      rate(:,129) = rate(:,129)  * grp_ratios(:, 1)

      end subroutine RXT_MOD

      end module MO_RXT_MOD

      module MO_MAKE_GRP_VMR

      CONTAINS

      subroutine MAK_GRP_VMR( vmr, group_ratios, group_vmrs )

      use MO_GRID,   only : plonl, plev, pcnstm1
      use CHEM_MODS, only : grpcnt

      implicit none

!----------------------------------------------------------------------------
!        ... Dummy arguments
!----------------------------------------------------------------------------
      real, intent(in) :: vmr(plonl,plev,pcnstm1)
      real, intent(in)   :: group_ratios(plonl,plev,grpcnt)
      real, intent(out)  :: group_vmrs(plonl,plev,grpcnt)

!----------------------------------------------------------------------------
!        ... Local variables
!----------------------------------------------------------------------------
      integer ::  k

      do k = 1,plev
         group_vmrs(:,k, 1) = group_ratios(:,k, 1) * vmr(:,k, 1)
         group_vmrs(:,k, 2) = group_ratios(:,k, 2) * vmr(:,k, 1)
         group_vmrs(:,k, 3) = group_ratios(:,k, 3) * vmr(:,k, 1)
      end do

      end subroutine MAK_GRP_VMR

      end module MO_MAKE_GRP_VMR