source: trunk/LMDZ.VENUS/libf/phyvenus/photochemistry_venus.F90 @ 3094

Last change on this file since 3094 was 3035, checked in by amartinez, 16 months ago

======= VENUS PCM ===============

COMMIT BY ANTOINE MARTINEZ

Implementation of vertical ambipolar diffusion in physics

=================================

NEW KEYWORD OF PHYSIQ.DEF

=================================

NEW VERSION OF "physiq.def"

  • deftank/physiq-96x96x90-chemistry-IONOSPHERE-IONDIFF.def
  • ok_iondiff: keyword supposed to activate ion ambipolar diffusion
  • nbapp_chem: replaces nbapp_chim, in order to characterize the Number of calls to the chemistry routines (per Venusian day)

================

phyvenus

================

Iondiff_red.F

  • Calculation of the Ion Ambipolar Diffusion for 13 ions on 14:

O2+, O+, C+, N+, CO2+,
NO+, CO+, H+, H2O+, H3O+,

HCO+, N2+, OH+


The ion temperature is fixed as the half of the electron temperature
calculated in ion_h.F for the stability of the program and because the
ion temperature is lower than electron temperature.

plasmaphys_venus_mod.F90

  • parameters of the ambipolar diffusion scheme:

parameter (Pdiffion = 7.0D-4) ! pressure in Pa below which ion diffusion is computed
parameter (naltvert = 168) ! number of level on the altimetric subgrid
parameter (nsubvert = 24000) ! ptimephysiq/nsubvert - minimum sub-timestep allowed
parameter ( nsubmin = 40) ! ptimephysiq/nsubmin - maximum sub-timestep allowed

physic_mod.F

  • nbapp_chem is not fixed anymore here but deftank/in physiq.def
  • Ambipolar diffusion activated if (ok_iondiff) is true

conf_phys.f90

  • add ok_iondiff as parameters to read from physiq.def file set to .false. by default
  • add nbapp_chem as parameters to characterize the Number of calls to the chemistry routines (per Venusian day) instead of be fixed in physic_mod.F

to read from physiq.def file set to 24000 by default

cleshphys.h

  • added ok_iondiff & nbapp_chem in COMMON/clesphys_l/
  • removed nbapp_chim

phytrac_chemistry.F

  • Added security in the calculation of the sza_local in order to avoid the rare case where the |range| is above 1
File size: 233.6 KB
Line 
1!****************************************************************
2!
3!     Photochemical routine
4!
5!     Authors: Franck Lefevre, Francisco Gonzalez-Galindo
6!     -------
7!
8!     Version: 14/11/2020
9!
10!     ASIS scheme : for details on the method see
11!     Cariolle et al., Geosci. Model Dev., 10, 1467-1485, 2017.
12!
13!     -------
14!
15!     2022/09/15: adding ion chemistry by Antoine Martinez
16!
17!*****************************************************************
18
19subroutine photochemistry_venus(nz, n_lon, zlocal, ptimestep,                 &
20                                    ok_jonline,ok_ionchem,tuneupperatm,       &
21                                    nb_reaction_3_max,nb_reaction_4_max,      &
22                                    nb_phot_max,nphotion,ig,                  &
23                                    p, t, t_elect, tr, vmr_dens_euv, mumean,  &
24                                    sza_input, lon, lat, nesp, nespeuv, iter, &
25                                    prod_tr, loss_tr, em_no, em_o2) 
26
27use chemparam_mod
28use photolysis_mod
29use param_v4_h, only: jion
30use iono_h, only: phdisrate
31!nphot ! number of photodissociations, include in "use photolysis_mod" 
32     
33implicit none
34
35!===================================================================
36!     input:
37!===================================================================
38
39integer, intent(in) :: nz          ! number of atmospheric layers
40integer, intent(in) :: nesp        ! number of tracers in traceur.def
41integer, intent(in) :: nespeuv     ! number of tracers for jthermcal_e107.F
42
43integer, intent(in) :: nb_reaction_3_max   ! number of quadratic reactions
44integer, intent(in) :: nb_reaction_4_max   ! number of bimolecular reactions
45integer, intent(in) :: nb_phot_max         ! total number of photolysis+photoionizations+quenching reactions
46integer, intent(in) :: nphotion            ! number of photoionizations
47
48logical, intent(in) :: ok_ionchem  ! switch for ion chemistry
49logical, intent(in) :: ok_jonline  ! switch for on-line calculation of photolysis rates
50logical, intent(in) :: tuneupperatm! upper atmosphere chemistry tuning
51
52real, dimension(nz) :: p                 ! pressure (hpa)
53real, dimension(nz) :: t                 ! temperature (k)
54real, dimension(nz) :: t_elect           ! electronic temperature (k)
55real, dimension(nz) :: zlocal            ! altitude (km)
56real, dimension(nz) :: mumean            ! mean molecular mass (g/mol)
57real, dimension(nz,nespeuv) :: vmr_dens_euv ! tracer mixing ratio for jthermcal_e107 routine
58real :: ptimestep                        ! physics timestep (s)
59real :: sza_input                        ! solar zenith angle (degrees)
60real :: lon, lat                         ! longitude and latitude (degrees)
61
62integer :: ig                            ! grid point index
63
64integer :: n_lon                         ! for 1D test
65
66!===================================================================
67!     input/output:
68!===================================================================
69
70real, dimension(nz,nesp) :: tr      ! tracer mixing ratio
71real, dimension(nz,nesp) :: prod_tr ! production (cm-3.s-1)
72real, dimension(nz,nesp) :: loss_tr ! loss       (cm-3.s-1)
73real, dimension (nz)     :: em_no   ! volume emission rate of no
74real, dimension (nz)     :: em_o2   ! volume emission rate of o2(deltag)
75
76!===================================================================
77!     output:
78!===================================================================
79
80integer :: iter(nz)               ! iteration counter
81
82!===================================================================
83!     local:
84!===================================================================
85
86! ok_ jonline: see physiq.def
87! true : on-line calculation of photodissociation rates ! false : lookup table
88
89logical, save :: firstcall = .true.
90
91real, dimension(nz)  :: conc      ! total number density (molecule.cm-3)
92real, dimension(nz)  :: surfice1d, surfdust1d
93
94integer :: ind_norec
95integer :: ind_orec
96
97! photolysis lookup table (case jonline = .false.)
98! if prior to jvenus.20211025, set nztable = 201 below
99
100integer, parameter :: nj = 23, nztable = 281, nsza = 27, nso2 = 13
101real, dimension(nso2,nsza,nztable,nj), save :: jphot ! nj must be equal to nphot
102real, dimension(nztable), save :: table_colair
103real, dimension(nso2,nztable), save :: table_colso2
104real, dimension(nsza), save :: table_sza
105real :: dist_sol
106
107! number densities
108
109real (kind = 8), dimension(nesp)        :: cold ! number densities at previous timestep (molecule.cm-3)
110real (kind = 8), dimension(nz,nesp)     :: c    ! number densities at current timestep (molecule.cm-3)
111real (kind = 8), dimension(nz,nespeuv)  :: c_euv! number densities for jthermcal_e107 at current timestep (molecule.cm-3)
112real (kind = 8), dimension(nesp)        :: cnew ! number densities at next timestep (molecule.cm-3)
113
114! timesteps
115
116real :: ctimestep           ! standard timestep for the chemistry (s)
117real :: dt_guess            ! first-guess timestep (s)
118real :: dt_corrected        ! corrected timestep (s)
119real :: time                ! internal time (between 0 and ptimestep, in s)
120integer :: phychemrat
121
122!Tracer indexes for photionization coeffs
123
124integer,parameter :: induv_co2 = 1
125integer,parameter :: induv_o2  = 2
126integer,parameter :: induv_o   = 3
127integer,parameter :: induv_h2o = 4
128integer,parameter :: induv_h2  = 5
129integer,parameter :: induv_h2o2= 6
130integer,parameter :: induv_o3  = 7
131integer,parameter :: induv_n2  = 8
132integer,parameter :: induv_n   = 9
133integer,parameter :: induv_no  = 10
134integer,parameter :: induv_co  = 11
135integer,parameter :: induv_h   = 12
136integer,parameter :: induv_no2 = 13
137
138! reaction rates
139
140!integer, parameter :: nb_phot_max       = 35
141!integer, parameter :: nb_phot           = 22
142!integer, parameter :: nb_reaction_3_max = 12
143!integer, parameter :: nb_reaction_4_max = 98
144
145real (kind = 8), dimension(nz,      nb_phot_max) :: v_phot
146real (kind = 8), dimension(nz,nb_reaction_3_max) :: v_3
147real (kind = 8), dimension(nz,nb_reaction_4_max) :: v_4
148
149logical,parameter :: hetero_ice  = .false.
150logical,parameter :: hetero_dust = .false.
151
152! matrix
153
154real (kind = 8), dimension(nesp,nesp) :: mat, mat1
155integer, dimension(nesp)              :: indx
156integer                               :: code
157
158! production and loss terms (for first-guess solution only)
159
160real (kind = 8), dimension(nesp) :: prod, loss, lossconc
161
162! indexes
163
164integer :: i, iesp, iz
165
166if (firstcall) then
167!===================================================================
168!     initialisation of  photolysis
169!===================================================================
170
171   ! ok jonline
172   ! true : on-line calculation of photodissociation rates ! false : lookup table
173   if (ok_jonline) then
174      print*, 'photochemistry: Read UV absorption cross-sections:'
175      call init_photolysis
176   else
177      print*, 'photochemistry: Read photolysis lookup table:'
178      call init_chimie(nphot, nztable, nsza, nso2, jphot, table_colair, table_colso2, table_sza)
179   end if
180
181!===================================================================
182!     initialisation of the reaction indexes
183!===================================================================
184
185   call indice(ok_ionchem, nb_phot_max, nb_reaction_3_max, nb_reaction_4_max)
186
187   firstcall = .false.
188end if
189
190! cloud and dust surfaces set to zero for the moment
191
192surfice1d(:)  = 0.
193surfdust1d(:) = 0.
194     
195!===================================================================
196!   number densities (molecule.cm-3)
197!===================================================================
198
199do iz = 1,nz
200   conc(iz)    = p(iz)/(1.38E-19*t(iz))
201   c(iz,:)     = tr(iz,:)*conc(iz)
202end do
203     
204!===================================================================
205!    photodissociations         
206!===================================================================
207
208! dist_sol : sun-venus distance (au)
209
210dist_sol = 0.72333
211
212if (ok_jonline) then
213   if (sza_input <= 95.) then ! day at 300 km
214      call photolysis_online(nz, nb_phot_max, zlocal, p,                  &
215                             t, mumean, i_co2,i_co, i_o, i_o1d,           &
216                             i_o2, i_o3, i_h2, i_oh, i_ho2, i_h2o2, i_h2o,&
217                             i_h, i_hcl, i_cl2, i_hocl, i_so2, i_so,      &
218                             i_so3, i_s2, i_clo, i_ocs, i_cocl2, i_h2so4, &
219                             i_cl, i_no2, i_no, i_n2, i_n2d,              &
220                             nesp, tr, sza_input, dist_sol, v_phot)
221
222      !Calculation of photoionization rates, if needed
223      if (ok_ionchem) then
224         do iz = 1,nz
225           c_euv(iz,:) = vmr_dens_euv(iz,:)*conc(iz)
226         end do
227      !! FAIRE ULTRA ATTENTION LE c_euv et vmr_dens_euv NE SONT PAS DANS LE MEME REGIME
228      !! DE i_ESPECE QUE C, CNEW, COLD et TR
229         call jthermcalc_e107(ig,nz,2,c_euv,nespeuv,t,zlocal,sza_input)
230         do iz=1,nz
231            call phdisrate(ig,nz,2,sza_input,iz)
232         end do
233         !CO2 photoionization
234         v_phot(:,nphot+ 1) = jion(induv_co2,:,1)
235         v_phot(:,nphot+ 2) = jion(induv_co2,:,2)
236         v_phot(:,nphot+ 3) = jion(induv_co2,:,2)
237         v_phot(:,nphot+ 4) = jion(induv_co2,:,3)
238         v_phot(:,nphot+ 5) = jion(induv_co2,:,3)
239         v_phot(:,nphot+ 6) = jion(induv_co2,:,4)
240         v_phot(:,nphot+ 7) = jion(induv_co2,:,4)
241         !O2 photoionization
242         v_phot(:,nphot+ 8) = jion(induv_o2,:,1)
243         !O photoionization
244         v_phot(:,nphot+ 9) = jion(induv_o,:,1)
245         !NO photoionization
246         v_phot(:,nphot+10) = jion(induv_no,:,1)
247         !CO photoionization
248         v_phot(:,nphot+11) = jion(induv_co,:,1)
249         v_phot(:,nphot+12) = jion(induv_co,:,2)
250         v_phot(:,nphot+13) = jion(induv_co,:,2)
251         !N2 photoionization
252         v_phot(:,nphot+14) = jion(induv_n2,:,1)
253         v_phot(:,nphot+15) = jion(induv_n2,:,2)
254         v_phot(:,nphot+16) = jion(induv_n2,:,2)
255         !N photoionization
256         v_phot(:,nphot+17) = jion(induv_n,:,1)
257         !H photoionization
258         v_phot(:,nphot+18) = jion(induv_h,:,1)
259      end if
260   else ! night
261      v_phot(:,:) = 0.
262   end if
263else
264   call phot(nj, nztable, nsza, nso2, sza_input, dist_sol, mumean, tr(:,i_co2), tr(:,i_so2),         &
265             jphot, table_colair, table_colso2, table_sza, nz, nb_phot_max, t, p, v_phot)
266end if
267
268!===================================================================
269!     reaction rates                                     
270!===================================================================
271                   
272call krates(hetero_ice,hetero_dust,ok_ionchem, nphotion, nz, nesp, c, conc, t, t_elect, p, nb_phot_max, nb_reaction_3_max, &
273            nb_reaction_4_max, tuneupperatm, v_3, v_4, v_phot, sza_input, ind_norec, ind_orec)
274
275!===================================================================
276!     ctimestep : standard chemical timestep (s), defined as
277!                 the fraction phychemrat of the physical timestep                           
278!===================================================================
279
280phychemrat = 1
281
282ctimestep  = ptimestep/real(phychemrat)
283
284!===================================================================
285!     loop over levels         
286!===================================================================
287
288do iz = 1,nz
289
290!  initializations
291
292   time = 0.
293   iter(iz) = 0
294   dt_guess = ctimestep
295   cold(:) = c(iz,:)     
296
297!  internal loop for the chemistry
298         
299   do while (time < ptimestep)
300     
301   iter(iz) = iter(iz) + 1
302
303!  first-guess: fill matrix
304
305   call fill_matrix(iz, mat1, prod, loss, lossconc, c, nesp, nz,          &
306                    nb_reaction_3_max, nb_reaction_4_max, nb_phot_max,    &
307                    v_phot, v_3, v_4)
308
309!  adaptative evaluation of the sub time step
310
311   call define_dt(nesp, dt_corrected, dt_guess, ctimestep, cold(:), c(iz,:), &
312                  mat1, prod, loss, conc(iz), lon, lat)
313
314   if (time + dt_corrected > ptimestep) then
315      dt_corrected = ptimestep - time
316   end if
317
318!  form the matrix identity + mat*dt_corrected
319
320   mat(:,:) = mat1(:,:)*dt_corrected
321   do iesp = 1,nesp
322      mat(iesp,iesp) = 1. + mat(iesp,iesp)
323   end do
324
325!  solve the linear system  M*Cn+1 = Cn (RHS in cnew, then replaced by solution)
326
327   cnew(:) = c(iz,:)
328
329#ifdef LAPACK
330   call dgesv(nesp,1,mat,nesp,indx,cnew,nesp,code)
331#else
332   write(*,*) "photochemistry error, missing LAPACK routine dgesv"
333   stop
334#endif
335
336!  eliminate small values
337
338   where (cnew(:)/conc(iz) < 1.e-30)
339      cnew(:) = 0.
340   end where
341
342!  update concentrations
343
344   cold(:) = c(iz,:)
345   c(iz,:) = cnew(:)
346   cnew(:) = 0.
347
348!  force charge neutrality (mod fgg, july 2019)
349
350   if (ok_ionchem) then
351      if(c(iz,i_elec).ne.c(iz,i_co2plus)+c(iz,i_oplus)+c(iz,i_o2plus)+  &
352           c(iz,i_noplus)+c(iz,i_coplus)+c(iz,i_cplus)+c(iz,i_n2plus)+  &
353           c(iz,i_nplus)+c(iz,i_hplus)+c(iz,i_hco2plus)+                &
354           c(iz,i_hcoplus)+c(iz,i_h2oplus)+c(iz,i_h3oplus)+             &
355           c(iz,i_ohplus)) then
356         c(iz,i_elec) = c(iz,i_co2plus)+c(iz,i_oplus)+c(iz,i_o2plus)+   &
357              c(iz,i_noplus)+c(iz,i_coplus)+c(iz,i_cplus)+              &
358              c(iz,i_n2plus)+c(iz,i_nplus)+c(iz,i_hplus)+               &
359              c(iz,i_hco2plus)+c(iz,i_hcoplus)+c(iz,i_h2oplus)+         &
360              c(iz,i_h3oplus)+c(iz,i_ohplus)
361         !      write(*,*)'photochemistry/359'
362         !      write(*,*)'Forcing charge neutrality at ilev,',ilev,' ig=',ig
363      end if
364   end if
365
366!  increment internal time
367
368   time = time + dt_corrected
369   dt_guess = dt_corrected     ! first-guess timestep for next iteration
370
371   end do ! while (time < ptimestep)
372
373!  save mixing ratios
374
375   tr(iz,:)  = max(c(iz,:)/conc(iz), 1.e-30)
376
377!  save production and loss terms (for diagnostic only)
378   
379   prod_tr(iz,:) = prod(:)
380   loss_tr(iz,:) = lossconc(:)
381                       
382end do  ! end of loop over vertical levels
383 
384! no and o2(delta) emissions
385
386em_no(:) = c(:,i_o)*c(:,i_n)*v_4(:,ind_norec)   !2.8e-17*(300./temp(:)))**0.5
387em_o2(:) = c(:,i_o2dg)/4470.    ! 4470 s : lafferty et al., 1998
388
389end subroutine photochemistry_venus
390
391!======================================================================
392
393 subroutine init_chimie(nj, nztable, nsza, nso2, jphot, table_colair, &
394                        table_colso2, table_sza)
395
396!======================================================================
397
398implicit none
399
400! photolysis lookup table
401
402integer, INTENT(IN) :: nj, nztable, nsza, nso2
403real, INTENT(OUT), dimension(nso2,nsza,nztable,nj) :: jphot
404real, INTENT(OUT), dimension(nztable) :: table_colair
405real, INTENT(OUT), dimension(nso2,nztable) :: table_colso2
406real, INTENT(OUT), dimension(nsza) :: table_sza
407
408integer           :: iz, isza, iozo, iso2, ij
409character(len=44) :: jvenus
410
411! lecture de la table des j
412
413jphot(:,:,:,:) = 0.
414
415jvenus = 'jvenus.dat'
416open(30, form = 'formatted', status = 'old', file = jvenus)
417print*,'lecture de jvenus = ', jvenus
418
419do iso2 = 1,nso2
420   do isza = 1,nsza
421      do iz = nztable,1,-1
422         read(30,*) table_colair(iz), table_colso2(iso2,iz), table_sza(isza)
423         read(30,'(7e11.4)') (jphot(iso2,isza,iz,ij), ij = 1,nj)
424         do ij = 1,nj
425            if (jphot(iso2,isza,iz,ij) == 1.E-30) then
426               jphot(iso2,isza,iz,ij) = 0.
427            end if
428         end do
429      end do
430   end do
431end do
432
433close(30)
434print*,'lecture de la table des j ok.'
435
436end subroutine init_chimie
437
438!======================================================================
439
440 subroutine indice(ok_ionchem, nb_phot_max, nb_reaction_3_max, nb_reaction_4_max)
441
442!================================================================
443! set the "indice" arrays used to fill the jacobian matrix      !
444!----------------------------------------------------------------
445! reaction               type                array              !
446!----------------------------------------------------------------
447! A + hv   --> B + C     photolysis          indice_phot        !
448! A + B    --> C + D     bimolecular         indice_4           !
449! A + A    --> B + C     quadratic           indice_3           !
450! A + C    --> B + C     quenching           indice_phot        !
451! A + ice  --> B + C     heterogeneous       indice_phot        !
452!================================================================
453
454use types_asis
455use chemparam_mod
456 
457implicit none
458
459! input
460
461integer, intent(in) :: nb_reaction_3_max   ! number of quadratic reactions
462integer, intent(in) :: nb_reaction_4_max   ! number of bimolecular reactions
463integer, intent(in) :: nb_phot_max         ! number of processes treated numerically as photodissociations
464logical, intent(in) :: ok_ionchem          ! True: Ion reaction
465
466! local
467
468integer :: nb_phot, nb_reaction_3, nb_reaction_4
469integer :: i_dummy
470
471allocate (indice_phot(nb_phot_max))
472allocate (indice_3(nb_reaction_3_max))
473allocate (indice_4(nb_reaction_4_max))
474
475i_dummy = 1
476
477nb_phot       = 0
478nb_reaction_3 = 0
479nb_reaction_4 = 0
480
481!===========================================================
482!      O2 + hv -> O + O
483!===========================================================
484
485nb_phot = nb_phot + 1
486
487indice_phot(nb_phot) = z3spec(1.0, i_o2, 2.0, i_o, 0.0, i_dummy)
488
489!===========================================================
490!      O2 + hv -> O + O(1D)
491!===========================================================
492
493nb_phot = nb_phot + 1
494
495indice_phot(nb_phot) = z3spec(1.0, i_o2, 1.0, i_o, 1.0, i_o1d)
496
497!===========================================================
498!      CO2 + hv -> CO + O
499!===========================================================
500
501nb_phot = nb_phot + 1
502
503indice_phot(nb_phot) = z3spec(1.0, i_co2, 1.0, i_co, 1.0, i_o)
504
505!===========================================================
506!      CO2 + hv -> CO + O(1D)
507!===========================================================
508
509nb_phot = nb_phot + 1
510
511indice_phot(nb_phot) = z3spec(1.0, i_co2, 1.0, i_co, 1.0, i_o1d)
512
513!===========================================================
514!      O3 + hv -> O2(Dg) + O(1D)
515!===========================================================
516
517nb_phot = nb_phot + 1
518
519indice_phot(nb_phot) = z3spec(1.0, i_o3, 1.0, i_o2dg, 1.0, i_o1d)
520
521!===========================================================
522!      O3 + hv -> O2 + O
523!===========================================================
524
525nb_phot = nb_phot + 1
526
527indice_phot(nb_phot) = z3spec(1.0, i_o3, 1.0, i_o2, 1.0, i_o)
528
529!===========================================================
530!      H2 + hv -> H + H
531!===========================================================
532
533nb_phot = nb_phot + 1
534
535indice_phot(nb_phot) = z3spec(1.0, i_h2, 2.0, i_h, 0.0, i_dummy)
536
537
538!===========================================================
539!      H2O + hv -> H + OH
540!===========================================================
541
542nb_phot = nb_phot + 1
543
544indice_phot(nb_phot) = z3spec(1.0, i_h2o, 1.0, i_h, 1.0, i_oh)
545
546!===========================================================
547!      HO2 + hv -> OH + O
548!===========================================================
549
550nb_phot = nb_phot + 1
551
552indice_phot(nb_phot) = z3spec(1.0, i_ho2, 1.0, i_oh, 1.0, i_o)
553
554!===========================================================
555!      H2O2 + hv -> OH + OH
556!===========================================================
557
558nb_phot = nb_phot + 1
559
560indice_phot(nb_phot) = z3spec(1.0, i_h2o2, 2.0, i_oh, 0.0, i_dummy)
561
562!===========================================================
563!      HCl + hv -> H + Cl
564!===========================================================
565
566nb_phot = nb_phot + 1
567
568indice_phot(nb_phot) = z3spec(1.0, i_hcl, 1.0, i_h, 1.0, i_cl)
569
570!===========================================================
571!      Cl2 + hv -> Cl + Cl
572!===========================================================
573
574nb_phot = nb_phot + 1
575
576indice_phot(nb_phot) = z3spec(1.0, i_cl2, 2.0, i_cl, 0.0, i_dummy)
577
578!===========================================================
579!      HOCl + hv -> OH + Cl
580!===========================================================
581
582nb_phot = nb_phot + 1
583
584indice_phot(nb_phot) = z3spec(1.0, i_hocl, 1.0, i_oh, 1.0, i_cl)
585
586!===========================================================
587!      SO2 + hv -> SO + O
588!===========================================================
589
590nb_phot = nb_phot + 1
591
592indice_phot(nb_phot) = z3spec(1.0, i_so2, 1.0, i_so, 1.0, i_o)
593
594!===========================================================
595!      SO + hv -> S + O
596!===========================================================
597
598nb_phot = nb_phot + 1
599
600indice_phot(nb_phot) = z3spec(1.0, i_so, 1.0, i_s, 1.0, i_o)
601
602!===========================================================
603!      SO3 + hv -> SO2 + O
604!===========================================================
605
606nb_phot = nb_phot + 1
607
608indice_phot(nb_phot) = z3spec(1.0, i_so3, 1.0, i_so2, 1.0, i_o)
609
610!===========================================================
611!       S2 + hv -> S + S
612!===========================================================
613
614nb_phot = nb_phot + 1
615
616indice_phot(nb_phot) = z3spec(1.0, i_s2, 2.0, i_s, 0.0, i_dummy)
617
618!===========================================================
619!      ClO + hv -> Cl + O
620!===========================================================
621
622nb_phot = nb_phot + 1
623
624indice_phot(nb_phot) = z3spec(1.0, i_clo, 1.0, i_cl, 1.0, i_o)
625
626!===========================================================
627!      OCS + hv -> CO + S
628!===========================================================
629
630nb_phot = nb_phot + 1
631
632indice_phot(nb_phot) = z3spec(1.0, i_ocs, 1.0, i_co, 1.0, i_s)
633
634!===========================================================
635!      COCl2 + hv -> Cl + Cl + CO
636!===========================================================
637
638nb_phot = nb_phot + 1
639
640indice_phot(nb_phot) = z3spec(1.0, i_cocl2, 2.0, i_cl, 1.0, i_co)
641
642!===========================================================
643!      H2SO4 + hv -> SO3 + H2O
644!===========================================================
645
646nb_phot = nb_phot + 1
647
648indice_phot(nb_phot) = z3spec(1.0, i_h2so4, 1.0, i_so3, 1.0, i_h2o)
649
650!===========================================================
651!      NO2 + hv -> NO + O
652!===========================================================
653
654nb_phot = nb_phot + 1
655
656indice_phot(nb_phot) = z3spec(1.0, i_no2, 1.0, i_no, 1.0, i_o)
657
658!===========================================================
659!      NO + hv -> N + O
660!===========================================================
661
662nb_phot = nb_phot + 1
663
664indice_phot(nb_phot) = z3spec(1.0, i_no, 1.0, i_n, 1.0, i_o)
665
666!===========================================================
667!      N2 + hv -> N(2D) + N
668!===========================================================
669
670nb_phot = nb_phot + 1
671
672indice_phot(nb_phot) = z3spec(1.0, i_n2, 1.0, i_n, 1.0, i_n2d)
673
674!Only if ion chemistry included
675if (ok_ionchem) then
676
677!===========================================================
678!      CO2 + hv -> CO2+ + e-
679!===========================================================
680
681   nb_phot = nb_phot + 1
682
683   indice_phot(nb_phot) = z3spec(1.0, i_co2, 1.0, i_co2plus, 1.0, i_elec)
684
685!===========================================================
686!      CO2 + hv -> O+ + CO + e-
687!===========================================================
688!We divide this reaction in two
689
690!0.5 CO2 + hv -> CO
691   nb_phot = nb_phot + 1
692
693   indice_phot(nb_phot) = z3spec(0.5, i_co2, 1.0, i_co, 0.0, i_dummy)
694
695!0.5 CO2 + hv -> O+ + e-
696   nb_phot = nb_phot + 1
697
698   indice_phot(nb_phot) = z3spec(0.5, i_co2, 1.0, i_oplus, 1.0, i_elec)
699
700!===========================================================
701!      CO2 + hv -> CO+ + O + e-
702!===========================================================
703!We divide this reaction in two
704
705!0.5 CO2 + hv -> O
706   nb_phot = nb_phot + 1
707
708   indice_phot(nb_phot) = z3spec(0.5, i_co2, 1.0, i_o, 0.0, i_dummy)
709
710!0.5 CO2 + hv -> CO+ + e-
711   nb_phot = nb_phot + 1
712
713   indice_phot(nb_phot) = z3spec(0.5, i_co2, 1.0, i_coplus, 1.0, i_elec)
714
715!===========================================================
716!      CO2 + hv -> C+ + O2 + e-
717!===========================================================
718!We divide this reaction in two
719
720!0.5 CO2 + hv -> O2
721   nb_phot = nb_phot + 1
722
723   indice_phot(nb_phot) = z3spec(0.5, i_co2, 1.0, i_o2, 0.0, i_dummy)
724
725!0.5 CO2 + hv -> C+ + e-
726   nb_phot = nb_phot + 1
727
728   indice_phot(nb_phot) = z3spec(0.5, i_co2, 1.0, i_cplus, 1.0, i_elec)
729
730!===========================================================
731!      O2 + hv -> O2+ + e-
732!===========================================================
733
734   nb_phot = nb_phot + 1
735
736   indice_phot(nb_phot) = z3spec(1.0, i_o2, 1.0, i_o2plus, 1.0, i_elec)
737
738!===========================================================
739!      O + hv -> O+ + e-
740!===========================================================
741
742   nb_phot = nb_phot + 1
743
744   indice_phot(nb_phot) = z3spec(1.0, i_o, 1.0, i_oplus, 1.0, i_elec)
745
746!===========================================================
747!      NO + hv -> NO+ + e-
748!===========================================================
749
750   nb_phot = nb_phot + 1
751
752   indice_phot(nb_phot) = z3spec(1.0, i_no, 1.0, i_noplus, 1.0, i_elec)
753
754!===========================================================
755!      CO + hv -> CO+ + e-
756!===========================================================
757
758   nb_phot = nb_phot + 1
759
760   indice_phot(nb_phot) = z3spec(1.0, i_co, 1.0, i_coplus, 1.0, i_elec)
761
762!===========================================================
763!      CO + hv -> C+ + O + e-
764!===========================================================
765!We divide this reaction in two
766
767!0.5 CO + hv -> O
768   nb_phot = nb_phot + 1
769
770   indice_phot(nb_phot) = z3spec(0.5, i_co, 1.0, i_o, 0.0, i_dummy)
771
772!0.5 CO + hv -> C+ + e-
773   nb_phot = nb_phot + 1
774
775   indice_phot(nb_phot) = z3spec(0.5, i_co, 1.0, i_cplus, 1.0, i_elec)
776
777!===========================================================
778!      N2 + hv -> N2+ + e-
779!===========================================================
780
781   nb_phot = nb_phot + 1
782
783   indice_phot(nb_phot) = z3spec(1.0, i_n2, 1.0, i_n2plus, 1.0, i_elec)
784
785!===========================================================
786!      N2 + hv -> N+ + N + e-
787!===========================================================
788!We divide this reaction in two
789
790!0.5 N2 + hv -> N
791   nb_phot = nb_phot + 1
792
793   indice_phot(nb_phot) = z3spec(0.5, i_n2, 1.0, i_n, 0.0, i_dummy)
794
795!0.5 N2 + hv -> N+ + e-
796   nb_phot = nb_phot + 1
797
798   indice_phot(nb_phot) = z3spec(0.5, i_n2, 1.0, i_nplus, 1.0, i_elec)
799
800!===========================================================
801!      N + hv -> N+ + e-
802!===========================================================
803
804   nb_phot = nb_phot + 1
805
806   indice_phot(nb_phot) = z3spec(1.0, i_n, 1.0, i_nplus, 1.0, i_elec)
807
808!===========================================================
809!      H + hv -> H+ + e-
810!===========================================================
811
812   nb_phot = nb_phot + 1
813
814   indice_phot(nb_phot) = z3spec(1.0, i_h, 1.0, i_hplus, 1.0, i_elec)
815
816end if   !ok_ionchem
817
818!===========================================================
819!      a001 : O + O2 + (CO2 or M) -> O3 + (CO2 or M)
820!===========================================================
821
822nb_reaction_4 = nb_reaction_4 + 1
823
824indice_4(nb_reaction_4) = z4spec(1.0, i_o, 1.0, i_o2, 1.0, i_o3, 0.0, i_dummy)
825
826!===========================================================
827!      a002 : O + O + (CO2 or M) -> O2(Dg) + (CO2 or M)
828!===========================================================
829
830nb_reaction_3 = nb_reaction_3 + 1
831
832indice_3(nb_reaction_3) = z3spec(2.0, i_o, 1.0, i_o2dg, 0.0, i_dummy)
833
834!===========================================================
835!      a003 : O + O3 -> O2 + O2
836!===========================================================
837
838nb_reaction_4 = nb_reaction_4 + 1
839
840indice_4(nb_reaction_4) = z4spec(1.0, i_o, 1.0, i_o3, 2.0, i_o2, 0.0, i_dummy)
841
842!===========================================================
843!      b001 : O(1D) + CO2 -> O + CO2
844!===========================================================
845
846nb_phot = nb_phot + 1
847
848indice_phot(nb_phot) = z3spec(1.0, i_o1d, 1.0, i_o, 0.0, i_dummy)
849
850!===========================================================
851!      b002 : O(1D) + H2O -> OH + OH
852!===========================================================
853
854nb_reaction_4 = nb_reaction_4 + 1
855
856indice_4(nb_reaction_4) = z4spec(1.0, i_o1d, 1.0, i_h2o, 2.0, i_oh, 0.0, i_dummy)
857
858!===========================================================
859!      b003 : O(1D) + H2 -> OH + H
860!===========================================================
861
862nb_reaction_4 = nb_reaction_4 + 1
863
864indice_4(nb_reaction_4) = z4spec(1.0, i_o1d, 1.0, i_h2, 1.0, i_oh, 1.0, i_h)
865
866!===========================================================
867!      b004 : O(1D) + O2 -> O + O2
868!===========================================================
869
870nb_phot = nb_phot + 1
871
872indice_phot(nb_phot) = z3spec(1.0, i_o1d, 1.0, i_o, 0.0, i_dummy)
873
874!===========================================================
875!      b005 : O(1D) + O3 -> O2 + O2
876!===========================================================
877
878nb_reaction_4 = nb_reaction_4 + 1
879
880indice_4(nb_reaction_4) = z4spec(1.0, i_o1d, 1.0, i_o3, 2.0, i_o2, 0.0, i_dummy)
881
882!===========================================================
883!      b006 : O(1D) + O3 -> O2 + O + O
884!===========================================================
885
886nb_reaction_4 = nb_reaction_4 + 1
887
888indice_4(nb_reaction_4) = z4spec(1.0, i_o1d, 1.0, i_o3, 1.0, i_o2, 2.0, i_o)
889
890!===========================================================
891!      c001 : O + HO2 -> OH + O2
892!===========================================================
893
894nb_reaction_4 = nb_reaction_4 + 1
895
896indice_4(nb_reaction_4) = z4spec(1.0, i_o, 1.0, i_ho2, 1.0, i_oh, 1.0, i_o2)
897
898!===========================================================
899!      c002 : O + OH -> O2 + H
900!===========================================================
901
902nb_reaction_4 = nb_reaction_4 + 1
903
904indice_4(nb_reaction_4) = z4spec(1.0, i_o, 1.0, i_oh, 1.0, i_o2, 1.0, i_h)
905
906!===========================================================
907!      c003 : H + O3 -> OH + O2
908!===========================================================
909
910nb_reaction_4 = nb_reaction_4 + 1
911
912indice_4(nb_reaction_4) = z4spec(1.0, i_h, 1.0, i_o3, 1.0, i_oh, 1.0, i_o2)
913
914!===========================================================
915!      c004 : H + HO2 -> OH + OH
916!===========================================================
917
918nb_reaction_4 = nb_reaction_4 + 1
919
920indice_4(nb_reaction_4) = z4spec(1.0, i_h, 1.0, i_ho2, 2.0, i_oh, 0.0, i_dummy)
921
922!===========================================================
923!      c005 : H + HO2 -> H2 + O2
924!===========================================================
925
926nb_reaction_4 = nb_reaction_4 + 1
927
928indice_4(nb_reaction_4) = z4spec(1.0, i_h, 1.0, i_ho2, 1.0, i_h2, 1.0, i_o2)
929
930!===========================================================
931!      c006 : H + HO2 -> H2O + O
932!===========================================================
933
934nb_reaction_4 = nb_reaction_4 + 1
935
936indice_4(nb_reaction_4) = z4spec(1.0, i_h, 1.0, i_ho2, 1.0, i_h2o, 1.0, i_o)
937
938!===========================================================
939!      c007 : OH + HO2 -> H2O + O2
940!===========================================================
941
942nb_reaction_4 = nb_reaction_4 + 1
943
944indice_4(nb_reaction_4) = z4spec(1.0, i_oh, 1.0, i_ho2, 1.0, i_h2o, 1.0, i_o2)
945
946!===========================================================
947!      c008 : HO2 + HO2 -> H2O2 + O2
948!===========================================================
949
950nb_reaction_3 = nb_reaction_3 + 1
951
952indice_3(nb_reaction_3) = z3spec(2.0, i_ho2, 1.0, i_h2o2, 1.0, i_o2)
953
954!===========================================================
955!      c009 : OH + H2O2 -> H2O + HO2
956!===========================================================
957
958nb_reaction_4 = nb_reaction_4 + 1
959
960indice_4(nb_reaction_4) = z4spec(1.0, i_oh, 1.0, i_h2o2, 1.0, i_h2o, 1.0, i_ho2)
961
962!===========================================================
963!      c010 : OH + H2 -> H2O + H
964!===========================================================
965
966nb_reaction_4 = nb_reaction_4 + 1
967
968indice_4(nb_reaction_4) = z4spec(1.0, i_oh, 1.0, i_h2, 1.0, i_h2o, 1.0, i_h)
969
970!===========================================================
971!      c011 : H + O2 + CO2 -> HO2 + CO2
972!===========================================================
973
974nb_reaction_4 = nb_reaction_4 + 1
975
976indice_4(nb_reaction_4) = z4spec(1.0, i_h, 1.0, i_o2, 1.0, i_ho2, 0.0, i_dummy)
977
978!===========================================================
979!      c012 : O + H2O2 -> OH + HO2
980!===========================================================
981
982nb_reaction_4 = nb_reaction_4 + 1
983
984indice_4(nb_reaction_4) = z4spec(1.0, i_o, 1.0, i_h2o2, 1.0, i_oh, 1.0, i_ho2)
985
986!===========================================================
987!      c013 : OH + OH -> H2O + O
988!===========================================================
989
990nb_reaction_3 = nb_reaction_3 + 1
991
992indice_3(nb_reaction_3) = z3spec(2.0, i_oh, 1.0, i_h2o, 1.0, i_o)
993
994!===========================================================
995!      c014 : OH + O3 -> HO2 + O2
996!===========================================================
997
998nb_reaction_4 = nb_reaction_4 + 1
999
1000indice_4(nb_reaction_4) = z4spec(1.0, i_oh, 1.0, i_o3, 1.0, i_ho2, 1.0, i_o2)
1001
1002!===========================================================
1003!      c015 : HO2 + O3 -> OH + O2 + O2
1004!===========================================================
1005
1006nb_reaction_4 = nb_reaction_4 + 1
1007
1008indice_4(nb_reaction_4) = z4spec(1.0, i_ho2, 1.0, i_o3, 1.0, i_oh, 2.0, i_o2)
1009
1010!===========================================================
1011!      c016 : HO2 + HO2 + CO2 -> H2O2 + O2 + CO2
1012!===========================================================
1013
1014nb_reaction_3 = nb_reaction_3 + 1
1015indice_3(nb_reaction_3) = z3spec(2.0, i_ho2, 1.0, i_h2o2, 1.0, i_o2)
1016
1017!===========================================================
1018!      c017 : OH + OH + CO2 -> H2O2 + CO2
1019!===========================================================
1020
1021nb_reaction_3 = nb_reaction_3 + 1
1022
1023indice_3(nb_reaction_3) = z3spec(2.0, i_oh, 1.0, i_h2o2, 0.0, i_dummy)
1024
1025!===========================================================
1026!      c018 : H + H + CO2 -> H2 + CO2
1027!===========================================================
1028
1029nb_reaction_3 = nb_reaction_3 + 1
1030
1031indice_3(nb_reaction_3) = z3spec(2.0, i_h, 1.0, i_h2, 0.0, i_dummy)
1032
1033!===========================================================
1034!      d001 : NO2 + O -> NO + O2
1035!===========================================================
1036
1037nb_reaction_4 = nb_reaction_4 + 1
1038
1039indice_4(nb_reaction_4) = z4spec(1.0, i_no2, 1.0, i_o, 1.0, i_no, 1.0, i_o2)
1040
1041!===========================================================
1042!      d002 : NO + O3 -> NO2 + O2
1043!===========================================================
1044
1045nb_reaction_4 = nb_reaction_4 + 1
1046
1047indice_4(nb_reaction_4) = z4spec(1.0, i_no, 1.0, i_o3, 1.0, i_no2, 1.0, i_o2)
1048
1049!===========================================================
1050!      d003 : NO + HO2 -> NO2 + OH
1051!===========================================================
1052
1053nb_reaction_4 = nb_reaction_4 + 1
1054
1055indice_4(nb_reaction_4) = z4spec(1.0, i_no, 1.0, i_ho2, 1.0, i_no2, 1.0, i_oh)
1056
1057!===========================================================
1058!      d004 : N + NO -> N2 + O
1059!===========================================================
1060
1061nb_reaction_4 = nb_reaction_4 + 1
1062
1063indice_4(nb_reaction_4) = z4spec(1.0, i_n, 1.0, i_no, 1.0, i_n2, 1.0, i_o)
1064
1065!===========================================================
1066!      d005 : N + O2 -> NO + O
1067!===========================================================
1068
1069nb_reaction_4 = nb_reaction_4 + 1
1070
1071indice_4(nb_reaction_4) = z4spec(1.0, i_n, 1.0, i_o2, 1.0, i_no, 1.0, i_o)
1072
1073!===========================================================
1074!      d006 : NO2 + H -> NO + OH
1075!===========================================================
1076
1077nb_reaction_4 = nb_reaction_4 + 1
1078
1079indice_4(nb_reaction_4) = z4spec(1.0, i_no2, 1.0, i_h, 1.0, i_no, 1.0, i_oh)
1080
1081!===========================================================
1082!      d007 : N + O -> NO
1083!===========================================================
1084
1085nb_reaction_4 = nb_reaction_4 + 1
1086
1087indice_4(nb_reaction_4) = z4spec(1.0, i_n, 1.0, i_o, 1.0, i_no, 0.0, i_dummy)
1088
1089!===========================================================
1090!      d008 : N + HO2 -> NO + OH
1091!===========================================================
1092
1093nb_reaction_4 = nb_reaction_4 + 1
1094
1095indice_4(nb_reaction_4) = z4spec(1.0, i_n, 1.0, i_ho2, 1.0, i_no, 1.0, i_oh)
1096
1097!===========================================================
1098!      d009 : N + OH -> NO + H
1099!===========================================================
1100
1101nb_reaction_4 = nb_reaction_4 + 1
1102
1103indice_4(nb_reaction_4) = z4spec(1.0, i_n, 1.0, i_oh, 1.0, i_no, 1.0, i_h)
1104
1105!===========================================================
1106!      d010 : N(2D) + O -> N + O
1107!===========================================================
1108
1109nb_phot = nb_phot + 1
1110
1111indice_phot(nb_phot) = z3spec(1.0, i_n2d, 1.0, i_n, 0.0, i_dummy)
1112
1113!===========================================================
1114!      d011 : N(2D) + N2 -> N + N2
1115!===========================================================
1116
1117nb_phot = nb_phot + 1
1118
1119indice_phot(nb_phot) = z3spec(1.0, i_n2d, 1.0, i_n, 0.0, i_dummy)
1120
1121!===========================================================
1122!      d012 : N(2D) + CO2 -> NO + CO
1123!===========================================================
1124
1125nb_reaction_4 = nb_reaction_4 + 1
1126
1127indice_4(nb_reaction_4) = z4spec(1.0, i_n2d, 1.0, i_co2, 1.0, i_no, 1.0, i_co)
1128
1129!===========================================================
1130!      d013 : N + O + CO2 -> NO + CO2
1131!===========================================================
1132
1133nb_reaction_4 = nb_reaction_4 + 1
1134
1135indice_4(nb_reaction_4) = z4spec(1.0, i_n, 1.0, i_o, 1.0, i_no, 0.0, i_dummy)
1136
1137!===========================================================
1138!      d014 : N(2D) + CO -> N + CO
1139!===========================================================
1140
1141nb_phot = nb_phot + 1
1142
1143indice_phot(nb_phot) = z3spec(1.0, i_n2d, 1.0, i_n, 0.0, i_dummy)
1144
1145!===========================================================
1146!      e001 : CO + OH -> CO2 + H
1147!===========================================================
1148
1149nb_reaction_4 = nb_reaction_4 + 1
1150
1151indice_4(nb_reaction_4) = z4spec(1.0, i_co, 1.0, i_oh, 1.0, i_co2, 1.0, i_h)
1152
1153!===========================================================
1154!      e002 : CO + O + M -> CO2 + M
1155!===========================================================
1156
1157nb_reaction_4 = nb_reaction_4 + 1
1158
1159indice_4(nb_reaction_4) = z4spec(1.0, i_co, 1.0, i_o, 1.0, i_co2, 0.0, i_dummy)
1160
1161!===========================================================
1162!      f001 : HCl + O(1D) -> OH + Cl
1163!===========================================================
1164
1165nb_reaction_4 = nb_reaction_4 + 1
1166
1167indice_4(nb_reaction_4) = z4spec(1.0, i_hcl, 1.0, i_o1d, 1.0, i_oh, 1.0, i_cl)
1168
1169!===========================================================
1170!      f002 : HCl + O(1D) -> H + ClO
1171!===========================================================
1172
1173nb_reaction_4 = nb_reaction_4 + 1
1174
1175indice_4(nb_reaction_4) = z4spec(1.0, i_hcl, 1.0, i_o1d, 1.0, i_h, 1.0, i_clo)
1176
1177!===========================================================
1178!      f003 : HCl + O -> OH + Cl
1179!===========================================================
1180
1181nb_reaction_4 = nb_reaction_4 + 1
1182
1183indice_4(nb_reaction_4) = z4spec(1.0, i_hcl, 1.0, i_o, 1.0, i_oh, 1.0, i_cl)
1184
1185!===========================================================
1186!      f004 : HCl + OH -> H2O + Cl
1187!===========================================================
1188
1189nb_reaction_4 = nb_reaction_4 + 1
1190
1191indice_4(nb_reaction_4) = z4spec(1.0, i_hcl, 1.0, i_oh, 1.0, i_h2o, 1.0, i_cl)
1192
1193!===========================================================
1194!      f005 : ClO + O -> Cl + O2
1195!===========================================================
1196
1197nb_reaction_4 = nb_reaction_4 + 1
1198
1199indice_4(nb_reaction_4) = z4spec(1.0, i_clo, 1.0, i_o, 1.0, i_cl, 1.0, i_o2)
1200
1201!===========================================================
1202!      f006 : ClO + OH -> Cl + HO2
1203!===========================================================
1204
1205nb_reaction_4 = nb_reaction_4 + 1
1206
1207indice_4(nb_reaction_4) = z4spec(1.0, i_clo, 1.0, i_oh, 1.0, i_cl, 1.0, i_ho2)
1208
1209!===========================================================
1210!      f007 : ClO + OH -> HCl + O2
1211!===========================================================
1212
1213nb_reaction_4 = nb_reaction_4 + 1
1214
1215indice_4(nb_reaction_4) = z4spec(1.0, i_clo, 1.0, i_oh, 1.0, i_hcl, 1.0, i_o2)
1216
1217!===========================================================
1218!      f008 : Cl + H2 -> HCl + H
1219!===========================================================
1220
1221nb_reaction_4 = nb_reaction_4 + 1
1222
1223indice_4(nb_reaction_4) = z4spec(1.0, i_cl, 1.0, i_h2, 1.0, i_hcl, 1.0, i_h)
1224
1225!===========================================================
1226!      f009 : Cl + O3 -> ClO + O2
1227!===========================================================
1228
1229nb_reaction_4 = nb_reaction_4 + 1
1230
1231indice_4(nb_reaction_4) = z4spec(1.0, i_cl, 1.0, i_o3, 1.0, i_clo, 1.0, i_o2)
1232
1233!===========================================================
1234!      f010 : Cl + HO2 -> ClO + OH
1235!===========================================================
1236
1237nb_reaction_4 = nb_reaction_4 + 1
1238
1239indice_4(nb_reaction_4) = z4spec(1.0, i_cl, 1.0, i_ho2, 1.0, i_clo, 1.0, i_oh)
1240
1241!===========================================================
1242!      f011 : Cl + HO2 -> HCl + O2
1243!===========================================================
1244
1245nb_reaction_4 = nb_reaction_4 + 1
1246
1247indice_4(nb_reaction_4) = z4spec(1.0, i_cl, 1.0, i_ho2, 1.0, i_hcl, 1.0, i_o2)
1248
1249!===========================================================
1250!      f012 : Cl + H2O2 -> HCl + HO2
1251!===========================================================
1252
1253nb_reaction_4 = nb_reaction_4 + 1
1254
1255indice_4(nb_reaction_4) = z4spec(1.0, i_cl, 1.0, i_h2o2, 1.0, i_hcl, 1.0, i_ho2)
1256
1257!===========================================================
1258!      f013 : Cl + CO + CO2 -> ClCO + CO2
1259!===========================================================
1260
1261nb_reaction_4 = nb_reaction_4 + 1
1262
1263indice_4(nb_reaction_4) = z4spec(1.0, i_cl, 1.0, i_co, 1.0, i_clco, 0.0, i_dummy)
1264
1265!===========================================================
1266!      f014 : ClCO + CO2 -> Cl + CO + CO2
1267!===========================================================
1268
1269nb_phot = nb_phot + 1
1270
1271indice_phot(nb_phot) = z3spec(1.0, i_clco, 1.0, i_cl, 1.0, i_co)
1272
1273!===========================================================
1274!      f015 : ClCO + O2 + CO2 -> ClCO3 + CO2
1275!===========================================================
1276
1277nb_reaction_4 = nb_reaction_4 + 1
1278
1279indice_4(nb_reaction_4) = z4spec(1.0, i_clco, 1.0, i_o2, 1.0, i_clco3, 0.0, i_dummy)
1280
1281!===========================================================
1282!      f016 : 0.5 ClCO3 + 0.5 Cl -> Cl
1283!             0.5 ClCO3 + 0.5 Cl -> ClO + CO2
1284!===========================================================
1285
1286nb_reaction_4 = nb_reaction_4 + 1
1287
1288indice_4(nb_reaction_4) = z4spec(0.5, i_clco3, 0.5, i_cl, 1.0, i_cl, 0.0, i_dummy)
1289
1290nb_reaction_4 = nb_reaction_4 + 1
1291
1292indice_4(nb_reaction_4) = z4spec(0.5, i_clco3, 0.5, i_cl, 1.0, i_clo, 1.0, i_co2)
1293
1294!===========================================================
1295!      f017 : 0.5 ClCO3 + 0.5 O -> Cl
1296!             0.5 ClCO3 + 0.5 O -> O2 + CO2
1297!===========================================================
1298
1299nb_reaction_4 = nb_reaction_4 + 1
1300
1301indice_4(nb_reaction_4) = z4spec(0.5, i_clco3, 0.5, i_o, 1.0, i_cl, 0.0, i_dummy)
1302
1303nb_reaction_4 = nb_reaction_4 + 1
1304
1305indice_4(nb_reaction_4) = z4spec(0.5, i_clco3, 0.5, i_o, 1.0, i_o2, 1.0, i_co2)
1306
1307!===========================================================
1308!      f018 : ClO + HO2 -> HOCl + O2
1309!===========================================================
1310
1311nb_reaction_4 = nb_reaction_4 + 1
1312
1313indice_4(nb_reaction_4) = z4spec(1.0, i_clo, 1.0, i_ho2, 1.0, i_hocl, 1.0, i_o2)
1314
1315!===========================================================
1316!      f019 : OH + HOCl -> H2O + ClO
1317!===========================================================
1318
1319nb_reaction_4 = nb_reaction_4 + 1
1320
1321indice_4(nb_reaction_4) = z4spec(1.0, i_oh, 1.0, i_hocl, 1.0, i_h2o, 1.0, i_clo)
1322
1323!===========================================================
1324!      f020 : O + HOCl -> OH + ClO
1325!===========================================================
1326
1327nb_reaction_4 = nb_reaction_4 + 1
1328
1329indice_4(nb_reaction_4) = z4spec(1.0, i_o, 1.0, i_hocl, 1.0, i_oh, 1.0, i_clo)
1330
1331!===========================================================
1332!      f021 : Cl + Cl + CO2 -> Cl2 + CO2
1333!===========================================================
1334
1335nb_reaction_3 = nb_reaction_3 + 1
1336
1337indice_3(nb_reaction_3) = z3spec(2.0, i_cl, 1.0, i_cl2, 0.0, i_dummy)
1338
1339!===========================================================
1340!      f022 : ClCO + O -> Cl + CO2
1341!===========================================================
1342
1343nb_reaction_4 = nb_reaction_4 + 1
1344
1345indice_4(nb_reaction_4) = z4spec(1.0, i_clco, 1.0, i_o, 1.0, i_cl, 1.0, i_co2)
1346
1347!===========================================================
1348!      f023 : Cl2 + O(1D) -> Cl + ClO
1349!===========================================================
1350
1351nb_reaction_4 = nb_reaction_4 + 1
1352
1353indice_4(nb_reaction_4) = z4spec(1.0, i_cl2, 1.0, i_o1d, 1.0, i_cl, 1.0, i_clo)
1354
1355!===========================================================
1356!      f024 : Cl2 + H -> HCl + Cl
1357!===========================================================
1358
1359nb_reaction_4 = nb_reaction_4 + 1
1360
1361indice_4(nb_reaction_4) = z4spec(1.0, i_cl2, 1.0, i_h, 1.0, i_hcl, 1.0, i_cl)
1362
1363!===========================================================
1364!      f025 : Cl + ClCO -> Cl2 + CO
1365!===========================================================
1366
1367nb_reaction_4 = nb_reaction_4 + 1
1368
1369indice_4(nb_reaction_4) = z4spec(1.0, i_cl, 1.0, i_clco, 1.0, i_cl2, 1.0, i_co)
1370
1371!===========================================================
1372!      f026 : ClCO + ClCO -> COCl2 + CO
1373!===========================================================
1374
1375nb_reaction_3 = nb_reaction_3 + 1
1376
1377indice_3(nb_reaction_3) = z3spec(2.0, i_clco, 1.0, i_cocl2, 1.0, i_co)
1378
1379!===========================================================
1380!      f027 : Cl + SO2 + CO2 -> ClSO2 + CO2
1381!===========================================================
1382
1383nb_reaction_4 = nb_reaction_4 + 1
1384
1385indice_4(nb_reaction_4) = z4spec(1.0, i_cl, 1.0, i_so2, 1.0, i_clso2, 0.0, i_dummy)
1386
1387!===========================================================
1388!      f028 : ClSO2 + O -> SO2 + ClO
1389!===========================================================
1390
1391nb_reaction_4 = nb_reaction_4 + 1
1392
1393indice_4(nb_reaction_4) = z4spec(1.0, i_clso2, 1.0, i_o, 1.0, i_so2, 1.0, i_clo)
1394
1395!===========================================================
1396!      f029 : ClSO2 + H -> SO2 + HCl
1397!===========================================================
1398
1399nb_reaction_4 = nb_reaction_4 + 1
1400
1401indice_4(nb_reaction_4) = z4spec(1.0, i_clso2, 1.0, i_h, 1.0, i_so2, 1.0, i_hcl)
1402
1403!===========================================================
1404!      f030 : ClSO2 + ClSO2 -> Cl2 + SO2 + SO2
1405!===========================================================
1406
1407nb_reaction_3 = nb_reaction_3 + 1
1408
1409indice_3(nb_reaction_3) = z3spec(2.0, i_clso2, 1.0, i_cl2, 2.0, i_so2)
1410
1411!===========================================================
1412!      f031 : Cl + O + CO2 -> ClO + CO2
1413!===========================================================
1414
1415nb_reaction_4 = nb_reaction_4 + 1
1416
1417indice_4(nb_reaction_4) = z4spec(1.0, i_cl, 1.0, i_o, 1.0, i_clo, 0.0, i_dummy)
1418
1419!===========================================================
1420!      f032 : Cl2 + O -> ClO + Cl
1421!===========================================================
1422
1423nb_reaction_4 = nb_reaction_4 + 1
1424
1425indice_4(nb_reaction_4) = z4spec(1.0, i_cl2, 1.0, i_o, 1.0, i_clo, 1.0, i_cl)
1426
1427!===========================================================
1428!      f033 : ClCO + OH -> HOCl + CO
1429!===========================================================
1430
1431nb_reaction_4 = nb_reaction_4 + 1
1432
1433indice_4(nb_reaction_4) = z4spec(1.0, i_clco, 1.0, i_oh, 1.0, i_hocl, 1.0, i_co)
1434
1435!===========================================================
1436!      f034 : Cl2 + OH -> Cl + HOCl
1437!===========================================================
1438
1439nb_reaction_4 = nb_reaction_4 + 1
1440
1441indice_4(nb_reaction_4) = z4spec(1.0, i_cl2, 1.0, i_oh, 1.0, i_cl, 1.0, i_hocl)
1442
1443!===========================================================
1444!      f035 : ClCO + O -> CO + ClO
1445!===========================================================
1446
1447nb_reaction_4 = nb_reaction_4 + 1
1448
1449indice_4(nb_reaction_4) = z4spec(1.0, i_clco, 1.0, i_o, 1.0, i_co, 1.0, i_clo)
1450
1451!===========================================================
1452!      f036 : ClCO + Cl2 -> COCl2 + Cl
1453!===========================================================
1454
1455nb_reaction_4 = nb_reaction_4 + 1
1456
1457indice_4(nb_reaction_4) = z4spec(1.0, i_clco, 1.0, i_cl2, 1.0, i_cocl2, 1.0, i_cl)
1458
1459!===========================================================
1460!      f037 : HCl + H -> H2 + Cl
1461!===========================================================
1462
1463nb_reaction_4 = nb_reaction_4 + 1
1464
1465indice_4(nb_reaction_4) = z4spec(1.0, i_hcl, 1.0, i_h, 1.0, i_h2, 1.0, i_cl)
1466
1467!===========================================================
1468!      f038 : ClCO + H -> HCl + CO
1469!===========================================================
1470
1471nb_reaction_4 = nb_reaction_4 + 1
1472
1473indice_4(nb_reaction_4) = z4spec(1.0, i_clco, 1.0, i_h, 1.0, i_hcl, 1.0, i_co)
1474
1475!===========================================================
1476!      f039 : Cl + H + M -> HCl + M
1477!===========================================================
1478
1479nb_reaction_4 = nb_reaction_4 + 1
1480
1481indice_4(nb_reaction_4) = z4spec(1.0, i_cl, 1.0, i_h, 1.0, i_hcl, 0.0, i_dummy)
1482
1483!===========================================================
1484!      g001 : S + O2 -> SO + O
1485!===========================================================
1486
1487nb_reaction_4 = nb_reaction_4 + 1
1488
1489indice_4(nb_reaction_4) = z4spec(1.0, i_s, 1.0, i_o2, 1.0, i_so, 1.0, i_o)
1490
1491!===========================================================
1492!      g002 : S + O3 -> SO + O2
1493!===========================================================
1494
1495nb_reaction_4 = nb_reaction_4 + 1
1496
1497indice_4(nb_reaction_4) = z4spec(1.0, i_s, 1.0, i_o3, 1.0, i_so, 1.0, i_o2)
1498
1499!===========================================================
1500!      g003 : SO + O2 -> SO2 + O
1501!===========================================================
1502
1503nb_reaction_4 = nb_reaction_4 + 1
1504
1505indice_4(nb_reaction_4) = z4spec(1.0, i_so, 1.0, i_o2, 1.0, i_so2, 1.0, i_o)
1506
1507!===========================================================
1508!      g004 : SO + O3 -> SO2 + O2
1509!===========================================================
1510
1511nb_reaction_4 = nb_reaction_4 + 1
1512
1513indice_4(nb_reaction_4) = z4spec(1.0, i_so, 1.0, i_o3, 1.0, i_so2, 1.0, i_o2)
1514
1515!===========================================================
1516!      g005 : SO + OH -> SO2 + H
1517!===========================================================
1518
1519nb_reaction_4 = nb_reaction_4 + 1
1520
1521indice_4(nb_reaction_4) = z4spec(1.0, i_so, 1.0, i_oh, 1.0, i_so2, 1.0, i_h)
1522
1523!===========================================================
1524!      g006 : S + OH -> SO + H
1525!===========================================================
1526
1527nb_reaction_4 = nb_reaction_4 + 1
1528
1529indice_4(nb_reaction_4) = z4spec(1.0, i_s, 1.0, i_oh, 1.0, i_so, 1.0, i_h)
1530
1531!===========================================================
1532!      g007 : SO + O + CO2 -> SO2 + CO2
1533!===========================================================
1534
1535nb_reaction_4 = nb_reaction_4 + 1
1536
1537indice_4(nb_reaction_4) = z4spec(1.0, i_so, 1.0, i_o, 1.0, i_so2, 0.0, i_dummy)
1538
1539!===========================================================
1540!      g008 : SO + HO2 -> SO2 + OH
1541!===========================================================
1542
1543nb_reaction_4 = nb_reaction_4 + 1
1544
1545indice_4(nb_reaction_4) = z4spec(1.0, i_so, 1.0, i_ho2, 1.0, i_so2, 1.0, i_oh)
1546
1547!===========================================================
1548!      g009 : SO2 + O + CO2 -> SO3 + CO2
1549!===========================================================
1550
1551nb_reaction_4 = nb_reaction_4 + 1
1552
1553indice_4(nb_reaction_4) = z4spec(1.0, i_so2, 1.0, i_o, 1.0, i_so3, 0.0, i_dummy)
1554
1555!===========================================================
1556!      g010 : S + O + CO2 -> SO + CO2
1557!===========================================================
1558
1559nb_reaction_4 = nb_reaction_4 + 1
1560
1561indice_4(nb_reaction_4) = z4spec(1.0, i_s, 1.0, i_o, 1.0, i_so, 0.0, i_dummy)
1562
1563!===========================================================
1564!      g011 : SO3 + H2O -> H2SO4
1565!===========================================================
1566
1567nb_reaction_4 = nb_reaction_4 + 1
1568
1569indice_4(nb_reaction_4) = z4spec(1.0, i_so3, 1.0, i_h2o, 1.0, i_h2so4, 0.0, i_dummy)
1570
1571!===========================================================
1572!      g012 : SO + ClO -> SO2 + Cl
1573!===========================================================
1574
1575nb_reaction_4 = nb_reaction_4 + 1
1576
1577indice_4(nb_reaction_4) = z4spec(1.0, i_so, 1.0, i_clo, 1.0, i_so2, 1.0, i_cl)
1578
1579!===========================================================
1580!      g013 : SO + SO3 -> SO2 + SO2
1581!===========================================================
1582
1583nb_reaction_4 = nb_reaction_4 + 1
1584
1585indice_4(nb_reaction_4) = z4spec(1.0, i_so, 1.0, i_so3, 2.0, i_so2, 0.0, i_dummy)
1586
1587!===========================================================
1588!      g014 : SO3 + O -> SO2 + O2
1589!===========================================================
1590
1591nb_reaction_4 = nb_reaction_4 + 1
1592
1593indice_4(nb_reaction_4) = z4spec(1.0, i_so3, 1.0, i_o, 1.0, i_so2, 1.0, i_o2)
1594
1595!===========================================================
1596!      g015 : SO + SO + CO2 -> S2O2 + CO2
1597!===========================================================
1598
1599nb_reaction_3 = nb_reaction_3 + 1
1600
1601indice_3(nb_reaction_3) = z3spec(2.0, i_so, 1.0, i_s2o2, 0.0, i_dummy)
1602
1603!===========================================================
1604!      g016 : S2O2 + CO2 -> SO + SO + CO2
1605!===========================================================
1606
1607nb_phot = nb_phot + 1
1608
1609indice_phot(nb_phot) = z3spec(1.0, i_s2o2, 2.0, i_so, 0.0, i_dummy)
1610
1611!===========================================================
1612!      g017 : 0.5 ClCO3 + 0.5 SO -> Cl 
1613!             0.5 ClCO3 + 0.5 SO -> SO2 + CO2
1614!===========================================================
1615
1616nb_reaction_4 = nb_reaction_4 + 1
1617
1618indice_4(nb_reaction_4) = z4spec(0.5, i_clco3, 0.5, i_so, 1.0, i_cl, 0.0, i_dummy)
1619
1620nb_reaction_4 = nb_reaction_4 + 1
1621
1622indice_4(nb_reaction_4) = z4spec(0.5, i_clco3, 0.5, i_so, 1.0, i_so2, 1.0, i_co2)
1623
1624!===========================================================
1625!      g018 : S + CO + CO2 -> OCS + CO2
1626!===========================================================
1627
1628nb_reaction_4 = nb_reaction_4 + 1
1629
1630indice_4(nb_reaction_4) = z4spec(1.0, i_s, 1.0, i_co, 1.0, i_ocs, 0.0, i_dummy)
1631
1632!===========================================================
1633!      g019 : ClCO + S -> OCS + Cl
1634!===========================================================
1635
1636nb_reaction_4 = nb_reaction_4 + 1
1637
1638indice_4(nb_reaction_4) = z4spec(1.0, i_clco, 1.0, i_s, 1.0, i_ocs, 1.0, i_cl)
1639
1640!===========================================================
1641!      g020 : SO2 + OH + CO2 -> HSO3 + CO2
1642!===========================================================
1643
1644nb_reaction_4 = nb_reaction_4 + 1
1645
1646indice_4(nb_reaction_4) = z4spec(1.0, i_so2, 1.0, i_oh, 1.0, i_hso3, 0.0, i_dummy)
1647
1648!===========================================================
1649!      g021 : HSO3 + O2 -> HO2 + SO3
1650!===========================================================
1651
1652nb_reaction_4 = nb_reaction_4 + 1
1653
1654indice_4(nb_reaction_4) = z4spec(1.0, i_hso3, 1.0, i_o2, 1.0, i_ho2, 1.0, i_so3)
1655
1656!===========================================================
1657!      g022 : S + S + CO2 -> S2 + CO2
1658!===========================================================
1659
1660nb_reaction_3 = nb_reaction_3 + 1
1661
1662indice_3(nb_reaction_3) = z3spec(2.0, i_s, 1.0, i_s2, 0.0, i_dummy)
1663
1664!===========================================================
1665!      g023 : S2 + O -> SO + S
1666!===========================================================
1667
1668nb_reaction_4 = nb_reaction_4 + 1
1669
1670indice_4(nb_reaction_4) = z4spec(1.0, i_s2, 1.0, i_o, 1.0, i_so, 1.0, i_s)
1671
1672!===========================================================
1673!      g024 : S + OCS -> S2 + CO
1674!===========================================================
1675
1676nb_reaction_4 = nb_reaction_4 + 1
1677
1678indice_4(nb_reaction_4) = z4spec(1.0, i_s, 1.0, i_ocs, 1.0, i_s2, 1.0, i_co)
1679
1680!===========================================================
1681!      g025 : OCS + O -> SO + CO
1682!===========================================================
1683
1684nb_reaction_4 = nb_reaction_4 + 1
1685
1686indice_4(nb_reaction_4) = z4spec(1.0, i_ocs, 1.0, i_o, 1.0, i_so, 1.0, i_co)
1687
1688!===========================================================
1689!      g026 : S + SO3 -> SO2 + SO
1690!===========================================================
1691
1692nb_reaction_4 = nb_reaction_4 + 1
1693
1694indice_4(nb_reaction_4) = z4spec(1.0, i_s, 1.0, i_so3, 1.0, i_so2, 1.0, i_so)
1695
1696!===========================================================
1697!      g027 : S + HO2 -> SO + OH
1698!===========================================================
1699
1700nb_reaction_4 = nb_reaction_4 + 1
1701
1702indice_4(nb_reaction_4) = z4spec(1.0, i_s, 1.0, i_ho2, 1.0, i_so, 1.0, i_oh)
1703
1704!===========================================================
1705!      g028 : S + ClO -> SO + Cl
1706!===========================================================
1707
1708nb_reaction_4 = nb_reaction_4 + 1
1709
1710indice_4(nb_reaction_4) = z4spec(1.0, i_s, 1.0, i_clo, 1.0, i_so, 1.0, i_cl)
1711
1712!===========================================================
1713!      g029: h2so4 + h2o -> so3 + h2o + h2o
1714!===========================================================
1715
1716nb_phot = nb_phot + 1
1717
1718indice_phot(nb_phot) = z3spec(1.0, i_h2so4, 1.0, i_so3, 1.0, i_h2o)
1719
1720!===========================================================
1721!      g030: so3 + ocs -> s2o2 +  co2
1722!===========================================================
1723
1724nb_reaction_4 = nb_reaction_4 + 1
1725
1726indice_4(nb_reaction_4) = z4spec(1.0, i_so3, 1.0, i_ocs, 1.0, i_s2o2, 1.0, i_co2)
1727
1728!===========================================================
1729!      g031: s2o2 + ocs -> co + so2 + s2
1730!===========================================================
1731!       decomposee en
1732!       0.5 s2o2 + 0.5 ocs -> co
1733!       0.5 s2o2 + 0.5 ocs -> so2 + s2
1734!===========================================================
1735
1736nb_reaction_4 = nb_reaction_4 + 1
1737
1738indice_4(nb_reaction_4) = z4spec(0.5, i_s2o2, 0.5, i_ocs, 1.0, i_co, 0.0, i_dummy)
1739
1740nb_reaction_4 = nb_reaction_4 + 1
1741
1742indice_4(nb_reaction_4) = z4spec(0.5, i_s2o2, 0.5, i_ocs, 1.0, i_so2, 1.0, i_s2)
1743
1744!===========================================================
1745!      g032: so + so -> so2 + s
1746!===========================================================
1747
1748nb_reaction_3 = nb_reaction_3 + 1
1749
1750indice_3(nb_reaction_3) = z3spec(2.0, i_so, 1.0, i_so2, 1.0, i_s)
1751
1752!===========================================================
1753!      h001: HO2 + ice -> products
1754!            treated as
1755!            HO2 -> 0.5 H2O + 0.75 O2
1756!===========================================================
1757
1758nb_phot = nb_phot + 1
1759
1760indice_phot(nb_phot) = z3spec(1.0, i_ho2, 0.5, i_h2o, 0.75, i_o2)
1761
1762!===========================================================
1763!      h002: OH + ice -> products
1764!            treated as
1765!            OH -> 0.5 H2O + 0.25 O2
1766!===========================================================
1767
1768nb_phot = nb_phot + 1
1769
1770indice_phot(nb_phot) = z3spec(1.0, i_oh, 0.5, i_h2o, 0.25, i_o2)
1771
1772!===========================================================
1773!      h003: H2O2 + ice -> products
1774!            treated as
1775!            H2O2 -> H2O + 0.5 O2
1776!===========================================================
1777
1778nb_phot = nb_phot + 1
1779
1780indice_phot(nb_phot) = z3spec(1.0, i_h2o2, 1.0, i_h2o, 0.5, i_o2)
1781
1782!Only if ion chemistry
1783if (ok_ionchem) then
1784
1785!===========================================================
1786!      i001 : CO2+ + O2 -> O2+ + CO2
1787!===========================================================
1788
1789   nb_reaction_4 = nb_reaction_4 + 1
1790
1791   indice_4(nb_reaction_4) = z4spec(1.0, i_co2plus, 1.0, i_o2, 1.0, i_o2plus, 1.0, i_co2)
1792
1793!===========================================================
1794!      i002 : CO2+ + O -> O+ + CO2
1795!===========================================================
1796
1797   nb_reaction_4 = nb_reaction_4 + 1
1798
1799   indice_4(nb_reaction_4) = z4spec(1.0, i_co2plus, 1.0, i_o, 1.0, i_oplus, 1.0, i_co2)
1800
1801!===========================================================
1802!      i003 : CO2+ + O -> O2+ + CO
1803!===========================================================
1804
1805   nb_reaction_4 = nb_reaction_4 + 1
1806
1807   indice_4(nb_reaction_4) = z4spec(1.0, i_co2plus, 1.0, i_o, 1.0, i_o2plus, 1.0, i_co)
1808
1809!===========================================================
1810!      i004 : O2+ + e- -> O + O
1811!===========================================================
1812
1813   nb_reaction_4 = nb_reaction_4 + 1
1814
1815   indice_4(nb_reaction_4) = z4spec(1.0, i_o2plus, 1.0, i_elec, 2.0, i_o, 0.0, i_dummy)
1816
1817!===========================================================
1818!      i005 : O+ + CO2 -> O2+ + CO
1819!===========================================================
1820
1821   nb_reaction_4 = nb_reaction_4 + 1
1822
1823   indice_4(nb_reaction_4) = z4spec(1.0, i_oplus, 1.0, i_co2, 1.0, i_o2plus, 1.0, i_co)
1824
1825!===========================================================
1826!      i006 : CO2+ + e -> CO + O
1827!===========================================================
1828
1829   nb_reaction_4 = nb_reaction_4 + 1
1830
1831   indice_4(nb_reaction_4) = z4spec(1.0, i_co2plus, 1.0, i_elec, 1.0, i_co, 1.0, i_o)
1832
1833!===========================================================
1834!      i007 : CO2+ + NO -> NO+ + CO2
1835!===========================================================
1836
1837   nb_reaction_4 = nb_reaction_4 + 1
1838
1839   indice_4(nb_reaction_4) = z4spec(1.0, i_co2plus, 1.0, i_no, 1.0, i_noplus, 1.0, i_co2)
1840
1841!===========================================================
1842!      i008 : O2+ + NO -> NO+ + O2
1843!===========================================================
1844
1845   nb_reaction_4 = nb_reaction_4 + 1
1846
1847   indice_4(nb_reaction_4) = z4spec(1.0, i_o2plus, 1.0, i_no, 1.0, i_noplus, 1.0, i_o2)
1848
1849!===========================================================
1850!      i009 : O2+ + N2 -> NO+ + NO
1851!===========================================================
1852
1853   nb_reaction_4 = nb_reaction_4 + 1
1854
1855   indice_4(nb_reaction_4) = z4spec(1.0, i_o2plus, 1.0, i_n2, 1.0, i_noplus, 1.0, i_no)
1856
1857!===========================================================
1858!      i010 : O2+ + N -> NO+ + O
1859!===========================================================
1860
1861   nb_reaction_4 = nb_reaction_4 + 1
1862
1863   indice_4(nb_reaction_4) = z4spec(1.0, i_o2plus, 1.0, i_n, 1.0, i_noplus, 1.0, i_o)
1864
1865!===========================================================
1866!      i011 : O+ + N2 -> NO+ + N
1867!===========================================================
1868
1869   nb_reaction_4 = nb_reaction_4 + 1
1870
1871   indice_4(nb_reaction_4) = z4spec(1.0, i_oplus, 1.0, i_n2, 1.0, i_noplus, 1.0, i_n)
1872
1873!===========================================================
1874!      i012 : NO+ + e -> N + O
1875!===========================================================
1876
1877   nb_reaction_4 = nb_reaction_4 + 1
1878
1879   indice_4(nb_reaction_4) = z4spec(1.0, i_noplus, 1.0, i_elec, 1.0, i_n, 1.0, i_o)
1880
1881!===========================================================
1882!      i013 : CO+ + CO2 -> CO2+ + CO
1883!===========================================================
1884
1885   nb_reaction_4 = nb_reaction_4 + 1
1886
1887   indice_4(nb_reaction_4) = z4spec(1.0, i_coplus, 1.0, i_co2, 1.0, i_co2plus, 1.0, i_co)
1888
1889!===========================================================
1890!      i014 : CO+ + O -> O+ + CO
1891!===========================================================
1892
1893   nb_reaction_4 = nb_reaction_4 + 1
1894
1895   indice_4(nb_reaction_4) = z4spec(1.0, i_coplus, 1.0, i_o, 1.0, i_oplus, 1.0, i_co)
1896
1897!===========================================================
1898!      i015 : C+ + CO2 -> CO+ + CO
1899!===========================================================
1900
1901   nb_reaction_4 = nb_reaction_4 + 1
1902
1903   indice_4(nb_reaction_4) = z4spec(1.0, i_cplus, 1.0, i_co2, 1.0, i_coplus, 1.0, i_co)
1904
1905!===========================================================
1906
1907!      i016 : N2+ + CO2 -> CO2+ + N2
1908!===========================================================
1909
1910   nb_reaction_4 = nb_reaction_4 + 1
1911
1912   indice_4(nb_reaction_4) = z4spec(1.0, i_n2plus, 1.0, i_co2, 1.0, i_co2plus, 1.0, i_n2)
1913
1914!===========================================================
1915!      i017 : N2+ + O -> NO+ + N
1916!===========================================================
1917
1918   nb_reaction_4 = nb_reaction_4 + 1
1919
1920   indice_4(nb_reaction_4) = z4spec(1.0, i_n2plus, 1.0, i_o, 1.0, i_noplus, 1.0, i_n)
1921
1922!===========================================================
1923!      i018 : N2+ + CO -> CO+ + N2
1924!===========================================================
1925
1926   nb_reaction_4 = nb_reaction_4 + 1
1927
1928   indice_4(nb_reaction_4) = z4spec(1.0, i_n2plus, 1.0, i_co, 1.0, i_coplus, 1.0, i_n2)
1929
1930!===========================================================
1931!      i019 : N2+ + e -> N + N
1932!===========================================================
1933
1934   nb_reaction_4 = nb_reaction_4 + 1
1935
1936   indice_4(nb_reaction_4) = z4spec(1.0, i_n2plus, 1.0, i_elec, 2.0, i_n, 0.0, i_dummy)
1937
1938!===========================================================
1939!      i020 : N2+ + O -> O+ + N2
1940!===========================================================
1941
1942   nb_reaction_4 = nb_reaction_4 + 1
1943
1944   indice_4(nb_reaction_4) = z4spec(1.0, i_n2plus, 1.0, i_o, 1.0, i_oplus, 1.0, i_n2)
1945
1946!===========================================================
1947!      i021 : N+ + CO2 -> CO2+ + N
1948!===========================================================
1949
1950   nb_reaction_4 = nb_reaction_4 + 1
1951
1952   indice_4(nb_reaction_4) = z4spec(1.0, i_nplus, 1.0, i_co2, 1.0, i_co2plus, 1.0, i_n)
1953
1954!===========================================================
1955!      i022 : CO+ + H -> H+ + CO
1956!===========================================================
1957
1958   nb_reaction_4 = nb_reaction_4 + 1
1959
1960   indice_4(nb_reaction_4) = z4spec(1.0, i_coplus, 1.0, i_h, 1.0, i_hplus, 1.0, i_co)
1961
1962!===========================================================
1963!      i023 : O+ + H -> H+ + O
1964!===========================================================
1965
1966   nb_reaction_4 = nb_reaction_4 + 1
1967
1968   indice_4(nb_reaction_4) = z4spec(1.0, i_oplus, 1.0, i_h, 1.0, i_hplus, 1.0, i_o)
1969
1970!===========================================================
1971!      i024 : H+ + O -> O+ + H
1972!===========================================================
1973
1974   nb_reaction_4 = nb_reaction_4 + 1
1975
1976   indice_4(nb_reaction_4) = z4spec(1.0, i_hplus, 1.0, i_o, 1.0, i_oplus, 1.0, i_h)
1977
1978!===========================================================
1979!      i025 : CO2+ + H2 -> HCO2+ + H
1980!===========================================================
1981
1982   nb_reaction_4 = nb_reaction_4 + 1
1983
1984   indice_4(nb_reaction_4) = z4spec(1.0, i_co2plus, 1.0, i_h2, 1.0, i_hco2plus, 1.0, i_h)
1985
1986!===========================================================
1987!      i026 : HCO2+ + e -> H + CO2
1988!===========================================================
1989
1990   nb_reaction_4 = nb_reaction_4 + 1
1991
1992   indice_4(nb_reaction_4) = z4spec(1.0, i_hco2plus, 1.0, i_elec, 1.0, i_h, 1.0, i_co2)
1993
1994!===========================================================
1995!      i027 : HCO2+ + e -> H + O + CO
1996!===========================================================
1997!We divide this reaction in two
1998
1999!0.5HCO2+ + 0.5e -> H
2000
2001   nb_reaction_4 = nb_reaction_4 + 1
2002
2003   indice_4(nb_reaction_4) = z4spec(.5, i_hco2plus, 0.5, i_elec, 1.0, i_h, 0.0, i_dummy)
2004
2005!0.5 HCO2+ + 0.5 e -> O + CO
2006
2007   nb_reaction_4 = nb_reaction_4 + 1
2008
2009   indice_4(nb_reaction_4) = z4spec(0.5, i_hco2plus, 0.5, i_elec, 1.0, i_o, 1.0, i_co)
2010
2011!===========================================================
2012!      i029 : HCO2+ + e -> OH + CO
2013!===========================================================
2014
2015   nb_reaction_4 = nb_reaction_4 + 1
2016
2017   indice_4(nb_reaction_4) = z4spec(1.0, i_hco2plus, 1.0, i_elec, 1.0, i_oh, 1.0, i_co)
2018
2019
2020!===========================================================
2021!      i030 : HCO2+ + e -> H + CO2
2022!===========================================================
2023
2024   nb_reaction_4 = nb_reaction_4 + 1
2025
2026   indice_4(nb_reaction_4) = z4spec(1.0, i_hco2plus, 1.0, i_elec, 1.0, i_h, 1.0, i_co2)
2027
2028
2029!===========================================================
2030!      i031 : HCO2+ + O -> HCO+ + O2
2031!===========================================================
2032
2033   nb_reaction_4 = nb_reaction_4 + 1
2034
2035   indice_4(nb_reaction_4) = z4spec(1.0, i_hco2plus, 1.0, i_o, 1.0, i_hcoplus, 1.0, i_o2)
2036
2037
2038!===========================================================
2039!      i032 : HCO2+ + CO -> HCO+ + CO2
2040!===========================================================
2041
2042   nb_reaction_4 = nb_reaction_4 + 1
2043   indice_4(nb_reaction_4) = z4spec(1.0, i_hco2plus, 1.0, i_co, 1.0, i_hcoplus, 1.0, i_co2)
2044
2045
2046!===========================================================
2047!      i033 : H+ + CO2 -> HCO+ + O
2048!===========================================================
2049
2050   nb_reaction_4 = nb_reaction_4 + 1
2051   indice_4(nb_reaction_4) = z4spec(1.0, i_hplus, 1.0, i_co2, 1.0, i_hcoplus, 1.0, i_o)
2052
2053
2054!===========================================================
2055!      i034 : CO2+ + H -> HCO+ + O
2056!===========================================================
2057
2058   nb_reaction_4 = nb_reaction_4 + 1
2059   indice_4(nb_reaction_4) = z4spec(1.0, i_co2plus, 1.0, i_h, 1.0, i_hcoplus, 1.0, i_o)
2060
2061
2062!===========================================================
2063!      i035 : CO+ + H2 -> HCO+ + H
2064!===========================================================
2065
2066   nb_reaction_4 = nb_reaction_4 + 1
2067   indice_4(nb_reaction_4) = z4spec(1.0, i_coplus, 1.0, i_h2, 1.0, i_hcoplus, 1.0, i_h)
2068
2069
2070!===========================================================
2071!      i036 : HCO+ + e- -> CO + H
2072!===========================================================
2073
2074   nb_reaction_4 = nb_reaction_4 + 1
2075   indice_4(nb_reaction_4) = z4spec(1.0, i_hcoplus, 1.0, i_elec, 1.0, i_co, 1.0, i_h)
2076
2077!===========================================================
2078!      i037 : CO2+ + H2O -> H2O+ + CO2
2079!===========================================================
2080
2081   nb_reaction_4 = nb_reaction_4 + 1
2082   indice_4(nb_reaction_4) = z4spec(1.0, i_co2plus, 1.0, i_h2o, 1.0, i_h2oplus, 1.0, i_co2)
2083
2084!===========================================================
2085!      i038 : CO+ + H2O -> H2O+ + CO
2086!===========================================================
2087
2088   nb_reaction_4 = nb_reaction_4 + 1
2089   indice_4(nb_reaction_4) = z4spec(1.0, i_coplus, 1.0, i_h2o, 1.0, i_h2oplus, 1.0, i_co)
2090
2091!===========================================================
2092!      i039 : O+ + H2O -> H2O+ + O
2093!===========================================================
2094
2095   nb_reaction_4 = nb_reaction_4 + 1
2096   indice_4(nb_reaction_4) = z4spec(1.0, i_oplus, 1.0, i_h2o, 1.0, i_h2oplus, 1.0, i_o)
2097
2098!===========================================================
2099!      i040 : N2+ + H2O -> H2O+ + N2
2100!===========================================================
2101
2102   nb_reaction_4 = nb_reaction_4 + 1
2103   indice_4(nb_reaction_4) = z4spec(1.0, i_n2plus, 1.0, i_h2o, 1.0, i_h2oplus, 1.0, i_n2)
2104
2105!===========================================================
2106!      i041 : N+ + H2O -> H2O+ + N
2107!===========================================================
2108
2109   nb_reaction_4 = nb_reaction_4 + 1
2110   indice_4(nb_reaction_4) = z4spec(1.0, i_nplus, 1.0, i_h2o, 1.0, i_h2oplus, 1.0, i_n)
2111
2112!===========================================================
2113!      i042 : H+ + H2O -> H2O+ + H
2114!===========================================================
2115
2116   nb_reaction_4 = nb_reaction_4 + 1
2117   indice_4(nb_reaction_4) = z4spec(1.0, i_hplus, 1.0, i_h2o, 1.0, i_h2oplus, 1.0, i_h)
2118
2119!===========================================================
2120!      i043 : H2O+ + O2 -> O2+ + H2O
2121!===========================================================
2122
2123   nb_reaction_4 = nb_reaction_4 + 1
2124   indice_4(nb_reaction_4) = z4spec(1.0, i_h2oplus, 1.0, i_o2, 1.0, i_o2plus, 1.0, i_h2o)
2125
2126!===========================================================
2127!      i044 : H2O+ + CO -> HCO+ + OH
2128!===========================================================
2129
2130   nb_reaction_4 = nb_reaction_4 + 1
2131   indice_4(nb_reaction_4) = z4spec(1.0, i_h2oplus, 1.0, i_co, 1.0, i_hcoplus, 1.0, i_oh)
2132
2133!===========================================================
2134!      i045 : H2O+ + O -> O2+ + H2
2135!===========================================================
2136
2137   nb_reaction_4 = nb_reaction_4 + 1
2138   indice_4(nb_reaction_4) = z4spec(1.0, i_h2oplus, 1.0, i_o, 1.0, i_o2plus, 1.0, i_h2)
2139
2140!===========================================================
2141!      i046 : H2O+ + NO -> NO+ + H2O
2142!===========================================================
2143
2144   nb_reaction_4 = nb_reaction_4 + 1
2145   indice_4(nb_reaction_4) = z4spec(1.0, i_h2oplus, 1.0, i_no, 1.0, i_noplus, 1.0, i_h2o)
2146
2147!===========================================================
2148!      i047 : H2O+ + e- -> H + H + O
2149!===========================================================
2150
2151   nb_reaction_4 = nb_reaction_4 + 1
2152   indice_4(nb_reaction_4) = z4spec(1.0, i_h2oplus, 1.0, i_elec, 2.0, i_h, 1.0, i_o)
2153
2154!===========================================================
2155!      i048 : H2O+ + e- -> H + OH
2156!===========================================================
2157
2158   nb_reaction_4 = nb_reaction_4 + 1
2159   indice_4(nb_reaction_4) = z4spec(1.0, i_h2oplus, 1.0, i_elec, 1.0, i_h, 1.0, i_oh)
2160
2161!===========================================================
2162!      i049 : H2O+ + e- -> H2 + O
2163!===========================================================
2164
2165   nb_reaction_4 = nb_reaction_4 + 1
2166   indice_4(nb_reaction_4) = z4spec(1.0, i_h2oplus, 1.0, i_elec, 1.0, i_h2, 1.0, i_o)
2167
2168!===========================================================
2169!      i050 : H2O+ + H2O -> H3O+ + OH
2170!===========================================================
2171
2172   nb_reaction_4 = nb_reaction_4 + 1
2173   indice_4(nb_reaction_4) = z4spec(1.0, i_h2oplus, 1.0, i_h2o, 1.0, i_h3oplus, 1.0, i_oh)
2174
2175!===========================================================
2176!      i051 : H2O+ + H2 -> H3O+ + H
2177!===========================================================
2178
2179   nb_reaction_4 = nb_reaction_4 + 1
2180   indice_4(nb_reaction_4) = z4spec(1.0, i_h2oplus, 1.0, i_h2, 1.0, i_h3oplus, 1.0, i_h)
2181
2182!===========================================================
2183!      i052 : HCO+ + H2O -> H3O+ + CO
2184!===========================================================
2185
2186   nb_reaction_4 = nb_reaction_4 + 1
2187   indice_4(nb_reaction_4) = z4spec(1.0, i_hcoplus, 1.0, i_h2o, 1.0, i_h3oplus, 1.0, i_co)
2188
2189!===========================================================
2190!      i053: H3O+ + e -> OH + H + H
2191!===========================================================
2192
2193   nb_reaction_4 = nb_reaction_4 + 1
2194   indice_4(nb_reaction_4) = z4spec(1.0, i_h3oplus, 1.0, i_elec, 1.0, i_oh, 2.0, i_h)
2195
2196!===========================================================
2197!      i054: H3O+ + e -> H2O + H
2198!===========================================================
2199
2200   nb_reaction_4 = nb_reaction_4 + 1
2201   indice_4(nb_reaction_4) = z4spec(1.0, i_h3oplus, 1.0, i_elec, 1.0, i_h2o, 1.0, i_h)
2202
2203!===========================================================
2204!      i055: H3O+ + e -> HO + H2
2205!===========================================================
2206
2207   nb_reaction_4 = nb_reaction_4 + 1
2208   indice_4(nb_reaction_4) = z4spec(1.0, i_h3oplus, 1.0, i_elec, 1.0, i_oh, 1.0, i_h2)
2209
2210!===========================================================
2211!      i056: H3O+ + e -> O + H2 + H
2212!===========================================================
2213!We divide this reaction in two
2214
2215!0.5H3O+ + 0.5e -> O
2216
2217   nb_reaction_4 = nb_reaction_4 + 1
2218   indice_4(nb_reaction_4) = z4spec(0.5, i_h3oplus, 0.5, i_elec, 1.0, i_o, 0.0, i_dummy)
2219
2220!0.5H3O+ + 0.5e -> H2 + H
2221
2222   nb_reaction_4 = nb_reaction_4 + 1
2223   indice_4(nb_reaction_4) = z4spec(0.5, i_h3oplus, 0.5, i_elec, 1.0, i_h2, 1.0, i_h)
2224
2225!===========================================================
2226!      i057: O+ + H2 -> OH+ + H
2227!===========================================================
2228
2229   nb_reaction_4 = nb_reaction_4 + 1
2230   indice_4(nb_reaction_4) = z4spec(1.0, i_oplus, 1.0, i_h2, 1.0, i_ohplus, 1.0, i_h)
2231
2232!===========================================================
2233!      i058: OH+ + O -> O2+ + H
2234!===========================================================
2235
2236   nb_reaction_4 = nb_reaction_4 + 1
2237   indice_4(nb_reaction_4) = z4spec(1.0, i_ohplus, 1.0, i_o, 1.0, i_o2plus, 1.0, i_h)
2238
2239!===========================================================
2240!      i059: OH+ + CO2 -> HCO2+ + O
2241!===========================================================
2242
2243   nb_reaction_4 = nb_reaction_4 + 1
2244   indice_4(nb_reaction_4) = z4spec(1.0, i_ohplus, 1.0, i_co2, 1.0, i_hco2plus, 1.0, i_o)
2245
2246!===========================================================
2247!      i060: OH+ + CO -> HCO+ + O
2248!===========================================================
2249
2250   nb_reaction_4 = nb_reaction_4 + 1
2251   indice_4(nb_reaction_4) = z4spec(1.0, i_ohplus, 1.0, i_co, 1.0, i_hcoplus, 1.0, i_o)
2252
2253!===========================================================
2254!      i061: OH+ + NO -> NO+ + OH
2255!===========================================================
2256
2257   nb_reaction_4 = nb_reaction_4 + 1
2258   indice_4(nb_reaction_4) = z4spec(1.0, i_ohplus, 1.0, i_no, 1.0, i_noplus, 1.0, i_oh)
2259
2260!===========================================================
2261!      i062: OH+ + H2 -> H2O+ + H
2262!===========================================================
2263
2264   nb_reaction_4 = nb_reaction_4 + 1
2265   indice_4(nb_reaction_4) = z4spec(1.0, i_ohplus, 1.0, i_h2, 1.0, i_h2oplus, 1.0, i_h)
2266
2267!===========================================================
2268!      i063: OH+ + O2 -> O2+ + OH
2269!===========================================================
2270
2271   nb_reaction_4 = nb_reaction_4 + 1
2272   indice_4(nb_reaction_4) = z4spec(1.0, i_ohplus, 1.0, i_o2, 1.0, i_o2plus, 1.0, i_oh)
2273
2274end if    !ok_ionchem
2275
2276!===========================================================
2277!      j001: O2(Dg) + (CO2 or O) -> O2 + (CO2 or O)
2278!===========================================================
2279
2280nb_phot = nb_phot + 1
2281
2282indice_phot(nb_phot) = z3spec(1.0, i_o2dg, 1.0, i_o2, 0.0, i_dummy)
2283
2284!===========================================================
2285!      j002: O2(Dg) -> O2 + hv
2286!===========================================================
2287
2288nb_phot = nb_phot + 1
2289
2290indice_phot(nb_phot) = z3spec(1.0, i_o2dg, 1.0, i_o2, 0.0, i_dummy)
2291
2292!===========================================================
2293!  check dimensions
2294!===========================================================
2295
2296print*, 'nb_phot       = ', nb_phot
2297print*, 'nb_phot_max   = ', nb_phot_max
2298print*, 'nb_reaction_4 = ', nb_reaction_4
2299print*, 'nb_reaction_4_max = ', nb_reaction_4_max
2300print*, 'nb_reaction_3 = ', nb_reaction_3
2301print*, 'nb_reaction_3_max = ', nb_reaction_3_max
2302
2303!print*, 'check dimension'
2304if ((nb_phot /= nb_phot_max)             .or.  &
2305    (nb_reaction_3 /= nb_reaction_3_max) .or.  &
2306    (nb_reaction_4 /= nb_reaction_4_max)) then
2307   print*, 'wrong dimensions in indice'
2308   stop
2309end if 
2310
2311end subroutine indice
2312
2313!===========================================================
2314
2315subroutine phot(nj, nztable, nsza, nso2, sza_input, dist_sol, mumean, rmco2, rmso2,                     &
2316                jphot, table_colair, table_colso2, table_sza, nz, nb_phot_max, t, p, v_phot)
2317
2318!===========================================================
2319
2320implicit none
2321#include "clesphys.h"
2322
2323integer, INTENT(IN) :: nz
2324integer, INTENT(IN) :: nj, nztable, nsza, nso2
2325
2326real, INTENT(IN), dimension(nz) :: t, p
2327real, INTENT(IN), dimension(nz) :: mumean        ! [g/mol]
2328real, INTENT(IN), dimension(nso2,nsza,nztable,nj) :: jphot
2329real, INTENT(IN), dimension(nso2,nztable) :: table_colso2
2330real, INTENT(IN), dimension(nztable) :: table_colair
2331real, INTENT(IN), dimension(nsza) :: table_sza
2332real, INTENT(IN), dimension(nz) :: rmco2, rmso2
2333real, INTENT(IN) :: sza_input, dist_sol
2334
2335real, dimension(nz,nj) :: j
2336real, dimension(nz) :: coef, col, colso2
2337real, dimension(nso2) :: colref
2338real, dimension(2,2,2) :: poids
2339real :: cicol, cisza, ciso2
2340real :: avogadro, gvenus, dp
2341
2342integer :: indcol, indsza, indso2
2343integer :: isza, iz, i, iso2, ij
2344integer :: nb_phot_max
2345real, dimension(nz,nb_phot_max), INTENT(INOUT) :: v_phot
2346
2347!mugaz    = 43.44E-3
2348avogadro = 6.022E+23
2349gvenus   = 8.87
2350
2351! day/night test
2352
2353if (sza_input <= 95.) then      ! day
2354
2355! interpolation in solar zenith angle
2356
2357indsza = nsza - 1
2358do isza = 1,nsza
2359   if (table_sza(isza) >= sza_input) then
2360      indsza = min(indsza,isza - 1)
2361      indsza = max(indsza, 1)
2362   end if
2363end do
2364
2365cisza = (sza_input - table_sza(indsza))                       &
2366       /(table_sza(indsza + 1) - table_sza(indsza))
2367
2368!    print*, 'indsza    = ', indsza
2369!    print*, 'table_sza = ', table_sza(indsza)
2370!    print*, 'cisza     = ', cisza
2371
2372! co2 and so2 columns
2373
2374coef(nz)   = avogadro/(gvenus*mumean(nz)*1.E-3)*1.E-4
2375col(nz)    = coef(nz)*rmco2(nz)*p(nz)*100.
2376colso2(nz) = coef(nz)*rmso2(nz)*p(nz)*100.
2377
2378do iz = nz-1, 1, -1
2379!   print*,"L2490 new_photochemistry", iz,mumean(iz)
2380   dp = (p(iz) - p(iz+1))*100.
2381   coef(iz)   = avogadro/(gvenus*mumean(iz)*1.E-3)*1.E-4
2382   col(iz)    = col(iz+1) + coef(iz)*(rmco2(iz+1) + rmco2(iz))*0.5*dp
2383   col(iz)    = min(col(iz), table_colair(1))
2384   colso2(iz) = colso2(iz+1) + coef(iz)*(rmso2(iz+1) + rmso2(iz))*0.5*dp
2385   colso2(iz) = min(colso2(iz), table_colso2(nso2,1))
2386end do
2387
2388! loop over altitude
2389
2390do iz = 1,nz
2391
2392! interpolation in co2 column
2393
2394   indcol = nztable - 1
2395   cicol  = 0.
2396
2397   do i = 1,nztable-1
2398      if (table_colair(i) < col(iz)) then
2399         cicol = (log(col(iz)) - log(table_colair(i)))           &
2400                /(log(table_colair(i-1)) - log(table_colair(i)))
2401         indcol = i - 1
2402         exit
2403      end if
2404   end do
2405
2406! interpolation in so2 column
2407
2408! initialize indso2 and ciso2 in case colref is never larger
2409! than the gcm so2 column.
2410
2411   indso2 = nso2 - 1
2412   ciso2 = 1.
2413
2414! search for the index indso2 between which interpolate
2415
2416   do iso2 = 1,nso2
2417      colref(iso2) = cicol*table_colso2(iso2,indcol)               &
2418                   + (1.-cicol)*table_colso2(iso2,indcol+1)
2419      if (colref(iso2) > colso2(iz)) then
2420         ciso2 = (colso2(iz) - colref(iso2-1))                     &
2421                /(colref(iso2) - colref(iso2-1))
2422         indso2 = iso2 - 1
2423         exit
2424      end if
2425   end do
2426
2427! 4-dimensional interpolation weights
2428
2429! poids(so2,sza_input,co2)
2430
2431   poids(1,1,1) = (1.-ciso2)*(1.-cisza)*    cicol
2432   poids(1,1,2) = (1.-ciso2)*(1.-cisza)*(1.-cicol)
2433   poids(1,2,1) = (1.-ciso2)*    cisza *    cicol
2434   poids(1,2,2) = (1.-ciso2)*    cisza *(1.-cicol)
2435   poids(2,1,1) =     ciso2 *(1.-cisza)*    cicol
2436   poids(2,1,2) =     ciso2 *(1.-cisza)*(1.-cicol)
2437   poids(2,2,1) =     ciso2 *    cisza *    cicol
2438   poids(2,2,2) =     ciso2 *    cisza *(1.-cicol)
2439
2440! 4-dimensional interpolation in the lookup table
2441
2442   do ij = 1,nj
2443      j(iz,ij) =                                          &
2444      poids(1,1,1)*jphot(indso2  ,indsza  ,indcol  ,ij)   &
2445    + poids(1,1,2)*jphot(indso2  ,indsza  ,indcol+1,ij)   &
2446    + poids(1,2,1)*jphot(indso2  ,indsza+1,indcol  ,ij)   &
2447    + poids(1,2,2)*jphot(indso2  ,indsza+1,indcol+1,ij)   &
2448    + poids(2,1,1)*jphot(indso2+1,indsza  ,indcol  ,ij)   &
2449    + poids(2,1,2)*jphot(indso2+1,indsza  ,indcol+1,ij)   &
2450    + poids(2,2,1)*jphot(indso2+1,indsza+1,indcol  ,ij)   &
2451    + poids(2,2,2)*jphot(indso2+1,indsza+1,indcol+1,ij)
2452   end do
2453
2454end do           ! end of loop over altitude
2455
2456else             ! night
2457   j(:,:) = 0.
2458end if
2459
2460! photodissociation rates numbering in the lookup table
2461
2462!    1     o2 + hv     -> o + o
2463!    2     o2 + hv     -> o + o(1d)
2464!    3     co2 + hv    -> co + o
2465!    4     co2 + hv    -> co + o(1d)
2466!    5     o3 + hv     -> o2(Dg) + o(1d)
2467!    6     o3 + hv     -> o2 + o
2468!    7     h2o + hv    -> h + oh
2469!    8     ho2 + hv    -> oh + o
2470!    9     h2o2 + hv   -> oh + oh
2471!    10    hcl + hv    -> h + cl
2472!    11    cl2 + hv    -> cl + cl
2473!    12    hocl + hv   -> oh + cl
2474!    13    so2 + hv    -> so + o
2475!    14    so + hv     -> s + o
2476!    15    so3 + hv    -> so2 + o
2477!    16    clo + hv    -> cl + o
2478!    17    ocs + hv    -> co + s
2479!    18    cocl2 + hv  -> cl + cl + co
2480!    19    h2so4 + hv  -> so3 + h2o
2481!    20    no2 + hv    -> no + o
2482!    21    no + hv     -> n + o 
2483!    22    n2 + hv     -> n + n
2484
2485! fill v_phot array
2486
2487do ij = 1,nj
2488   v_phot(:,ij) = j(:,ij)
2489end do
2490
2491!!! TEST: artificial increase of CO2 photodissociation
2492if (tuneupperatm) then
2493!-- TuneA
2494!   v_phot(65:78,4) = v_phot(65:78,4)*10.
2495!   v_phot(60:64,4) = v_phot(60:64,4)*3.
2496!   v_phot(55:59,3) = v_phot(55:59,3)*2.
2497!--
2498!-- TuneB
2499!   v_phot(65:78,4) = v_phot(65:78,4)*10.
2500!   v_phot(55:59,3) = v_phot(55:59,3)*5.
2501!--
2502!-- TuneC
2503! VCD 1.1 tuning
2504!   v_phot(65:78,4) = v_phot(65:78,4)*10.
2505!   v_phot(52:59,3) = v_phot(52:59,3)*5.
2506!--
2507!-- TuneE
2508! VCD 2.0 tuning
2509    v_phot(65:nz,4) = v_phot(65:nz,4)*10. ! CO2 + hv ==> O(1D) + CO
2510!--
2511!   v_phot(:,4) = v_phot(:,4)*10.
2512!do ij=3,4
2513!   v_phot(:,ij) = v_phot(:,ij)*10.
2514!end do
2515endif
2516!!!!!!!!!!!!!!!
2517
2518!PRINT*,'sza_input: ',sza_input
2519!IF (sza_input.le.40.5 .AND. sza_input.gt.39.5) THEN
2520!open(200, form = 'formatted')
2521!100    format(e20.6)
2522!write(200,100)(v_phot(:,19))
2523!stop
2524!END IF
2525
2526end subroutine phot
2527
2528!======================================================================
2529
2530 subroutine krates(hetero_ice,hetero_dust,ok_ionchem, nphotion,        &
2531                   nz, nesp, c, conc, t, t_elect, p,                   &
2532                   nb_phot_max, nb_reaction_3_max, nb_reaction_4_max,  &
2533                   tuneupperatm, v_3, v_4, v_phot,sza_input,           &
2534                   ind_norec, ind_orec)
2535 
2536!================================================================
2537! compute reaction rates                                        !
2538!----------------------------------------------------------------
2539! reaction               type                array              !
2540!----------------------------------------------------------------
2541! A + B    --> C + D     bimolecular         v_4                !
2542! A + A    --> B + C     quadratic           v_3                !
2543! A + C    --> B + C     quenching           v_phot             !
2544! A + ice  --> B + C     heterogeneous       v_phot             !
2545!================================================================
2546
2547 USE chemparam_mod
2548 USE photolysis_mod, only : nphot
2549implicit none
2550
2551!----------------------------------------------------------------------
2552!     input
2553!----------------------------------------------------------------------
2554
2555integer, INTENT(IN) :: nesp, nz
2556real, INTENT(IN)    :: sza_input  ! [degree]
2557real, INTENT(IN), dimension(nz)  :: t_elect, t, p, conc
2558logical, INTENT(IN) :: hetero_ice, hetero_dust, tuneupperatm
2559
2560real, INTENT(IN), dimension(nz,nesp) :: c
2561
2562integer, intent(in) :: nb_reaction_3_max ! number of quadratic reactions
2563integer, intent(in) :: nb_reaction_4_max ! number of bimolecular reactions
2564integer, intent(in) :: nb_phot_max       ! number of reactions treated numerically as photodissociations
2565integer, intent(in) :: nphotion          ! number of photoionizations
2566logical, intent(in) :: ok_ionchem        ! if .true. then ionchem reaction used
2567
2568!----------------------------------------------------------------------
2569!     output
2570!----------------------------------------------------------------------
2571
2572real (kind = 8), dimension(nz,       nb_phot_max) :: v_phot
2573real (kind = 8), dimension(nz, nb_reaction_3_max) :: v_3
2574real (kind = 8), dimension(nz, nb_reaction_4_max) :: v_4
2575integer :: ind_norec
2576integer :: ind_orec
2577
2578!----------------------------------------------------------------------
2579!     local
2580!----------------------------------------------------------------------
2581
2582integer :: iz
2583real    :: ak0, ak1, xpo, rate, rate1, rate2, pi, gam
2584real    :: k1a0, k1b0, k1ainf, k1a, k1b, k0, kinf, kf, kint, kca, fc, fx, x, y
2585integer :: nb_phot, nb_reaction_3, nb_reaction_4
2586real, dimension(nz)  :: surfice1d, surfdust1d
2587real, dimension(nz) :: deq
2588real, dimension(nz) :: a001, a002, a003,                           &
2589                       b001, b002, b003, b004, b005, b006, b007,   &
2590                       b008, b009,                                 &
2591                       c001, c002, c003, c004, c005, c006, c007,   &
2592                       c008, c009, c010, c011, c012, c013, c014,   &
2593                       c015, c016, c017, c018,                     &
2594                       d001, d002, d003, d004, d005, d006, d007,   &
2595                       d008, d009, d010, d011, d012, d013, d014,   &
2596                       e001, e002, e003, e004, e005, e006, e007,   &
2597                       e008, e009, e010, e011, e012, e013, e014,   &
2598                       e015, e016, e017, e018, e019, e020, e021,   &
2599                       e022, e023, e024, e025, e026, e027, e028,   &
2600                       e029, e030, e031, e032, e033, e034, e035,   &
2601                       e036, e037, e038, e039, e040, e041, e042,   &
2602                       e043,                                       &
2603                       f001, f002, f003, f004, f005, f006, f007,   &
2604                       f008, f009, f010, f011, f012, f013, f014,   &
2605                       f015, f016, f017, f018, f019, f020, f021,   &
2606                       f022, f023, f024, f025, f026, f027, f028,   &
2607                       f029, f030, f031, f032, f033, f034, f035,   &
2608                       f036, f037, f038, f039,                     &
2609                       g001, g002, g003, g004, g005, g006, g007,   &
2610                       g008, g009, g010, g011, g012, g013, g014,   &
2611                       g015, g016, g017, g018, g019, g020, g021,   &
2612                       g022, g023, g024, g025, g026, g027, g028,   &
2613                       g029, g030, g031, g032,                     &
2614                       h001, h002, h003,                           &
2615                       i001, i002, i003, i004, i005, i006,         &
2616                       i007, i008, i009, i010, i011, i012,         &
2617                       i013, i014, i015, i016, i017, i018, i019,   &
2618                       i020, i021, i022, i023, i024, i025, i026,   &
2619                       i027, i028, i029, i030, i031, i032, i033,   &
2620                       i034, i035, i036, i037, i038, i039, i040,   &
2621                       i041, i042, i043, i044, i045, i046, i047,   &
2622                       i048, i049, i050, i051, i052, i053, i054,   &
2623                       i055, i056, i057, i058, i059, i060, i061,   &
2624                       i062, i063,                                 &
2625                       j001, j002                                 
2626!----------------------------------------------------------------------
2627!     initialisation
2628!----------------------------------------------------------------------
2629
2630      pi = acos(-1.)
2631     
2632      nb_phot       = nphot + nphotion ! initialised to the number of photolysis + number of photoionization rates
2633      nb_reaction_3 = 0
2634      nb_reaction_4 = 0
2635
2636!----------------------------------------------------------------------
2637!        reactions avec ox
2638!----------------------------------------------------------------------
2639
2640!     jpl 2003
2641!     ------ BEFORE VCD 2.1 -------
2642!      a001(:) = 2.5*6.0E-34*(t(:)/300.)**(-2.4)*conc(:)
2643!     -----------------------------
2644
2645!    ! nist expression + take account of the N2 and CO2 factor
2646!     ------ VCD 2.1 update -------
2647      a001(:) = 6.0E-34*(t(:)/300.)**(-2.4) *    &
2648              ( 2.5 * c(:,i_co2) +               &
2649                1.0 * (conc(:)-c(:,i_co2))  )
2650              nb_reaction_4 = nb_reaction_4 + 1
2651              v_4(:,nb_reaction_4) = a001(:)
2652
2653
2654!     Tsang and Hampson, J. Chem. Phys. Ref. Data, 15, 1087, 1986
2655!     ------ BEFORE VCD 2.1 -------
2656!      a002(:) = 2.5*9.46E-34*exp(485./t(:))*conc(:) ! nist expression
2657!     -----------------------------
2658
2659!     ! nist expression + take account of the N2 and CO2 factor
2660!       a002(:) = 9.46E-34*exp(485./t(:)) *     &
2661!              ( 2.5 * c(:,i_co2) +            &
2662!                1.0 * (conc(:)-c(:,i_co2)) )
2663
2664!     Baulch et al., 1976 (confirmed by smith and robertson, 2008)
2665!     ------ VCD 2.1 update -------
2666
2667       a002(:) = 2.76E-34*exp(720./t(:)) *    &
2668              ( 2.5 * c(:,i_co2) +            &
2669                1.0 * (conc(:)-c(:,i_co2)) )
2670!     -----------------------------
2671     
2672      nb_reaction_3 = nb_reaction_3 + 1
2673      v_3(:,nb_reaction_3) = a002(:)
2674      ind_orec = nb_reaction_3
2675
2676!     a003: o + o3 -> o2 + o2
2677
2678!     jpl 2003
2679
2680      a003(:) = 8.0E-12*exp(-2060./t(:))
2681
2682      nb_reaction_4 = nb_reaction_4 + 1
2683      v_4(:,nb_reaction_4) = a003(:)
2684
2685!----------------------------------------------------------------------
2686!        reactions avec o(1d)
2687!----------------------------------------------------------------------
2688
2689!---  b001: o(1d) + co2  -> o + co2
2690
2691!     jpl 2006
2692
2693      b001(:) = 7.5E-11*exp(115./t(:))
2694
2695      nb_phot = nb_phot + 1
2696      v_phot(:,nb_phot) = b001(:)*c(:,i_co2)
2697
2698!---  b002: o(1d) + h2o  -> oh + oh
2699
2700!     jpl 2006
2701         
2702      b002(:) = 1.63E-10*exp(60./t(:))
2703             
2704      nb_reaction_4 = nb_reaction_4 + 1
2705      v_4(:,nb_reaction_4) = b002(:)
2706
2707!---  b003: o(1d) + h2  -> oh + h
2708
2709!     jpl 2011     
2710
2711      b003(:) = 1.2E-10
2712
2713      nb_reaction_4 = nb_reaction_4 + 1
2714      v_4(:,nb_reaction_4) = b003(:)
2715
2716!---  b004: o(1d) + o2  -> o + o2
2717
2718!     jpl 2006
2719
2720      b004(:) = 3.3E-11*exp(55./t(:))
2721
2722      nb_phot = nb_phot + 1
2723      v_phot(:,nb_phot) = b004(:)*c(:,i_o2)
2724           
2725!---  b005: o(1d) + o3  -> o2 + o2
2726
2727!     jpl 2003
2728
2729      b005(:) = 1.2E-10
2730
2731      nb_reaction_4 = nb_reaction_4 + 1
2732      v_4(:,nb_reaction_4) = b005(:)
2733           
2734!---  b006: o(1d) + o3  -> o2 + o + o
2735
2736!     jpl 2003
2737
2738      b006(:) = 1.2E-10
2739
2740      nb_reaction_4 = nb_reaction_4 + 1
2741      v_4(:,nb_reaction_4) = b006(:)
2742           
2743!----------------------------------------------------------------------
2744!        reactions des hox   
2745!----------------------------------------------------------------------
2746
2747!---  c001: o + ho2 -> oh + o2
2748
2749!     jpl 2003
2750
2751      c001(:) = 3.0E-11*exp(200./t(:))
2752
2753      nb_reaction_4 = nb_reaction_4 + 1
2754      v_4(:,nb_reaction_4) = c001(:)
2755
2756!---  c002: o + oh -> o2 + h
2757
2758!     jpl 2011 
2759
2760      c002(:) = 1.8E-11*exp(180./t(:))
2761
2762      nb_reaction_4 = nb_reaction_4 + 1
2763      v_4(:,nb_reaction_4) = c002(:)
2764
2765!---  c003: h + o3 -> oh + o2
2766
2767!     jpl 2003
2768
2769      c003(:) = 1.4E-10*exp(-470./t(:))
2770
2771      nb_reaction_4 = nb_reaction_4 + 1
2772      v_4(:,nb_reaction_4) = c003(:)
2773
2774!---  c004: h + ho2 -> oh + oh
2775
2776!     jpl 2006
2777
2778      c004(:) = 7.2E-11
2779
2780      nb_reaction_4 = nb_reaction_4 + 1
2781      v_4(:,nb_reaction_4) = c004(:)
2782
2783!---  c005: h + ho2 -> h2 + o2
2784
2785!     jpl 2006
2786
2787      c005(:) = 6.9E-12
2788
2789      nb_reaction_4 = nb_reaction_4 + 1
2790      v_4(:,nb_reaction_4) = c005(:)
2791
2792!---  c006: h + ho2 -> h2o + o
2793
2794!     jpl 2006
2795
2796      c006(:) = 1.6E-12
2797
2798      nb_reaction_4 = nb_reaction_4 + 1
2799      v_4(:,nb_reaction_4) = c006(:)
2800
2801!---  c007: oh + ho2 -> h2o + o2
2802
2803!     jpl 2003
2804
2805      c007(:) = 4.8E-11*exp(250./t(:))
2806
2807      nb_reaction_4 = nb_reaction_4 + 1
2808      v_4(:,nb_reaction_4) = c007(:)
2809
2810!---  c008: ho2 + ho2 -> h2o2 + o2
2811
2812!     jpl 2015
2813
2814      c008(:) = 3.0E-13*exp(460./t(:))
2815
2816!     christensen et al., grl, 13, 2002
2817
2818!     c008(:) = 1.5E-12*exp(19./t(:))
2819
2820      nb_reaction_3 = nb_reaction_3 + 1
2821      v_3(:,nb_reaction_3) = c008(:)
2822
2823!---  c009: oh + h2o2 -> h2o + ho2
2824
2825!     jpl 2006
2826
2827      c009(:) = 1.8E-12
2828
2829      nb_reaction_4 = nb_reaction_4 + 1
2830      v_4(:,nb_reaction_4) = c009(:)
2831
2832!---  c010: oh + h2 -> h2o + h
2833
2834!     jpl 2006
2835
2836      c010(:) = 2.8E-12*exp(-1800./t(:))
2837
2838      nb_reaction_4 = nb_reaction_4 + 1
2839      v_4(:,nb_reaction_4) = c010(:)
2840
2841!---  c011: h + o2 + co2 -> ho2 + co2
2842
2843!     jpl 2006
2844
2845!     do iz = 1,nz
2846!        ak0 = 2.5*4.4E-32*(t(iz)/300.)**(-1.3)
2847!        ak1 = 4.7E-11*(t(iz)/300.)**(-0.2)
2848
2849!        rate = (ak0*conc(iz))/(1. + ak0*conc(iz)/ak1)
2850!        xpo = 1./(1. + alog10((ak0*conc(iz))/ak1)**2)
2851!        c011(iz) = rate*0.6**xpo
2852!     end do
2853
2854!     jpl 2019
2855
2856      do iz = 1,nz
2857         ak0 = 2.4*5.3e-32*(t(iz)/298.)**(-1.8)
2858         ak1 = 9.5e-11*(t(iz)/298.)**(0.4)
2859
2860         rate = (ak0*conc(iz))/(1. + ak0*conc(iz)/ak1)
2861         xpo = 1./(1. + alog10((ak0*conc(iz))/ak1)**2)
2862         c011(iz) = rate*0.6**xpo
2863      end do
2864
2865      nb_reaction_4 = nb_reaction_4 + 1
2866      v_4(:,nb_reaction_4) = c011(:)
2867
2868!---  c012: o + h2o2 -> oh + ho2
2869
2870!     jpl 2003
2871
2872      c012(:) = 1.4E-12*exp(-2000./t(:))
2873
2874      nb_reaction_4 = nb_reaction_4 + 1
2875      v_4(:,nb_reaction_4) = c012(:)
2876
2877!---  c013: oh + oh -> h2o + o
2878
2879!     jpl 2006
2880
2881      c013(:) = 1.8E-12
2882
2883      nb_reaction_3 = nb_reaction_3 + 1
2884      v_3(:,nb_reaction_3) = c013(:)
2885
2886!---  c014: oh + o3 -> ho2 + o2
2887
2888!     jpl 2003
2889
2890      c014(:) = 1.7E-12*exp(-940./t(:))
2891
2892      nb_reaction_4 = nb_reaction_4 + 1
2893      v_4(:,nb_reaction_4) = c014(:)
2894
2895!---  c015: ho2 + o3 -> oh + o2 + o2
2896
2897!     jpl 2003
2898
2899      c015(:) = 1.0E-14*exp(-490./t(:))
2900
2901      nb_reaction_4 = nb_reaction_4 + 1
2902      v_4(:,nb_reaction_4) = c015(:)
2903
2904!---  c016: ho2 + ho2 + co2 -> h2o2 + o2 + co2
2905
2906!     jpl 2011
2907
2908      c016(:) = 2.5*2.1E-33*exp(920./t(:))*conc(:)
2909
2910      nb_reaction_3 = nb_reaction_3 + 1
2911      v_3(:,nb_reaction_3) = c016(:)
2912
2913!---  c017: oh + oh + co2 -> h2o2 + co2
2914
2915!     jpl 2003
2916
2917      do iz = 1,nz
2918         ak0 = 2.5*6.9E-31*(t(iz)/300.)**(-1.0)
2919         ak1 = 2.6E-11*(t(iz)/300.)**(0.0)
2920
2921         rate = (ak0*conc(iz))/(1. + ak0*conc(iz)/ak1)
2922         xpo = 1./(1. + alog10((ak0*conc(iz))/ak1)**2)
2923         c017(iz) = rate*0.6**xpo
2924      end do
2925
2926      nb_reaction_3 = nb_reaction_3 + 1
2927      v_3(:,nb_reaction_3) = c017(:)
2928
2929!---  c018: h + h + co2 -> h2 + co2
2930
2931!     baulch et al., 2005
2932
2933      c018(:) = 2.5*1.8E-30*(t(:)**(-1.0))*conc(:)
2934
2935      nb_reaction_3 = nb_reaction_3 + 1
2936      v_3(:,nb_reaction_3) = c018(:)
2937
2938!----------------------------------------------------------------------
2939!        reactions des composes azotes
2940!----------------------------------------------------------------------
2941
2942!---  d001: no2 + o -> no + o2
2943
2944!     jpl 2006
2945
2946!     d001(:) = 5.1e-12*exp(210./t(:))
2947
2948!     jpl 2019
2949
2950!     For the sake of simplicity, it is assumed that the association
2951!     yield (kf) gives the same product as the chemical activation yield
2952!     (kca). Thus the only products are no + o2. There is no production
2953!     of no3.
2954
2955      do iz = 1,nz
2956
2957!        association
2958
2959        k0 = 2.5*3.4e-31*(298./t(iz))**(1.6)
2960        kinf = 2.3e-11*(298./t(iz))**(0.2)
2961
2962        kf = (kinf*k0*conc(iz)/(kinf + k0*conc(iz))) &
2963             *0.6**(1. + (log10(k0*conc(iz)/kinf))**2.)**(-1.0)
2964
2965!       chemical acitvation
2966
2967         kint = 5.3e-12*exp(200./t(iz))
2968
2969         kca = kint*(1. - kf/kinf)
2970
2971!        total : association + chemical activation
2972
2973         d001(iz) = kf + kca
2974
2975      end do
2976
2977      nb_reaction_4 = nb_reaction_4 + 1
2978      v_4(:,nb_reaction_4) = d001(:)
2979
2980!---  d002: no + o3 -> no2 + o2
2981
2982!     jpl 2006
2983
2984      d002(:) = 3.0e-12*exp(-1500./t(:))
2985
2986      nb_reaction_4 = nb_reaction_4 + 1
2987      v_4(:,nb_reaction_4) = d002(:)
2988
2989!---  d003: no + ho2 -> no2 + oh
2990
2991!     jpl 2011
2992
2993!     d003(:) = 3.3e-12*exp(270./t(:))
2994
2995!     jpl 2019
2996
2997      d003(:) = 3.44e-12*exp(270./t(:))
2998
2999      nb_reaction_4 = nb_reaction_4 + 1
3000      v_4(:,nb_reaction_4) = d003(:)
3001
3002
3003!---  d004: n + no -> n2 + o
3004
3005!     jpl 2011
3006
3007      d004(:) = 2.1e-11*exp(100./t(:))
3008
3009      nb_reaction_4 = nb_reaction_4 + 1
3010      v_4(:,nb_reaction_4) = d004(:)
3011
3012!---  d005: n + o2 -> no + o
3013
3014!     jpl 2011
3015
3016!     d005(:) = 1.5e-11*exp(-3600./t(:))
3017
3018!     jpl 2019
3019
3020      d005(:) = 3.3e-12*exp(-3150./t(:))
3021
3022      nb_reaction_4 = nb_reaction_4 + 1
3023      v_4(:,nb_reaction_4) = d005(:)
3024
3025!---  d006: no2 + h -> no + oh
3026
3027!     jpl 2011
3028
3029!     d006(:) = 4.0e-10*exp(-340./t(:))
3030
3031!     jpl 2019
3032
3033      d006(:) = 1.35e-10
3034
3035      nb_reaction_4 = nb_reaction_4 + 1
3036      v_4(:,nb_reaction_4) = d006(:)
3037
3038!---  d007: n + o -> no
3039
3040      d007(:) = 1.9e-17*(300./t(:))**(0.5)*exp(1-(0.57/(t(:)**(0.5))))
3041
3042      nb_reaction_4 = nb_reaction_4 + 1
3043      v_4(:,nb_reaction_4) = d007(:)
3044
3045      ind_norec = nb_reaction_4
3046
3047!---  d008: n + ho2 -> no + oh
3048
3049!     brune et al., j. chem. phys., 87, 1983
3050
3051      d008(:) = 2.19e-11
3052
3053      nb_reaction_4 = nb_reaction_4 + 1
3054      v_4(:,nb_reaction_4) = d008(:)
3055
3056!---  d009: n + oh -> no + h
3057
3058!     atkinson et al., j. phys. chem. ref. data, 18, 881, 1989
3059
3060      d009(:) = 3.8e-11*exp(85./t(:))
3061
3062      nb_reaction_4 = nb_reaction_4 + 1
3063      v_4(:,nb_reaction_4) = d009(:)
3064
3065!---  d010: n2d + o -> n + o
3066
3067!     herron, j. phys. chem. ref. data, 1999
3068
3069      d010(:) = 3.3e-12*exp(-260./t(:))
3070
3071      nb_phot = nb_phot + 1
3072      v_phot(:,nb_phot) = d010(:)*c(:,i_o)
3073
3074!---  d011: n2d + n2 -> n + n2
3075
3076!     herron, j. phys. chem. ref. data, 1999
3077
3078      d011(:) = 1.7e-14
3079
3080      nb_phot = nb_phot + 1
3081      v_phot(:,nb_phot) = d011(:)*c(:,i_n2)
3082
3083!---  d012: n2d + co2 -> no + co
3084
3085!     herron, j. phys. chem. ref. data, 1999
3086
3087      d012(:) = 3.6e-13
3088
3089      nb_reaction_4 = nb_reaction_4 + 1
3090      v_4(:,nb_reaction_4) = d012(:)
3091
3092!---  d013: n + o + co2 -> no + co2
3093
3094!     Campbell & Trush, 1966     
3095
3096      d013(:) = 2.5 * conc(:) * 1.83e-32 * (298./t(:))**0.5
3097     
3098      nb_reaction_4 = nb_reaction_4 + 1
3099      v_4(:,nb_reaction_4) = d013(:)
3100
3101!--- d014: n2d + co -> n + co
3102
3103!    herron, j. phys. chem. ref. data, 1999
3104
3105     d014(:) = 1.9e-12
3106
3107     nb_phot = nb_phot + 1
3108     v_phot(:,nb_phot) = d014(:)*c(:,i_co)
3109!----------------------------------------------------------------------
3110!        reactions des composes carbones
3111!----------------------------------------------------------------------
3112
3113!---  e001: oh + co -> co2 + h
3114
3115!     jpl 2015
3116
3117!      do iz = 1,nz
3118
3119!        branch 1 : oh + co -> h + co2
3120
3121!         rate1 = 1.5e-13*(t(iz)/300.)**(0.0)
3122
3123!        branch 2 : oh + co + m -> hoco + m
3124
3125!         ak0 = 5.9e-33*(t(iz)/300.)**(-1.0)
3126!         ak1 = 1.1e-12*(t(iz)/300.)**(1.3)
3127!         rate2 = (ak0*conc(iz))/(1. + ak0*conc(iz)/ak1)
3128!         xpo = 1./(1. + alog10((ak0*conc(iz))/ak1)**2)
3129
3130!         e001(iz) = rate1 + rate2*0.6**xpo
3131!      end do
3132
3133!     joshi et al., 2006
3134
3135!     do iz = 1,nz
3136!        k1a0 = 1.34*2.5*conc(iz)                                &
3137!              *1/(1/(3.62E-26*t(iz)**(-2.739)*exp(-20./t(iz)))  &
3138!              + 1/(6.48E-33*t(iz)**(0.14)*exp(-57./t(iz))))     ! typo in paper corrected
3139!        k1b0 = 1.17E-19*t(iz)**(2.053)*exp(139./t(iz))          &
3140!             + 9.56E-12*t(iz)**(-0.664)*exp(-167./t(iz))
3141!        k1ainf = 1.52E-17*t(iz)**(1.858)*exp(28.8/t(iz))        &
3142!               + 4.78E-8*t(iz)**(-1.851)*exp(-318./t(iz))
3143!        x = k1a0/(k1ainf - k1b0)
3144!        y = k1b0/(k1ainf - k1b0)
3145!        fc = 0.628*exp(-1223./t(iz)) + (1. - 0.628)*exp(-39./t(iz))  &
3146!           + exp(-t(iz)/255.)
3147!        fx = fc**(1./(1. + (alog(x))**2))                       ! typo in paper corrected
3148!        k1a = k1a0*((1. + y)/(1. + x))*fx
3149!        k1b = k1b0*(1./(1.+x))*fx
3150!        e001(iz) = k1a + k1b
3151!     end do
3152
3153!     jpl 2019
3154
3155      do iz = 1,nz
3156
3157!       association
3158
3159        k0 = 2.5*6.9e-33*(398./t(iz))**(2.1)
3160        kinf = 1.1e-12*(298./t(iz))**(-1.3)
3161
3162        kf = (kinf*k0*conc(iz)/(kinf + k0*conc(iz))) &
3163             *0.6**(1. + (log10(k0*conc(iz)/kinf))**2.)**(-1.0)
3164
3165!       chemical activation
3166
3167        kint = 1.85e-13*exp(-65/t(iz))
3168
3169        kca = kint*(1. - kf/kinf)
3170
3171!       total : association + chemical activation
3172
3173        e001(iz) = kf + kca
3174
3175      end do
3176
3177      nb_reaction_4 = nb_reaction_4 + 1
3178      v_4(:,nb_reaction_4) = e001(:)
3179
3180!---  e002: o + co + m -> co2 + m
3181
3182!     tsang and hampson, 1986.
3183
3184      e002(:) = 2.5*6.5E-33*exp(-2184./t(:))*conc(:)
3185
3186      nb_reaction_4 = nb_reaction_4 + 1
3187      v_4(:,nb_reaction_4) = e002(:)
3188
3189!----------------------------------------------------------------------
3190!        reactions des composes chlores
3191!----------------------------------------------------------------------
3192
3193!---  f001: hcl + o(1d) -> oh + cl
3194
3195!     jpl 2011
3196
3197      f001(:) = 1.0E-10
3198
3199      nb_reaction_4 = nb_reaction_4 + 1
3200      v_4(:,nb_reaction_4) = f001(:)
3201
3202!---  f002: hcl + o(1d) -> h + clo
3203
3204!     jpl 2011
3205
3206      f002(:) = 3.6E-11
3207     
3208      nb_reaction_4 = nb_reaction_4 + 1
3209      v_4(:,nb_reaction_4) = f002(:)
3210
3211!---  f003: hcl + o -> oh + cl
3212
3213!     jpl 2006
3214
3215      f003(:) = 1.0E-11*exp(-3300./t(:))
3216
3217      nb_reaction_4 = nb_reaction_4 + 1
3218      v_4(:,nb_reaction_4) = f003(:)
3219
3220!---  f004: hcl + oh -> h2o + cl
3221
3222!     jpl 2009
3223
3224      f004(:) = 1.8E-12*exp(-250./t(:))
3225
3226      nb_reaction_4 = nb_reaction_4 + 1
3227      v_4(:,nb_reaction_4) = f004(:)
3228
3229!---  f005: clo + o -> cl + o2
3230
3231!     jpl 2006
3232
3233      f005(:) = 2.8E-11*exp(85./t(:))
3234
3235      nb_reaction_4 = nb_reaction_4 + 1
3236      v_4(:,nb_reaction_4) = f005(:)
3237
3238!---  f006: clo + oh -> cl + ho2
3239
3240!     jpl 2006
3241
3242      f006(:) = 7.4E-12*exp(270./t(:))
3243
3244      nb_reaction_4 = nb_reaction_4 + 1
3245      v_4(:,nb_reaction_4) = f006(:)
3246
3247!---  f007: clo + oh -> hcl + o2
3248
3249!     jpl 2006
3250
3251      f007(:) = 6.0E-13*exp(230./t(:))
3252
3253      nb_reaction_4 = nb_reaction_4 + 1
3254      v_4(:,nb_reaction_4) = f007(:)
3255
3256!---  f008: cl + h2 -> hcl + h
3257
3258!     jpl 2006
3259
3260      f008(:) = 3.05E-11*exp(-2270./t(:))
3261
3262      nb_reaction_4 = nb_reaction_4 + 1
3263      v_4(:,nb_reaction_4) = f008(:)
3264
3265!---  f009: cl + o3 -> clo + o2
3266
3267!     jpl 2006
3268
3269      f009(:) = 2.3E-11*exp(-200./t(:))
3270
3271      nb_reaction_4 = nb_reaction_4 + 1
3272      v_4(:,nb_reaction_4) = f009(:)
3273
3274!---  f010: cl + ho2 -> clo + oh
3275
3276!     jpl 2009
3277
3278      f010(:) = 3.6E-11*exp(-375./t(:))
3279     
3280      nb_reaction_4 = nb_reaction_4 + 1
3281      v_4(:,nb_reaction_4) = f010(:)
3282
3283!---  f011: cl + ho2 -> hcl + o2
3284
3285!     jpl 2009
3286
3287      f011(:) = 1.4E-11*exp(270./t(:))
3288
3289      nb_reaction_4 = nb_reaction_4 + 1
3290      v_4(:,nb_reaction_4) = f011(:)
3291
3292!---  f012: cl + h2o2 -> hcl + ho2
3293
3294!     jpl 2006
3295
3296      f012(:) = 1.1E-11*exp(-980./t(:))
3297
3298      nb_reaction_4 = nb_reaction_4 + 1
3299      v_4(:,nb_reaction_4) = f012(:)
3300
3301!---  f013: cl + co + co2 -> clco + co2
3302
3303!     jpl 2011 + nicovich et al., j. phys. chem., 1990
3304
3305      f013(:) = 3.2*1.3E-33*(t(:)/300.)**(-3.8)*conc(:)
3306
3307      nb_reaction_4 = nb_reaction_4 + 1
3308      v_4(:,nb_reaction_4) = f013(:)
3309
3310!---  f014: clco + co2 -> cl + co + co2
3311
3312!     jpl 2011
3313
3314!     deq(:) = 3.2*3.5E-25*exp(3730./t(:))
3315
3316!     mills, 1998
3317
3318      deq(:) = 1.6E-25*exp(4000./t(:))
3319
3320      f014(:) = f013(:)/(deq(:)*conc(:))
3321
3322      nb_phot = nb_phot + 1
3323      v_phot(:,nb_phot) = f014(:)*conc(:)
3324
3325!     do iz = 1, nz
3326!     print*, z(iz), t(iz), f013(iz), f014(iz), v_phot(iz,nb_phot)
3327!     end do
3328!     stop
3329
3330!---  f015: clco + o2 + m -> clco3 + m
3331
3332!     yung and demore, icarus, 51, 199-247, 1982.
3333
3334      f015(:) = 5.7E-15*exp(500./t(:))*conc(:)   &
3335               /(1.e17 + 0.05*conc(:))
3336
3337      nb_reaction_4 = nb_reaction_4 + 1
3338      v_4(:,nb_reaction_4) = f015(:)
3339
3340!---  f016: clco3 + cl -> cl + clo + co2
3341
3342!     yung and demore, icarus, 51, 199-247, 1982.
3343
3344!     decomposee en :
3345!     0.5 clco3 + 0.5 cl -> cl + 0.5 co2
3346!     0.5 clco3 + 0.5 cl -> clo + 0.5 co2
3347
3348      f016(:) = 1.0E-11
3349
3350      nb_reaction_4 = nb_reaction_4 + 1
3351      v_4(:,nb_reaction_4) = f016(:)
3352
3353      nb_reaction_4 = nb_reaction_4 + 1
3354      v_4(:,nb_reaction_4) = f016(:)
3355
3356!---  f017: clco3 + o -> cl + o2 + co2
3357
3358!     yung and demore, icarus, 51, 199-247, 1982.
3359
3360!     decomposee en :
3361!     0.5 clco3 + 0.5 o -> cl
3362!     0.5 clco3 + 0.5 o -> o2 + co2
3363
3364      f017(:) = 1.0E-11
3365
3366      nb_reaction_4 = nb_reaction_4 + 1
3367      v_4(:,nb_reaction_4) = f017(:)
3368
3369      nb_reaction_4 = nb_reaction_4 + 1
3370      v_4(:,nb_reaction_4) = f017(:)
3371
3372!---  f018: clo + ho2  -> hocl + o2
3373
3374!     jpl 2019
3375
3376      f018(:) = 2.6E-12*exp(290./t(:))
3377
3378      nb_reaction_4 = nb_reaction_4 + 1
3379      v_4(:,nb_reaction_4) = f018(:)
3380
3381!---  f019: oh + hocl -> h2o + clo
3382
3383      f019(:) = 3.0E-12*exp(-500./t(:))
3384
3385      nb_reaction_4 = nb_reaction_4 + 1
3386      v_4(:,nb_reaction_4) = f019(:)
3387
3388!---  f020: o + hocl -> oh + clo
3389
3390      f020(:) = 1.7E-13
3391
3392      nb_reaction_4 = nb_reaction_4 + 1
3393      v_4(:,nb_reaction_4) = f020(:)
3394
3395!---  f021: cl + cl + co2 -> cl2 + co2
3396
3397!     donohoue et al., j. phys. chem. a, 109, 7732-7741, 2005
3398
3399!     f021(:) = 2.5*8.4E-33*exp(850.*(1./t(:) - 1./298.))*conc(:)
3400
3401!     valeur utilisee par Zhang et al., 2011:
3402
3403      f021(:) = 2.6E-33*exp(900./t(:))*conc(:)
3404
3405      nb_reaction_3 = nb_reaction_3 + 1
3406      v_3(:,nb_reaction_3) = f021(:)
3407
3408!---  f022: clco + o -> cl + co2
3409
3410!     yung et al., icarus, 1982 (estimated)
3411
3412      f022(:) = 3.0E-11
3413
3414      nb_reaction_4 = nb_reaction_4 + 1
3415      v_4(:,nb_reaction_4) = f022(:)
3416
3417!---  f023: cl2 + o(1d) -> cl + clo
3418
3419!     jpl 2011
3420
3421      f023(:) = 2.0E-10
3422
3423      nb_reaction_4 = nb_reaction_4 + 1
3424      v_4(:,nb_reaction_4) = f023(:)
3425
3426!---  f024: cl2 + h  -> hcl + cl
3427
3428!     baulch et al., j. phys. chem. ref. data, 1981
3429
3430      f024(:) = 1.43E-10*exp(-591./t(:))
3431
3432      nb_reaction_4 = nb_reaction_4 + 1
3433      v_4(:,nb_reaction_4) = f024(:)
3434
3435!---  f025: cl + clco  -> cl2 + co
3436
3437!     baulch et al., j. phys. chem. ref. data, 1981
3438
3439      f025(:) = 2.16E-9*exp(-1670./t(:))
3440
3441      nb_reaction_4 = nb_reaction_4 + 1
3442      v_4(:,nb_reaction_4) = f025(:)
3443
3444!---  f026: clco + clco  -> cocl2 + co
3445
3446!     zhang et al., icarus, 2011 (estimated)
3447
3448      f026(:) = 5.0E-11
3449
3450      nb_reaction_3 = nb_reaction_3 + 1
3451      v_3(:,nb_reaction_3) = f026(:)
3452
3453!---  f027: cl + so2 + co2  -> clso2 + co2
3454
3455!     mills, phd, 1998
3456
3457      f027(:) = 1.3E-34*exp(940./t(:))*conc(:)
3458
3459      nb_reaction_4 = nb_reaction_4 + 1
3460      v_4(:,nb_reaction_4) = f027(:)
3461
3462!---  f028: clso2 + o  -> so2 + clo
3463
3464!     mills, phd, 1998
3465
3466      f028(:) = 1.0E-11
3467
3468      nb_reaction_4 = nb_reaction_4 + 1
3469      v_4(:,nb_reaction_4) = f028(:)
3470
3471!---  f029: clso2 + h  -> so2 + hcl
3472
3473!     mills, phd, 1998
3474
3475      f029(:) = 1.0E-11
3476
3477      nb_reaction_4 = nb_reaction_4 + 1
3478      v_4(:,nb_reaction_4) = f029(:)
3479
3480!---  f030: clso2 + clso2  -> cl2 + so2 + so2
3481
3482!     moses et al. 2002
3483
3484      f030(:) = 5.0E-13
3485
3486      nb_reaction_3 = nb_reaction_3 + 1
3487      v_3(:,nb_reaction_3) = f030(:)
3488
3489!---  f031: cl + o + co2  -> clo + co2
3490
3491!     yung and demore, 1999 (estimated)
3492
3493      f031(:) = 5.0E-32*conc(:)
3494
3495      nb_reaction_4 = nb_reaction_4 + 1
3496      v_4(:,nb_reaction_4) = f031(:)
3497
3498!---  f032: cl2 + o -> clo + cl
3499
3500!     mills, phd, 1998
3501
3502      f032(:) = 7.4E-12*exp(-1650./t(:))
3503
3504      nb_reaction_4 = nb_reaction_4 + 1
3505      v_4(:,nb_reaction_4) = f032(:)
3506
3507!---  f033: clco + oh -> hocl + co
3508
3509!     mills, phd, 1998
3510
3511      f033(:) = 1.5E-10
3512
3513      nb_reaction_4 = nb_reaction_4 + 1
3514      v_4(:,nb_reaction_4) = f033(:)
3515
3516!---  f034: cl2 + oh -> cl + hocl
3517
3518!     jpl 2011
3519
3520      f034(:) = 2.6E-12*exp(-1100./t(:))
3521
3522      nb_reaction_4 = nb_reaction_4 + 1
3523      v_4(:,nb_reaction_4) = f034(:)
3524
3525!---  f035: clco + o -> co + clo
3526
3527!     yung and demore, 1982
3528
3529      f035(:) = 3.0E-12
3530
3531      nb_reaction_4 = nb_reaction_4 + 1
3532      v_4(:,nb_reaction_4) = f035(:)
3533
3534!---  f036: clco + cl2 -> cocl2 + cl
3535
3536!     ohta, bull. chem. soc. jpn., 1983
3537
3538      f036(:) = 6.45E-2*f015(:)
3539
3540      nb_reaction_4 = nb_reaction_4 + 1
3541      v_4(:,nb_reaction_4) = f036(:)
3542
3543!---  f037: hcl + h -> h2 + cl
3544
3545!     mills, phd, 1998
3546
3547      f037(:) = 1.5E-11*exp(-1750./t(:))
3548
3549      nb_reaction_4 = nb_reaction_4 + 1
3550      v_4(:,nb_reaction_4) = f037(:)
3551
3552!---  f038: clco + h -> hcl + co
3553
3554!     yung and demore, 1982
3555
3556      f038(:) = 1.0E-11
3557
3558      nb_reaction_4 = nb_reaction_4 + 1
3559      v_4(:,nb_reaction_4) = f038(:)
3560
3561!---  f039: cl + h + m -> hcl + m
3562
3563!     yung and demore, 1982 (estimate)
3564
3565      f039(:) = 1.0E-32*conc(:)
3566
3567      nb_reaction_4 = nb_reaction_4 + 1
3568      v_4(:,nb_reaction_4) = f039(:)
3569
3570!----------------------------------------------------------------------
3571!        reactions des composes soufres
3572!----------------------------------------------------------------------
3573
3574!---  g001: s + o2 -> so + o
3575
3576!     jpl 2015
3577
3578      g001(:) = 1.6E-12*exp(100./t(:))
3579
3580      nb_reaction_4 = nb_reaction_4 + 1
3581      v_4(:,nb_reaction_4) = g001(:)
3582
3583!---  g002: s + o3 -> so + o2
3584
3585!     jpl 2015
3586
3587      g002(:) = 1.2E-11
3588
3589      nb_reaction_4 = nb_reaction_4 + 1
3590      v_4(:,nb_reaction_4) = g002(:)
3591
3592!---  g003: so + o2 -> so2 + o
3593
3594!     jpl 2015
3595
3596      g003(:) = 1.6E-13*exp(-2280./t(:))
3597
3598      nb_reaction_4 = nb_reaction_4 + 1
3599      v_4(:,nb_reaction_4) = g003(:)
3600
3601!---  g004: so + o3 -> so2 + o2
3602
3603!     jpl 2015
3604
3605      g004(:) = 3.4E-12*exp(-1100./t(:))
3606
3607      nb_reaction_4 = nb_reaction_4 + 1
3608      v_4(:,nb_reaction_4) = g004(:)
3609
3610!---  g005: so + oh -> so2 + h
3611
3612!     jpl 2019
3613
3614      g005(:) = 2.6E-11*exp(330./t(:))
3615
3616      nb_reaction_4 = nb_reaction_4 + 1
3617      v_4(:,nb_reaction_4) = g005(:)
3618
3619!---  g006: s + oh -> so + h
3620
3621!     jpl 2015
3622
3623      g006(:) = 6.6E-11
3624
3625      nb_reaction_4 = nb_reaction_4 + 1
3626      v_4(:,nb_reaction_4) = g006(:)
3627
3628!---  g007: so + o + co2 -> so2 + co2
3629
3630!     singleton and cvetanovic, j. phys. chem. ref. data, 1988
3631!     measured with co2 as third body
3632
3633      do iz = 1,nz
3634         ak0 = 4.2E-30
3635         ak1 = 5.3E-11
3636
3637         rate = (ak0*conc(iz))/(1. + ak0*conc(iz)/ak1)
3638         xpo = 1./(1. + alog10((ak0*conc(iz))/ak1)**2)
3639         g007(iz) = rate*0.6**xpo
3640      end do
3641
3642      nb_reaction_4 = nb_reaction_4 + 1
3643      v_4(:,nb_reaction_4) = g007(:)
3644
3645!---  g008: so + ho2 -> so2 + oh
3646
3647      g008(:) = 2.8E-11
3648
3649      nb_reaction_4 = nb_reaction_4 + 1
3650      v_4(:,nb_reaction_4) = g008(:)
3651
3652!---  g009: so2 + o + co2 -> so3 + co2
3653
3654!     Naidoo et al., Proceedings of the Combustion Institute,
3655!                    30, 1219-1225, 2005
3656!     Also recommended by jpl 2019 with a simpler expression (fc = 0.6)
3657!
3658!     Factor of 5 for third-body efficiency of co2 to be confirmed!
3659
3660      do iz = 1,nz
3661         ak0 = 5.*9.5e-23*(t(iz)**(-3.0))*exp(-2400./t(iz))
3662         ak1 = 6.1e-13*exp(-850./t(iz))
3663         rate = (ak0*conc(iz))/(1. + ak0*conc(iz)/ak1)
3664         xpo = 1./(1. + alog10((ak0*conc(iz))/ak1)**2)
3665         fc = 0.558*exp(-t(iz)/316.) + 0.442*exp(-t(iz)/7442.)
3666         g009(iz) = rate*fc**xpo
3667      end do
3668
3669      nb_reaction_4 = nb_reaction_4 + 1
3670      v_4(:,nb_reaction_4) = g009(:)
3671
3672!---  g010: s + o + co2 -> so + co2
3673
3674!     zhang et al., icarus, 2011
3675
3676      g010(:) = 1.5E-34*exp(900./t(:))*conc(:)
3677
3678      nb_reaction_4 = nb_reaction_4 + 1
3679      v_4(:,nb_reaction_4) = g010(:)
3680
3681!---  g011: so3 + h2o + M -> h2so4 + M
3682!---  avec M = h2o
3683
3684      DO iz=1,nz
3685!     jpl 2011
3686!      g011(:) = 8.5E-21*exp(6540./t(:))*c(:,i_h2o)
3687      g011(iz) = 2.26E-23*MAX(t(iz),100.)*exp(6540./MAX(t(iz),100.)) &
3688                *c(iz,i_h2o)
3689      g011(iz) = g011(iz)*1.0E-20
3690!      g011(:) = 0. ! SANS H2SO4
3691      ENDDO
3692
3693      nb_reaction_4 = nb_reaction_4 + 1
3694      v_4(:,nb_reaction_4) = g011(:)
3695
3696!---  g012: so + clo -> so2 + cl
3697
3698!     jpl 2011
3699
3700      g012(:) = 2.8E-11
3701
3702      nb_reaction_4 = nb_reaction_4 + 1
3703      v_4(:,nb_reaction_4) = g012(:)
3704
3705!---  g013: so + so3 -> so2 + so2
3706
3707!     chung et al., int. j. chem. kinet., 1975
3708
3709      g013(:) = 2.0E-15
3710
3711      nb_reaction_4 = nb_reaction_4 + 1
3712      v_4(:,nb_reaction_4) = g013(:)
3713
3714!---  g014: so3 + o -> so2 + o2
3715
3716!     jacob and winkler, j. chem. soc. faraday trans. 1, 1972
3717
3718      g014(:) = 2.32E-16*exp(-487./t(:))
3719
3720      nb_reaction_4 = nb_reaction_4 + 1
3721      v_4(:,nb_reaction_4) = g014(:)
3722
3723!---  g015: so + so + co2 -> s2o2 + co2
3724
3725!     herron and huie, chem. phys. lett., 1980.
3726
3727      do iz = 1,nz
3728         ak0 = 2.5*4.4E-31
3729         ak1 = 1.0E-11
3730
3731         rate = (ak0*conc(iz))/(1. + ak0*conc(iz)/ak1)
3732         xpo = 1./(1. + alog10((ak0*conc(iz))/ak1)**2)
3733         g015(iz) = rate*0.6**xpo
3734      end do
3735
3736      nb_reaction_3 = nb_reaction_3 + 1
3737      v_3(:,nb_reaction_3) = g015(:)
3738
3739!---  g016: s2o2 + co2 -> so + so + co2
3740
3741!     mills, phd, 1998
3742
3743      deq(:) = 2.5*1.0E-28*exp(6000./t(:))
3744
3745      g016(:) = g015(:)/(deq(:)*conc(:))
3746
3747      nb_phot = nb_phot + 1
3748      v_phot(:,nb_phot) = g016(:)*conc(:)
3749
3750!---  g017: clco3 + so -> cl + so2 + co2
3751
3752!     mills, phd, 1998
3753
3754!     decomposee en :
3755!     0.5 clco3 + 0.5 so -> cl
3756!     0.5 clco3 + 0.5 so -> so2 + co2
3757
3758      g017(:) = 1.0E-11
3759
3760      nb_reaction_4 = nb_reaction_4 + 1
3761      v_4(:,nb_reaction_4) = g017(:)
3762
3763      nb_reaction_4 = nb_reaction_4 + 1
3764      v_4(:,nb_reaction_4) = g017(:)
3765
3766!---  g018: s + co + co2 -> ocs + co2
3767
3768!     zhang et al., icarus, 2011 (estimate?)
3769
3770      g018(:) = 2.5*4.0E-33*exp(-1940./t(:))*conc(:)
3771     
3772!      g018(:) = 0.0E+0
3773
3774      nb_reaction_4 = nb_reaction_4 + 1
3775      v_4(:,nb_reaction_4) = g018(:)
3776
3777!---  g019: clco + s -> ocs + cl
3778
3779!     zhang et al., icarus, 2011
3780
3781      g019(:) = 3.0E-12
3782
3783!      g019(:) = 0.0E+0
3784
3785      nb_reaction_4 = nb_reaction_4 + 1
3786      v_4(:,nb_reaction_4) = g019(:)
3787
3788!---  g020: so2 + oh + co2 -> hso3 + co2
3789
3790!     jpl 2011
3791
3792      do iz = 1,nz
3793         ak0 = 2.5*3.3E-31*(t(iz)/300.)**(-4.3)
3794         ak1 = 1.6E-12
3795
3796         rate = (ak0*conc(iz))/(1. + ak0*conc(iz)/ak1)
3797         xpo = 1./(1. + alog10((ak0*conc(iz))/ak1)**2)
3798         g020(iz) = rate*0.6**xpo
3799      end do
3800
3801      nb_reaction_4 = nb_reaction_4 + 1
3802      v_4(:,nb_reaction_4) = g020(:)
3803
3804!---  g021: hso3 + o2 -> ho2 + so3
3805
3806!     jpl 2011
3807
3808      g021(:) = 1.3E-12*exp(-330./t(:))
3809
3810      nb_reaction_4 = nb_reaction_4 + 1
3811      v_4(:,nb_reaction_4) = g021(:)
3812
3813!---  g022: s + s + co2 -> s2 + co2
3814
3815!     nicholas et al., j. chem. soc. faraday trans. 1, 1979
3816
3817      do iz = 1,nz
3818         ak0 = 1.19E-29
3819         ak1 = 1.0E-10
3820
3821         rate = (ak0*conc(iz))/(1. + ak0*conc(iz)/ak1)
3822         xpo = 1./(1. + alog10((ak0*conc(iz))/ak1)**2)
3823         g022(iz) = rate*0.6**xpo
3824      end do
3825
3826      nb_reaction_3 = nb_reaction_3 + 1
3827      v_3(:,nb_reaction_3) = g022(:)
3828
3829
3830!---  g023: s2 + o -> so + s
3831
3832!     zhang et al., icarus, 2011
3833
3834      g023(:) = 2.2E-11*exp(-84./t(:))
3835
3836      nb_reaction_4 = nb_reaction_4 + 1
3837      v_4(:,nb_reaction_4) = g023(:)
3838
3839!---  g024: s + ocs -> s2 +  co
3840
3841!     lu et al., j. chem. phys., 2006
3842
3843      g024(:) = 6.63E-20*(t(:)**2.57)*exp(-1180./t(:))
3844     
3845!      g025(:) = 0.0E+0
3846
3847      nb_reaction_4 = nb_reaction_4 + 1
3848      v_4(:,nb_reaction_4) = g024(:)
3849
3850!---  g025: ocs + o -> so + co
3851
3852!     atkinson et al., 2004
3853
3854      g025(:) = 1.60E-11*exp(-2150./t(:))
3855
3856      nb_reaction_4 = nb_reaction_4 + 1
3857      v_4(:,nb_reaction_4) = g025(:)
3858
3859!---  g026: s + so3 -> so2 +  so
3860
3861!     moses et al., 2002
3862
3863      g026(:) = 1.0E-16
3864
3865      nb_reaction_4 = nb_reaction_4 + 1
3866      v_4(:,nb_reaction_4) = g026(:)
3867
3868!---  g027: s + ho2 -> so +  oh
3869
3870!     yung and demore, 1982
3871
3872      g027(:) = 3.0E-11*exp(200./t(:))
3873
3874      nb_reaction_4 = nb_reaction_4 + 1
3875      v_4(:,nb_reaction_4) = g027(:)
3876
3877!---  g028: s + clo -> so +  cl
3878
3879!     moses et al., 2002
3880
3881      g028(:) = 4.0E-11
3882
3883      nb_reaction_4 = nb_reaction_4 + 1
3884      v_4(:,nb_reaction_4) = g028(:)
3885
3886!---  g029: h2so4 + h2o -> so3 + h2o + h2o
3887
3888!     krasnopolsky , 2007
3889
3890      g029(:) = 7.0E-14*exp(-5170./t(:))
3891
3892!      g030(:) = g011(:)/(deq(:)*c(:,i_h2o))
3893!      g030(:) = 0.0E+0
3894
3895      nb_phot = nb_phot + 1
3896      v_phot(:,nb_phot) = g029(:)*c(:,i_h2o)
3897 !     v_phot(:,nb_phot) = 0.0E+0
3898     
3899!---  g030: so3 + ocs -> s2o2 +  co2
3900
3901!     krasnopolsky , 2007
3902
3903      g030(:) = 1.0E-11*exp(-10000./t(:))
3904!      g031(:) = 0.0E+0
3905     
3906      nb_reaction_4 = nb_reaction_4 + 1
3907      v_4(:,nb_reaction_4) = g030(:)
3908     
3909!---  g031: s2o2 + ocs -> co + so2 + s2
3910
3911!       decomposee en
3912!       0.5 s2o2 + 0.5 ocs -> co
3913!       0.5 s2o2 + 0.5 ocs -> so2 + s2
3914
3915!     krasnopolsky , 2007
3916
3917      g031(:) = 1.0E-20
3918!      g032(:) = 0.0E+0
3919     
3920      nb_reaction_4 = nb_reaction_4 + 1
3921      v_4(:,nb_reaction_4) = g031(:)
3922     
3923      nb_reaction_4 = nb_reaction_4 + 1
3924      v_4(:,nb_reaction_4) = g031(:)
3925
3926!      g032: so + so -> so2 + s
3927!  Krasnopolsky 2012 from Martinez & Heron 1983 or Moses et al 2002
3928
3929!      g032(:) = 3.5E-15
3930      g032(:) =1.0E-12*exp(-1700.0/t(:))
3931     
3932      nb_reaction_3 = nb_reaction_3 + 1
3933      v_3(:,nb_reaction_3) = g032(:)
3934           
3935!----------------------------------------------------------------------
3936!     heterogeneous chemistry
3937!----------------------------------------------------------------------
3938
3939      if (hetero_ice) then
3940
3941!        k = (surface*v*gamma)/4 (s-1)
3942!        v = 100*sqrt(8rt/(pi*m))  (cm s-1)
3943 
3944!---     h001: ho2 + ice -> products
3945 
3946!        cooper and abbatt, 1996: gamma = 0.025
3947     
3948         gam = 0.025
3949         h001(:) = surfice1d(:)*1.E-8       &
3950                   *100.*sqrt(8.*8.31*t(:)/(33.E-3*pi))*gam/4.
3951 
3952!        h002: oh + ice -> products
3953 
3954!        cooper and abbatt, 1996: gamma = 0.03
3955 
3956         gam = 0.03
3957         h002(:) = surfice1d(:)*1.E-8       &
3958                   *100.*sqrt(8.*8.31*t(:)/(17.E-3*pi))*gam/4.
3959
3960!---     h003: h2o2 + ice -> products
3961 
3962!        gamma = 0.    test value
3963 
3964         gam = 0.
3965         h003(:) = surfice1d(:)*1.E-8        &
3966                   *100.*sqrt(8.*8.31*t(:)/(34.E-3*pi))*gam/4.
3967      else
3968         h001(:) = 0.
3969         h002(:) = 0.
3970         h003(:) = 0.
3971      end if
3972
3973      nb_phot = nb_phot + 1
3974      v_phot(:,nb_phot) = h001(:)
3975
3976      nb_phot = nb_phot + 1
3977      v_phot(:,nb_phot) = h002(:)
3978
3979      nb_phot = nb_phot + 1
3980      v_phot(:,nb_phot) = h003(:)
3981
3982!     do iz = 1,nz
3983!        print*, z(iz), surfice1d(iz), h001(iz), h002(iz)
3984!     end do
3985!     stop
3986
3987!     print*, 'krates : nb_phot       = ', nb_phot
3988!     print*, 'krates : nb_reaction_4 = ', nb_reaction_4
3989!     print*, 'krates : nb_reaction_3 = ', nb_reaction_3
3990!     stop
3991
3992!----------------------------------------------------------------------
3993!     ionospheric reactions
3994!     only if ok_ionchem=true
3995!----------------------------------------------------------------------
3996
3997      if (ok_ionchem) then
3998
3999!---     i001: co2+ + o2 -> o2+ + co2
4000
4001!        aninich, j. phys. chem. ref. data 1993
4002
4003         i001(:) = 5.5e-11*(300./t_elect(:))**0.5
4004
4005         nb_reaction_4 = nb_reaction_4 + 1
4006         v_4(:,nb_reaction_4) = i001(:)
4007
4008!---     i002: co2+ + o -> o+ + co2
4009
4010!        UMIST database
4011
4012         i002(:) = 9.6e-11
4013     
4014         nb_reaction_4 = nb_reaction_4 + 1
4015         v_4(:,nb_reaction_4) = i002(:)
4016
4017!---     i003: co2+ + o -> o2+ + co
4018
4019!        UMIST database
4020
4021         i003(:) = 1.64e-10
4022
4023         nb_reaction_4 = nb_reaction_4 + 1
4024         v_4(:,nb_reaction_4) = i003(:)
4025
4026!---     i004: o2+ + e- -> o + o
4027
4028!        Alge et al., J. Phys. B, At. Mol. Phys. 1983
4029         !i004(:) = 2.0e-7*(300./t_elect(:))**0.7
4030         
4031         do iz = 1,nz
4032           if (t_elect(iz)<1200.) then
4033             i004(iz) = 2.0e-7*(300./t_elect(iz))**0.7
4034           else
4035             i004(iz) = 7.4e-8*(1200./t_elect(iz))**0.56
4036           end if
4037         end do
4038
4039         nb_reaction_4 = nb_reaction_4 + 1
4040         v_4(:,nb_reaction_4) = i004(:)
4041
4042!---     i005: o+ + co2 -> o2+ + co
4043
4044!        UMIST database
4045
4046         i005(:) = 9.4e-10
4047
4048         nb_reaction_4 = nb_reaction_4 + 1
4049         v_4(:,nb_reaction_4) = i005(:)
4050
4051
4052!---     i006: co2+ + e- -> co + o
4053
4054!        UMIST database
4055
4056         i006(:) = 3.8e-7*(300./t_elect(:))**0.5
4057
4058         nb_reaction_4 = nb_reaction_4 + 1
4059         v_4(:,nb_reaction_4) = i006(:)
4060
4061
4062!---     i007: co2+ + no -> no+ + co2
4063
4064!        UMIST database
4065
4066         i007(:) = 1.2e-10
4067
4068         nb_reaction_4 = nb_reaction_4 + 1
4069         v_4(:,nb_reaction_4) = i007(:)
4070
4071!---     i008: o2+ + no -> no+ + o2
4072
4073!        UMIST database
4074
4075         i008(:) = 4.6e-10
4076
4077         nb_reaction_4 = nb_reaction_4 + 1
4078         v_4(:,nb_reaction_4) = i008(:)
4079
4080!---     i009: o2+ + n2 -> no+ + no
4081     
4082!        Fox & Sung 2001
4083
4084         i009(:) = 1.0e-15
4085     
4086         nb_reaction_4 = nb_reaction_4 + 1
4087         v_4(:,nb_reaction_4) = i009(:)
4088
4089!---     i010: o2+ + n -> no+ + o
4090
4091!        Fox & Sung 2001
4092
4093         i010(:) = 1.0e-10
4094
4095         nb_reaction_4 = nb_reaction_4 + 1
4096         v_4(:,nb_reaction_4) = i010(:)
4097
4098!---     i011: o+ + n2 -> no+ + n
4099
4100!        Fox & Sung 2001
4101
4102         i011(:) = 1.2e-12 * (300./t_elect(:))**0.45
4103
4104         nb_reaction_4 = nb_reaction_4 + 1
4105         v_4(:,nb_reaction_4) = i011(:)
4106
4107!---     i012: no+ + e -> n + o
4108
4109!        UMIST database
4110
4111         i012(:) = 4.3e-7*(300./t_elect(:))**0.37
4112
4113         nb_reaction_4 = nb_reaction_4 + 1
4114         v_4(:,nb_reaction_4) = i012(:)
4115
4116
4117!---     i013: co+ + co2 -> co2+ + co
4118
4119!        UMIST database
4120
4121         i013(:) = 1.0e-9
4122
4123         nb_reaction_4 = nb_reaction_4 + 1
4124         v_4(:,nb_reaction_4) = i013(:)
4125
4126
4127!---     i014: co+ + o -> o+ + co
4128
4129!        UMIST database
4130
4131         i014(:) = 1.4e-10
4132
4133         nb_reaction_4 = nb_reaction_4 + 1
4134         v_4(:,nb_reaction_4) = i014(:)
4135
4136!---     i015: c+ + co2 -> co+ + co
4137
4138!        UMIST database
4139
4140         i015(:) = 1.1e-9
4141
4142         nb_reaction_4 = nb_reaction_4 + 1
4143         v_4(:,nb_reaction_4) = i015(:)
4144
4145
4146!---     i016: N2+ + co2 -> co2+ + N2
4147
4148!        Fox & Song 2001
4149
4150         i016(:) = 9.0e-10*(300./t_elect(:))**0.23
4151
4152         nb_reaction_4 = nb_reaction_4 + 1
4153         v_4(:,nb_reaction_4) = i016(:)
4154
4155
4156!---     i017: N2+ + o -> no+ + N
4157
4158!        Fox & Song 2001
4159
4160         i017(:) = 1.33e-10*(300./t_elect(:))**0.44
4161
4162         nb_reaction_4 = nb_reaction_4 + 1
4163         v_4(:,nb_reaction_4) = i017(:)
4164
4165!---     i018: N2+ + co -> co+ + N2
4166
4167!        UMIST
4168
4169         i018(:) = 7.4e-11
4170
4171         nb_reaction_4 = nb_reaction_4 + 1
4172         v_4(:,nb_reaction_4) = i018(:)
4173
4174!---     i019: N2+ + e -> N + N
4175
4176!        UMIST
4177
4178         i019(:) = 1.7e-7*(300./t_elect(:))**0.3
4179
4180         nb_reaction_4 = nb_reaction_4 + 1
4181         v_4(:,nb_reaction_4) = i019(:)
4182
4183!---     i020: N2+ + o -> o+ + N2
4184
4185!        Fox & Song 2001
4186
4187         i020(:) = 7.0e-12*(300./t_elect(:))**0.23
4188
4189         nb_reaction_4 = nb_reaction_4 + 1
4190         v_4(:,nb_reaction_4) = i020(:)
4191
4192!---     i021: N+ + co2 -> co2+ + N
4193
4194!        UMIST
4195
4196         i021(:) = 7.5e-10
4197
4198         nb_reaction_4 = nb_reaction_4 + 1
4199         v_4(:,nb_reaction_4) = i021(:)
4200
4201!---     i022: CO+ + H -> H+ + CO
4202
4203!        Fox & Sung 2001
4204
4205         i022(:) = 4.0e-10
4206
4207         nb_reaction_4 = nb_reaction_4 + 1
4208         v_4(:,nb_reaction_4) = i022(:)
4209
4210!---     i023: O+ + H -> H+ + O
4211
4212!        UMIST
4213
4214         i023(:) = 5.66e-10*((t_elect(:)/300.)**0.36)*exp(8.6/t_elect(:))
4215
4216         nb_reaction_4 = nb_reaction_4 + 1
4217         v_4(:,nb_reaction_4) = i023(:)
4218
4219!---     i024: H+ + O -> O+ + H
4220
4221!        UMIST
4222
4223         i024(:) = 6.86e-10*((t_elect(:)/300.)**0.26)*exp(-224.3/t_elect(:))
4224
4225         nb_reaction_4 = nb_reaction_4 + 1
4226         v_4(:,nb_reaction_4) = i024(:)
4227
4228!---     i025: CO+ + H2 -> HCO2+ + H
4229
4230!        UMIST
4231
4232         i025(:) = 9.5e-10
4233
4234         nb_reaction_4 = nb_reaction_4 + 1
4235         v_4(:,nb_reaction_4) = i025(:)
4236
4237!---     i026: HCO2+ + e -> H + CO2
4238
4239!        UMIST
4240
4241         i026(:) = 1.75e-8*((300./t_elect(:))**0.5)
4242
4243         nb_reaction_4 = nb_reaction_4 + 1
4244         v_4(:,nb_reaction_4) = i026(:)
4245
4246!---     i027+i028: HCO2+ + e -> H + O + CO
4247
4248!        UMIST
4249         !Reaction splitted in 2: i027: 0.5 (HCO2+ + e-) -> H
4250         !i028: 0.5 (HCO2+ + e-) -> O + CO
4251
4252         i027(:) = 8.1e-7*((300./t_elect(:))**0.64)
4253
4254         nb_reaction_4 = nb_reaction_4 + 1
4255         v_4(:,nb_reaction_4) = i027(:)
4256
4257         nb_reaction_4 = nb_reaction_4 + 1
4258         v_4(:,nb_reaction_4) = i027(:)
4259
4260!---     i029: HCO2+ + e -> OH + CO
4261
4262!        UMIST
4263
4264         i029(:) = 3.2e-7*((300./t_elect(:))**0.64)
4265
4266         nb_reaction_4 = nb_reaction_4 + 1
4267         v_4(:,nb_reaction_4) = i029(:)
4268
4269!---     i030: HCO2+ + e -> H + CO2
4270
4271         i030(:) = 6.0e-8*((300./t_elect(:))**0.64)
4272         nb_reaction_4 = nb_reaction_4 + 1
4273         v_4(:,nb_reaction_4) = i030(:)
4274
4275!---     i031: HCO2+ + O -> HCO+ + O2
4276
4277!        UMIST
4278
4279         i031(:) = 1.e-9
4280         nb_reaction_4 = nb_reaction_4 + 1
4281         v_4(:,nb_reaction_4) = i031(:)
4282
4283!---     i032: HCO2+ + CO -> HCO+ + CO2
4284
4285!        UMIST, from Prassad & Huntress 1980
4286
4287         i032(:) = 7.8e-10
4288         nb_reaction_4 = nb_reaction_4 + 1
4289         v_4(:,nb_reaction_4) = i032(:)
4290
4291!---     i033: H+ + CO2 -> HCO+ + O
4292
4293!        UMIST, from Smith et al., Int. J. Mass Spectrom. Ion Proc., 117, 457-473(1992)
4294
4295         i033(:) = 3.5e-9
4296         nb_reaction_4 = nb_reaction_4 + 1
4297         v_4(:,nb_reaction_4) = i033(:)
4298
4299
4300!---     i034: CO2+ + H -> HCO+ + O
4301
4302!        Seen in Fox 2015, from Borodi et al., Int. J. Mass Spectrom. 280, 218-225, 2009
4303
4304         i034(:) = 4.5e-10
4305         nb_reaction_4 = nb_reaction_4 + 1
4306         v_4(:,nb_reaction_4) = i034(:)
4307
4308!---     i035: CO+ + H2 -> HCO+ + H
4309
4310         !UMIST, from Scott et al., J. Chem. Phys., 106, 3982-3987(1997)
4311
4312         i035(:) = 7.5e-10
4313         nb_reaction_4 = nb_reaction_4 + 1
4314         v_4(:,nb_reaction_4) = i035(:)
4315
4316!---     i036: HCO+ + e- -> CO + H
4317
4318         !UMIST, from Mitchell, Phys. Rep., 186, 215 (1990)
4319
4320         i036(:) = 2.4e-7 *((300./t_elect(:))**0.69)
4321         nb_reaction_4 = nb_reaction_4 + 1
4322         v_4(:,nb_reaction_4) = i036(:)
4323
4324!---     i037: CO2+ + H2O -> H2O+ + CO2
4325
4326         !UMIST, from Karpas, Z., Anicich, V.G., and Huntress, W.T., Chem. Phys. Lett., 59, 84 (1978)
4327
4328         i037(:) = 2.04e-9 *((300./t_elect(:))**0.5)
4329         nb_reaction_4 = nb_reaction_4 + 1
4330         v_4(:,nb_reaction_4) = i037(:)
4331
4332!---     i038: CO+ + H2O -> H2O+ + CO
4333
4334         !UMIST, from Huntress, W.T., McEwan, M.J., Karpas, Z., and Anicich, V.G., Astrophys. J. Supp. Series, 44, 481 (1980)
4335
4336         i038(:) = 1.72e-9*((300./t_elect(:))**0.5)
4337         nb_reaction_4 = nb_reaction_4 + 1
4338         v_4(:,nb_reaction_4) = i038(:)
4339
4340!---     i039: O+ + H2O -> H2O+ + O
4341
4342         !UMIST, from Adams, N.G., Smith, D., and Paulson, J.F., J. Chem. Phys., 72, 288 (1980); Smith, D., Adams, N.G., and Miller, T.M., J. Chem. Phys.., 69, 308 (1978)
4343
4344         i039(:) = 3.2e-9*((300./t_elect(:))**0.5)
4345         nb_reaction_4 = nb_reaction_4 + 1
4346         v_4(:,nb_reaction_4) = i039(:)
4347
4348!---     i040: N2+ + H2O -> H2O+ + N2
4349
4350         !UMIST, from Adams, N.G., Smith, D., and Paulson, J.F., J. Chem. Phys., 72, 288 (1980); Smith, D., Adams, N.G., and Miller, T.M., J. Chem. Phys.., 69, 308 (1978)
4351
4352         i040(:) = 2.3e-9*((300./t_elect(:))**0.5)
4353         nb_reaction_4 = nb_reaction_4 + 1
4354         v_4(:,nb_reaction_4) = i040(:)
4355
4356!---     i041: N+ + H2O -> H2O+ + N
4357
4358         !UMIST, from Adams, N.G., Smith, D., and Paulson, J.F., J. Chem. Phys., 72, 288 (1980); Smith, D., Adams, N.G., and Miller, T.M., J. Chem. Phys.., 69, 308 (1978)
4359
4360         i041(:) = 2.8e-9*((300./t_elect(:))**0.5)
4361         nb_reaction_4 = nb_reaction_4 + 1
4362         v_4(:,nb_reaction_4) = i041(:)
4363
4364
4365!---     i042: H+ + H2O -> H2O+ + H
4366
4367         !UMIST, from D. Smith, P. Spanel and C. A. Mayhew, Int. J. Mass Spectrom. Ion Proc., 117, 457-473(1992)
4368
4369         i042(:) = 6.9e-9*((300./t_elect(:))**0.5)
4370         nb_reaction_4 = nb_reaction_4 + 1
4371         v_4(:,nb_reaction_4) = i042(:)
4372
4373!---     i043: H2O+ + O2 -> O2+ + H2O
4374
4375         !UMIST, from A. B. Raksit and P. Warneck, J. Chem. Soc. Faraday Trans., 76, 1084-1092(1980)
4376
4377         i043(:) = 4.6e-10
4378         nb_reaction_4 = nb_reaction_4 + 1
4379         v_4(:,nb_reaction_4) = i043(:)
4380
4381!---     i044: H2O+ + CO -> HCO+ + OH
4382
4383         !UMIST, from Jones, J.D.C., Birkinshaw, K., and Twiddy, N.D., Chem. Phys. Lett., 77, 484 (1981)
4384
4385         i044(:) = 5.0e-10
4386         nb_reaction_4 = nb_reaction_4 + 1
4387         v_4(:,nb_reaction_4) = i044(:)
4388
4389!---     i045: H2O+ + O -> O2+ + H2
4390
4391         !UMIST, from Viggiano, A.A, Howarka, F., Albritton, D.L., Fehsenfeld, F.C., Adams, N.G., and Smith, D., Astrophys. J., 236, 492 (1980)
4392
4393         i045(:) = 4.0e-11
4394         nb_reaction_4 = nb_reaction_4 + 1
4395         v_4(:,nb_reaction_4) = i045(:)
4396
4397!---     i046: H2O+ + NO -> NO+ + H2O
4398
4399         !UMIST, from A. B. Raksit and P. Warneck, J. Chem. Soc. Faraday Trans., 76, 1084-1092(1980)
4400
4401         i046(:) = 2.7e-10
4402         nb_reaction_4 = nb_reaction_4 + 1
4403         v_4(:,nb_reaction_4) = i046(:)
4404
4405!---     i047: H2O+ + e- -> H + H + O
4406
4407         !UMIST, from Rosen, S., Derkatch, A., Semaniak, J., et al., 2000, Far. Disc., 115, 295
4408         
4409         i047(:) = 3.05e-7*((300./t_elect(:))**0.5)
4410         nb_reaction_4 = nb_reaction_4 + 1
4411         v_4(:,nb_reaction_4) = i047(:)
4412
4413!---     i048: H2O+ + e- -> H + OH
4414         
4415         !UMIST, from Rosen, S., Derkatch, A., Semaniak, J., et al., 2000, Far. Disc., 115, 295
4416
4417         i048(:) = 8.6e-8*((300./t_elect(:))**0.5)
4418         nb_reaction_4 = nb_reaction_4 + 1
4419         v_4(:,nb_reaction_4) = i048(:)
4420
4421!---     i049: H2O+ + e- -> O + H2
4422
4423         !UMIST, from Rosen, S., Derkatch, A., Semaniak, J., et al., 2000, Far. Disc., 115, 295
4424
4425         i049(:) = 3.9e-8*((300./t_elect(:))**0.5)
4426         nb_reaction_4 = nb_reaction_4 + 1
4427         v_4(:,nb_reaction_4) = i049(:)
4428
4429!---     i050: H2O+ + H2O -> H3O+ + OH
4430
4431         !UMIST, from Huntress, W.T. and Pinizzotto, R.F., J. Chem. Phys., 59, 4742 (1973)
4432
4433         i050(:) = 2.1e-9*((300./t_elect(:))**0.5)
4434         nb_reaction_4 = nb_reaction_4 + 1
4435         v_4(:,nb_reaction_4) = i050(:)
4436
4437
4438!---     i051: H2O+ + H2 -> H3O+ + H
4439
4440         !UMIST, from A. B. Raksit and P. Warneck, J. Chem. Soc. Faraday Trans., 76, 1084-1092(1980)
4441
4442         i051(:) = 6.4e-10
4443         nb_reaction_4 = nb_reaction_4 + 1
4444         v_4(:,nb_reaction_4) = i051(:)
4445
4446!---     i052: HCO+ + H2O -> H3O+ + CO
4447
4448         !UMIST, from Adams, N.G., Smith, D., and Grief, D., Int. J. Mass Spectrom. Ion Phys., 26, 405 (1978)
4449
4450         i052(:) = 2.5e-9*((300./t_elect(:))**0.5)
4451         nb_reaction_4 = nb_reaction_4 + 1
4452         v_4(:,nb_reaction_4) = i052(:)
4453
4454!---     i053: H3O+ + e -> OH + H + H
4455
4456         !UMIST, from Novotny, O. et al., J. Phys. Chem. A 2010, 114, 14, 4870-4874
4457
4458         i053(:) = 3.05e-7*((300./t_elect(:))**0.5)
4459         nb_reaction_4 = nb_reaction_4 + 1
4460         v_4(:,nb_reaction_4) = i053(:)
4461
4462!---     i054: H3O+ + e -> H2O + H
4463
4464         !UMIST, from Novotny, O. et al., J. Phys. Chem. A 2010, 114, 14, 4870-4874
4465         
4466         i054(:) = 7.09e-8*((300./t_elect(:))**0.5)
4467         nb_reaction_4 = nb_reaction_4 + 1
4468         v_4(:,nb_reaction_4) = i054(:)
4469
4470!---     i055: H3O+ + e -> OH + H2
4471
4472         !UMIST, from Novotny, O. et al., J. Phys. Chem. A 2010, 114, 14, 4870-4874
4473
4474         i055(:) = 5.37e-8*((300./t_elect(:))**0.5)
4475         nb_reaction_4 = nb_reaction_4 + 1
4476         v_4(:,nb_reaction_4) = i055(:)
4477
4478!---     i056: H3O+ + e -> O + H2 + H
4479
4480         !UMIST, from Novotny, O. et al., J. Phys. Chem. A 2010, 114, 14, 4870-4874
4481
4482         i056(:) = 5.6e-9*((300./t_elect(:))**0.5)
4483         nb_reaction_4 = nb_reaction_4 + 1
4484         v_4(:,nb_reaction_4) = i056(:)
4485
4486         nb_reaction_4 = nb_reaction_4 + 1
4487         v_4(:,nb_reaction_4) = i056(:)
4488
4489!---     i057: O+ + H2 -> OH+ + H
4490
4491         !UMIST, from Adams, N.G., Smith, D., and Paulson, J.F., J. Chem. Phys., 72, 288 (1980); Smith, D., Adams, N.G., and Miller, T.M., J. Chem. Phys.., 69, 308 (1978)
4492
4493         i057(:) = 1.7e-9
4494         nb_reaction_4 = nb_reaction_4 + 1
4495         v_4(:,nb_reaction_4) = i057(:)
4496
4497!---     i058: OH+ + O -> O2+ + H
4498
4499         !UMIST, from Prasad & Huntress, 1980, ApJS, 43, 1
4500
4501         i058(:) = 7.1e-10
4502         nb_reaction_4 = nb_reaction_4 + 1
4503         v_4(:,nb_reaction_4) = i058(:)
4504
4505!---     i059: OH+ + CO2 -> HCO2+ + O
4506
4507         !UMIST, from Jones, J.D.C., Birkinshaw, K., and Twiddy, N.D., Chem. Phys. Lett., 77, 484 (1981)
4508
4509         i059(:) = 1.44e-9
4510         nb_reaction_4 = nb_reaction_4 + 1
4511         v_4(:,nb_reaction_4) = i059(:)
4512
4513!---     i060: OH+ + CO -> HCO+ + O
4514
4515         !UMIST, from Jones, J.D.C., Birkinshaw, K., and Twiddy, N.D., Chem. Phys. Lett., 77, 484 (1981)
4516
4517         i060(:) = 1.05e-9
4518         nb_reaction_4 = nb_reaction_4 + 1
4519         v_4(:,nb_reaction_4) = i060(:)
4520
4521!---     i061: OH+ + NO -> NO+ + OH (tasa de reacción UMIST 3.59e-10)
4522
4523         !UMIST, from Jones, J.D.C., Birkinshaw, K., and Twiddy, N.D., Chem. Phys. Lett., 77, 484 (1981)
4524
4525         i061(:) = 3.59e-10
4526         nb_reaction_4 = nb_reaction_4 + 1
4527         v_4(:,nb_reaction_4) = i061(:)
4528
4529!---     i062: OH+ + H2 -> H2O+ + H (tasa de reacción UMIST 1.01e-9,
4530
4531         !UMIST, from Jones, J.D.C., Birkinshaw, K., and Twiddy, N.D., Chem. Phys. Lett., 77, 484 (1981)
4532
4533         i062(:) = 1.01e-9
4534         nb_reaction_4 = nb_reaction_4 + 1
4535         v_4(:,nb_reaction_4) = i062(:)
4536
4537!---     i063: OH+ + O2 -> O2+ + OH (tasa de reacción UMIST 5.9e-10
4538
4539         !UMIST, from Jones, J.D.C., Birkinshaw, K., and Twiddy, N.D., Chem. Phys. Lett., 77, 484 (1981)
4540
4541         i063(:) = 5.9e-10
4542         nb_reaction_4 = nb_reaction_4 + 1
4543         v_4(:,nb_reaction_4) = i063(:)
4544
4545      end if   ! ok_ionchem
4546
4547!----------------------------------------------------------------------
4548!     reactions avec 02(Dg)
4549!----------------------------------------------------------------------
4550
4551!---     j001: O2(Dg) + (CO2 and O) -> O2 + (CO2 and O) + hv
4552
4553!        Krasnopolsky (2010a) for CO2 & Clark and Wayne, 1969 for O (JPL)
4554
4555      j001(:) = 1.E-20 * c(:,i_co2) !+ 2.E-16 * c(:,i_o)
4556
4557      nb_phot = nb_phot + 1
4558      v_phot(:,nb_phot) = j001(:)
4559
4560!---     j002: O2(Dg) -> O2 + hv
4561
4562!        Lafferty et al; (1998)
4563
4564      j002(:) = 2.2E-4
4565
4566      nb_phot = nb_phot + 1
4567      v_phot(:,nb_phot) = j002(:)
4568
4569      !!! TEST: artificial increase of CO2 photodissociation
4570      if (tuneupperatm) then
4571      !-- TuneA
4572      !   v_phot(65:78,4) = v_phot(65:78,4)*10.
4573      !   v_phot(60:64,4) = v_phot(60:64,4)*3.
4574      !   v_phot(55:59,3) = v_phot(55:59,3)*2.
4575      !--
4576      !-- TuneB
4577      !   v_phot(65:78,4) = v_phot(65:78,4)*10.
4578      !   v_phot(55:59,3) = v_phot(55:59,3)*5.
4579      !--
4580      !-- TuneC
4581      ! VCD 1.1 tuning
4582      !   v_phot(65:78,4) = v_phot(65:78,4)*10.
4583      !   v_phot(52:59,3) = v_phot(52:59,3)*5.
4584      !--
4585      !-- TuneE
4586      ! VCD 2.0 tuning
4587      !  v_phot(65:nz,4) = v_phot(65:nz,4)*10. ! CO2 + hv ==> O(1D) + CO
4588      !--
4589      ! VCD 2.1 tuning
4590          v_phot(65:nz,4) = v_phot(65:nz,4)*8. ! CO2 + hv ==> O(1D) + CO
4591      !--
4592      ! TEST TUNEH
4593      !     v_phot(62:74,4) = v_phot(62:74,4)*6.5 ! CO2 + hv ==> O(1D) + CO
4594      !--
4595      !   v_phot(:,4) = v_phot(:,4)*10.
4596      !do ij=3,4
4597      !   v_phot(:,ij) = v_phot(:,ij)*10.
4598      !end do
4599      end if
4600return
4601end subroutine krates
4602
4603!======================================================================
4604
4605 subroutine fill_matrix(ilev, mat, prod, loss, lossconc, c, nesp, nlayer,  &
4606                        nb_reaction_3_max, nb_reaction_4_max, nb_phot_max, &
4607                        v_phot, v_3, v_4)
4608
4609!======================================================================
4610! filling of the jacobian matrix
4611!======================================================================
4612
4613use types_asis
4614
4615implicit none
4616
4617! input
4618
4619integer             :: ilev    ! level index
4620integer             :: nesp    ! number of species in the chemistry
4621integer, intent(in) :: nlayer  ! number of atmospheric layers
4622integer, intent(in) :: nb_reaction_3_max
4623                               ! number of quadratic reactions
4624integer, intent(in) :: nb_reaction_4_max
4625                               ! number of bimolecular reactions
4626integer, intent(in) :: nb_phot_max
4627                               ! number of processes treated numerically as photodissociations
4628
4629real (kind = 8), dimension(nlayer,nesp)              :: c    ! number densities
4630real (kind = 8), dimension(nlayer,      nb_phot_max) :: v_phot
4631real (kind = 8), dimension(nlayer,nb_reaction_3_max) :: v_3
4632real (kind = 8), dimension(nlayer,nb_reaction_4_max) :: v_4
4633
4634! output
4635
4636real (kind = 8), dimension(nesp,nesp), intent(out) :: mat  ! matrix
4637real (kind = 8), dimension(nesp), intent(out)      :: prod, loss, lossconc
4638
4639! local
4640
4641integer :: iesp
4642integer :: ind_phot_2,ind_phot_4,ind_phot_6
4643integer :: ind_3_2,ind_3_4,ind_3_6
4644integer :: ind_4_2,ind_4_4,ind_4_6,ind_4_8
4645integer :: iphot,i3,i4
4646
4647real(kind = 8) :: eps, eps_4  ! implicit/explicit coefficient
4648
4649! initialisations
4650
4651mat(:,:) = 0.
4652prod(:)  = 0.
4653loss(:)  = 0.
4654lossconc(:) = 0.
4655
4656! photodissociations
4657! or reactions a + c -> b + c
4658! or reactions a + ice -> b + c
4659do iphot = 1,nb_phot_max
4660
4661  ind_phot_2 = indice_phot(iphot)%z2
4662  ind_phot_4 = indice_phot(iphot)%z4
4663  ind_phot_6 = indice_phot(iphot)%z6
4664
4665  mat(ind_phot_2,ind_phot_2) = mat(ind_phot_2,ind_phot_2) + indice_phot(iphot)%z1*v_phot(ilev,iphot)
4666  mat(ind_phot_4,ind_phot_2) = mat(ind_phot_4,ind_phot_2) - indice_phot(iphot)%z3*v_phot(ilev,iphot)
4667  mat(ind_phot_6,ind_phot_2) = mat(ind_phot_6,ind_phot_2) - indice_phot(iphot)%z5*v_phot(ilev,iphot)
4668
4669  loss(ind_phot_2)     = loss(ind_phot_2) + indice_phot(iphot)%z1*v_phot(ilev,iphot)
4670  lossconc(ind_phot_2) = lossconc(ind_phot_2) + indice_phot(iphot)%z1*v_phot(ilev,iphot)*c(ilev,ind_phot_2)
4671 
4672  prod(ind_phot_4)     = prod(ind_phot_4) + indice_phot(iphot)%z3*v_phot(ilev,iphot)*c(ilev,ind_phot_2)
4673  prod(ind_phot_6)     = prod(ind_phot_6) + indice_phot(iphot)%z5*v_phot(ilev,iphot)*c(ilev,ind_phot_2)
4674
4675end do
4676
4677! reactions a + a -> b + c
4678
4679do i3 = 1,nb_reaction_3_max
4680
4681  ind_3_2 = indice_3(i3)%z2
4682  ind_3_4 = indice_3(i3)%z4
4683  ind_3_6 = indice_3(i3)%z6
4684
4685  mat(ind_3_2,ind_3_2) = mat(ind_3_2,ind_3_2) + indice_3(i3)%z1*v_3(ilev,i3)*c(ilev,ind_3_2)
4686  mat(ind_3_4,ind_3_2) = mat(ind_3_4,ind_3_2) - indice_3(i3)%z3*v_3(ilev,i3)*c(ilev,ind_3_2)
4687  mat(ind_3_6,ind_3_2) = mat(ind_3_6,ind_3_2) - indice_3(i3)%z5*v_3(ilev,i3)*c(ilev,ind_3_2)
4688
4689  loss(ind_3_2)     = loss(ind_3_2) + indice_3(i3)%z1*v_3(ilev,i3)*c(ilev,ind_3_2)
4690  lossconc(ind_3_2) = lossconc(ind_3_2) + indice_3(i3)%z1*v_3(ilev,i3)*c(ilev,ind_3_2)*c(ilev,ind_3_2)
4691 
4692  prod(ind_3_4)     = prod(ind_3_4) + indice_3(i3)%z3*v_3(ilev,i3)*c(ilev,ind_3_2)*c(ilev,ind_3_2)
4693  prod(ind_3_6)     = prod(ind_3_6) + indice_3(i3)%z5*v_3(ilev,i3)*c(ilev,ind_3_2)*c(ilev,ind_3_2)
4694
4695end do
4696
4697! reactions a + b -> c + d
4698
4699eps = 1.d-10
4700
4701do i4 = 1,nb_reaction_4_max
4702
4703  ind_4_2 = indice_4(i4)%z2
4704  ind_4_4 = indice_4(i4)%z4
4705  ind_4_6 = indice_4(i4)%z6
4706  ind_4_8 = indice_4(i4)%z8
4707
4708  eps_4 = abs(c(ilev,ind_4_2))/(abs(c(ilev,ind_4_2)) + abs(c(ilev,ind_4_4)) + eps)
4709  eps_4 = min(eps_4,1.0)
4710
4711  mat(ind_4_2,ind_4_2) = mat(ind_4_2,ind_4_2) + indice_4(i4)%z1*v_4(ilev,i4)*(1. - eps_4)*c(ilev,ind_4_4)
4712  mat(ind_4_2,ind_4_4) = mat(ind_4_2,ind_4_4) + indice_4(i4)%z1*v_4(ilev,i4)*eps_4*c(ilev,ind_4_2)
4713  mat(ind_4_4,ind_4_2) = mat(ind_4_4,ind_4_2) + indice_4(i4)%z3*v_4(ilev,i4)*(1. - eps_4)*c(ilev,ind_4_4)
4714  mat(ind_4_4,ind_4_4) = mat(ind_4_4,ind_4_4) + indice_4(i4)%z3*v_4(ilev,i4)*eps_4*c(ilev,ind_4_2)   
4715  mat(ind_4_6,ind_4_2) = mat(ind_4_6,ind_4_2) - indice_4(i4)%z5*v_4(ilev,i4)*(1. - eps_4)*c(ilev,ind_4_4)
4716  mat(ind_4_6,ind_4_4) = mat(ind_4_6,ind_4_4) - indice_4(i4)%z5*v_4(ilev,i4)*eps_4*c(ilev,ind_4_2)
4717  mat(ind_4_8,ind_4_2) = mat(ind_4_8,ind_4_2) - indice_4(i4)%z7*v_4(ilev,i4)*(1. - eps_4)*c(ilev,ind_4_4)
4718  mat(ind_4_8,ind_4_4) = mat(ind_4_8,ind_4_4) - indice_4(i4)%z7*v_4(ilev,i4)*eps_4*c(ilev,ind_4_2)
4719
4720
4721  loss(ind_4_2)     = loss(ind_4_2) + indice_4(i4)%z1*v_4(ilev,i4)*c(ilev,ind_4_4)
4722  lossconc(ind_4_2) = lossconc(ind_4_2) + indice_4(i4)%z1*v_4(ilev,i4)*c(ilev,ind_4_4)*c(ilev,ind_4_2)
4723  loss(ind_4_4)     = loss(ind_4_4) + indice_4(i4)%z3*v_4(ilev,i4)*c(ilev,ind_4_2)
4724  lossconc(ind_4_4) = lossconc(ind_4_4) + indice_4(i4)%z3*v_4(ilev,i4)*c(ilev,ind_4_2)*c(ilev,ind_4_4)
4725 
4726  prod(ind_4_6)     = prod(ind_4_6) + indice_4(i4)%z5*v_4(ilev,i4)*c(ilev,ind_4_2)*c(ilev,ind_4_4)
4727  prod(ind_4_8)     = prod(ind_4_8) + indice_4(i4)%z7*v_4(ilev,i4)*c(ilev,ind_4_2)*c(ilev,ind_4_4)
4728
4729end do
4730
4731end subroutine fill_matrix
4732
4733!================================================================
4734
4735 subroutine define_dt(nesp, dtnew, dtold, ctimestep, cold, ccur, mat1, &
4736                      prod, loss, dens, lon, lat)
4737
4738!================================================================
4739! iterative evaluation of the appropriate time step dtnew
4740! according to curvature criterion based on
4741! e = 2 Rtol [r Cn+1 -(1-r) Cn + Cn-1 ]/[(1+r) Cn]
4742! with r = (tn - tn-1)/(tn+1 - tn)
4743!================================================================
4744
4745implicit none
4746
4747! input
4748
4749integer :: nesp  ! number of species in the chemistry
4750
4751real :: dtold, ctimestep
4752real (kind = 8), dimension(nesp)      :: cold, ccur
4753real (kind = 8), dimension(nesp,nesp) :: mat1
4754real (kind = 8), dimension(nesp)      :: prod, loss
4755real                       :: dens
4756real                       :: lon, lat
4757
4758! output
4759
4760real :: dtnew
4761
4762! local
4763
4764real (kind = 8), dimension(nesp)      :: cnew
4765real (kind = 8), dimension(nesp,nesp) :: mat
4766real (kind = 8) :: atol, ratio, e, es, coef
4767
4768integer                  :: code, iesp, iter
4769integer, dimension(nesp) :: indx
4770integer :: imax
4771
4772real :: dttest
4773
4774! parameters
4775
4776real (kind = 8), parameter :: dtmin   = 10.      ! minimum time step (s)
4777real (kind = 8), parameter :: vmrtol  = 1.e-11   ! absolute tolerance on vmr
4778real (kind = 8), parameter :: rtol    = 0.05     ! rtol recommended value : 0.1-0.02
4779integer,         parameter :: niter   = 3        ! number of iterations
4780real (kind = 8), parameter :: coefmax = 2.
4781real (kind = 8), parameter :: coefmin = 0.1
4782logical                    :: fast_guess = .true.
4783
4784
4785dttest = dtold   ! dttest = dtold = dt_guess
4786
4787atol = vmrtol*dens ! absolute tolerance in molecule.cm-3
4788
4789do iter = 1,niter
4790
4791if (fast_guess) then
4792
4793! first guess : fast semi-implicit method
4794
4795   do iesp = 1, nesp
4796      cnew(iesp) = (ccur(iesp) + prod(iesp)*dttest)/(1. + loss(iesp)*dttest)
4797   end do
4798
4799else
4800
4801! first guess : form the matrix identity + mat*dt_guess
4802
4803   mat(:,:) = mat1(:,:)*dttest
4804   do iesp = 1,nesp
4805      mat(iesp,iesp) = 1. + mat(iesp,iesp)
4806   end do
4807
4808! form right-hand side (RHS) of the system
4809
4810   cnew(:) = ccur(:)
4811
4812! solve the linear system  M*Cn+1 = Cn (RHS in cnew, then replaced by solution)
4813
4814#ifdef LAPACK
4815   call dgesv(nesp,1,mat,nesp,indx,cnew,nesp,code)
4816#else
4817   write(*,*) "photochemistry error, missing LAPACK routine dgesv"
4818   stop
4819#endif
4820
4821end if
4822
4823! ratio old/new subtimestep
4824
4825ratio = dtold/dttest
4826
4827! e : local error indicator
4828
4829e = 0.
4830
4831do iesp = 1,nesp
4832   es = 2.*abs((ratio*cnew(iesp) - (1. + ratio)*ccur(iesp) + cold(iesp))   &
4833         /(1. + ratio)/max(ccur(iesp)*rtol,atol))
4834
4835   if (es > e) then
4836      e = es
4837      imax = iesp
4838   end if
4839end do
4840
4841! timestep correction
4842
4843coef = max(coefmin, min(coefmax,0.8/sqrt(e)))
4844
4845dttest = max(dtmin,dttest*coef)
4846dttest = min(ctimestep,dttest)
4847
4848end do ! iter
4849
4850! new timestep
4851
4852dtnew = dttest
4853
4854end subroutine define_dt
4855
4856!======================================================================
4857!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
4858!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
4859! CE CODE EST OBSOLETE !! A NE PAS UTILISER !!!!!!!!!!!!!!!!!!!!!!!!!!!
4860!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
4861!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
4862
4863      SUBROUTINE  rate_save(            &
4864                           n_lev,       &
4865                           pres,        &
4866                           temperature, &
4867                           traceur,     &
4868                           nq_max,      &
4869                           vphot,       &
4870                           v3,          &
4871                           v4)     
4872!==================
4873!!!!! MODEL 1D !!!! ==> n_lon = 1 !!!!
4874!==================
4875! Ici on a les variables pour le modele 1D, surtout pour la sauvegarde des taux de prod/consom
4876!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
4877!PENSER a changer les conditions de time_tot
4878!time_tot=nbr_pdt*(nbr_jour-1)
4879!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
4880
4881      USE chemparam_mod
4882      IMPLICIT none
4883           
4884
4885!INTEGER, PARAMETER :: time_tot=6000*1
4886
4887INTEGER :: unit_loc, ierr_loc           ! unite de lecture de "rcm1d.def"
4888     
4889INTEGER, SAVE :: time_tot,nbr_pdt,nbr_jour
4890INTEGER, SAVE :: cpt_time, cpt_time_rate
4891DOUBLE PRECISION, DIMENSION(n_lev,126) :: rate_day
4892DOUBLE PRECISION, DIMENSION(n_lev,126) :: rate_night
4893DOUBLE PRECISION :: rate_local
4894DOUBLE PRECISION :: concentration(n_lev)
4895DOUBLE PRECISION :: pres(n_lev)
4896DOUBLE PRECISION :: temperature(n_lev)
4897DOUBLE PRECISION :: traceur(n_lev,nq_max)
4898     
4899INTEGER :: n_lev, nq_max
4900INTEGER :: i_lev, i_react, i_v
4901
4902INTEGER :: i
4903 
4904LOGICAL, SAVE :: f_call = .true.
4905
4906integer, parameter :: nb_phot_max = 30
4907integer, parameter :: nb_reaction_3_max = 12
4908integer, parameter :: nb_reaction_4_max = 87
4909     
4910real, dimension(n_lev,nb_phot_max) :: vphot
4911real, dimension(n_lev,nb_reaction_3_max) :: v3
4912real, dimension(n_lev,nb_reaction_4_max) :: v4
4913
4914!PRINT*,"DEBUT subroutine rate_save"
4915
4916
4917      IF (f_call) THEN
4918! ------------------------------------------------------
4919!  Lecture des parametres dans "rcm1d.def"
4920! ------------------------------------------------------
4921
4922!   Opening parameters file "rcm1d.def"
4923!   ---------------------------------------
4924      unit_loc =98
4925      OPEN(unit_loc,file='rcm1d.def',status='old',form='formatted'  &
4926          ,iostat=ierr_loc)
4927
4928      IF(ierr_loc.ne.0) THEN
4929        write(*,*) 'Problem to open "rcm1d.def'
4930        write(*,*) 'Is it there ?'
4931        stop
4932      ELSE
4933        write(*,*) 'open rcm1d.def success '
4934      END IF
4935
4936      do i=1, 2
4937        read (unit_loc, *)
4938      end do
4939
4940      PRINT *,'nombre de pas de temps par jour ?'
4941      READ(unit_loc,*) nbr_pdt
4942      print*,nbr_pdt
4943
4944      PRINT *,'nombre de jours simules ?'
4945      READ(unit_loc,*) nbr_jour
4946      print*,nbr_jour
4947     
4948 
4949     
4950      time_tot = nbr_pdt*(nbr_jour-1)
4951      PRINT *,'nombre de PdT avant calcul des taux production/consommation ?'
4952      PRINT*,time_tot
4953     
4954      PRINT*,'nlev',n_lev
4955           
4956         cpt_time = 1
4957         cpt_time_rate = 1
4958         f_call = .false.
4959         PRINT*,"f_call: ",f_call
4960         rate_night(:,:)=0.
4961         rate_day(:,:)=0.
4962     
4963      END IF           
4964     
4965!      PRINT*,"P        T"
4966!      PRINT*,pres,temperature
4967             
4968      IF (cpt_time .GE. time_tot) THEN
4969
4970!       PRINT*,'cpt_time',cpt_time
4971             
4972         DO i_lev=1, n_lev
4973         concentration(i_lev) = pres(i_lev)/(1.3806488E-19 * temperature(i_lev))     
4974         END DO
4975         
4976         IF (((cpt_time_rate .GE. 1).AND.(cpt_time_rate .LE. (nbr_pdt/4))).OR. &
4977         (cpt_time_rate .GT. (3*(nbr_pdt/4)))) THEN
4978         
4979!===============================
4980!        !!!! NUIT !!!!
4981!===============================
4982!       PRINT*,'NUIT'
4983       
4984           DO i_lev=1, n_lev
4985           i_react=1
4986           i_v=1
4987!===============================
4988!    1     o2 + hv     -> o + o
4989!===============================
4990                rate_local = vphot(i_lev,i_v)*traceur(i_lev,i_o2)*concentration(i_lev)
4991                rate_night(i_lev,i_react) = rate_night(i_lev,i_react) + 2.*rate_local/nbr_pdt
4992                i_react=i_react+1
4993                i_v=i_v+1
4994!===============================
4995!    2     o2 + hv     -> o + o(1d)
4996!===============================
4997                rate_local = vphot(i_lev,i_v)*traceur(i_lev,i_o2)*concentration(i_lev)
4998                rate_night(i_lev,i_react) = rate_night(i_lev,i_react) + 2.*rate_local/nbr_pdt
4999                i_react=i_react+1
5000                i_v=i_v+1
5001!===============================
5002!    3     co2 + hv    -> co + o
5003!===============================
5004            rate_local = vphot(i_lev,i_v)*traceur(i_lev,i_co2)*concentration(i_lev)
5005            rate_night(i_lev,i_react) = rate_night(i_lev,i_react) + 2.*rate_local/nbr_pdt
5006            i_react=i_react+1
5007                i_v=i_v+1
5008!===============================
5009!    4     co2 + hv    -> co + o(1d)
5010!===============================
5011            rate_local = vphot(i_lev,i_v)*traceur(i_lev,i_co2)*concentration(i_lev)
5012            rate_night(i_lev,i_react) = rate_night(i_lev,i_react) + 2.*rate_local/nbr_pdt
5013            i_react=i_react+1
5014                i_v=i_v+1
5015!===============================
5016!    5     o3 + hv     -> o2(Dg) + o(1d)
5017!===============================
5018            rate_local = vphot(i_lev,i_v)*traceur(i_lev,i_o3)*concentration(i_lev)
5019            rate_night(i_lev,i_react) = rate_night(i_lev,i_react) + 2.*rate_local/nbr_pdt
5020            i_react=i_react+1
5021                i_v=i_v+1
5022!===============================
5023!    6     o3 + hv     -> o2 + o
5024!===============================
5025            rate_local = vphot(i_lev,i_v)*traceur(i_lev,i_o3)*concentration(i_lev)
5026            rate_night(i_lev,i_react) = rate_night(i_lev,i_react) + 2.*rate_local/nbr_pdt
5027            i_react=i_react+1
5028                i_v=i_v+1
5029!===============================
5030!    7     h2o + hv    -> h + oh
5031!===============================
5032            rate_local = vphot(i_lev,i_v)*traceur(i_lev,i_h2o)*concentration(i_lev)
5033            rate_night(i_lev,i_react) = rate_night(i_lev,i_react) + 2.*rate_local/nbr_pdt
5034            i_react=i_react+1
5035                i_v=i_v+1
5036!===============================
5037!    8     ho2 + hv    -> oh + o
5038!===============================
5039            rate_local = vphot(i_lev,i_v)*traceur(i_lev,i_ho2)*concentration(i_lev)
5040            rate_night(i_lev,i_react) = rate_night(i_lev,i_react) + 2.*rate_local/nbr_pdt
5041            i_react=i_react+1
5042                i_v=i_v+1
5043!===============================
5044!    9     h2o2 + hv   -> oh + oh
5045!===============================
5046            rate_local = vphot(i_lev,i_v)*traceur(i_lev,i_h2o2)*concentration(i_lev)
5047            rate_night(i_lev,i_react) = rate_night(i_lev,i_react) + 2.*rate_local/nbr_pdt
5048            i_react=i_react+1
5049                i_v=i_v+1
5050!===============================
5051!    10    hcl + hv    -> h + cl
5052!===============================
5053            rate_local = vphot(i_lev,i_v)*traceur(i_lev,i_hcl)*concentration(i_lev)
5054            rate_night(i_lev,i_react) = rate_night(i_lev,i_react) + 2.*rate_local/nbr_pdt
5055            i_react=i_react+1
5056                i_v=i_v+1
5057!===============================
5058!    11    cl2 + hv    -> cl + cl
5059!===============================
5060            rate_local = vphot(i_lev,i_v)*traceur(i_lev,i_cl2)*concentration(i_lev)
5061            rate_night(i_lev,i_react) = rate_night(i_lev,i_react) + 2.*rate_local/nbr_pdt
5062            i_react=i_react+1
5063                i_v=i_v+1
5064!===============================
5065!    12    hocl + hv   -> oh + cl
5066!===============================
5067            rate_local = vphot(i_lev,i_v)*traceur(i_lev,i_hocl)*concentration(i_lev)
5068            rate_night(i_lev,i_react) = rate_night(i_lev,i_react) + 2.*rate_local/nbr_pdt
5069            i_react=i_react+1
5070                i_v=i_v+1
5071!===============================
5072!    13    so2 + hv    -> so + o
5073!===============================
5074            rate_local = vphot(i_lev,i_v)*traceur(i_lev,i_so2)*concentration(i_lev)
5075            rate_night(i_lev,i_react) = rate_night(i_lev,i_react) + 2.*rate_local/nbr_pdt
5076            i_react=i_react+1
5077                i_v=i_v+1
5078!===============================
5079!    14    so + hv     -> s + o
5080!===============================
5081            rate_local = vphot(i_lev,i_v)*traceur(i_lev,i_so)*concentration(i_lev)
5082            rate_night(i_lev,i_react) = rate_night(i_lev,i_react) + 2.*rate_local/nbr_pdt
5083            i_react=i_react+1
5084                i_v=i_v+1
5085!===============================
5086!    15    so3 + hv    -> so2 + o
5087!===============================
5088            rate_local = vphot(i_lev,i_v)*traceur(i_lev,i_so3)*concentration(i_lev)
5089            rate_night(i_lev,i_react) = rate_night(i_lev,i_react) + 2.*rate_local/nbr_pdt
5090            i_react=i_react+1
5091                i_v=i_v+1
5092!===============================
5093!    16    clo + hv    -> cl + o
5094!===============================
5095            rate_local = vphot(i_lev,i_v)*traceur(i_lev,i_clo)*concentration(i_lev)
5096            rate_night(i_lev,i_react) = rate_night(i_lev,i_react) + 2.*rate_local/nbr_pdt
5097            i_react=i_react+1
5098                i_v=i_v+1
5099!===============================
5100!    17    ocs + hv    -> co + s
5101!===============================
5102            rate_local = vphot(i_lev,i_v)*traceur(i_lev,i_ocs)*concentration(i_lev)
5103            rate_night(i_lev,i_react) = rate_night(i_lev,i_react) + 2.*rate_local/nbr_pdt
5104            i_react=i_react+1
5105                i_v=i_v+1
5106!===============================
5107!    18    cocl2 + hv  -> cl + cl + co
5108!===============================
5109            rate_local = vphot(i_lev,i_v)*traceur(i_lev,i_cocl2)*concentration(i_lev)
5110            rate_night(i_lev,i_react) = rate_night(i_lev,i_react) + 2.*rate_local/nbr_pdt
5111            i_react=i_react+1
5112                i_v=i_v+1
5113!===============================
5114!    19    h2so4 + hv  -> so3 + h2o
5115!===============================
5116            rate_local = vphot(i_lev,i_v)*traceur(i_lev,i_h2so4)*concentration(i_lev)
5117            rate_night(i_lev,i_react) = rate_night(i_lev,i_react) + 2.*rate_local/nbr_pdt
5118            i_react=i_react+1
5119                i_v=i_v+1
5120!===============================
5121!--- 20 b001 o(1d) + co2 -> o + co2
5122!===============================
5123            rate_local = vphot(i_lev,i_v)*traceur(i_lev,i_o1d)*concentration(i_lev)
5124            rate_night(i_lev,i_react) = rate_night(i_lev,i_react) + 2.*rate_local/nbr_pdt
5125            i_react=i_react+1
5126                i_v=i_v+1
5127!===============================
5128!--- 21 b004 o(1d) + o2 -> o + o2
5129!===============================
5130            rate_local = vphot(i_lev,i_v)*traceur(i_lev,i_o1d)*concentration(i_lev)
5131            rate_night(i_lev,i_react) = rate_night(i_lev,i_react) + 2.*rate_local/nbr_pdt
5132            i_react=i_react+1
5133                i_v=i_v+1
5134!===============================
5135!--- 22 f014 clco + co2 -> cl + co + co2
5136!===============================
5137            rate_local = vphot(i_lev,22)*traceur(i_lev,i_clco)*concentration(i_lev)
5138            rate_night(i_lev,i_react) = rate_night(i_lev,i_react) + 2.*rate_local/nbr_pdt
5139            i_react=i_react+1
5140                i_v=i_v+1
5141!===============================
5142!--- 23 g016 s2o2 + co2 -> 2so + co2
5143!===============================
5144            rate_local = vphot(i_lev,23)*traceur(i_lev,i_s2o2)*concentration(i_lev)
5145            rate_night(i_lev,i_react) = rate_night(i_lev,i_react) + 2.*rate_local/nbr_pdt
5146            i_react=i_react+1
5147                i_v=i_v+1
5148!===============================
5149!--- 24 g023 s2 + co2 -> 2s + co2
5150!===============================
5151            rate_local = vphot(i_lev,i_v)*traceur(i_lev,i_s2)*concentration(i_lev)
5152            rate_night(i_lev,i_react) = rate_night(i_lev,i_react) + 2.*rate_local/nbr_pdt
5153            i_react=i_react+1
5154                i_v=i_v+1
5155!===============================
5156!--- 25 h001 ICE
5157!===============================
5158            i_react=i_react+1
5159                i_v=i_v+1
5160!===============================
5161!--- 26 h002 ICE
5162!===============================
5163            i_react=i_react+1
5164                i_v=i_v+1 
5165!===============================
5166!--- 27 h003 ICE
5167!===============================
5168            i_react=i_react+1
5169                i_v=i_v+1 
5170!===============================
5171!---  30 i001 o2(Dg) + CO2 -> O2 + CO2 + hv
5172!===============================
5173            rate_local = vphot(i_lev,i_v)*traceur(i_lev,i_o2dg)*concentration(i_lev)
5174            rate_night(i_lev,i_react) = rate_night(i_lev,i_react) + 2.*rate_local/nbr_pdt
5175            i_react=i_react+1
5176                i_v=i_v+1
5177!===============================
5178!--- 31 i002 o2(Dg) -> O2 + hv
5179!===============================
5180            rate_local = vphot(i_lev,i_v)*traceur(i_lev,i_o2dg)*concentration(i_lev)
5181            rate_night(i_lev,i_react) = rate_night(i_lev,i_react) + 2.*rate_local/nbr_pdt
5182            i_react=i_react+1
5183                i_v=i_v+1
5184
5185! DEBUT DES REACTION V3
5186                i_v = i_v - nb_phot_max
5187!===============================
5188!--- 32 a002: o + o + co2 -> o2 + co2
5189!===============================
5190            rate_local = v3(i_lev,i_v)*traceur(i_lev,i_o)*concentration(i_lev) &
5191            *traceur(i_lev,i_o)*concentration(i_lev)
5192            rate_night(i_lev,i_react) = rate_night(i_lev,i_react) + 2.*rate_local/nbr_pdt
5193            i_react=i_react+1
5194                i_v=i_v+1
5195!===============================
5196!--- 33 c008: ho2 + ho2 -> h2o2 + o2
5197!===============================
5198            rate_local = v3(i_lev,i_v)*traceur(i_lev,i_ho2)*concentration(i_lev) &
5199            *traceur(i_lev,i_ho2)*concentration(i_lev)
5200            rate_night(i_lev,i_react) = rate_night(i_lev,i_react) + 2.*rate_local/nbr_pdt
5201            i_react=i_react+1
5202                i_v=i_v+1
5203!===============================
5204!--- 34 c013: oh + oh -> h2o + o
5205!===============================
5206            rate_local = v3(i_lev,i_v)*traceur(i_lev,i_oh)*concentration(i_lev) &
5207            *traceur(i_lev,i_oh)*concentration(i_lev)
5208            rate_night(i_lev,i_react) = rate_night(i_lev,i_react) + 2.*rate_local/nbr_pdt
5209            i_react=i_react+1
5210                i_v=i_v+1
5211!===============================
5212!--- 35 c016: ho2 + ho2 + co2 -> h2o2 + o2 + co2
5213!===============================
5214            rate_local = v3(i_lev,i_v)*traceur(i_lev,i_ho2)*concentration(i_lev) &
5215            *traceur(i_lev,i_ho2)*concentration(i_lev)
5216            rate_night(i_lev,i_react) = rate_night(i_lev,i_react) + 2.*rate_local/nbr_pdt
5217            i_react=i_react+1
5218                i_v=i_v+1
5219!===============================
5220!--- 36 c017: oh + oh + co2 -> h2o2 + co2
5221!===============================
5222            rate_local = v3(i_lev,i_v)*traceur(i_lev,i_oh)*concentration(i_lev) &
5223            *traceur(i_lev,i_oh)*concentration(i_lev)
5224            rate_night(i_lev,i_react) = rate_night(i_lev,i_react) + 2.*rate_local/nbr_pdt
5225            i_react=i_react+1
5226                i_v=i_v+1
5227!===============================
5228!--- 37 c018: h + h + co2 -> h2 + co2
5229!===============================
5230            rate_local = v3(i_lev,i_v)*traceur(i_lev,i_h)*concentration(i_lev) &
5231            *traceur(i_lev,i_h)*concentration(i_lev)
5232            rate_night(i_lev,i_react) = rate_night(i_lev,i_react) + 2.*rate_local/nbr_pdt
5233            i_react=i_react+1
5234                i_v=i_v+1
5235!===============================
5236!--- 38 f021: cl + cl + co2 -> cl2 + co2
5237!===============================
5238            rate_local = v3(i_lev,i_v)*traceur(i_lev,i_cl)*concentration(i_lev) &
5239            *traceur(i_lev,i_cl)*concentration(i_lev)
5240            rate_night(i_lev,i_react) = rate_night(i_lev,i_react) + 2.*rate_local/nbr_pdt
5241            i_react=i_react+1
5242                i_v=i_v+1
5243!===============================
5244!--- 39 f026: clco + clco  -> cocl2 + co
5245!===============================
5246            rate_local = v3(i_lev,i_v)*traceur(i_lev,i_clco)*concentration(i_lev) &
5247            *traceur(i_lev,i_clco)*concentration(i_lev)
5248            rate_night(i_lev,i_react) = rate_night(i_lev,i_react) + 2.*rate_local/nbr_pdt
5249            i_react=i_react+1
5250                i_v=i_v+1
5251!===============================
5252!--- 40 f030: clso2 + clso2  -> cl2 + so2 + so2
5253!===============================
5254            rate_local = v3(i_lev,i_v)*traceur(i_lev,i_clso2)*concentration(i_lev) &
5255            *traceur(i_lev,i_clso2)*concentration(i_lev)
5256            rate_night(i_lev,i_react) = rate_night(i_lev,i_react) + 2.*rate_local/nbr_pdt
5257            i_react=i_react+1
5258                i_v=i_v+1
5259!===============================
5260!--- 41 g015: so + so + co2 -> s2o2 + co2
5261!===============================
5262            rate_local = v3(i_lev,i_v)*traceur(i_lev,i_so)*concentration(i_lev) &
5263            *traceur(i_lev,i_so)*concentration(i_lev)
5264            rate_night(i_lev,i_react) = rate_night(i_lev,i_react) + 2.*rate_local/nbr_pdt
5265            i_react=i_react+1
5266                i_v=i_v+1
5267!===============================
5268!--- 42 g022: s + s + co2 -> s2 + co2
5269!===============================
5270            rate_local = v3(i_lev,i_v)*traceur(i_lev,i_s)*concentration(i_lev) &
5271            *traceur(i_lev,i_s)*concentration(i_lev)
5272            rate_night(i_lev,i_react) = rate_night(i_lev,i_react) + 2.*rate_local/nbr_pdt
5273            i_react=i_react+1
5274                i_v=i_v+1
5275
5276! DEBUT DES REACTION V4
5277
5278                i_v = i_v - nb_reaction_3_max
5279
5280!===============================
5281!--- 43 a001: o + o2 + co2 -> o3 + co2
5282!===============================
5283            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_o2)*concentration(i_lev) &
5284            *traceur(i_lev,i_o)*concentration(i_lev)
5285            rate_night(i_lev,i_react) = rate_night(i_lev,i_react) + 2.*rate_local/nbr_pdt
5286            i_react=i_react+1
5287                i_v=i_v+1
5288!===============================
5289!--- 44 a003: o + o3 -> o2 + o2
5290!===============================
5291            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_o3)*concentration(i_lev) &
5292            *traceur(i_lev,i_o)*concentration(i_lev) 
5293            rate_night(i_lev,i_react) = rate_night(i_lev,i_react) + 2.*rate_local/nbr_pdt
5294            i_react=i_react+1
5295                i_v=i_v+1
5296!===============================
5297!--- 45 b002: o(1d) + h2o  -> oh + oh
5298!===============================
5299            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_o1d)*concentration(i_lev) &
5300            *traceur(i_lev,i_h2o)*concentration(i_lev) 
5301            rate_night(i_lev,i_react) = rate_night(i_lev,i_react) + 2.*rate_local/nbr_pdt
5302            i_react=i_react+1
5303                i_v=i_v+1
5304!===============================
5305!--- 46 b003: o(1d) + h2  -> oh + h
5306!===============================
5307            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_o1d)*concentration(i_lev) &
5308            *traceur(i_lev,i_h2)*concentration(i_lev) 
5309            rate_night(i_lev,i_react) = rate_night(i_lev,i_react) + 2.*rate_local/nbr_pdt
5310            i_react=i_react+1
5311                i_v=i_v+1
5312!===============================
5313!--- 47 b005: o(1d) + o3  -> o2 + o2
5314!===============================
5315            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_o1d)*concentration(i_lev) &
5316            *traceur(i_lev,i_o3)*concentration(i_lev)
5317            rate_night(i_lev,i_react) = rate_night(i_lev,i_react) + 2.*rate_local/nbr_pdt
5318            i_react=i_react+1
5319                i_v=i_v+1
5320!===============================
5321!--- 48 b006: o(1d) + o3  -> o2 + o + o
5322!===============================
5323            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_o1d)*concentration(i_lev) &
5324            *traceur(i_lev,i_o3)*concentration(i_lev)
5325            rate_night(i_lev,i_react) = rate_night(i_lev,i_react) + 2.*rate_local/nbr_pdt
5326            i_react=i_react+1
5327                i_v=i_v+1
5328!===============================
5329!--- 49 c001: o + ho2 -> oh + o2
5330!===============================
5331            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_o)*concentration(i_lev) &
5332            *traceur(i_lev,i_ho2)*concentration(i_lev)
5333            rate_night(i_lev,i_react) = rate_night(i_lev,i_react) + 2.*rate_local/nbr_pdt
5334            i_react=i_react+1
5335                i_v=i_v+1
5336!===============================
5337!--- 50 c002: o + oh -> o2 + h
5338!===============================
5339            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_s2)*concentration(i_lev)
5340            rate_night(i_lev,i_react) = rate_night(i_lev,i_react) + 2.*rate_local/nbr_pdt
5341            i_react=i_react+1
5342                i_v=i_v+1
5343!===============================
5344!--- 51 c003: h + o3 -> oh + o2
5345!===============================
5346            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_h)*concentration(i_lev) &
5347            *traceur(i_lev,i_o3)*concentration(i_lev)
5348            rate_night(i_lev,i_react) = rate_night(i_lev,i_react) + 2.*rate_local/nbr_pdt
5349            i_react=i_react+1
5350                i_v=i_v+1
5351!===============================
5352!--- 52 c004: h + ho2 -> oh + oh
5353!===============================
5354            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_h)*concentration(i_lev) &
5355            *traceur(i_lev,i_ho2)*concentration(i_lev)
5356            rate_night(i_lev,i_react) = rate_night(i_lev,i_react) + 2.*rate_local/nbr_pdt
5357            i_react=i_react+1
5358                i_v=i_v+1
5359!===============================
5360!--- 53 c005: h + ho2 -> h2 + o2
5361!===============================
5362            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_h)*concentration(i_lev) &
5363            *traceur(i_lev,i_ho2)*concentration(i_lev)
5364            rate_night(i_lev,i_react) = rate_night(i_lev,i_react) + 2.*rate_local/nbr_pdt
5365            i_react=i_react+1
5366                i_v=i_v+1
5367!===============================
5368!--- 54 c006: h + ho2 -> h2o + o
5369!===============================
5370            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_h)*concentration(i_lev) &
5371            *traceur(i_lev,i_ho2)*concentration(i_lev)
5372            rate_night(i_lev,i_react) = rate_night(i_lev,i_react) + 2.*rate_local/nbr_pdt
5373            i_react=i_react+1
5374                i_v=i_v+1
5375!===============================
5376!--- 55 c007: oh + ho2 -> h2o + o2
5377!===============================
5378            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_oh)*concentration(i_lev) &
5379            *traceur(i_lev,i_ho2)*concentration(i_lev)
5380            rate_night(i_lev,i_react) = rate_night(i_lev,i_react) + 2.*rate_local/nbr_pdt
5381            i_react=i_react+1
5382                i_v=i_v+1
5383!===============================
5384!--- 56 c009: oh + h2o2 -> h2o + ho2
5385!===============================
5386            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_oh)*concentration(i_lev) &
5387            *traceur(i_lev,i_h2o2)*concentration(i_lev)
5388            rate_night(i_lev,i_react) = rate_night(i_lev,i_react) + 2.*rate_local/nbr_pdt
5389            i_react=i_react+1
5390                i_v=i_v+1
5391!===============================
5392!--- 57 c010: oh + h2 -> h2o + h
5393!===============================
5394            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_oh)*concentration(i_lev) &
5395            *traceur(i_lev,i_h2)*concentration(i_lev)
5396            rate_night(i_lev,i_react) = rate_night(i_lev,i_react) + 2.*rate_local/nbr_pdt
5397            i_react=i_react+1
5398                i_v=i_v+1
5399!===============================
5400!--- 58 c011: h + o2 + co2 -> ho2 + co2
5401!===============================
5402            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_o2)*concentration(i_lev) &
5403            *traceur(i_lev,i_h)*concentration(i_lev)
5404            rate_night(i_lev,i_react) = rate_night(i_lev,i_react) + 2.*rate_local/nbr_pdt
5405            i_react=i_react+1
5406                i_v=i_v+1
5407!===============================
5408!--- 59 c012: o + h2o2 -> oh + ho2
5409!===============================
5410            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_o)*concentration(i_lev) &
5411            *traceur(i_lev,i_h2o2)*concentration(i_lev)
5412            rate_night(i_lev,i_react) = rate_night(i_lev,i_react) + 2.*rate_local/nbr_pdt
5413            i_react=i_react+1
5414                i_v=i_v+1
5415!===============================
5416!--- 60 c014: oh + o3 -> ho2 + o2
5417!===============================
5418            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_oh)*concentration(i_lev) &
5419            *traceur(i_lev,i_o3)*concentration(i_lev)
5420            rate_night(i_lev,i_react) = rate_night(i_lev,i_react) + 2.*rate_local/nbr_pdt
5421            i_react=i_react+1
5422                i_v=i_v+1
5423!===============================
5424!--- 61 c015: ho2 + o3 -> oh + o2 + o2
5425!===============================
5426            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_o3)*concentration(i_lev) &
5427            *traceur(i_lev,i_ho2)*concentration(i_lev)
5428            rate_night(i_lev,i_react) = rate_night(i_lev,i_react) + 2.*rate_local/nbr_pdt
5429            i_react=i_react+1
5430                i_v=i_v+1
5431!===============================
5432!--- 62 e001: oh + co -> co2 + h
5433!===============================
5434            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_s2)*concentration(i_lev)
5435            rate_night(i_lev,i_react) = rate_night(i_lev,i_react) + 2.*rate_local/nbr_pdt
5436            i_react=i_react+1
5437                i_v=i_v+1
5438!===============================
5439!--- 63 e002: o + co + m -> co2 + m
5440!===============================
5441            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_o)*concentration(i_lev) &
5442            *traceur(i_lev,i_co)*concentration(i_lev)
5443            rate_night(i_lev,i_react) = rate_night(i_lev,i_react) + 2.*rate_local/nbr_pdt
5444            i_react=i_react+1
5445                i_v=i_v+1
5446!===============================
5447!--- 64 f001: hcl + o(1d) -> oh + cl
5448!===============================
5449            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_hcl)*concentration(i_lev) &
5450            *traceur(i_lev,i_o1d)*concentration(i_lev)
5451            rate_night(i_lev,i_react) = rate_night(i_lev,i_react) + 2.*rate_local/nbr_pdt
5452            i_react=i_react+1
5453                i_v=i_v+1
5454!===============================
5455!--- 65 f002: hcl + o(1d) -> h + clo
5456!===============================
5457            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_hcl)*concentration(i_lev) &
5458            *traceur(i_lev,i_o1d)*concentration(i_lev)
5459            rate_night(i_lev,i_react) = rate_night(i_lev,i_react) + 2.*rate_local/nbr_pdt
5460            i_react=i_react+1
5461                i_v=i_v+1
5462!===============================
5463!--- 66 f003: hcl + o -> oh + cl
5464!===============================
5465            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_hcl)*concentration(i_lev) &
5466            *traceur(i_lev,i_o)*concentration(i_lev)
5467            rate_night(i_lev,i_react) = rate_night(i_lev,i_react) + 2.*rate_local/nbr_pdt
5468            i_react=i_react+1
5469                i_v=i_v+1
5470!===============================
5471!--- 67 f004: hcl + oh -> h2o + cl
5472!===============================
5473            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_hcl)*concentration(i_lev) &
5474            *traceur(i_lev,i_oh)*concentration(i_lev)
5475            rate_night(i_lev,i_react) = rate_night(i_lev,i_react) + 2.*rate_local/nbr_pdt
5476            i_react=i_react+1
5477                i_v=i_v+1
5478!===============================
5479!--- 68 f005: clo + o -> cl + o2
5480!===============================
5481            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_clo)*concentration(i_lev) &
5482            *traceur(i_lev,i_o)*concentration(i_lev)
5483            rate_night(i_lev,i_react) = rate_night(i_lev,i_react) + 2.*rate_local/nbr_pdt
5484            i_react=i_react+1
5485                i_v=i_v+1
5486!===============================
5487!--- 69 f006: clo + oh -> cl + ho2
5488!===============================
5489            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_clo)*concentration(i_lev) &
5490            *traceur(i_lev,i_oh)*concentration(i_lev)
5491            rate_night(i_lev,i_react) = rate_night(i_lev,i_react) + 2.*rate_local/nbr_pdt
5492            i_react=i_react+1
5493                i_v=i_v+1
5494!===============================
5495!--- 70 f007: clo + oh -> hcl + o2
5496!===============================
5497            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_clo)*concentration(i_lev) &
5498            *traceur(i_lev,i_oh)*concentration(i_lev)
5499            rate_night(i_lev,i_react) = rate_night(i_lev,i_react) + 2.*rate_local/nbr_pdt
5500            i_react=i_react+1
5501                i_v=i_v+1
5502!===============================
5503!--- 71 f008: cl + h2 -> hcl + h
5504!===============================
5505            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_cl)*concentration(i_lev) &
5506            *traceur(i_lev,i_h2)*concentration(i_lev)
5507            rate_night(i_lev,i_react) = rate_night(i_lev,i_react) + 2.*rate_local/nbr_pdt
5508            i_react=i_react+1
5509                i_v=i_v+1
5510!===============================
5511!--- 72 f009: cl + o3 -> clo + o2
5512!===============================
5513            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_cl)*concentration(i_lev) &
5514            *traceur(i_lev,i_o3)*concentration(i_lev)
5515            rate_night(i_lev,i_react) = rate_night(i_lev,i_react) + 2.*rate_local/nbr_pdt
5516            i_react=i_react+1
5517                i_v=i_v+1
5518!===============================
5519!--- 73 f010: cl + ho2 -> clo + oh
5520!===============================
5521            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_cl)*concentration(i_lev) &
5522            *traceur(i_lev,i_ho2)*concentration(i_lev)
5523            rate_night(i_lev,i_react) = rate_night(i_lev,i_react) + 2.*rate_local/nbr_pdt
5524            i_react=i_react+1
5525                i_v=i_v+1
5526!===============================
5527!--- 74 f011: cl + ho2 -> hcl + o2
5528!===============================
5529            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_cl)*concentration(i_lev) &
5530            *traceur(i_lev,i_ho2)*concentration(i_lev)
5531            rate_night(i_lev,i_react) = rate_night(i_lev,i_react) + 2.*rate_local/nbr_pdt
5532            i_react=i_react+1
5533                i_v=i_v+1
5534!===============================
5535!--- 75 f012: cl + h2o2 -> hcl + ho2
5536!===============================
5537            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_cl)*concentration(i_lev) &
5538            *traceur(i_lev,i_h2o2)*concentration(i_lev)
5539            rate_night(i_lev,i_react) = rate_night(i_lev,i_react) + 2.*rate_local/nbr_pdt
5540            i_react=i_react+1
5541                i_v=i_v+1
5542!===============================
5543!--- 76 f013: cl + co + co2 -> clco + co2
5544!===============================
5545            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_cl)*concentration(i_lev) &
5546            *traceur(i_lev,i_co)*concentration(i_lev)
5547            rate_night(i_lev,i_react) = rate_night(i_lev,i_react) + 2.*rate_local/nbr_pdt
5548            i_react=i_react+1
5549                i_v=i_v+1
5550!===============================
5551!--- 77 f015: clco + o2 + m -> clco3 + m
5552!===============================
5553                rate_local = v4(i_lev,i_v)*traceur(i_lev,i_o2)*concentration(i_lev) &
5554            *traceur(i_lev,i_clco)*concentration(i_lev)
5555            rate_night(i_lev,i_react) = rate_night(i_lev,i_react) + 2.*rate_local/nbr_pdt
5556            i_react=i_react+1
5557                i_v=i_v+1
5558!===============================
5559!--- 78 & 79 f016: clco3 + cl -> cl + clo + co2
5560!===============================
5561!     decomposee en :
5562!     0.5 clco3 + 0.5 cl -> cl + 0.5 co2
5563!     0.5 clco3 + 0.5 cl -> clo + 0.5 co2
5564            rate_local = v4(i_lev,i_v)*0.25*traceur(i_lev,i_clco3)*concentration(i_lev) &
5565            *traceur(i_lev,i_cl)*concentration(i_lev)
5566            rate_night(i_lev,i_react) = rate_night(i_lev,i_react) + 2.*rate_local/nbr_pdt
5567            i_react=i_react+1
5568                i_v=i_v+1
5569           
5570            rate_local = v4(i_lev,i_v)*0.25*traceur(i_lev,i_clco3)*concentration(i_lev) &
5571            *traceur(i_lev,i_cl)*concentration(i_lev)
5572            rate_night(i_lev,i_react) = rate_night(i_lev,i_react) + 2.*rate_local/nbr_pdt
5573            i_react=i_react+1
5574                i_v=i_v+1
5575!===============================
5576!--- 80 & 81 f017: clco3 + o -> cl + o2 + co2
5577!===============================
5578!     decomposee en :
5579!     0.5 clco3 + 0.5 o -> cl
5580!     0.5 clco3 + 0.5 o -> o2 + co2
5581            rate_local = v4(i_lev,i_v)*0.25*traceur(i_lev,i_clco3)*concentration(i_lev) &
5582            *traceur(i_lev,i_o)*concentration(i_lev)
5583            rate_night(i_lev,i_react) = rate_night(i_lev,i_react) + 2.*rate_local/nbr_pdt
5584            i_react=i_react+1
5585                i_v=i_v+1
5586           
5587            rate_local = v4(i_lev,i_v)*0.25*traceur(i_lev,i_clco3)*concentration(i_lev) &
5588            *traceur(i_lev,i_o)*concentration(i_lev)
5589            rate_night(i_lev,i_react) = rate_night(i_lev,i_react) + 2.*rate_local/nbr_pdt
5590            i_react=i_react+1
5591                i_v=i_v+1
5592!===============================
5593!--- 82 f018: clo + ho2  -> hocl + o2
5594!===============================
5595            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_clo)*concentration(i_lev) &
5596            *traceur(i_lev,i_ho2)*concentration(i_lev) 
5597            rate_night(i_lev,i_react) = rate_night(i_lev,i_react) + 2.*rate_local/nbr_pdt
5598            i_react=i_react+1
5599                i_v=i_v+1
5600!===============================
5601!--- 83 f019: oh + hocl -> h2o + clo
5602!===============================
5603            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_oh)*concentration(i_lev) &
5604            *traceur(i_lev,i_hocl)*concentration(i_lev) 
5605            rate_night(i_lev,i_react) = rate_night(i_lev,i_react) + 2.*rate_local/nbr_pdt
5606            i_react=i_react+1
5607                i_v=i_v+1
5608!===============================
5609!--- 84 f020: o + hocl -> oh + clo
5610!===============================
5611            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_hocl)*concentration(i_lev) &
5612            *traceur(i_lev,i_o)*concentration(i_lev) 
5613            rate_night(i_lev,i_react) = rate_night(i_lev,i_react) + 2.*rate_local/nbr_pdt
5614            i_react=i_react+1
5615                i_v=i_v+1
5616!===============================
5617!--- 85 f022: clco + o -> cl + co2
5618!===============================
5619            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_clco)*concentration(i_lev) &
5620            *traceur(i_lev,i_o)*concentration(i_lev) 
5621            rate_night(i_lev,i_react) = rate_night(i_lev,i_react) + 2.*rate_local/nbr_pdt
5622            i_react=i_react+1
5623                i_v=i_v+1
5624!===============================
5625!--- 86 f023: cl2 + o(1d) -> cl + clo
5626!===============================
5627            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_cl2)*concentration(i_lev) &
5628            *traceur(i_lev,i_o1d)*concentration(i_lev) 
5629            rate_night(i_lev,i_react) = rate_night(i_lev,i_react) + 2.*rate_local/nbr_pdt
5630            i_react=i_react+1
5631                i_v=i_v+1
5632!===============================
5633!--- 87 f024: cl2 + h  -> hcl + cl
5634!==============================
5635            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_cl2)*concentration(i_lev) &
5636            *traceur(i_lev,i_h)*concentration(i_lev) 
5637            rate_night(i_lev,i_react) = rate_night(i_lev,i_react) + 2.*rate_local/nbr_pdt
5638            i_react=i_react+1
5639                i_v=i_v+1
5640!===============================
5641!--- 88 f025: cl + clco  -> cl2 + co
5642!===============================
5643            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_cl)*concentration(i_lev) &
5644            *traceur(i_lev,i_clco)*concentration(i_lev) 
5645            rate_night(i_lev,i_react) = rate_night(i_lev,i_react) + 2.*rate_local/nbr_pdt
5646            i_react=i_react+1
5647                i_v=i_v+1
5648!===============================
5649!--- 89 f027: cl + so2 + co2  -> clso2 + co2
5650!===============================
5651            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_so2)*concentration(i_lev) &
5652            *traceur(i_lev,i_cl)*concentration(i_lev) 
5653            rate_night(i_lev,i_react) = rate_night(i_lev,i_react) + 2.*rate_local/nbr_pdt
5654            i_react=i_react+1
5655                i_v=i_v+1
5656!===============================
5657!--- 90 f028: clso2 + o  -> so2 + clo
5658!===============================
5659            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_clso2)*concentration(i_lev) &
5660            *traceur(i_lev,i_o)*concentration(i_lev) 
5661            rate_night(i_lev,i_react) = rate_night(i_lev,i_react) + 2.*rate_local/nbr_pdt
5662            i_react=i_react+1
5663                i_v=i_v+1
5664!===============================
5665!--- 91 f029: clso2 + h  -> so2 + hcl
5666!===============================
5667            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_clso2)*concentration(i_lev) &
5668            *traceur(i_lev,i_h)*concentration(i_lev) 
5669            rate_night(i_lev,i_react) = rate_night(i_lev,i_react) + 2.*rate_local/nbr_pdt
5670            i_react=i_react+1
5671                i_v=i_v+1
5672!===============================
5673!--- 92 f031: cl + o + co2  -> clo + co2
5674!===============================
5675            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_cl)*concentration(i_lev) &
5676            *traceur(i_lev,i_o)*concentration(i_lev) 
5677            rate_night(i_lev,i_react) = rate_night(i_lev,i_react) + 2.*rate_local/nbr_pdt
5678            i_react=i_react+1
5679                i_v=i_v+1
5680!===============================
5681!--- 93 f032: cl2 + o -> clo + cl
5682!===============================
5683            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_cl2)*concentration(i_lev) &
5684            *traceur(i_lev,i_o)*concentration(i_lev) 
5685            rate_night(i_lev,i_react) = rate_night(i_lev,i_react) + 2.*rate_local/nbr_pdt
5686            i_react=i_react+1
5687                i_v=i_v+1
5688!===============================
5689!--- 94 f033: clco + oh -> hocl + co
5690!===============================
5691            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_clco)*concentration(i_lev) &
5692            *traceur(i_lev,i_oh)*concentration(i_lev) 
5693            rate_night(i_lev,i_react) = rate_night(i_lev,i_react) + 2.*rate_local/nbr_pdt
5694            i_react=i_react+1
5695                i_v=i_v+1
5696!===============================
5697!--- 95 f034: cl2 + oh -> cl + hocl
5698!===============================
5699            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_cl2)*concentration(i_lev) &
5700            *traceur(i_lev,i_oh)*concentration(i_lev) 
5701            rate_night(i_lev,i_react) = rate_night(i_lev,i_react) + 2.*rate_local/nbr_pdt
5702            i_react=i_react+1
5703                i_v=i_v+1
5704!===============================
5705!--- 96 f035: clco + o -> co + clo
5706!===============================
5707            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_clco)*concentration(i_lev) &
5708            *traceur(i_lev,i_o)*concentration(i_lev) 
5709            rate_night(i_lev,i_react) = rate_night(i_lev,i_react) + 2.*rate_local/nbr_pdt
5710            i_react=i_react+1
5711                i_v=i_v+1
5712!===============================
5713!--- 97 f036: clco + cl2 -> cocl2 + cl
5714!===============================
5715            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_cl2)*concentration(i_lev) &
5716            *traceur(i_lev,i_clco)*concentration(i_lev) 
5717            rate_night(i_lev,i_react) = rate_night(i_lev,i_react) + 2.*rate_local/nbr_pdt
5718            i_react=i_react+1
5719                i_v=i_v+1
5720!===============================
5721!--- 98 f037: hcl + h -> h2 + cl
5722!===============================
5723            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_hcl)*concentration(i_lev) &
5724            *traceur(i_lev,i_h)*concentration(i_lev) 
5725            rate_night(i_lev,i_react) = rate_night(i_lev,i_react) + 2.*rate_local/nbr_pdt
5726            i_react=i_react+1
5727                i_v=i_v+1
5728!===============================
5729!--- 99 f038: clco + h -> hcl + co
5730!===============================
5731            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_s2)*concentration(i_lev)
5732            rate_night(i_lev,i_react) = rate_night(i_lev,i_react) + 2.*rate_local/nbr_pdt
5733            i_react=i_react+1
5734                i_v=i_v+1
5735!===============================
5736!--- 100 f039: cl + h + m -> hcl + m
5737!===============================
5738            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_cl)*concentration(i_lev) &
5739            *traceur(i_lev,i_h)*concentration(i_lev) 
5740            rate_night(i_lev,i_react) = rate_night(i_lev,i_react) + 2.*rate_local/nbr_pdt
5741            i_react=i_react+1
5742                i_v=i_v+1
5743!===============================
5744!--- 101 g001: s + o2 -> so + o
5745!===============================
5746            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_s)*concentration(i_lev) &
5747            *traceur(i_lev,i_o2)*concentration(i_lev) 
5748            rate_night(i_lev,i_react) = rate_night(i_lev,i_react) + 2.*rate_local/nbr_pdt
5749            i_react=i_react+1
5750                i_v=i_v+1
5751!===============================
5752!--- 102 g002: s + o3 -> so + o2
5753!===============================
5754            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_s)*concentration(i_lev) &
5755            *traceur(i_lev,i_o3)*concentration(i_lev) 
5756            rate_night(i_lev,i_react) = rate_night(i_lev,i_react) + 2.*rate_local/nbr_pdt
5757            i_react=i_react+1
5758                i_v=i_v+1
5759!===============================
5760!--- 103 g003: so + o2 -> so2 + o
5761!===============================
5762             rate_local = v4(i_lev,i_v)*traceur(i_lev,i_so)*concentration(i_lev) &
5763            *traceur(i_lev,i_o2)*concentration(i_lev) 
5764            rate_night(i_lev,i_react) = rate_night(i_lev,i_react) + 2.*rate_local/nbr_pdt
5765            i_react=i_react+1
5766                i_v=i_v+1
5767!===============================
5768!--- 104 g004: so + o3 -> so2 + o2
5769!===============================
5770            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_so)*concentration(i_lev) &
5771            *traceur(i_lev,i_o3)*concentration(i_lev) 
5772            rate_night(i_lev,i_react) = rate_night(i_lev,i_react) + 2.*rate_local/nbr_pdt
5773            i_react=i_react+1
5774                i_v=i_v+1
5775!===============================
5776!--- 105 g005: so + oh -> so2 + h
5777!===============================
5778            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_so)*concentration(i_lev) &
5779            *traceur(i_lev,i_oh)*concentration(i_lev) 
5780            rate_night(i_lev,i_react) = rate_night(i_lev,i_react) + 2.*rate_local/nbr_pdt
5781            i_react=i_react+1
5782                i_v=i_v+1
5783!===============================
5784!--- 106 g006: s + oh -> so + h
5785!===============================
5786            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_s)*concentration(i_lev) &
5787            *traceur(i_lev,i_oh)*concentration(i_lev) 
5788            rate_night(i_lev,i_react) = rate_night(i_lev,i_react) + 2.*rate_local/nbr_pdt
5789            i_react=i_react+1
5790                i_v=i_v+1
5791!===============================
5792!--- 107 g007: so + o + co2 -> so2 + co2
5793!===============================
5794            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_so)*concentration(i_lev) &
5795            *traceur(i_lev,i_o)*concentration(i_lev) 
5796            rate_night(i_lev,i_react) = rate_night(i_lev,i_react) + 2.*rate_local/nbr_pdt
5797            i_react=i_react+1
5798                i_v=i_v+1
5799!===============================
5800!--- 108 g008: so + ho2 -> so2 + oh
5801!===============================
5802            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_so)*concentration(i_lev) &
5803            *traceur(i_lev,i_ho2)*concentration(i_lev) 
5804            rate_night(i_lev,i_react) = rate_night(i_lev,i_react) + 2.*rate_local/nbr_pdt
5805            i_react=i_react+1
5806                i_v=i_v+1
5807!===============================
5808!--- 109 g009: so2 + o + co2 -> so3 + co2
5809!===============================
5810            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_so2)*concentration(i_lev) &
5811            *traceur(i_lev,i_o)*concentration(i_lev) 
5812            rate_night(i_lev,i_react) = rate_night(i_lev,i_react) + 2.*rate_local/nbr_pdt
5813            i_react=i_react+1
5814                i_v=i_v+1
5815!===============================
5816!--- 110 g010: s + o + co2 -> so + co2
5817!===============================
5818            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_s)*concentration(i_lev) &
5819            *traceur(i_lev,i_o)*concentration(i_lev) 
5820            rate_night(i_lev,i_react) = rate_night(i_lev,i_react) + 2.*rate_local/nbr_pdt
5821            i_react=i_react+1
5822                i_v=i_v+1
5823!===============================
5824!--- 111 g011: so3 + h2o -> h2so4
5825!===============================
5826            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_so3)*concentration(i_lev) &
5827            *traceur(i_lev,i_h2o)*concentration(i_lev) 
5828            rate_night(i_lev,i_react) = rate_night(i_lev,i_react) + 2.*rate_local/nbr_pdt
5829            i_react=i_react+1
5830                i_v=i_v+1
5831!===============================
5832!--- 112 g012: so + clo -> so2 + cl
5833!===============================
5834            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_so)*concentration(i_lev) &
5835            *traceur(i_lev,i_clo)*concentration(i_lev) 
5836            rate_night(i_lev,i_react) = rate_night(i_lev,i_react) + 2.*rate_local/nbr_pdt
5837            i_react=i_react+1
5838                i_v=i_v+1
5839!===============================
5840!--- 113 g013: so + so3 -> so2 + so2
5841!===============================
5842            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_so)*concentration(i_lev) &
5843            *traceur(i_lev,i_so3)*concentration(i_lev) 
5844            rate_night(i_lev,i_react) = rate_night(i_lev,i_react) + 2.*rate_local/nbr_pdt
5845            i_react=i_react+1
5846                i_v=i_v+1
5847!===============================
5848!--- 114 g014: so3 + o -> so2 + o2
5849!===============================
5850            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_so3)*concentration(i_lev) &
5851            *traceur(i_lev,i_o)*concentration(i_lev) 
5852            rate_night(i_lev,i_react) = rate_night(i_lev,i_react) + 2.*rate_local/nbr_pdt
5853            i_react=i_react+1
5854                i_v=i_v+1
5855!===============================
5856!--- 115 & 116 g017: clco3 + so -> cl + so2 + co2
5857!===============================
5858!     decomposee en :
5859!     0.5 clco3 + 0.5 so -> cl
5860!     0.5 clco3 + 0.5 so -> so2 + co2
5861            rate_local = v4(i_lev,i_v)*0.25*traceur(i_lev,i_clco3)*concentration(i_lev) &
5862            *traceur(i_lev,i_so)*concentration(i_lev) 
5863            rate_night(i_lev,i_react) = rate_night(i_lev,i_react) + 2.*rate_local/nbr_pdt
5864            i_react=i_react+1
5865                i_v=i_v+1
5866           
5867            rate_local = v4(i_lev,i_v)*0.25*traceur(i_lev,i_clco3)*concentration(i_lev) &
5868            *traceur(i_lev,i_so)*concentration(i_lev) 
5869            rate_night(i_lev,i_react) = rate_night(i_lev,i_react) + 2.*rate_local/nbr_pdt
5870            i_react=i_react+1
5871                i_v=i_v+1
5872!===============================
5873!--- 117 g018: s + co + co2 -> ocs + co2
5874!===============================
5875            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_s)*concentration(i_lev) &
5876            *traceur(i_lev,i_co)*concentration(i_lev) 
5877            rate_night(i_lev,i_react) = rate_night(i_lev,i_react) + 2.*rate_local/nbr_pdt
5878            i_react=i_react+1
5879                i_v=i_v+1
5880!===============================
5881!--- 118 g019: clco + s -> ocs + cl
5882!===============================
5883            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_clco)*concentration(i_lev) &
5884            *traceur(i_lev,i_s)*concentration(i_lev) 
5885            rate_night(i_lev,i_react) = rate_night(i_lev,i_react) + 2.*rate_local/nbr_pdt
5886            i_react=i_react+1
5887                i_v=i_v+1
5888!===============================
5889!--- 119 g020: so2 + oh + co2 -> hso3 + co2
5890!===============================
5891            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_so2)*concentration(i_lev) &
5892            *traceur(i_lev,i_oh)*concentration(i_lev) 
5893            rate_night(i_lev,i_react) = rate_night(i_lev,i_react) + 2.*rate_local/nbr_pdt
5894            i_react=i_react+1
5895                i_v=i_v+1
5896!===============================
5897!--- 120 g021: hso3 + o2 -> ho2 + so3
5898!===============================
5899            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_o2)*concentration(i_lev) &
5900            *traceur(i_lev,i_hso3)*concentration(i_lev) 
5901            rate_night(i_lev,i_react) = rate_night(i_lev,i_react) + 2.*rate_local/nbr_pdt
5902            i_react=i_react+1
5903                i_v=i_v+1
5904!===============================
5905!--- 121 g024: s2 + o -> so + s
5906!===============================
5907            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_s2)*concentration(i_lev) &
5908            *traceur(i_lev,i_o)*concentration(i_lev) 
5909            rate_night(i_lev,i_react) = rate_night(i_lev,i_react) + 2.*rate_local/nbr_pdt
5910            i_react=i_react+1
5911                i_v=i_v+1
5912!===============================
5913!--- 122 g025: s + ocs -> s2 +  co
5914!===============================
5915            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_s)*concentration(i_lev) &
5916            *traceur(i_lev,i_ocs)*concentration(i_lev) 
5917            rate_night(i_lev,i_react) = rate_night(i_lev,i_react) + 2.*rate_local/nbr_pdt
5918            i_react=i_react+1
5919                i_v=i_v+1
5920!===============================
5921!--- 123 g026: ocs + o -> so + co
5922!===============================
5923            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_o)*concentration(i_lev) &
5924            *traceur(i_lev,i_ocs)*concentration(i_lev) 
5925            rate_night(i_lev,i_react) = rate_night(i_lev,i_react) + 2.*rate_local/nbr_pdt
5926            i_react=i_react+1
5927                i_v=i_v+1
5928!===============================
5929!--- 124 g027: s + so3 -> so2 +  so
5930!===============================
5931            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_s)*concentration(i_lev) &
5932            *traceur(i_lev,i_so3)*concentration(i_lev) 
5933            rate_night(i_lev,i_react) = rate_night(i_lev,i_react) + 2.*rate_local/nbr_pdt
5934            i_react=i_react+1
5935                i_v=i_v+1
5936!===============================
5937!--- 125 g028: s + ho2 -> so +  oh
5938!===============================
5939            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_s)*concentration(i_lev) &
5940            *traceur(i_lev,i_ho2)*concentration(i_lev) 
5941            rate_night(i_lev,i_react) = rate_night(i_lev,i_react) + 2.*rate_local/nbr_pdt
5942            i_react=i_react+1
5943                i_v=i_v+1
5944!===============================
5945!--- 126 g029: s + clo -> so +  cl
5946!===============================
5947            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_s)*concentration(i_lev) &
5948            *traceur(i_lev,i_clo)*concentration(i_lev) 
5949            rate_night(i_lev,i_react) = rate_night(i_lev,i_react) + 2.*rate_local/nbr_pdt
5950            i_react=i_react+1
5951                i_v=i_v+1   
5952           END DO       
5953         ELSE
5954!===============================         
5955!        !!!! JOUR !!!!
5956!===============================
5957!       PRINT*,'JOUR'
5958       
5959           DO i_lev=1, n_lev
5960           i_react=1
5961           i_v=1
5962!===============================
5963!    1     o2 + hv     -> o + o
5964!===============================
5965                rate_local = vphot(i_lev,i_v)*traceur(i_lev,i_o2)*concentration(i_lev)
5966                rate_day(i_lev,i_react) = rate_day(i_lev,i_react) + 2.*rate_local/nbr_pdt
5967                i_react=i_react+1
5968                i_v=i_v+1
5969!===============================
5970!    2     o2 + hv     -> o + o(1d)
5971!===============================
5972                rate_local = vphot(i_lev,i_v)*traceur(i_lev,i_o2)*concentration(i_lev)
5973                rate_day(i_lev,i_react) = rate_day(i_lev,i_react) + 2.*rate_local/nbr_pdt
5974                i_react=i_react+1
5975                i_v=i_v+1
5976!===============================
5977!    3     co2 + hv    -> co + o
5978!===============================
5979            rate_local = vphot(i_lev,i_v)*traceur(i_lev,i_co2)*concentration(i_lev)
5980            rate_day(i_lev,i_react) = rate_day(i_lev,i_react) + 2.*rate_local/nbr_pdt
5981            i_react=i_react+1
5982                i_v=i_v+1
5983!===============================
5984!    4     co2 + hv    -> co + o(1d)
5985!===============================
5986            rate_local = vphot(i_lev,i_v)*traceur(i_lev,i_co2)*concentration(i_lev)
5987            rate_day(i_lev,i_react) = rate_day(i_lev,i_react) + 2.*rate_local/nbr_pdt
5988            i_react=i_react+1
5989                i_v=i_v+1
5990!===============================
5991!    5     o3 + hv     -> o2(Dg) + o(1d)
5992!===============================
5993            rate_local = vphot(i_lev,i_v)*traceur(i_lev,i_o3)*concentration(i_lev)
5994            rate_day(i_lev,i_react) = rate_day(i_lev,i_react) + 2.*rate_local/nbr_pdt
5995            i_react=i_react+1
5996                i_v=i_v+1
5997!===============================
5998!    6     o3 + hv     -> o2 + o
5999!===============================
6000            rate_local = vphot(i_lev,i_v)*traceur(i_lev,i_o3)*concentration(i_lev)
6001            rate_day(i_lev,i_react) = rate_day(i_lev,i_react) + 2.*rate_local/nbr_pdt
6002            i_react=i_react+1
6003                i_v=i_v+1
6004!===============================
6005!    7     h2o + hv    -> h + oh
6006!===============================
6007            rate_local = vphot(i_lev,i_v)*traceur(i_lev,i_h2o)*concentration(i_lev)
6008            rate_day(i_lev,i_react) = rate_day(i_lev,i_react) + 2.*rate_local/nbr_pdt
6009            i_react=i_react+1
6010                i_v=i_v+1
6011!===============================
6012!    8     ho2 + hv    -> oh + o
6013!===============================
6014            rate_local = vphot(i_lev,i_v)*traceur(i_lev,i_ho2)*concentration(i_lev)
6015            rate_day(i_lev,i_react) = rate_day(i_lev,i_react) + 2.*rate_local/nbr_pdt
6016            i_react=i_react+1
6017                i_v=i_v+1
6018!===============================
6019!    9     h2o2 + hv   -> oh + oh
6020!===============================
6021            rate_local = vphot(i_lev,i_v)*traceur(i_lev,i_h2o2)*concentration(i_lev)
6022            rate_day(i_lev,i_react) = rate_day(i_lev,i_react) + 2.*rate_local/nbr_pdt
6023            i_react=i_react+1
6024                i_v=i_v+1
6025!===============================
6026!    10    hcl + hv    -> h + cl
6027!===============================
6028            rate_local = vphot(i_lev,i_v)*traceur(i_lev,i_hcl)*concentration(i_lev)
6029            rate_day(i_lev,i_react) = rate_day(i_lev,i_react) + 2.*rate_local/nbr_pdt
6030            i_react=i_react+1
6031                i_v=i_v+1
6032!===============================
6033!    11    cl2 + hv    -> cl + cl
6034!===============================
6035            rate_local = vphot(i_lev,i_v)*traceur(i_lev,i_cl2)*concentration(i_lev)
6036            rate_day(i_lev,i_react) = rate_day(i_lev,i_react) + 2.*rate_local/nbr_pdt
6037            i_react=i_react+1
6038                i_v=i_v+1
6039!===============================
6040!    12    hocl + hv   -> oh + cl
6041!===============================
6042            rate_local = vphot(i_lev,i_v)*traceur(i_lev,i_hocl)*concentration(i_lev)
6043            rate_day(i_lev,i_react) = rate_day(i_lev,i_react) + 2.*rate_local/nbr_pdt
6044            i_react=i_react+1
6045                i_v=i_v+1
6046!===============================
6047!    13    so2 + hv    -> so + o
6048!===============================
6049            rate_local = vphot(i_lev,i_v)*traceur(i_lev,i_so2)*concentration(i_lev)
6050            rate_day(i_lev,i_react) = rate_day(i_lev,i_react) + 2.*rate_local/nbr_pdt
6051            i_react=i_react+1
6052                i_v=i_v+1
6053!===============================
6054!    14    so + hv     -> s + o
6055!===============================
6056            rate_local = vphot(i_lev,i_v)*traceur(i_lev,i_so)*concentration(i_lev)
6057            rate_day(i_lev,i_react) = rate_day(i_lev,i_react) + 2.*rate_local/nbr_pdt
6058            i_react=i_react+1
6059                i_v=i_v+1
6060!===============================
6061!    15    so3 + hv    -> so2 + o
6062!===============================
6063            rate_local = vphot(i_lev,i_v)*traceur(i_lev,i_so3)*concentration(i_lev)
6064            rate_day(i_lev,i_react) = rate_day(i_lev,i_react) + 2.*rate_local/nbr_pdt
6065            i_react=i_react+1
6066                i_v=i_v+1
6067!===============================
6068!    16    clo + hv    -> cl + o
6069!===============================
6070            rate_local = vphot(i_lev,i_v)*traceur(i_lev,i_clo)*concentration(i_lev)
6071            rate_day(i_lev,i_react) = rate_day(i_lev,i_react) + 2.*rate_local/nbr_pdt
6072            i_react=i_react+1
6073                i_v=i_v+1
6074!===============================
6075!    17    ocs + hv    -> co + s
6076!===============================
6077            rate_local = vphot(i_lev,i_v)*traceur(i_lev,i_ocs)*concentration(i_lev)
6078            rate_day(i_lev,i_react) = rate_day(i_lev,i_react) + 2.*rate_local/nbr_pdt
6079            i_react=i_react+1
6080                i_v=i_v+1
6081!===============================
6082!    18    cocl2 + hv  -> cl + cl + co
6083!===============================
6084            rate_local = vphot(i_lev,i_v)*traceur(i_lev,i_cocl2)*concentration(i_lev)
6085            rate_day(i_lev,i_react) = rate_day(i_lev,i_react) + 2.*rate_local/nbr_pdt
6086            i_react=i_react+1
6087                i_v=i_v+1
6088!===============================
6089!    19    h2so4 + hv  -> so3 + h2o
6090!===============================
6091            rate_local = vphot(i_lev,i_v)*traceur(i_lev,i_h2so4)*concentration(i_lev)
6092            rate_day(i_lev,i_react) = rate_day(i_lev,i_react) + 2.*rate_local/nbr_pdt
6093            i_react=i_react+1
6094                i_v=i_v+1
6095!===============================
6096!    20     o(1d) + co2 -> o + co2
6097!===============================
6098            rate_local = vphot(i_lev,i_v)*traceur(i_lev,i_o1d)*concentration(i_lev)
6099            rate_day(i_lev,i_react) = rate_day(i_lev,i_react) + 2.*rate_local/nbr_pdt
6100            i_react=i_react+1
6101                i_v=i_v+1
6102!===============================
6103!    21    o(1d) + o2 -> o + o2
6104!===============================
6105            rate_local = vphot(i_lev,i_v)*traceur(i_lev,i_o1d)*concentration(i_lev)
6106            rate_day(i_lev,i_react) = rate_day(i_lev,i_react) + 2.*rate_local/nbr_pdt
6107            i_react=i_react+1
6108                i_v=i_v+1
6109!===============================
6110!    22    clco + co2 -> cl + co + co2
6111!===============================
6112            rate_local = vphot(i_lev,22)*traceur(i_lev,i_clco)*concentration(i_lev)
6113            rate_day(i_lev,i_react) = rate_day(i_lev,i_react) + 2.*rate_local/nbr_pdt
6114            i_react=i_react+1
6115                i_v=i_v+1
6116!===============================
6117!    23    s2o2 + co2 -> 2so + co2
6118!===============================
6119            rate_local = vphot(i_lev,23)*traceur(i_lev,i_s2o2)*concentration(i_lev)
6120            rate_day(i_lev,i_react) = rate_day(i_lev,i_react) + 2.*rate_local/nbr_pdt
6121            i_react=i_react+1
6122                i_v=i_v+1
6123!===============================
6124!    24    s2 + co2 -> 2s + co2
6125!===============================
6126            rate_local = vphot(i_lev,i_v)*traceur(i_lev,i_s2)*concentration(i_lev)
6127            rate_day(i_lev,i_react) = rate_day(i_lev,i_react) + 2.*rate_local/nbr_pdt
6128            i_react=i_react+1
6129                i_v=i_v+1
6130!===============================
6131!    25    ICE
6132!===============================
6133            i_react=i_react+1
6134                i_v=i_v+1
6135!===============================
6136!    26    ICE
6137!===============================
6138            i_react=i_react+1
6139                i_v=i_v+1 
6140!===============================
6141!    27    ICE
6142!===============================
6143            i_react=i_react+1
6144                i_v=i_v+1 
6145!===============================
6146!    28    ICE
6147!===============================
6148            i_react=i_react+1
6149                i_v=i_v+1 
6150!===============================
6151!    29    ICE
6152!===============================
6153            i_react=i_react+1
6154                i_v=i_v+1 
6155!===============================
6156!    30    o2(Dg) + CO2 -> O2 + CO2
6157!===============================
6158            rate_local = vphot(i_lev,i_v)*traceur(i_lev,i_o2dg)*concentration(i_lev)
6159            rate_day(i_lev,i_react) = rate_day(i_lev,i_react) + 2.*rate_local/nbr_pdt
6160            i_react=i_react+1
6161                i_v=i_v+1
6162!===============================
6163!    31    o2(Dg) -> O2 + hv
6164!===============================
6165            rate_local = vphot(i_lev,i_v)*traceur(i_lev,i_o2dg)*concentration(i_lev)
6166            rate_day(i_lev,i_react) = rate_day(i_lev,i_react) + 2.*rate_local/nbr_pdt
6167            i_react=i_react+1
6168                i_v=i_v+1
6169               
6170! DEBUT DES REACTION V3
6171                i_v = i_v - nb_phot_max
6172!===============================
6173!--- 32 a002: o + o + co2 -> o2 + co2
6174!===============================
6175            rate_local = v3(i_lev,i_v)*traceur(i_lev,i_o)*concentration(i_lev) &
6176            *traceur(i_lev,i_o)*concentration(i_lev)
6177            rate_day(i_lev,i_react) = rate_day(i_lev,i_react) + 2.*rate_local/nbr_pdt
6178            i_react=i_react+1
6179                i_v=i_v+1
6180!===============================
6181!--- 33 c008: ho2 + ho2 -> h2o2 + o2
6182!===============================
6183            rate_local = v3(i_lev,i_v)*traceur(i_lev,i_ho2)*concentration(i_lev) &
6184            *traceur(i_lev,i_ho2)*concentration(i_lev)
6185            rate_day(i_lev,i_react) = rate_day(i_lev,i_react) + 2.*rate_local/nbr_pdt
6186            i_react=i_react+1
6187                i_v=i_v+1
6188!===============================
6189!--- 34 c013: oh + oh -> h2o + o
6190!===============================
6191            rate_local = v3(i_lev,i_v)*traceur(i_lev,i_oh)*concentration(i_lev) &
6192            *traceur(i_lev,i_oh)*concentration(i_lev)
6193            rate_day(i_lev,i_react) = rate_day(i_lev,i_react) + 2.*rate_local/nbr_pdt
6194            i_react=i_react+1
6195                i_v=i_v+1
6196!===============================
6197!--- 35 c016: ho2 + ho2 + co2 -> h2o2 + o2 + co2
6198!===============================
6199            rate_local = v3(i_lev,i_v)*traceur(i_lev,i_ho2)*concentration(i_lev) &
6200            *traceur(i_lev,i_ho2)*concentration(i_lev)
6201            rate_day(i_lev,i_react) = rate_day(i_lev,i_react) + 2.*rate_local/nbr_pdt
6202            i_react=i_react+1
6203                i_v=i_v+1
6204!===============================
6205!--- 36 c017: oh + oh + co2 -> h2o2 + co2
6206!===============================
6207            rate_local = v3(i_lev,i_v)*traceur(i_lev,i_oh)*concentration(i_lev) &
6208            *traceur(i_lev,i_oh)*concentration(i_lev)
6209            rate_day(i_lev,i_react) = rate_day(i_lev,i_react) + 2.*rate_local/nbr_pdt
6210            i_react=i_react+1
6211                i_v=i_v+1
6212!===============================
6213!--- 37 c018: h + h + co2 -> h2 + co2
6214!===============================
6215            rate_local = v3(i_lev,i_v)*traceur(i_lev,i_h)*concentration(i_lev) &
6216            *traceur(i_lev,i_h)*concentration(i_lev)
6217            rate_day(i_lev,i_react) = rate_day(i_lev,i_react) + 2.*rate_local/nbr_pdt
6218            i_react=i_react+1
6219                i_v=i_v+1
6220!===============================
6221!--- 38 f021: cl + cl + co2 -> cl2 + co2
6222!===============================
6223            rate_local = v3(i_lev,i_v)*traceur(i_lev,i_cl)*concentration(i_lev) &
6224            *traceur(i_lev,i_cl)*concentration(i_lev)
6225            rate_day(i_lev,i_react) = rate_day(i_lev,i_react) + 2.*rate_local/nbr_pdt
6226            i_react=i_react+1
6227                i_v=i_v+1
6228!===============================
6229!--- 39 f026: clco + clco  -> cocl2 + co
6230!===============================
6231            rate_local = v3(i_lev,i_v)*traceur(i_lev,i_clco)*concentration(i_lev) &
6232            *traceur(i_lev,i_clco)*concentration(i_lev)
6233            rate_day(i_lev,i_react) = rate_day(i_lev,i_react) + 2.*rate_local/nbr_pdt
6234            i_react=i_react+1
6235                i_v=i_v+1
6236!===============================
6237!--- 40 f030: clso2 + clso2  -> cl2 + so2 + so2
6238!===============================
6239            rate_local = v3(i_lev,i_v)*traceur(i_lev,i_clso2)*concentration(i_lev) &
6240            *traceur(i_lev,i_clso2)*concentration(i_lev)
6241            rate_day(i_lev,i_react) = rate_day(i_lev,i_react) + 2.*rate_local/nbr_pdt
6242            i_react=i_react+1
6243                i_v=i_v+1
6244!===============================
6245!--- 41 g015: so + so + co2 -> s2o2 + co2
6246!===============================
6247            rate_local = v3(i_lev,i_v)*traceur(i_lev,i_so)*concentration(i_lev) &
6248            *traceur(i_lev,i_so)*concentration(i_lev)
6249            rate_day(i_lev,i_react) = rate_day(i_lev,i_react) + 2.*rate_local/nbr_pdt
6250            i_react=i_react+1
6251                i_v=i_v+1
6252!===============================
6253!--- 42 g022: s + s + co2 -> s2 + co2
6254!===============================
6255            rate_local = v3(i_lev,i_v)*traceur(i_lev,i_s)*concentration(i_lev) &
6256            *traceur(i_lev,i_s)*concentration(i_lev)
6257            rate_day(i_lev,i_react) = rate_day(i_lev,i_react) + 2.*rate_local/nbr_pdt
6258            i_react=i_react+1
6259                i_v=i_v+1
6260
6261! DEBUT DES REACTION V4
6262
6263                i_v = i_v - nb_reaction_3_max
6264
6265!===============================
6266!--- 43 a001: o + o2 + co2 -> o3 + co2
6267!===============================
6268            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_o2)*concentration(i_lev) &
6269            *traceur(i_lev,i_o)*concentration(i_lev)
6270            rate_day(i_lev,i_react) = rate_day(i_lev,i_react) + 2.*rate_local/nbr_pdt
6271            i_react=i_react+1
6272                i_v=i_v+1
6273!===============================
6274!--- 44 a003: o + o3 -> o2 + o2
6275!===============================
6276            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_o3)*concentration(i_lev) &
6277            *traceur(i_lev,i_o)*concentration(i_lev) 
6278            rate_day(i_lev,i_react) = rate_day(i_lev,i_react) + 2.*rate_local/nbr_pdt
6279            i_react=i_react+1
6280                i_v=i_v+1
6281!===============================
6282!--- 45 b002: o(1d) + h2o  -> oh + oh
6283!===============================
6284            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_o1d)*concentration(i_lev) &
6285            *traceur(i_lev,i_h2o)*concentration(i_lev) 
6286            rate_day(i_lev,i_react) = rate_day(i_lev,i_react) + 2.*rate_local/nbr_pdt
6287            i_react=i_react+1
6288                i_v=i_v+1
6289!===============================
6290!--- 46 b003: o(1d) + h2  -> oh + h
6291!===============================
6292            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_o1d)*concentration(i_lev) &
6293            *traceur(i_lev,i_h2)*concentration(i_lev) 
6294            rate_day(i_lev,i_react) = rate_day(i_lev,i_react) + 2.*rate_local/nbr_pdt
6295            i_react=i_react+1
6296                i_v=i_v+1
6297!===============================
6298!--- 47 b005: o(1d) + o3  -> o2 + o2
6299!===============================
6300            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_o1d)*concentration(i_lev) &
6301            *traceur(i_lev,i_o3)*concentration(i_lev)
6302            rate_day(i_lev,i_react) = rate_day(i_lev,i_react) + 2.*rate_local/nbr_pdt
6303            i_react=i_react+1
6304                i_v=i_v+1
6305!===============================
6306!--- 48 b006: o(1d) + o3  -> o2 + o + o
6307!===============================
6308            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_o1d)*concentration(i_lev) &
6309            *traceur(i_lev,i_o3)*concentration(i_lev)
6310            rate_day(i_lev,i_react) = rate_day(i_lev,i_react) + 2.*rate_local/nbr_pdt
6311            i_react=i_react+1
6312                i_v=i_v+1
6313!===============================
6314!--- 49 c001: o + ho2 -> oh + o2
6315!===============================
6316            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_o)*concentration(i_lev) &
6317            *traceur(i_lev,i_ho2)*concentration(i_lev)
6318            rate_day(i_lev,i_react) = rate_day(i_lev,i_react) + 2.*rate_local/nbr_pdt
6319            i_react=i_react+1
6320                i_v=i_v+1
6321!===============================
6322!--- 50 c002: o + oh -> o2 + h
6323!===============================
6324            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_s2)*concentration(i_lev)
6325            rate_day(i_lev,i_react) = rate_day(i_lev,i_react) + 2.*rate_local/nbr_pdt
6326            i_react=i_react+1
6327                i_v=i_v+1
6328!===============================
6329!--- 51 c003: h + o3 -> oh + o2
6330!===============================
6331            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_h)*concentration(i_lev) &
6332            *traceur(i_lev,i_o3)*concentration(i_lev)
6333            rate_day(i_lev,i_react) = rate_day(i_lev,i_react) + 2.*rate_local/nbr_pdt
6334            i_react=i_react+1
6335                i_v=i_v+1
6336!===============================
6337!--- 52 c004: h + ho2 -> oh + oh
6338!===============================
6339            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_h)*concentration(i_lev) &
6340            *traceur(i_lev,i_ho2)*concentration(i_lev)
6341            rate_day(i_lev,i_react) = rate_day(i_lev,i_react) + 2.*rate_local/nbr_pdt
6342            i_react=i_react+1
6343                i_v=i_v+1
6344!===============================
6345!--- 53 c005: h + ho2 -> h2 + o2
6346!===============================
6347            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_h)*concentration(i_lev) &
6348            *traceur(i_lev,i_ho2)*concentration(i_lev)
6349            rate_day(i_lev,i_react) = rate_day(i_lev,i_react) + 2.*rate_local/nbr_pdt
6350            i_react=i_react+1
6351                i_v=i_v+1
6352!===============================
6353!--- 54 c006: h + ho2 -> h2o + o
6354!===============================
6355            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_h)*concentration(i_lev) &
6356            *traceur(i_lev,i_ho2)*concentration(i_lev)
6357            rate_day(i_lev,i_react) = rate_day(i_lev,i_react) + 2.*rate_local/nbr_pdt
6358            i_react=i_react+1
6359                i_v=i_v+1
6360!===============================
6361!--- 55 c007: oh + ho2 -> h2o + o2
6362!===============================
6363            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_oh)*concentration(i_lev) &
6364            *traceur(i_lev,i_ho2)*concentration(i_lev)
6365            rate_day(i_lev,i_react) = rate_day(i_lev,i_react) + 2.*rate_local/nbr_pdt
6366            i_react=i_react+1
6367                i_v=i_v+1
6368!===============================
6369!--- 56 c009: oh + h2o2 -> h2o + ho2
6370!===============================
6371            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_oh)*concentration(i_lev) &
6372            *traceur(i_lev,i_h2o2)*concentration(i_lev)
6373            rate_day(i_lev,i_react) = rate_day(i_lev,i_react) + 2.*rate_local/nbr_pdt
6374            i_react=i_react+1
6375                i_v=i_v+1
6376!===============================
6377!--- 57 c010: oh + h2 -> h2o + h
6378!===============================
6379            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_oh)*concentration(i_lev) &
6380            *traceur(i_lev,i_h2)*concentration(i_lev)
6381            rate_day(i_lev,i_react) = rate_day(i_lev,i_react) + 2.*rate_local/nbr_pdt
6382            i_react=i_react+1
6383                i_v=i_v+1
6384!===============================
6385!--- 58 c011: h + o2 + co2 -> ho2 + co2
6386!===============================
6387            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_o2)*concentration(i_lev) &
6388            *traceur(i_lev,i_h)*concentration(i_lev)
6389            rate_day(i_lev,i_react) = rate_day(i_lev,i_react) + 2.*rate_local/nbr_pdt
6390            i_react=i_react+1
6391                i_v=i_v+1
6392!===============================
6393!--- 59 c012: o + h2o2 -> oh + ho2
6394!===============================
6395            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_o)*concentration(i_lev) &
6396            *traceur(i_lev,i_h2o2)*concentration(i_lev)
6397            rate_day(i_lev,i_react) = rate_day(i_lev,i_react) + 2.*rate_local/nbr_pdt
6398            i_react=i_react+1
6399                i_v=i_v+1
6400!===============================
6401!--- 60 c014: oh + o3 -> ho2 + o2
6402!===============================
6403            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_oh)*concentration(i_lev) &
6404            *traceur(i_lev,i_o3)*concentration(i_lev)
6405            rate_day(i_lev,i_react) = rate_day(i_lev,i_react) + 2.*rate_local/nbr_pdt
6406            i_react=i_react+1
6407                i_v=i_v+1
6408!===============================
6409!--- 61 c015: ho2 + o3 -> oh + o2 + o2
6410!===============================
6411            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_o3)*concentration(i_lev) &
6412            *traceur(i_lev,i_ho2)*concentration(i_lev)
6413            rate_day(i_lev,i_react) = rate_day(i_lev,i_react) + 2.*rate_local/nbr_pdt
6414            i_react=i_react+1
6415                i_v=i_v+1
6416!===============================
6417!--- 62 e001: oh + co -> co2 + h
6418!===============================
6419            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_s2)*concentration(i_lev)
6420            rate_day(i_lev,i_react) = rate_day(i_lev,i_react) + 2.*rate_local/nbr_pdt
6421            i_react=i_react+1
6422                i_v=i_v+1
6423!===============================
6424!--- 63 e002: o + co + m -> co2 + m
6425!===============================
6426            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_o)*concentration(i_lev) &
6427            *traceur(i_lev,i_co)*concentration(i_lev)
6428            rate_day(i_lev,i_react) = rate_day(i_lev,i_react) + 2.*rate_local/nbr_pdt
6429            i_react=i_react+1
6430                i_v=i_v+1
6431!===============================
6432!--- 64 f001: hcl + o(1d) -> oh + cl
6433!===============================
6434            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_hcl)*concentration(i_lev) &
6435            *traceur(i_lev,i_o1d)*concentration(i_lev)
6436            rate_day(i_lev,i_react) = rate_day(i_lev,i_react) + 2.*rate_local/nbr_pdt
6437            i_react=i_react+1
6438                i_v=i_v+1
6439!===============================
6440!--- 65 f002: hcl + o(1d) -> h + clo
6441!===============================
6442            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_hcl)*concentration(i_lev) &
6443            *traceur(i_lev,i_o1d)*concentration(i_lev)
6444            rate_day(i_lev,i_react) = rate_day(i_lev,i_react) + 2.*rate_local/nbr_pdt
6445            i_react=i_react+1
6446                i_v=i_v+1
6447!===============================
6448!--- 66 f003: hcl + o -> oh + cl
6449!===============================
6450            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_hcl)*concentration(i_lev) &
6451            *traceur(i_lev,i_o)*concentration(i_lev)
6452            rate_day(i_lev,i_react) = rate_day(i_lev,i_react) + 2.*rate_local/nbr_pdt
6453            i_react=i_react+1
6454                i_v=i_v+1
6455!===============================
6456!--- 67 f004: hcl + oh -> h2o + cl
6457!===============================
6458            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_hcl)*concentration(i_lev) &
6459            *traceur(i_lev,i_oh)*concentration(i_lev)
6460            rate_day(i_lev,i_react) = rate_day(i_lev,i_react) + 2.*rate_local/nbr_pdt
6461            i_react=i_react+1
6462                i_v=i_v+1
6463!===============================
6464!--- 68 f005: clo + o -> cl + o2
6465!===============================
6466            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_clo)*concentration(i_lev) &
6467            *traceur(i_lev,i_o)*concentration(i_lev)
6468            rate_day(i_lev,i_react) = rate_day(i_lev,i_react) + 2.*rate_local/nbr_pdt
6469            i_react=i_react+1
6470                i_v=i_v+1
6471!===============================
6472!--- 69 f006: clo + oh -> cl + ho2
6473!===============================
6474            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_clo)*concentration(i_lev) &
6475            *traceur(i_lev,i_oh)*concentration(i_lev)
6476            rate_day(i_lev,i_react) = rate_day(i_lev,i_react) + 2.*rate_local/nbr_pdt
6477            i_react=i_react+1
6478                i_v=i_v+1
6479!===============================
6480!--- 70 f007: clo + oh -> hcl + o2
6481!===============================
6482            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_clo)*concentration(i_lev) &
6483            *traceur(i_lev,i_oh)*concentration(i_lev)
6484            rate_day(i_lev,i_react) = rate_day(i_lev,i_react) + 2.*rate_local/nbr_pdt
6485            i_react=i_react+1
6486                i_v=i_v+1
6487!===============================
6488!--- 71 f008: cl + h2 -> hcl + h
6489!===============================
6490            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_cl)*concentration(i_lev) &
6491            *traceur(i_lev,i_h2)*concentration(i_lev)
6492            rate_day(i_lev,i_react) = rate_day(i_lev,i_react) + 2.*rate_local/nbr_pdt
6493            i_react=i_react+1
6494                i_v=i_v+1
6495!===============================
6496!--- 72 f009: cl + o3 -> clo + o2
6497!===============================
6498            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_cl)*concentration(i_lev) &
6499            *traceur(i_lev,i_o3)*concentration(i_lev)
6500            rate_day(i_lev,i_react) = rate_day(i_lev,i_react) + 2.*rate_local/nbr_pdt
6501            i_react=i_react+1
6502                i_v=i_v+1
6503!===============================
6504!--- 73 f010: cl + ho2 -> clo + oh
6505!===============================
6506            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_cl)*concentration(i_lev) &
6507            *traceur(i_lev,i_ho2)*concentration(i_lev)
6508            rate_day(i_lev,i_react) = rate_day(i_lev,i_react) + 2.*rate_local/nbr_pdt
6509            i_react=i_react+1
6510                i_v=i_v+1
6511!===============================
6512!--- 74 f011: cl + ho2 -> hcl + o2
6513!===============================
6514            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_cl)*concentration(i_lev) &
6515            *traceur(i_lev,i_ho2)*concentration(i_lev)
6516            rate_day(i_lev,i_react) = rate_day(i_lev,i_react) + 2.*rate_local/nbr_pdt
6517            i_react=i_react+1
6518                i_v=i_v+1
6519!===============================
6520!--- 75 f012: cl + h2o2 -> hcl + ho2
6521!===============================
6522            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_cl)*concentration(i_lev) &
6523            *traceur(i_lev,i_h2o2)*concentration(i_lev)
6524            rate_day(i_lev,i_react) = rate_day(i_lev,i_react) + 2.*rate_local/nbr_pdt
6525            i_react=i_react+1
6526                i_v=i_v+1
6527!===============================
6528!--- 76 f013: cl + co + co2 -> clco + co2
6529!===============================
6530            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_cl)*concentration(i_lev) &
6531            *traceur(i_lev,i_co)*concentration(i_lev)
6532            rate_day(i_lev,i_react) = rate_day(i_lev,i_react) + 2.*rate_local/nbr_pdt
6533            i_react=i_react+1
6534                i_v=i_v+1
6535!===============================
6536!--- 77 f015: clco + o2 + m -> clco3 + m
6537!===============================
6538                rate_local = v4(i_lev,i_v)*traceur(i_lev,i_o2)*concentration(i_lev) &
6539            *traceur(i_lev,i_clco)*concentration(i_lev)
6540            rate_day(i_lev,i_react) = rate_day(i_lev,i_react) + 2.*rate_local/nbr_pdt
6541            i_react=i_react+1
6542                i_v=i_v+1
6543!===============================
6544!--- 78 & 79 f016: clco3 + cl -> cl + clo + co2
6545!===============================
6546!     decomposee en :
6547!     0.5 clco3 + 0.5 cl -> cl + 0.5 co2
6548!     0.5 clco3 + 0.5 cl -> clo + 0.5 co2
6549            rate_local = v4(i_lev,i_v)*0.25*traceur(i_lev,i_clco3)*concentration(i_lev) &
6550            *traceur(i_lev,i_cl)*concentration(i_lev)
6551            rate_day(i_lev,i_react) = rate_day(i_lev,i_react) + 2.*rate_local/nbr_pdt
6552            i_react=i_react+1
6553                i_v=i_v+1
6554           
6555            rate_local = v4(i_lev,i_v)*0.25*traceur(i_lev,i_clco3)*concentration(i_lev) &
6556            *traceur(i_lev,i_cl)*concentration(i_lev)
6557            rate_day(i_lev,i_react) = rate_day(i_lev,i_react) + 2.*rate_local/nbr_pdt
6558            i_react=i_react+1
6559                i_v=i_v+1
6560!===============================
6561!--- 80 & 81 f017: clco3 + o -> cl + o2 + co2
6562!===============================
6563!     decomposee en :
6564!     0.5 clco3 + 0.5 o -> cl
6565!     0.5 clco3 + 0.5 o -> o2 + co2
6566            rate_local = v4(i_lev,i_v)*0.25*traceur(i_lev,i_clco3)*concentration(i_lev) &
6567            *traceur(i_lev,i_o)*concentration(i_lev)
6568            rate_day(i_lev,i_react) = rate_day(i_lev,i_react) + 2.*rate_local/nbr_pdt
6569            i_react=i_react+1
6570                i_v=i_v+1
6571           
6572            rate_local = v4(i_lev,i_v)*0.25*traceur(i_lev,i_clco3)*concentration(i_lev) &
6573            *traceur(i_lev,i_o)*concentration(i_lev)
6574            rate_day(i_lev,i_react) = rate_day(i_lev,i_react) + 2.*rate_local/nbr_pdt
6575            i_react=i_react+1
6576                i_v=i_v+1
6577!===============================
6578!--- 82 f018: clo + ho2  -> hocl + o2
6579!===============================
6580            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_clo)*concentration(i_lev) &
6581            *traceur(i_lev,i_ho2)*concentration(i_lev) 
6582            rate_day(i_lev,i_react) = rate_day(i_lev,i_react) + 2.*rate_local/nbr_pdt
6583            i_react=i_react+1
6584                i_v=i_v+1
6585!===============================
6586!--- 83 f019: oh + hocl -> h2o + clo
6587!===============================
6588            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_oh)*concentration(i_lev) &
6589            *traceur(i_lev,i_hocl)*concentration(i_lev) 
6590            rate_day(i_lev,i_react) = rate_day(i_lev,i_react) + 2.*rate_local/nbr_pdt
6591            i_react=i_react+1
6592                i_v=i_v+1
6593!===============================
6594!--- 84 f020: o + hocl -> oh + clo
6595!===============================
6596            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_hocl)*concentration(i_lev) &
6597            *traceur(i_lev,i_o)*concentration(i_lev) 
6598            rate_day(i_lev,i_react) = rate_day(i_lev,i_react) + 2.*rate_local/nbr_pdt
6599            i_react=i_react+1
6600                i_v=i_v+1
6601!===============================
6602!--- 85 f022: clco + o -> cl + co2
6603!===============================
6604            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_clco)*concentration(i_lev) &
6605            *traceur(i_lev,i_o)*concentration(i_lev) 
6606            rate_day(i_lev,i_react) = rate_day(i_lev,i_react) + 2.*rate_local/nbr_pdt
6607            i_react=i_react+1
6608                i_v=i_v+1
6609!===============================
6610!--- 86 f023: cl2 + o(1d) -> cl + clo
6611!===============================
6612            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_cl2)*concentration(i_lev) &
6613            *traceur(i_lev,i_o1d)*concentration(i_lev) 
6614            rate_day(i_lev,i_react) = rate_day(i_lev,i_react) + 2.*rate_local/nbr_pdt
6615            i_react=i_react+1
6616                i_v=i_v+1
6617!===============================
6618!--- 87 f024: cl2 + h  -> hcl + cl
6619!==============================
6620            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_cl2)*concentration(i_lev) &
6621            *traceur(i_lev,i_h)*concentration(i_lev) 
6622            rate_day(i_lev,i_react) = rate_day(i_lev,i_react) + 2.*rate_local/nbr_pdt
6623            i_react=i_react+1
6624                i_v=i_v+1
6625!===============================
6626!--- 88 f025: cl + clco  -> cl2 + co
6627!===============================
6628            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_cl)*concentration(i_lev) &
6629            *traceur(i_lev,i_clco)*concentration(i_lev) 
6630            rate_day(i_lev,i_react) = rate_day(i_lev,i_react) + 2.*rate_local/nbr_pdt
6631            i_react=i_react+1
6632                i_v=i_v+1
6633!===============================
6634!--- 89 f027: cl + so2 + co2  -> clso2 + co2
6635!===============================
6636            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_so2)*concentration(i_lev) &
6637            *traceur(i_lev,i_cl)*concentration(i_lev) 
6638            rate_day(i_lev,i_react) = rate_day(i_lev,i_react) + 2.*rate_local/nbr_pdt
6639            i_react=i_react+1
6640                i_v=i_v+1
6641!===============================
6642!--- 90 f028: clso2 + o  -> so2 + clo
6643!===============================
6644            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_clso2)*concentration(i_lev) &
6645            *traceur(i_lev,i_o)*concentration(i_lev) 
6646            rate_day(i_lev,i_react) = rate_day(i_lev,i_react) + 2.*rate_local/nbr_pdt
6647            i_react=i_react+1
6648                i_v=i_v+1
6649!===============================
6650!--- 91 f029: clso2 + h  -> so2 + hcl
6651!===============================
6652            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_clso2)*concentration(i_lev) &
6653            *traceur(i_lev,i_h)*concentration(i_lev) 
6654            rate_day(i_lev,i_react) = rate_day(i_lev,i_react) + 2.*rate_local/nbr_pdt
6655            i_react=i_react+1
6656                i_v=i_v+1
6657!===============================
6658!--- 92 f031: cl + o + co2  -> clo + co2
6659!===============================
6660            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_cl)*concentration(i_lev) &
6661            *traceur(i_lev,i_o)*concentration(i_lev) 
6662            rate_day(i_lev,i_react) = rate_day(i_lev,i_react) + 2.*rate_local/nbr_pdt
6663            i_react=i_react+1
6664                i_v=i_v+1
6665!===============================
6666!--- 93 f032: cl2 + o -> clo + cl
6667!===============================
6668            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_cl2)*concentration(i_lev) &
6669            *traceur(i_lev,i_o)*concentration(i_lev) 
6670            rate_day(i_lev,i_react) = rate_day(i_lev,i_react) + 2.*rate_local/nbr_pdt
6671            i_react=i_react+1
6672                i_v=i_v+1
6673!===============================
6674!--- 94 f033: clco + oh -> hocl + co
6675!===============================
6676            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_clco)*concentration(i_lev) &
6677            *traceur(i_lev,i_oh)*concentration(i_lev) 
6678            rate_day(i_lev,i_react) = rate_day(i_lev,i_react) + 2.*rate_local/nbr_pdt
6679            i_react=i_react+1
6680                i_v=i_v+1
6681!===============================
6682!--- 95 f034: cl2 + oh -> cl + hocl
6683!===============================
6684            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_cl2)*concentration(i_lev) &
6685            *traceur(i_lev,i_oh)*concentration(i_lev) 
6686            rate_day(i_lev,i_react) = rate_day(i_lev,i_react) + 2.*rate_local/nbr_pdt
6687            i_react=i_react+1
6688                i_v=i_v+1
6689!===============================
6690!--- 96 f035: clco + o -> co + clo
6691!===============================
6692            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_clco)*concentration(i_lev) &
6693            *traceur(i_lev,i_o)*concentration(i_lev) 
6694            rate_day(i_lev,i_react) = rate_day(i_lev,i_react) + 2.*rate_local/nbr_pdt
6695            i_react=i_react+1
6696                i_v=i_v+1
6697!===============================
6698!--- 97 f036: clco + cl2 -> cocl2 + cl
6699!===============================
6700            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_cl2)*concentration(i_lev) &
6701            *traceur(i_lev,i_clco)*concentration(i_lev) 
6702            rate_day(i_lev,i_react) = rate_day(i_lev,i_react) + 2.*rate_local/nbr_pdt
6703            i_react=i_react+1
6704                i_v=i_v+1
6705!===============================
6706!--- 98 f037: hcl + h -> h2 + cl
6707!===============================
6708            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_hcl)*concentration(i_lev) &
6709            *traceur(i_lev,i_h)*concentration(i_lev) 
6710            rate_day(i_lev,i_react) = rate_day(i_lev,i_react) + 2.*rate_local/nbr_pdt
6711            i_react=i_react+1
6712                i_v=i_v+1
6713!===============================
6714!--- 99 f038: clco + h -> hcl + co
6715!===============================
6716            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_s2)*concentration(i_lev)
6717            rate_day(i_lev,i_react) = rate_day(i_lev,i_react) + 2.*rate_local/nbr_pdt
6718            i_react=i_react+1
6719                i_v=i_v+1
6720!===============================
6721!--- 100 f039: cl + h + m -> hcl + m
6722!===============================
6723            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_cl)*concentration(i_lev) &
6724            *traceur(i_lev,i_h)*concentration(i_lev) 
6725            rate_day(i_lev,i_react) = rate_day(i_lev,i_react) + 2.*rate_local/nbr_pdt
6726            i_react=i_react+1
6727                i_v=i_v+1
6728!===============================
6729!--- 101 g001: s + o2 -> so + o
6730!===============================
6731            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_s)*concentration(i_lev) &
6732            *traceur(i_lev,i_o2)*concentration(i_lev) 
6733            rate_day(i_lev,i_react) = rate_day(i_lev,i_react) + 2.*rate_local/nbr_pdt
6734            i_react=i_react+1
6735                i_v=i_v+1
6736!===============================
6737!--- 102 g002: s + o3 -> so + o2
6738!===============================
6739            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_s)*concentration(i_lev) &
6740            *traceur(i_lev,i_o3)*concentration(i_lev) 
6741            rate_day(i_lev,i_react) = rate_day(i_lev,i_react) + 2.*rate_local/nbr_pdt
6742            i_react=i_react+1
6743                i_v=i_v+1
6744!===============================
6745!--- 103 g003: so + o2 -> so2 + o
6746!===============================
6747             rate_local = v4(i_lev,i_v)*traceur(i_lev,i_so)*concentration(i_lev) &
6748            *traceur(i_lev,i_o2)*concentration(i_lev) 
6749            rate_day(i_lev,i_react) = rate_day(i_lev,i_react) + 2.*rate_local/nbr_pdt
6750            i_react=i_react+1
6751                i_v=i_v+1
6752!===============================
6753!--- 104 g004: so + o3 -> so2 + o2
6754!===============================
6755            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_so)*concentration(i_lev) &
6756            *traceur(i_lev,i_o3)*concentration(i_lev) 
6757            rate_day(i_lev,i_react) = rate_day(i_lev,i_react) + 2.*rate_local/nbr_pdt
6758            i_react=i_react+1
6759                i_v=i_v+1
6760!===============================
6761!--- 105 g005: so + oh -> so2 + h
6762!===============================
6763            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_so)*concentration(i_lev) &
6764            *traceur(i_lev,i_oh)*concentration(i_lev) 
6765            rate_day(i_lev,i_react) = rate_day(i_lev,i_react) + 2.*rate_local/nbr_pdt
6766            i_react=i_react+1
6767                i_v=i_v+1
6768!===============================
6769!--- 106 g006: s + oh -> so + h
6770!===============================
6771            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_s)*concentration(i_lev) &
6772            *traceur(i_lev,i_oh)*concentration(i_lev) 
6773            rate_day(i_lev,i_react) = rate_day(i_lev,i_react) + 2.*rate_local/nbr_pdt
6774            i_react=i_react+1
6775                i_v=i_v+1
6776!===============================
6777!--- 107 g007: so + o + co2 -> so2 + co2
6778!===============================
6779            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_so)*concentration(i_lev) &
6780            *traceur(i_lev,i_o)*concentration(i_lev) 
6781            rate_day(i_lev,i_react) = rate_day(i_lev,i_react) + 2.*rate_local/nbr_pdt
6782            i_react=i_react+1
6783                i_v=i_v+1
6784!===============================
6785!--- 108 g008: so + ho2 -> so2 + oh
6786!===============================
6787            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_so)*concentration(i_lev) &
6788            *traceur(i_lev,i_ho2)*concentration(i_lev) 
6789            rate_day(i_lev,i_react) = rate_day(i_lev,i_react) + 2.*rate_local/nbr_pdt
6790            i_react=i_react+1
6791                i_v=i_v+1
6792!===============================
6793!--- 109 g009: so2 + o + co2 -> so3 + co2
6794!===============================
6795            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_so2)*concentration(i_lev) &
6796            *traceur(i_lev,i_o)*concentration(i_lev) 
6797            rate_day(i_lev,i_react) = rate_day(i_lev,i_react) + 2.*rate_local/nbr_pdt
6798            i_react=i_react+1
6799                i_v=i_v+1
6800!===============================
6801!--- 110 g010: s + o + co2 -> so + co2
6802!===============================
6803            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_s)*concentration(i_lev) &
6804            *traceur(i_lev,i_o)*concentration(i_lev) 
6805            rate_day(i_lev,i_react) = rate_day(i_lev,i_react) + 2.*rate_local/nbr_pdt
6806            i_react=i_react+1
6807                i_v=i_v+1
6808!===============================
6809!--- 111 g011: so3 + h2o -> h2so4
6810!===============================
6811            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_so3)*concentration(i_lev) &
6812            *traceur(i_lev,i_h2o)*concentration(i_lev) 
6813            rate_day(i_lev,i_react) = rate_day(i_lev,i_react) + 2.*rate_local/nbr_pdt
6814            i_react=i_react+1
6815                i_v=i_v+1
6816!===============================
6817!--- 112 g012: so + clo -> so2 + cl
6818!===============================
6819            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_so)*concentration(i_lev) &
6820            *traceur(i_lev,i_clo)*concentration(i_lev) 
6821            rate_day(i_lev,i_react) = rate_day(i_lev,i_react) + 2.*rate_local/nbr_pdt
6822            i_react=i_react+1
6823                i_v=i_v+1
6824!===============================
6825!--- 113 g013: so + so3 -> so2 + so2
6826!===============================
6827            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_so)*concentration(i_lev) &
6828            *traceur(i_lev,i_so3)*concentration(i_lev) 
6829            rate_day(i_lev,i_react) = rate_day(i_lev,i_react) + 2.*rate_local/nbr_pdt
6830            i_react=i_react+1
6831                i_v=i_v+1
6832!===============================
6833!--- 114 g014: so3 + o -> so2 + o2
6834!===============================
6835            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_so3)*concentration(i_lev) &
6836            *traceur(i_lev,i_o)*concentration(i_lev) 
6837            rate_day(i_lev,i_react) = rate_day(i_lev,i_react) + 2.*rate_local/nbr_pdt
6838            i_react=i_react+1
6839                i_v=i_v+1
6840!===============================
6841!--- 115 & 116 g017: clco3 + so -> cl + so2 + co2
6842!===============================
6843!     decomposee en :
6844!     0.5 clco3 + 0.5 so -> cl
6845!     0.5 clco3 + 0.5 so -> so2 + co2
6846            rate_local = v4(i_lev,i_v)*0.25*traceur(i_lev,i_clco3)*concentration(i_lev) &
6847            *traceur(i_lev,i_so)*concentration(i_lev) 
6848            rate_day(i_lev,i_react) = rate_day(i_lev,i_react) + 2.*rate_local/nbr_pdt
6849            i_react=i_react+1
6850                i_v=i_v+1
6851           
6852            rate_local = v4(i_lev,i_v)*0.25*traceur(i_lev,i_clco3)*concentration(i_lev) &
6853            *traceur(i_lev,i_so)*concentration(i_lev) 
6854            rate_day(i_lev,i_react) = rate_day(i_lev,i_react) + 2.*rate_local/nbr_pdt
6855            i_react=i_react+1
6856                i_v=i_v+1
6857!===============================
6858!--- 117 g018: s + co + co2 -> ocs + co2
6859!===============================
6860            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_s)*concentration(i_lev) &
6861            *traceur(i_lev,i_co)*concentration(i_lev) 
6862            rate_day(i_lev,i_react) = rate_day(i_lev,i_react) + 2.*rate_local/nbr_pdt
6863            i_react=i_react+1
6864                i_v=i_v+1
6865!===============================
6866!--- 118 g019: clco + s -> ocs + cl
6867!===============================
6868            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_clco)*concentration(i_lev) &
6869            *traceur(i_lev,i_s)*concentration(i_lev) 
6870            rate_day(i_lev,i_react) = rate_day(i_lev,i_react) + 2.*rate_local/nbr_pdt
6871            i_react=i_react+1
6872                i_v=i_v+1
6873!===============================
6874!--- 119 g020: so2 + oh + co2 -> hso3 + co2
6875!===============================
6876            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_so2)*concentration(i_lev) &
6877            *traceur(i_lev,i_oh)*concentration(i_lev) 
6878            rate_day(i_lev,i_react) = rate_day(i_lev,i_react) + 2.*rate_local/nbr_pdt
6879            i_react=i_react+1
6880                i_v=i_v+1
6881!===============================
6882!--- 120 g021: hso3 + o2 -> ho2 + so3
6883!===============================
6884            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_o2)*concentration(i_lev) &
6885            *traceur(i_lev,i_hso3)*concentration(i_lev) 
6886            rate_day(i_lev,i_react) = rate_day(i_lev,i_react) + 2.*rate_local/nbr_pdt
6887            i_react=i_react+1
6888                i_v=i_v+1
6889!===============================
6890!--- 121 g024: s2 + o -> so + s
6891!===============================
6892            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_s2)*concentration(i_lev) &
6893            *traceur(i_lev,i_o)*concentration(i_lev) 
6894            rate_day(i_lev,i_react) = rate_day(i_lev,i_react) + 2.*rate_local/nbr_pdt
6895            i_react=i_react+1
6896                i_v=i_v+1
6897!===============================
6898!--- 122 g025: s + ocs -> s2 +  co
6899!===============================
6900            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_s)*concentration(i_lev) &
6901            *traceur(i_lev,i_ocs)*concentration(i_lev) 
6902            rate_day(i_lev,i_react) = rate_day(i_lev,i_react) + 2.*rate_local/nbr_pdt
6903            i_react=i_react+1
6904                i_v=i_v+1
6905!===============================
6906!--- 123 g026: ocs + o -> so + co
6907!===============================
6908            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_o)*concentration(i_lev) &
6909            *traceur(i_lev,i_ocs)*concentration(i_lev) 
6910            rate_day(i_lev,i_react) = rate_day(i_lev,i_react) + 2.*rate_local/nbr_pdt
6911            i_react=i_react+1
6912                i_v=i_v+1
6913!===============================
6914!--- 124 g027: s + so3 -> so2 +  so
6915!===============================
6916            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_s)*concentration(i_lev) &
6917            *traceur(i_lev,i_so3)*concentration(i_lev) 
6918            rate_day(i_lev,i_react) = rate_day(i_lev,i_react) + 2.*rate_local/nbr_pdt
6919            i_react=i_react+1
6920                i_v=i_v+1
6921!===============================
6922!--- 125 g028: s + ho2 -> so +  oh
6923!===============================
6924            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_s)*concentration(i_lev) &
6925            *traceur(i_lev,i_ho2)*concentration(i_lev) 
6926            rate_day(i_lev,i_react) = rate_day(i_lev,i_react) + 2.*rate_local/nbr_pdt
6927            i_react=i_react+1
6928                i_v=i_v+1
6929!===============================
6930!--- 126 g029: s + clo -> so +  cl
6931!===============================
6932            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_s)*concentration(i_lev) &
6933            *traceur(i_lev,i_clo)*concentration(i_lev) 
6934            rate_day(i_lev,i_react) = rate_day(i_lev,i_react) + 2.*rate_local/nbr_pdt
6935            i_react=i_react+1
6936                i_v=i_v+1
6937           END DO
6938         END IF
6939         cpt_time_rate = cpt_time_rate + 1
6940     
6941      END IF
6942           
6943      IF (cpt_time .EQ. (time_tot+nbr_pdt)) THEN
6944               OPEN(100,file='profile_rate_day.csv')
6945               DO i_lev=1,n_lev
6946               write (100,"(128(e15.8,','))")pres(i_lev), temperature(i_lev), (rate_day(i_lev,i_react),i_react=1,126)
6947               END DO
6948               
6949               OPEN(101,file='profile_rate_night.csv')
6950               DO i_lev=1,n_lev
6951               write (101,"(128(e15.8,','))") pres(i_lev), temperature(i_lev), (rate_night(i_lev,i_react),i_react=1,126)
6952               END DO
6953               
6954               OPEN(102,file='profile_rate_fullday.csv')
6955               rate_day=(rate_day+rate_night)/2.
6956               DO i_lev=1,n_lev
6957               write (102,"(128(e15.8,','))") pres(i_lev), temperature(i_lev), (rate_day(i_lev,i_react),i_react=1,126)
6958               END DO
6959               
6960               PRINT*,"pression top",pres(n_lev)
6961               PRINT*,"temp top",temperature(n_lev)
6962               
6963      END IF
6964     
6965      cpt_time = cpt_time + 1
6966     
6967      END     
Note: See TracBrowser for help on using the repository browser.