                                                                                
 MODULE mod_chem_spack_fexchem                                                  
                                                                                
   USE mod_chem_spack_rates, ONLY: rates  ! subroutine                          
   IMPLICIT NONE                                                                
   PRIVATE                                                                      
   PUBLIC :: fexchem ! subroutine                                               
 CONTAINS                                                                       
                                                                                
   SUBROUTINE fexchem(y,rk,chem,ngas,ijkbegin,ijkend,maxblock_size,nr)          
                                                                                
!------------------------------------------------------------------------       
!                                                                               
!     -- DESCRIPTION                                                            
!                                                                               
!     This routine computes the chemical production term.                       
!     This routine is automatically generated by SPACK.                         
!     Mechanism: ../Mechanism/CB07                                              
!     Species: ../Mechanism/ciCB07                                              
!                                                                               
!------------------------------------------------------------------------       
!                                                                               
!     -- INPUT VARIABLES                                                        
!                                                                               
!     Y: chemical concentrations.                                               
!     RK: kinetic rates.                                                        
!     ZCSOURC: volumic emissions.                                               
!                                                                               
!     -- INPUT/OUTPUT VARIABLES                                                 
!                                                                               
!     -- OUTPUT VARIABLES                                                       
!                                                                               
!     CHEM: array of chemical production terms.                                 
!                                                                               
!------------------------------------------------------------------------       
!                                                                               
!     -- REMARKS                                                                
!                                                                               
!------------------------------------------------------------------------       
!                                                                               
!     -- MODIFICATIONS                                                          
!                                                                               
!------------------------------------------------------------------------       
!                                                                               
!     -- AUTHOR(S)                                                              
!                                                                               
!     SPACK.                                                                    
!                                                                               
!------------------------------------------------------------------------       
                                                                                
       IMPLICIT NONE                                                            
                                                                                
                                                                                
      INTEGER  	, INTENT(IN)  :: ngas                                           
      INTEGER  	, INTENT(IN)  :: ijkbegin		                                     
      INTEGER  	, INTENT(IN)  :: ijkend 		                                      
      INTEGER  	, INTENT(IN)  :: maxblock_size		                                
      INTEGER  	, INTENT(IN)  :: nr		  	                                        
      DOUBLE PRECISION , INTENT(IN)  :: rk(maxblock_size,nr)	                   
      DOUBLE PRECISION , INTENT(IN)  :: y(maxblock_size,ngas)                   
      DOUBLE PRECISION , INTENT(OUT) :: chem(maxblock_size,NGAS)                
      DOUBLE PRECISION :: w(maxblock_size,nr)			                                
      INTEGER ::  ijk						                                                     
                                                                                
                                                                                
!     Compute reaction rates.                                                   
                                                                                
      call rates(rk,y,w,ngas,ijkbegin,ijkend,maxblock_size,nr)                  
                                                                                
!     Chemical production terms.                                                
                                                                                
                                                                                
      DO ijk=ijkbegin,ijkend                                                    
      chem(ijk,  1) = - w(ijk,  1) &
          + w(ijk,  5) &
          +  0.6500000000000000D+00 * w(ijk,  6) &
          + w(ijk,  8) &
          + w(ijk, 27) &
          - w(ijk, 28) &
          - w(ijk, 29) &
          - w(ijk, 31) &
          + w(ijk, 32) &
          + w(ijk, 33) &
          - w(ijk, 34) &
          + w(ijk, 35) &
          +  0.7000000000000000D+00 * w(ijk, 36) &
          + w(ijk, 37) &
          + w(ijk, 39) &
          + w(ijk, 40) &
          - w(ijk, 41) &
          +  0.2000000000000000D+01 * w(ijk, 42) &
          - w(ijk, 43) &
          + w(ijk, 44) &
          +  0.2000000000000000D+01 * w(ijk, 45) &
          - w(ijk, 47) &
          + w(ijk, 48) &
          +  0.2000000000000000D+01 * w(ijk, 51) &
          + w(ijk, 60) &
          - w(ijk, 61) &
          + w(ijk, 62) &
          - w(ijk, 68) &
          + w(ijk, 75) &
          +  0.2000000000000000D+00 * w(ijk, 79) &
          - w(ijk, 80) &
          +  0.9000000000000000D+00 * w(ijk, 85) &
          - w(ijk, 89) &
          + w(ijk, 94)
      chem(ijk,  2) = + w(ijk,  1) &
          + w(ijk,  4) &
          + w(ijk,  7) &
          - w(ijk, 27) &
          + w(ijk, 28) &
          - w(ijk, 30) &
          - w(ijk, 33) &
          - w(ijk, 40) &
          -  0.2000000000000000D+01 * w(ijk, 42) &
          - w(ijk, 43) &
          + w(ijk, 44) &
          - w(ijk, 45) &
          + w(ijk, 46) &
          - w(ijk, 60) &
          +  0.2000000000000000D+00 * w(ijk, 80) &
          - w(ijk, 85) &
          - w(ijk, 94) &
          - w(ijk, 95)
      chem(ijk,  3) = + w(ijk,  1) &
          + w(ijk,  3) &
          + w(ijk,  8) &
          - w(ijk, 16) &
          - w(ijk, 17) &
          + w(ijk, 18) &
          + w(ijk, 19) &
          - w(ijk, 27) &
          - w(ijk, 28) &
          - w(ijk, 29) &
          - w(ijk, 54) &
          - w(ijk, 57) &
          - w(ijk, 69) &
          - w(ijk, 72) &
          - w(ijk, 76)
      chem(ijk,  4) = - w(ijk,  2) &
          - w(ijk,  3) &
          + w(ijk, 16) &
          - w(ijk, 17) &
          - w(ijk, 21) &
          - w(ijk, 22) &
          - w(ijk, 40) &
          - w(ijk, 41) &
          +  0.2500000000000000D+00 * w(ijk, 63) &
          - w(ijk, 71) &
          - w(ijk, 74) &
          - w(ijk, 78) &
          - w(ijk, 82) &
          - w(ijk, 91)
      chem(ijk,  5) = +  0.3500000000000000D+00 * w(ijk,  6) &
          - w(ijk,  7) &
          - w(ijk,  8) &
          + w(ijk, 29) &
          - w(ijk, 32) &
          - w(ijk, 36) &
          + w(ijk, 38) &
          + w(ijk, 41) &
          - w(ijk, 45) &
          - w(ijk, 46) &
          - w(ijk, 47) &
          + w(ijk, 48) &
          -  0.2000000000000000D+01 * w(ijk, 51) &
          - w(ijk, 56) &
          - w(ijk, 59) &
          - w(ijk, 75) &
          - w(ijk, 79) &
          - w(ijk, 83) &
          - w(ijk, 88)
      chem(ijk,  6) = + w(ijk,  2) &
          - w(ijk, 18) &
          - w(ijk, 19) &
          - w(ijk, 20)
      chem(ijk,  7) = + w(ijk,  5) &
          +  0.3500000000000000D+00 * w(ijk,  6) &
          +  0.2000000000000000D+01 * w(ijk, 20) &
          - w(ijk, 21) &
          + w(ijk, 22) &
          - w(ijk, 23) &
          - w(ijk, 24) &
          - w(ijk, 30) &
          - w(ijk, 31) &
          - w(ijk, 32) &
          + w(ijk, 33) &
          +  0.7000000000000000D+00 * w(ijk, 36) &
          - w(ijk, 37) &
          - w(ijk, 38) &
          - w(ijk, 39) &
          - w(ijk, 52) &
          - w(ijk, 53) &
          + w(ijk, 54) &
          - w(ijk, 55) &
          + w(ijk, 57) &
          - w(ijk, 58) &
          - w(ijk, 65) &
          +  0.3500000000000000D+00 * w(ijk, 69) &
          - w(ijk, 70) &
          +  0.8000000000000000D-01 * w(ijk, 71) &
          +  0.5100000000000000D-01 * w(ijk, 72) &
          - w(ijk, 73) &
          +  0.8500000000000001D-01 * w(ijk, 74) &
          - w(ijk, 77) &
          +  0.2660000000000000D+00 * w(ijk, 78) &
          - w(ijk, 81) &
          +  0.2680000000000000D+00 * w(ijk, 82) &
          - w(ijk, 84) &
          - w(ijk, 87) &
          - w(ijk, 90) &
          +  0.8000000000000000D-01 * w(ijk, 91) &
          - w(ijk, 92) &
          - w(ijk, 93) &
          - w(ijk,101) &
          - w(ijk,102) &
          - w(ijk,103)
      chem(ijk,  8) = +  0.6500000000000000D+00 * w(ijk,  6) &
          +  0.2000000000000000D+01 * w(ijk, 11) &
          +  0.2000000000000000D+01 * w(ijk, 12) &
          +  0.1033000000000000D+01 * w(ijk, 13) &
          + w(ijk, 14) &
          + w(ijk, 15) &
          + w(ijk, 21) &
          - w(ijk, 22) &
          - w(ijk, 23) &
          + w(ijk, 24) &
          -  0.2000000000000000D+01 * w(ijk, 25) &
          -  0.2000000000000000D+01 * w(ijk, 26) &
          + w(ijk, 32) &
          - w(ijk, 33) &
          - w(ijk, 34) &
          + w(ijk, 35) &
          - w(ijk, 36) &
          + w(ijk, 52) &
          + w(ijk, 53) &
          + w(ijk, 54) &
          + w(ijk, 55) &
          + w(ijk, 56) &
          + w(ijk, 60) &
          - w(ijk, 63) &
          +  0.2000000000000000D+01 * w(ijk, 64) &
          +  0.1100000000000000D+00 * w(ijk, 65) &
          +  0.9399999999999999D+00 * w(ijk, 66) &
          + w(ijk, 67) &
          +  0.1550000000000000D+01 * w(ijk, 69) &
          + w(ijk, 70) &
          +  0.8000000000000000D-01 * w(ijk, 71) &
          +  0.1470000000000000D+00 * w(ijk, 72) &
          + w(ijk, 73) &
          +  0.1500000000000000D+00 * w(ijk, 74) &
          +  0.2500000000000000D+00 * w(ijk, 76) &
          +  0.9120000000000000D+00 * w(ijk, 77) &
          +  0.6600000000000000D-01 * w(ijk, 78) &
          +  0.8000000000000000D+00 * w(ijk, 79) &
          +  0.8000000000000000D+00 * w(ijk, 80) &
          +  0.5030000000000000D+00 * w(ijk, 81) &
          +  0.1540000000000000D+00 * w(ijk, 82) &
          +  0.9250000000000000D+00 * w(ijk, 83) &
          +  0.4400000000000000D+00 * w(ijk, 84) &
          +  0.9000000000000000D+00 * w(ijk, 85) &
          + w(ijk, 86) &
          +  0.6000000000000000D+00 * w(ijk, 87) &
          +  0.2000000000000000D+01 * w(ijk, 90) &
          +  0.7600000000000000D+00 * w(ijk, 91) &
          +  0.7000000000000000D+00 * w(ijk, 92) &
          - w(ijk, 97) &
          - w(ijk, 98) &
          + w(ijk,101) &
          + w(ijk,102) &
          + w(ijk,103)
      chem(ijk,  9) = + w(ijk, 47) &
          - w(ijk, 48) &
          - w(ijk, 49) &
          - w(ijk, 50)
      chem(ijk, 10) = - w(ijk,  5) &
          + w(ijk, 31) &
          +  0.3000000000000000D+00 * w(ijk, 36) &
          - w(ijk, 38) &
          +  0.2000000000000000D+01 * w(ijk, 49) &
          +  0.2000000000000000D+01 * w(ijk, 50) &
          + w(ijk, 56) &
          + w(ijk, 59) &
          +  0.7500000000000000D-01 * w(ijk, 83) &
          + w(ijk, 88)
      chem(ijk, 11) = - w(ijk,  4) &
          + w(ijk, 30) &
          - w(ijk, 37) &
          +  0.2000000000000000D+01 * w(ijk, 43) &
          -  0.2000000000000000D+01 * w(ijk, 44)
      chem(ijk, 12) = - w(ijk,  6) &
          + w(ijk, 34) &
          - w(ijk, 35) &
          - w(ijk, 39)
      chem(ijk, 13) = - w(ijk,  9) &
          - w(ijk, 24) &
          + w(ijk, 25) &
          + w(ijk, 26) &
          +  0.2000000000000000D-01 * w(ijk, 71)
      chem(ijk, 14) = + w(ijk, 10) &
          + w(ijk, 11) &
          + w(ijk, 12) &
          +  0.3330000000000000D+00 * w(ijk, 13) &
          + w(ijk, 14) &
          + w(ijk, 15) &
          - w(ijk, 52) &
          - w(ijk, 53) &
          + w(ijk, 54) &
          + w(ijk, 55) &
          + w(ijk, 56) &
          +  0.9500000000000000D+00 * w(ijk, 69) &
          +  0.3250000000000000D+00 * w(ijk, 71) &
          +  0.1020000000000000D+00 * w(ijk, 72) &
          +  0.1300000000000000D+00 * w(ijk, 74) &
          +  0.6600000000000000D-01 * w(ijk, 78) &
          +  0.3340000000000000D+00 * w(ijk, 81) &
          +  0.2250000000000000D+00 * w(ijk, 82) &
          +  0.6430000000000000D+00 * w(ijk, 83) &
          +  0.2000000000000000D+01 * w(ijk, 90) &
          +  0.6899999999999999D+00 * w(ijk, 91)
      chem(ijk, 15) = - w(ijk, 10) &
          - w(ijk, 11) &
          + w(ijk, 12) &
          +  0.9000000000000000D+00 * w(ijk, 13) &
          - w(ijk, 54) &
          - w(ijk, 55) &
          - w(ijk, 56) &
          + w(ijk, 60) &
          +  0.2000000000000000D+01 * w(ijk, 64) &
          +  0.4900000000000000D+00 * w(ijk, 69) &
          +  0.1560000000000000D+01 * w(ijk, 70) &
          +  0.1030000000000000D+01 * w(ijk, 71) &
          +  0.5100000000000000D-01 * w(ijk, 72) &
          + w(ijk, 73) &
          +  0.4850000000000000D+00 * w(ijk, 74) &
          + w(ijk, 75) &
          +  0.5000000000000000D+00 * w(ijk, 76) &
          +  0.6290000000000000D+00 * w(ijk, 77) &
          +  0.6000000000000000D+00 * w(ijk, 78) &
          +  0.1670000000000000D+00 * w(ijk, 81) &
          +  0.1500000000000000D+00 * w(ijk, 82) &
          +  0.2820000000000000D+00 * w(ijk, 83) &
          + w(ijk, 90) &
          +  0.7000000000000000D+00 * w(ijk, 91) &
          + w(ijk,101) &
          + w(ijk,102)
      chem(ijk, 16) = - w(ijk, 12) &
          +  0.6700000000000000D-01 * w(ijk, 13) &
          - w(ijk, 57) &
          - w(ijk, 58) &
          - w(ijk, 59) &
          +  0.1100000000000000D+00 * w(ijk, 65) &
          +  0.1100000000000000D+01 * w(ijk, 66) &
          +  0.2200000000000000D+00 * w(ijk, 70) &
          +  0.5190000000000000D+00 * w(ijk, 72) &
          + w(ijk, 73) &
          +  0.2100000000000000D+00 * w(ijk, 74) &
          + w(ijk, 75) &
          +  0.1500000000000000D+00 * w(ijk, 78) &
          +  0.8000000000000000D+00 * w(ijk, 79) &
          +  0.8000000000000000D+00 * w(ijk, 80) &
          +  0.2730000000000000D+00 * w(ijk, 81) &
          +  0.2000000000000000D-01 * w(ijk, 82) &
          +  0.3570000000000000D+00 * w(ijk, 83) &
          +  0.3000000000000000D-01 * w(ijk, 91) &
          + w(ijk,103)
      chem(ijk, 17) = +  0.9670000000000000D+00 * w(ijk, 13) &
          + w(ijk, 14) &
          + w(ijk, 15) &
          + w(ijk, 57) &
          + w(ijk, 58) &
          + w(ijk, 59) &
          - w(ijk, 60) &
          - w(ijk, 61) &
          + w(ijk, 62) &
          - w(ijk, 63) &
          -  0.2000000000000000D+01 * w(ijk, 64) &
          +  0.2500000000000000D+00 * w(ijk, 76) &
          +  0.2000000000000000D+00 * w(ijk, 78) &
          +  0.4980000000000000D+00 * w(ijk, 81) &
          +  0.1140000000000000D+00 * w(ijk, 82) &
          +  0.7500000000000000D-01 * w(ijk, 83) &
          + w(ijk, 90) &
          +  0.6200000000000000D+00 * w(ijk, 91) &
          + w(ijk, 93)
      chem(ijk, 18) = + w(ijk, 12) &
          +  0.7000000000000000D+00 * w(ijk, 13) &
          + w(ijk, 60) &
          +  0.2000000000000000D+01 * w(ijk, 64) &
          +  0.8700000000000000D+00 * w(ijk, 65) &
          +  0.9600000000000000D+00 * w(ijk, 66) &
          +  0.6000000000000000D+00 * w(ijk, 69) &
          + w(ijk, 70) &
          +  0.9700000000000000D-01 * w(ijk, 72) &
          + w(ijk, 73) &
          +  0.4400000000000000D-01 * w(ijk, 74) &
          +  0.7000000000000000D+00 * w(ijk, 75) &
          +  0.2500000000000000D+00 * w(ijk, 76) &
          +  0.9910000000000000D+00 * w(ijk, 77) &
          +  0.2000000000000000D+00 * w(ijk, 78) &
          + w(ijk, 79) &
          + w(ijk, 80) &
          +  0.7130000000000000D+00 * w(ijk, 81) &
          +  0.6400000000000000D-01 * w(ijk, 82) &
          +  0.7500000000000000D-01 * w(ijk, 83) &
          +  0.8000000000000000D-01 * w(ijk, 84) &
          +  0.6000000000000000D+00 * w(ijk, 87) &
          + w(ijk, 90) &
          +  0.3000000000000000D-01 * w(ijk, 91) &
          +  0.1000000000000000D+00 * w(ijk, 92) &
          + w(ijk, 93) &
          - w(ijk, 94) &
          -  0.2000000000000000D+01 * w(ijk, 96) &
          - w(ijk, 97) &
          - w(ijk,100) &
          + w(ijk,101)
      chem(ijk, 19) = + w(ijk, 61) &
          - w(ijk, 62)
      chem(ijk, 20) = +  0.8320000000000000D+00 * w(ijk, 13) &
          -  0.1110000000000000D+01 * w(ijk, 65) &
          -  0.2100000000000000D+01 * w(ijk, 66) &
          +  0.8090000000000001D+00 * w(ijk, 72) &
          - w(ijk, 73) &
          +  0.9660000000000000D+00 * w(ijk, 74) &
          - w(ijk, 75) &
          +  0.2500000000000000D+00 * w(ijk, 76) &
          +  0.3500000000000000D+00 * w(ijk, 78) &
          +  0.2400000000000000D+01 * w(ijk, 79) &
          +  0.2400000000000000D+01 * w(ijk, 80) &
          +  0.1565000000000000D+01 * w(ijk, 81) &
          +  0.3600000000000000D+00 * w(ijk, 82) &
          +  0.1282000000000000D+01 * w(ijk, 83) &
          +  0.1100000000000000D+01 * w(ijk, 92)
      chem(ijk, 21) = +  0.1300000000000000D+00 * w(ijk, 65) &
          +  0.4000000000000000D-01 * w(ijk, 66) &
          +  0.5000000000000000D-02 * w(ijk, 72) &
          +  0.1000000000000000D-02 * w(ijk, 74) &
          +  0.3000000000000000D+00 * w(ijk, 75) &
          +  0.8799999999999999D-01 * w(ijk, 77) &
          - w(ijk, 95) &
          - w(ijk, 98) &
          -  0.2000000000000000D+01 * w(ijk, 99) &
          - w(ijk,100)
      chem(ijk, 22) = +  0.7600000000000000D+00 * w(ijk, 65) &
          -  0.9800000000000000D+00 * w(ijk, 66) &
          - w(ijk, 67) &
          - w(ijk, 68)
      chem(ijk, 23) = - w(ijk, 72) &
          - w(ijk, 73) &
          - w(ijk, 74) &
          - w(ijk, 75)
      chem(ijk, 24) = - w(ijk, 69) &
          - w(ijk, 70) &
          - w(ijk, 71)
      chem(ijk, 25) = - w(ijk, 84)
      chem(ijk, 26) = +  0.3600000000000000D+00 * w(ijk, 84) &
          + w(ijk, 86) &
          - w(ijk, 87) &
          - w(ijk, 88) &
          +  0.2000000000000000D+00 * w(ijk, 92)
      chem(ijk, 27) = +  0.5600000000000001D+00 * w(ijk, 84) &
          - w(ijk, 85) &
          - w(ijk, 86) &
          +  0.3000000000000000D+00 * w(ijk, 92)
      chem(ijk, 28) = - w(ijk, 14) &
          +  0.9000000000000000D+00 * w(ijk, 85) &
          +  0.3000000000000000D+00 * w(ijk, 87) &
          - w(ijk, 90) &
          - w(ijk, 91)
      chem(ijk, 29) = +  0.4000000000000000D+00 * w(ijk, 87) &
          + w(ijk, 88) &
          - w(ijk, 89)
      chem(ijk, 30) = - w(ijk, 15) &
          +  0.1680000000000000D+00 * w(ijk, 81) &
          +  0.8500000000000000D+00 * w(ijk, 82) &
          +  0.2000000000000000D+00 * w(ijk, 91) &
          +  0.8000000000000000D+00 * w(ijk, 92) &
          - w(ijk, 93)
      chem(ijk, 31) = - w(ijk, 92)
      chem(ijk, 32) = - w(ijk, 76) &
          - w(ijk, 77) &
          - w(ijk, 78) &
          - w(ijk, 79) &
          - w(ijk, 80)
      chem(ijk, 33) = - w(ijk, 13) &
          +  0.7500000000000000D+00 * w(ijk, 76) &
          +  0.9120000000000000D+00 * w(ijk, 77) &
          +  0.6500000000000000D+00 * w(ijk, 78) &
          +  0.6500000000000000D+00 * w(ijk, 79) &
          +  0.2000000000000000D+00 * w(ijk, 80) &
          - w(ijk, 81) &
          - w(ijk, 82) &
          - w(ijk, 83)
      chem(ijk, 34) = - w(ijk,101)
      chem(ijk, 35) = - w(ijk,102)
      chem(ijk, 36) = - w(ijk,103)
      END DO   
                                                                                
!     Volumic source terms.                                                     
                                                                                
                                                                                
   END SUBROUTINE fexchem                                                       
                                                                                
  END MODULE mod_chem_spack_fexchem                                             
                                                                                
