 MODULE mod_chem_spack_kinetic
  
   IMPLICIT NONE
   PRIVATE
   PUBLIC :: kinetic ! subroutine
 CONTAINS
   SUBROUTINE kinetic(jppj,Jphoto,rk,temp,xlw,Press,cosz,att,ijkbeg,ijkend,maxblock_size,nr)
 
!------------------------------------------------------------------------
!
!     -- DESCRIPTION
!
!     This routine computes the kinetic rates for the gas-phase.
!     This routine is automatically generated by SPACK.
!     Mechanism: ../Mechanism/CB07   
!     Species: ../Mechanism/ciCB07 
!
!------------------------------------------------------------------------
!
!     -- INPUT VARIABLES
!
!     TEMP: temperature ([K]).
!     XLW: water massic fraction.
!     PRESS: pressure ([Pa]).
!     ATT: attenuation variable.
!
!     -- INPUT/OUTPUT VARIABLES
!
!     -- OUTPUT VARIABLES
!
!     RK: kinetic rates.
!
!------------------------------------------------------------------------
!
!     -- REMARKS
!
!------------------------------------------------------------------------
!
!     -- MODIFICATIONS
!
!------------------------------------------------------------------------
!
!     -- AUTHOR(S)
!
!     SPACK.
!
!------------------------------------------------------------------------
 
      IMPLICIT NONE
 
 
 
      INTEGER,INTENT(IN) :: jppj,ijkbeg,ijkend,maxblock_size,nr
      DOUBLE PRECISION,INTENT(IN) ::  xlw(maxblock_size),att(maxblock_size),cosz(maxblock_size)
      DOUBLE PRECISION,INTENT(IN) ::  temp(maxblock_size),Press(maxblock_size)
      DOUBLE PRECISION,INTENT(OUT) ::  rk(maxblock_size,nr)
      DOUBLE PRECISION,DIMENSION(maxblock_size) ::  Effko,Rapk,facteur
      DOUBLE PRECISION,DIMENSION(maxblock_size) :: YlH2O,SumM,azi
      DOUBLE PRECISION,INTENT(IN) ::  Jphoto(maxblock_size,jppj)
      INTEGER :: ijk
 
!     Compute third body.
!     Conversion = Avogadro*1d-6/Perfect gas constant.
!     PRESS in Pascal, SUMM in molecules/cm3, TEMP in Kelvin
 
      DO ijk=ijkbeg,ijkend
        SumM(ijk) = Press(ijk) * 7.243D16 / temp(ijk)
      END DO
 
!     Number of water molecules computed from the massic fraction
!     (absolute humidity)
 
      DO ijk=ijkbeg,ijkend
         YlH2O(ijk) = 29.d0*SumM(ijk)*xlw(ijk)/(18.d0+11.d0*xlw(ijk))
      END DO
 
!     For the zenithal angle at tropics
 
 
 
       DO ijk=ijkbeg,ijkend
       rk(ijk,  1) = Jphoto(ijk,  1)
       rk(ijk,  2) = Jphoto(ijk,  2)
       rk(ijk,  3) = Jphoto(ijk,  3)
       rk(ijk,  4) = Jphoto(ijk,  4)
       rk(ijk,  5) = Jphoto(ijk,  5)
       rk(ijk,  6) = Jphoto(ijk,  6)
       rk(ijk,  7) = Jphoto(ijk,  7)
       rk(ijk,  8) = Jphoto(ijk,  8)
       rk(ijk,  9) = Jphoto(ijk,  9)
       rk(ijk, 10) = Jphoto(ijk, 10)
       rk(ijk, 11) = Jphoto(ijk, 11)
       rk(ijk, 12) = Jphoto(ijk, 12)
       rk(ijk, 13) = Jphoto(ijk, 13)
       rk(ijk, 14) = Jphoto(ijk, 14)
       rk(ijk, 15) = Jphoto(ijk, 15)
      rk(ijk, 16) = SumM(ijk) * 6.0d-34 * (temp(ijk)/3.d2) ** (-2.4d0)
      rk(ijk, 16) = rk(ijk, 16) * SumM(ijk) * 0.2d0
      rk(ijk, 17) =  DEXP(-0.2555157957424871D+02   &
         - (  0.2060000000000000D+04 )/temp(ijk))
      rk(ijk, 18) =  DEXP(-0.2456296818079493D+02   &
         - ( -0.1100000000000000D+03 )/temp(ijk))
      rk(ijk, 18) = rk(ijk, 18) * SumM(ijk) * 0.8d0
      rk(ijk, 19) =  DEXP(-0.2413451355446207D+02   &
         - ( -0.5500000000000000D+02 )/temp(ijk))
      rk(ijk, 19) = rk(ijk, 19) * SumM(ijk) * 0.2d0
      rk(ijk, 20) =  DEXP(-0.2253727091512179D+02   &
         - ( -0.6000000000000000D+02 )/temp(ijk))
      rk(ijk, 20) = rk(ijk, 20) * YlH2O(ijk)
      rk(ijk, 21) =  DEXP(-0.2710039286486638D+02   &
         - (  0.9400000000000000D+03 )/temp(ijk))
      rk(ijk, 22) =  DEXP(-0.3214088112211231D+02   &
         - (  0.4900000000000000D+03 )/temp(ijk))
      rk(ijk, 23) =  DEXP(-0.2375982010502066D+02   &
         - ( -0.2500000000000000D+03 )/temp(ijk))
      rk(ijk, 24) =  0.1800000000000000D-11
      rk(ijk, 25) =  DEXP(-0.2868084324042723D+02   &
         - ( -0.4300000000000000D+03 )/temp(ijk))
      rk(ijk, 26) = 1.7d-33 * SumM(ijk) *    &
                    dexp(1000.0d0 / temp(ijk)) * (1 + 1.4D-21 *    &
                    YlH2O(ijk) * dexp(2200.0d0 / temp(ijk)))
      Effko(ijk) =  0.9000000000000000D-31* (temp(ijk) / 3.d2)   &
                   **(- ( 0.1500000000000000D+01))
      Rapk(ijk) =  0.3000000000000000D-10* (temp(ijk) / 3.d2)   &
                    **(- ( 0.0000000000000000D+00))
      rk(ijk, 27) = (Effko(ijk) * SumM(ijk) /    &
                    ( 1.0d0 + Effko(ijk) * SumM(ijk) / Rapk(ijk))) *   &
                    0.6000D+00** (1.0d0 / (1.0d0 +    &
                     (LOG10(Effko(ijk) * SumM(ijk) / Rapk(ijk)))**2))
      rk(ijk, 28) =  DEXP(-0.2600178057619827D+02   &
         - ( -0.2100000000000000D+03 )/temp(ijk))
      Effko(ijk) =  0.2500000000000000D-30* (temp(ijk) / 3.d2)   &
                   **(- ( 0.1800000000000000D+01))
      Rapk(ijk) =  0.2200000000000000D-10* (temp(ijk) / 3.d2)   &
                    **(- ( 0.7000000000000000D+00))
      rk(ijk, 29) = (Effko(ijk) * SumM(ijk) /    &
                    ( 1.0d0 + Effko(ijk) * SumM(ijk) / Rapk(ijk))) *   &
                    0.6000D+00** (1.0d0 / (1.0d0 +    &
                     (LOG10(Effko(ijk) * SumM(ijk) / Rapk(ijk)))**2))
      Effko(ijk) =  0.7000000000000000D-30* (temp(ijk) / 3.d2)   &
                   **(- ( 0.2600000000000000D+01))
      Rapk(ijk) =  0.3600000000000000D-10* (temp(ijk) / 3.d2)   &
                    **(- ( 0.1000000000000000D+00))
      rk(ijk, 30) = (Effko(ijk) * SumM(ijk) /    &
                    ( 1.0d0 + Effko(ijk) * SumM(ijk) / Rapk(ijk))) *   &
                    0.6000D+00** (1.0d0 / (1.0d0 +    &
                     (LOG10(Effko(ijk) * SumM(ijk) / Rapk(ijk)))**2))
      Effko(ijk) =  0.1800000000000000D-29* (temp(ijk) / 3.d2)   &
                   **(- ( 0.3000000000000000D+01))
      Rapk(ijk) =  0.2800000000000000D-10* (temp(ijk) / 3.d2)   &
                    **(- ( 0.0000000000000000D+00))
      rk(ijk, 31) = (Effko(ijk) * SumM(ijk) /    &
                    ( 1.0d0 + Effko(ijk) * SumM(ijk) / Rapk(ijk))) *   &
                    0.6000D+00** (1.0d0 / (1.0d0 +    &
                     (LOG10(Effko(ijk) * SumM(ijk) / Rapk(ijk)))**2))
      rk(ijk, 32) =  0.2200000000000000D-10
      rk(ijk, 33) =  DEXP(-0.2637825814743318D+02   &
         - ( -0.2500000000000000D+03 )/temp(ijk))
      Effko(ijk) =  0.2000000000000000D-30* (temp(ijk) / 3.d2)   &
                   **(- ( 0.3400000000000000D+01))
      Rapk(ijk) =  0.2900000000000000D-11* (temp(ijk) / 3.d2)   &
                    **(- ( 0.1100000000000000D+01))
      rk(ijk, 34) = (Effko(ijk) * SumM(ijk) /    &
                    ( 1.0d0 + Effko(ijk) * SumM(ijk) / Rapk(ijk))) *   &
                    0.6000D+00** (1.0d0 / (1.0d0 +    &
                     (LOG10(Effko(ijk) * SumM(ijk) / Rapk(ijk)))**2))
      rk(ijk, 35) =  DEXP( 0.6142746008608852D+02   &
         - (  0.1090000000000000D+05 )/temp(ijk))
      Effko(ijk) =  0.2000000000000000D-30* (temp(ijk) / 3.d2)   &
                   **(- ( 0.3400000000000000D+01))
      Rapk(ijk) =  0.2900000000000000D-11* (temp(ijk) / 3.d2)   &
                    **(- ( 0.1100000000000000D+01))
      facteur(ijk) = (Effko(ijk) * SumM(ijk) / ( 1.0d0 + Effko(ijk) * SumM(ijk) /    &
                 Rapk(ijk))) * 0.6d0 ** (1.0d0 / (1.0d0 +    &
                  (LOG10(Effko(ijk) * SumM(ijk) / Rapk(ijk)))**2))
      rk(ijk, 35) = facteur(ijk) * rk(ijk, 35)
      rk(ijk, 36) =  0.3500000000000000D-11
      rk(ijk, 37) =  DEXP(-0.2474064935803238D+02   &
         - (  0.3900000000000000D+03 )/temp(ijk))
      Effko(ijk) = 2.4d-14 * dexp(460.0d0 / temp(ijk))
      Rapk(ijk) = 2.7d-17 * dexp(2199.0d0 / temp(ijk))
      facteur(ijk) = 6.5d-34 * dexp(1335.0d0 / temp(ijk)) * SumM(ijk)
      rk(ijk, 38) = Effko(ijk) + facteur(ijk)/(1.0d0 + facteur(ijk) / Rapk(ijk))
      rk(ijk, 39) =  DEXP(-0.2736865685146106D+02   &
         - ( -0.3800000000000000D+03 )/temp(ijk))
      rk(ijk, 40) =  DEXP(-0.2653240882726044D+02   &
         - (  0.1500000000000000D+04 )/temp(ijk))
      rk(ijk, 41) =  DEXP(-0.2975128465212864D+02   &
         - (  0.2450000000000000D+04 )/temp(ijk))
      rk(ijk, 42) =  DEXP(-0.8860689615829534D+02   &
         - ( -0.5300000000000000D+03 )/temp(ijk))
      rk(ijk, 42) = rk(ijk, 42) * SumM(ijk) * 0.2d0
      rk(ijk, 43) =  0.4400000000000000D-39
      rk(ijk, 43) = rk(ijk, 43) * YlH2O(ijk)
      rk(ijk, 44) =  0.9999999999999999D-20
      rk(ijk, 45) =  DEXP(-0.2492297091482634D+02   &
         - ( -0.1700000000000000D+03 )/temp(ijk))
      rk(ijk, 46) =  DEXP(-0.3073211390514037D+02   &
         - (  0.1260000000000000D+04 )/temp(ijk))
      Effko(ijk) =  0.2000000000000000D-29* (temp(ijk) / 3.d2)   &
                   **(- ( 0.4400000000000000D+01))
      Rapk(ijk) =  0.1400000000000000D-11* (temp(ijk) / 3.d2)   &
                    **(- ( 0.7000000000000000D+00))
      rk(ijk, 47) = (Effko(ijk) * SumM(ijk) /    &
                    ( 1.0d0 + Effko(ijk) * SumM(ijk) / Rapk(ijk))) *   &
                    0.6000D+00** (1.0d0 / (1.0d0 +    &
                     (LOG10(Effko(ijk) * SumM(ijk) / Rapk(ijk)))**2))
      rk(ijk, 48) =  DEXP( 0.6117554523749536D+02   &
         - (  0.1100000000000000D+05 )/temp(ijk))
      Effko(ijk) =  0.2000000000000000D-29* (temp(ijk) / 3.d2)   &
                   **(- ( 0.4400000000000000D+01))
      Rapk(ijk) =  0.1400000000000000D-11* (temp(ijk) / 3.d2)   &
                    **(- ( 0.7000000000000000D+00))
      facteur(ijk) = (Effko(ijk) * SumM(ijk) / ( 1.0d0 + Effko(ijk) * SumM(ijk) /    &
                 Rapk(ijk))) * 0.6d0 ** (1.0d0 / (1.0d0 +    &
                  (LOG10(Effko(ijk) * SumM(ijk) / Rapk(ijk)))**2))
      rk(ijk, 48) = facteur(ijk) * rk(ijk, 48)
      rk(ijk, 49) =  0.1500000000000000D-20
      rk(ijk, 49) = rk(ijk, 49) * YlH2O(ijk)
      rk(ijk, 50) = 1.80d-39 * YlH2O(ijk) * YlH2O(ijk)
      rk(ijk, 51) =  DEXP(-0.2779354004542632D+02   &
         - (  0.2450000000000000D+04 )/temp(ijk))
      Effko(ijk) =  0.5900000000000000D-32* (temp(ijk) / 3.d2)   &
                   **(- ( 0.1400000000000000D+01))
      Rapk(ijk) =  0.1100000000000000D-11* (temp(ijk) / 3.d2)   &
                    **(- (-0.1300000000000000D+01))
      rk(ijk, 52) = (Effko(ijk) * SumM(ijk) /    &
                    ( 1.0d0 + Effko(ijk) * SumM(ijk) / Rapk(ijk))) *   &
                    0.6000D+00** (1.0d0 / (1.0d0 +    &
                     (LOG10(Effko(ijk) * SumM(ijk) / Rapk(ijk)))**2))
      Effko(ijk) = 1.5d-13  * (temp(ijk)/300.D0)**(0.6D0)
      Rapk(ijk) = 2.1d+09 * (temp(ijk)/300.D0)**(6.1D0)
      rk(ijk, 53)=(Effko(ijk)/(1.D0+Effko(ijk)/(Rapk(ijk)/SumM(ijk)))) *    &
        0.6D0**(1.0d0+(DLOG10(Effko(ijk)/(Rapk(ijk)/SumM(ijk)))**2.0D0)**(-1.0D0))
      rk(ijk, 54) =  DEXP(-0.2410466059131239D+02   &
         - (  0.1600000000000000D+04 )/temp(ijk))
      rk(ijk, 55) =  DEXP(-0.2592627302369012D+02   &
         - ( -0.1250000000000000D+03 )/temp(ijk))
      rk(ijk, 56) =  0.5800000000000000D-15
      rk(ijk, 57) =  DEXP(-0.2474064935803238D+02   &
         - (  0.1100000000000000D+04 )/temp(ijk))
      rk(ijk, 58) =  DEXP(-0.2614941657500433D+02   &
         - ( -0.3650000000000000D+03 )/temp(ijk))
      rk(ijk, 59) =  DEXP(-0.2729454887930734D+02   &
         - (  0.1900000000000000D+04 )/temp(ijk))
      rk(ijk, 60) =  DEXP(-0.2561611809538628D+02   &
         - ( -0.2900000000000000D+03 )/temp(ijk))
      Effko(ijk) =  0.9700000000000000D-28* (temp(ijk) / 3.d2)   &
                   **(- ( 0.5600000000000000D+01))
      Rapk(ijk) =  0.9300000000000000D-11* (temp(ijk) / 3.d2)   &
                    **(- ( 0.1500000000000000D+01))
      rk(ijk, 61) = (Effko(ijk) * SumM(ijk) /    &
                    ( 1.0d0 + Effko(ijk) * SumM(ijk) / Rapk(ijk))) *   &
                    0.6000D+00** (1.0d0 / (1.0d0 +    &
                     (LOG10(Effko(ijk) * SumM(ijk) / Rapk(ijk)))**2))
      rk(ijk, 62) =  DEXP( 0.6457674261915753D+02   &
         - (  0.1400000000000000D+05 )/temp(ijk))
      Effko(ijk) =  0.9700000000000000D-28* (temp(ijk) / 3.d2)   &
                   **(- ( 0.5600000000000000D+01))
      Rapk(ijk) =  0.9300000000000000D-11* (temp(ijk) / 3.d2)   &
                    **(- ( 0.1500000000000000D+01))
      facteur(ijk) = (Effko(ijk) * SumM(ijk) / ( 1.0d0 + Effko(ijk) * SumM(ijk) /    &
                 Rapk(ijk))) * 0.6d0 ** (1.0d0 / (1.0d0 +    &
                  (LOG10(Effko(ijk) * SumM(ijk) / Rapk(ijk)))**2))
      rk(ijk, 62) = facteur(ijk) * rk(ijk, 62)
      rk(ijk, 63) =  DEXP(-0.2847499118622308D+02   &
         - ( -0.1040000000000000D+04 )/temp(ijk))
      rk(ijk, 64) =  DEXP(-0.2660140169874739D+02   &
         - ( -0.5300000000000000D+03 )/temp(ijk))
      rk(ijk, 65) =  0.8140000000000000D-12
      rk(ijk, 66) =  DEXP(-0.1009950243646209D+02   &
         - (  0.8000000000000000D+04 )/temp(ijk))
      rk(ijk, 66) = rk(ijk, 66) * SumM(ijk)
      rk(ijk, 67) =  0.3290000000000000D-15
      rk(ijk, 67) = rk(ijk, 67) * SumM(ijk) * 0.2d0
      rk(ijk, 68) =  0.1500000000000000D-10
      rk(ijk, 69) =  DEXP(-0.2528921530978122D+02   &
         - (  0.7920000000000000D+03 )/temp(ijk))
      Effko(ijk) =  0.1000000000000000D-27* (temp(ijk) / 3.d2)   &
                   **(- ( 0.4500000000000000D+01))
      Rapk(ijk) =  0.8800000000000000D-11* (temp(ijk) / 3.d2)   &
                    **(- ( 0.8500000000000000D+00))
      rk(ijk, 70) = (Effko(ijk) * SumM(ijk) /    &
                    ( 1.0d0 + Effko(ijk) * SumM(ijk) / Rapk(ijk))) *   &
                    0.6000D+00** (1.0d0 / (1.0d0 +    &
                     (LOG10(Effko(ijk) * SumM(ijk) / Rapk(ijk)))**2))
      rk(ijk, 71) =  DEXP(-0.3205386974512268D+02   &
         - (  0.2630000000000000D+04 )/temp(ijk))
      rk(ijk, 72) =  DEXP(-0.2409006179189123D+02   &
         - (  0.3400000000000000D+03 )/temp(ijk))
      rk(ijk, 73) =  DEXP(-0.2544834631960706D+02   &
         - ( -0.4780000000000000D+03 )/temp(ijk))
      rk(ijk, 74) =  DEXP(-0.3339137394207314D+02   &
         - (  0.1680000000000000D+04 )/temp(ijk))
      rk(ijk, 75) =  DEXP(-0.2937972109569615D+02   &
         - (  0.1500000000000000D+02 )/temp(ijk))
      rk(ijk, 76) =  0.3600000000000000D-10
      rk(ijk, 77) =  DEXP(-0.2439627194190406D+02   &
         - ( -0.4076000000000000D+03 )/temp(ijk))
      rk(ijk, 78) =  DEXP(-0.3247698978846957D+02   &
         - (  0.1912000000000000D+04 )/temp(ijk))
      rk(ijk, 79) =  DEXP(-0.2652245849640727D+02   &
         - (  0.4480000000000000D+03 )/temp(ijk))
      rk(ijk, 80) =  0.1500000000000000D-18
      rk(ijk, 81) =  0.3360000000000000D-10
      rk(ijk, 82) =  0.7110000000000000D-17
      rk(ijk, 83) =  0.1000000000000000D-14
      rk(ijk, 84) =  DEXP(-0.2704323445102643D+02   &
         - ( -0.3550000000000000D+03 )/temp(ijk))
      rk(ijk, 85) =  0.8100000000000000D-11
      rk(ijk, 86) =  0.1720000000000000D-18
      rk(ijk, 86) = rk(ijk, 86) * SumM(ijk)
      rk(ijk, 87) =  0.4100000000000000D-10
      rk(ijk, 88) =  0.2200000000000000D-10
      rk(ijk, 89) =  0.1400000000000000D-10
      rk(ijk, 90) =  0.3000000000000000D-10
      rk(ijk, 91) =  DEXP(-0.3745754762732854D+02   &
         - (  0.5000000000000000D+03 )/temp(ijk))
      rk(ijk, 92) =  DEXP(-0.2479780777187233D+02   &
         - ( -0.1160000000000000D+03 )/temp(ijk))
      rk(ijk, 93) =  0.1700000000000000D-10
      rk(ijk, 94) =  DEXP(-0.2653240882726044D+02   &
         - ( -0.2800000000000000D+03 )/temp(ijk))
      rk(ijk, 95) =  DEXP(-0.2653240882726044D+02   &
         - ( -0.2800000000000000D+03 )/temp(ijk))
      rk(ijk, 96) =  DEXP(-0.2901731547704844D+02   &
         - ( -0.1900000000000000D+03 )/temp(ijk))
      rk(ijk, 97) =  DEXP(-0.2859860514219026D+02   &
         - ( -0.8000000000000000D+03 )/temp(ijk))
      rk(ijk, 98) =  DEXP(-0.2859860514219026D+02   &
         - ( -0.8000000000000000D+03 )/temp(ijk))
      rk(ijk, 99) =  DEXP(-0.2901731547704844D+02   &
         - ( -0.1900000000000000D+03 )/temp(ijk))
      rk(ijk,100) =  DEXP(-0.2832416829648849D+02   &
         - ( -0.1900000000000000D+03 )/temp(ijk))
      rk(ijk,101) =  DEXP(-0.2673493309137191D+02   &
         - (  0.1775000000000000D+04 )/temp(ijk))
      rk(ijk,102) =  DEXP(-0.2656631037893612D+02   &
         - (  0.3450000000000000D+03 )/temp(ijk))
      rk(ijk,103) =  DEXP(-0.2653240882726044D+02   &
         - (  0.2000000000000000D+02 )/temp(ijk))
       END DO
 
   END SUBROUTINE kinetic
 
  END MODULE mod_chem_spack_kinetic
 
