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

Last change on this file since 3556 was 3140, checked in by flefevre, 13 months ago

Correction of a duplicated ionic reaction (i026 and i030).

File size: 232.8 KB
RevLine 
[2836]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!*****************************************************************
[2187]18
[3135]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) 
[2836]26
[2187]27use chemparam_mod
[2780]28use photolysis_mod
[2836]29use param_v4_h, only: jion
30use iono_h, only: phdisrate
31!nphot ! number of photodissociations, include in "use photolysis_mod" 
[2187]32     
33implicit none
34
35!===================================================================
36!     input:
37!===================================================================
38
[2836]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
[2187]42
[2836]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
[2187]47
[2836]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
[2187]51
[2836]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
[2187]66!===================================================================
67!     input/output:
68!===================================================================
69
[2780]70real, dimension(nz,nesp) :: tr      ! tracer mixing ratio
[2580]71real, dimension(nz,nesp) :: prod_tr ! production (cm-3.s-1)
72real, dimension(nz,nesp) :: loss_tr ! loss       (cm-3.s-1)
[2836]73real, dimension (nz)     :: em_no   ! volume emission rate of no
74real, dimension (nz)     :: em_o2   ! volume emission rate of o2(deltag)
[2187]75
76!===================================================================
77!     output:
78!===================================================================
79
80integer :: iter(nz)               ! iteration counter
81
82!===================================================================
[2795]83!     local:
[2187]84!===================================================================
85
[2836]86! ok_ jonline: see physiq.def
[2780]87! true : on-line calculation of photodissociation rates ! false : lookup table
88
[2187]89logical, save :: firstcall = .true.
90
91real, dimension(nz)  :: conc      ! total number density (molecule.cm-3)
92real, dimension(nz)  :: surfice1d, surfdust1d
93
[2795]94integer :: ind_norec
95integer :: ind_orec
96
[2780]97! photolysis lookup table (case jonline = .false.)
98! if prior to jvenus.20211025, set nztable = 201 below
[2187]99
[2851]100integer, parameter :: nj = 23, nztable = 281, nsza = 27, nso2 = 13
[2836]101real, dimension(nso2,nsza,nztable,nj), save :: jphot ! nj must be equal to nphot
[2187]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
[2836]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
[2187]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
[2836]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
[2187]138! reaction rates
139
[2836]140real (kind = 8), dimension(nz,      nb_phot_max) :: v_phot
141real (kind = 8), dimension(nz,nb_reaction_3_max) :: v_3
142real (kind = 8), dimension(nz,nb_reaction_4_max) :: v_4
[2187]143
144logical,parameter :: hetero_ice  = .false.
145logical,parameter :: hetero_dust = .false.
146
147! matrix
148
[2836]149real (kind = 8), dimension(nesp,nesp) :: mat, mat1
150integer, dimension(nesp)              :: indx
151integer                               :: code
[2187]152
153! production and loss terms (for first-guess solution only)
154
[2836]155real (kind = 8), dimension(nesp) :: prod, loss, lossconc
[2187]156
157! indexes
158
159integer :: i, iesp, iz
160
161if (firstcall) then
162!===================================================================
[2795]163!     initialisation of  photolysis
[2187]164!===================================================================
165
[2836]166   ! ok jonline
167   ! true : on-line calculation of photodissociation rates ! false : lookup table
168   if (ok_jonline) then
[2795]169      print*, 'photochemistry: Read UV absorption cross-sections:'
[2780]170      call init_photolysis
171   else
[2795]172      print*, 'photochemistry: Read photolysis lookup table:'
[2836]173      call init_chimie(nphot, nztable, nsza, nso2, jphot, table_colair, table_colso2, table_sza)
[2780]174   end if
[2187]175
176!===================================================================
177!     initialisation of the reaction indexes
178!===================================================================
179
[2836]180   call indice(ok_ionchem, nb_phot_max, nb_reaction_3_max, nb_reaction_4_max)
[2187]181
182   firstcall = .false.
183end if
184
185! cloud and dust surfaces set to zero for the moment
186
187surfice1d(:)  = 0.
188surfdust1d(:) = 0.
189     
190!===================================================================
191!   number densities (molecule.cm-3)
192!===================================================================
193
194do iz = 1,nz
[2836]195   conc(iz)    = p(iz)/(1.38E-19*t(iz))
196   c(iz,:)     = tr(iz,:)*conc(iz)
[2187]197end do
198     
199!===================================================================
200!    photodissociations         
201!===================================================================
202
203! dist_sol : sun-venus distance (au)
204
205dist_sol = 0.72333
206
[2836]207if (ok_jonline) then
208   if (sza_input <= 95.) then ! day at 300 km
[2925]209      call photolysis_online(nz, nb_phot_max, zlocal, p,                  &
210                             t, mumean, i_co2,i_co, i_o, i_o1d,           &
[2851]211                             i_o2, i_o3, i_h2, i_oh, i_ho2, i_h2o2, i_h2o,&
[2925]212                             i_h, i_hcl, i_cl2, i_hocl, i_so2, i_so,      &
213                             i_so3, i_s2, i_clo, i_ocs, i_cocl2, i_h2so4, &
214                             i_cl, i_no2, i_no, i_n2, i_n2d,              &
[2780]215                             nesp, tr, sza_input, dist_sol, v_phot)
[2836]216
217      !Calculation of photoionization rates, if needed
218      if (ok_ionchem) then
219         do iz = 1,nz
220           c_euv(iz,:) = vmr_dens_euv(iz,:)*conc(iz)
221         end do
222      !! FAIRE ULTRA ATTENTION LE c_euv et vmr_dens_euv NE SONT PAS DANS LE MEME REGIME
223      !! DE i_ESPECE QUE C, CNEW, COLD et TR
224         call jthermcalc_e107(ig,nz,2,c_euv,nespeuv,t,zlocal,sza_input)
225         do iz=1,nz
226            call phdisrate(ig,nz,2,sza_input,iz)
227         end do
228         !CO2 photoionization
229         v_phot(:,nphot+ 1) = jion(induv_co2,:,1)
230         v_phot(:,nphot+ 2) = jion(induv_co2,:,2)
231         v_phot(:,nphot+ 3) = jion(induv_co2,:,2)
232         v_phot(:,nphot+ 4) = jion(induv_co2,:,3)
233         v_phot(:,nphot+ 5) = jion(induv_co2,:,3)
234         v_phot(:,nphot+ 6) = jion(induv_co2,:,4)
235         v_phot(:,nphot+ 7) = jion(induv_co2,:,4)
236         !O2 photoionization
237         v_phot(:,nphot+ 8) = jion(induv_o2,:,1)
238         !O photoionization
239         v_phot(:,nphot+ 9) = jion(induv_o,:,1)
240         !NO photoionization
241         v_phot(:,nphot+10) = jion(induv_no,:,1)
242         !CO photoionization
243         v_phot(:,nphot+11) = jion(induv_co,:,1)
244         v_phot(:,nphot+12) = jion(induv_co,:,2)
245         v_phot(:,nphot+13) = jion(induv_co,:,2)
246         !N2 photoionization
247         v_phot(:,nphot+14) = jion(induv_n2,:,1)
248         v_phot(:,nphot+15) = jion(induv_n2,:,2)
249         v_phot(:,nphot+16) = jion(induv_n2,:,2)
250         !N photoionization
251         v_phot(:,nphot+17) = jion(induv_n,:,1)
252         !H photoionization
253         v_phot(:,nphot+18) = jion(induv_h,:,1)
254      end if
[2780]255   else ! night
256      v_phot(:,:) = 0.
257   end if
258else
[2851]259   call phot(nj, nztable, nsza, nso2, sza_input, dist_sol, mumean, tr(:,i_co2), tr(:,i_so2),         &
[2780]260             jphot, table_colair, table_colso2, table_sza, nz, nb_phot_max, t, p, v_phot)
261end if
[2187]262
263!===================================================================
264!     reaction rates                                     
265!===================================================================
266                   
[2836]267call krates(hetero_ice,hetero_dust,ok_ionchem, nphotion, nz, nesp, c, conc, t, t_elect, p, nb_phot_max, nb_reaction_3_max, &
268            nb_reaction_4_max, tuneupperatm, v_3, v_4, v_phot, sza_input, ind_norec, ind_orec)
[2187]269
270!===================================================================
271!     ctimestep : standard chemical timestep (s), defined as
272!                 the fraction phychemrat of the physical timestep                           
273!===================================================================
[2780]274
[2187]275phychemrat = 1
276
277ctimestep  = ptimestep/real(phychemrat)
278
279!===================================================================
280!     loop over levels         
281!===================================================================
282
283do iz = 1,nz
284
285!  initializations
286
287   time = 0.
288   iter(iz) = 0
289   dt_guess = ctimestep
290   cold(:) = c(iz,:)     
291
292!  internal loop for the chemistry
293         
294   do while (time < ptimestep)
295     
296   iter(iz) = iter(iz) + 1
297
298!  first-guess: fill matrix
299
[2580]300   call fill_matrix(iz, mat1, prod, loss, lossconc, c, nesp, nz,          &
[2187]301                    nb_reaction_3_max, nb_reaction_4_max, nb_phot_max,    &
302                    v_phot, v_3, v_4)
303
304!  adaptative evaluation of the sub time step
305
306   call define_dt(nesp, dt_corrected, dt_guess, ctimestep, cold(:), c(iz,:), &
[2320]307                  mat1, prod, loss, conc(iz), lon, lat)
[2187]308
309   if (time + dt_corrected > ptimestep) then
310      dt_corrected = ptimestep - time
311   end if
312
313!  form the matrix identity + mat*dt_corrected
314
315   mat(:,:) = mat1(:,:)*dt_corrected
316   do iesp = 1,nesp
317      mat(iesp,iesp) = 1. + mat(iesp,iesp)
318   end do
319
320!  solve the linear system  M*Cn+1 = Cn (RHS in cnew, then replaced by solution)
321
322   cnew(:) = c(iz,:)
323
324#ifdef LAPACK
325   call dgesv(nesp,1,mat,nesp,indx,cnew,nesp,code)
326#else
327   write(*,*) "photochemistry error, missing LAPACK routine dgesv"
328   stop
329#endif
330
331!  eliminate small values
332
333   where (cnew(:)/conc(iz) < 1.e-30)
334      cnew(:) = 0.
335   end where
336
337!  update concentrations
338
339   cold(:) = c(iz,:)
340   c(iz,:) = cnew(:)
341   cnew(:) = 0.
342
[2836]343!  force charge neutrality (mod fgg, july 2019)
344
345   if (ok_ionchem) then
346      if(c(iz,i_elec).ne.c(iz,i_co2plus)+c(iz,i_oplus)+c(iz,i_o2plus)+  &
347           c(iz,i_noplus)+c(iz,i_coplus)+c(iz,i_cplus)+c(iz,i_n2plus)+  &
348           c(iz,i_nplus)+c(iz,i_hplus)+c(iz,i_hco2plus)+                &
349           c(iz,i_hcoplus)+c(iz,i_h2oplus)+c(iz,i_h3oplus)+             &
350           c(iz,i_ohplus)) then
351         c(iz,i_elec) = 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)+              &
353              c(iz,i_n2plus)+c(iz,i_nplus)+c(iz,i_hplus)+               &
354              c(iz,i_hco2plus)+c(iz,i_hcoplus)+c(iz,i_h2oplus)+         &
355              c(iz,i_h3oplus)+c(iz,i_ohplus)
356         !      write(*,*)'photochemistry/359'
357         !      write(*,*)'Forcing charge neutrality at ilev,',ilev,' ig=',ig
358      end if
359   end if
360
[2187]361!  increment internal time
362
363   time = time + dt_corrected
364   dt_guess = dt_corrected     ! first-guess timestep for next iteration
365
366   end do ! while (time < ptimestep)
367
368!  save mixing ratios
369
370   tr(iz,:)  = max(c(iz,:)/conc(iz), 1.e-30)
[2795]371
372!  save production and loss terms (for diagnostic only)
[2580]373   
374   prod_tr(iz,:) = prod(:)
375   loss_tr(iz,:) = lossconc(:)
[2187]376                       
377end do  ! end of loop over vertical levels
[2795]378 
379! no and o2(delta) emissions
[2187]380
[2795]381em_no(:) = c(:,i_o)*c(:,i_n)*v_4(:,ind_norec)   !2.8e-17*(300./temp(:)))**0.5
382em_o2(:) = c(:,i_o2dg)/4470.    ! 4470 s : lafferty et al., 1998
383
[2187]384end subroutine photochemistry_venus
385
386!======================================================================
387
388 subroutine init_chimie(nj, nztable, nsza, nso2, jphot, table_colair, &
389                        table_colso2, table_sza)
390
391!======================================================================
392
393implicit none
394
395! photolysis lookup table
396
397integer, INTENT(IN) :: nj, nztable, nsza, nso2
398real, INTENT(OUT), dimension(nso2,nsza,nztable,nj) :: jphot
399real, INTENT(OUT), dimension(nztable) :: table_colair
400real, INTENT(OUT), dimension(nso2,nztable) :: table_colso2
401real, INTENT(OUT), dimension(nsza) :: table_sza
402
403integer           :: iz, isza, iozo, iso2, ij
404character(len=44) :: jvenus
405
406! lecture de la table des j
407
408jphot(:,:,:,:) = 0.
409
410jvenus = 'jvenus.dat'
411open(30, form = 'formatted', status = 'old', file = jvenus)
412print*,'lecture de jvenus = ', jvenus
413
414do iso2 = 1,nso2
415   do isza = 1,nsza
416      do iz = nztable,1,-1
417         read(30,*) table_colair(iz), table_colso2(iso2,iz), table_sza(isza)
418         read(30,'(7e11.4)') (jphot(iso2,isza,iz,ij), ij = 1,nj)
419         do ij = 1,nj
420            if (jphot(iso2,isza,iz,ij) == 1.E-30) then
421               jphot(iso2,isza,iz,ij) = 0.
422            end if
423         end do
424      end do
425   end do
426end do
427
428close(30)
429print*,'lecture de la table des j ok.'
430
431end subroutine init_chimie
432
433!======================================================================
434
[2836]435 subroutine indice(ok_ionchem, nb_phot_max, nb_reaction_3_max, nb_reaction_4_max)
[2187]436
437!================================================================
438! set the "indice" arrays used to fill the jacobian matrix      !
439!----------------------------------------------------------------
440! reaction               type                array              !
441!----------------------------------------------------------------
442! A + hv   --> B + C     photolysis          indice_phot        !
443! A + B    --> C + D     bimolecular         indice_4           !
444! A + A    --> B + C     quadratic           indice_3           !
445! A + C    --> B + C     quenching           indice_phot        !
446! A + ice  --> B + C     heterogeneous       indice_phot        !
447!================================================================
448
449use types_asis
450use chemparam_mod
451 
452implicit none
453
454! input
455
[2836]456integer, intent(in) :: nb_reaction_3_max   ! number of quadratic reactions
457integer, intent(in) :: nb_reaction_4_max   ! number of bimolecular reactions
458integer, intent(in) :: nb_phot_max         ! number of processes treated numerically as photodissociations
459logical, intent(in) :: ok_ionchem          ! True: Ion reaction
[2187]460
461! local
462
463integer :: nb_phot, nb_reaction_3, nb_reaction_4
464integer :: i_dummy
465
466allocate (indice_phot(nb_phot_max))
467allocate (indice_3(nb_reaction_3_max))
468allocate (indice_4(nb_reaction_4_max))
469
470i_dummy = 1
471
472nb_phot       = 0
473nb_reaction_3 = 0
474nb_reaction_4 = 0
475
476!===========================================================
477!      O2 + hv -> O + O
478!===========================================================
479
480nb_phot = nb_phot + 1
481
482indice_phot(nb_phot) = z3spec(1.0, i_o2, 2.0, i_o, 0.0, i_dummy)
483
484!===========================================================
485!      O2 + hv -> O + O(1D)
486!===========================================================
487
488nb_phot = nb_phot + 1
489
490indice_phot(nb_phot) = z3spec(1.0, i_o2, 1.0, i_o, 1.0, i_o1d)
491
492!===========================================================
493!      CO2 + hv -> CO + O
494!===========================================================
495
496nb_phot = nb_phot + 1
497
498indice_phot(nb_phot) = z3spec(1.0, i_co2, 1.0, i_co, 1.0, i_o)
499
500!===========================================================
501!      CO2 + hv -> CO + O(1D)
502!===========================================================
503
504nb_phot = nb_phot + 1
505
506indice_phot(nb_phot) = z3spec(1.0, i_co2, 1.0, i_co, 1.0, i_o1d)
507
508!===========================================================
509!      O3 + hv -> O2(Dg) + O(1D)
510!===========================================================
511
512nb_phot = nb_phot + 1
513
514indice_phot(nb_phot) = z3spec(1.0, i_o3, 1.0, i_o2dg, 1.0, i_o1d)
515
516!===========================================================
517!      O3 + hv -> O2 + O
518!===========================================================
519
520nb_phot = nb_phot + 1
521
522indice_phot(nb_phot) = z3spec(1.0, i_o3, 1.0, i_o2, 1.0, i_o)
523
524!===========================================================
[2851]525!      H2 + hv -> H + H
526!===========================================================
527
528nb_phot = nb_phot + 1
529
530indice_phot(nb_phot) = z3spec(1.0, i_h2, 2.0, i_h, 0.0, i_dummy)
531
532
533!===========================================================
[2187]534!      H2O + hv -> H + OH
535!===========================================================
536
537nb_phot = nb_phot + 1
538
539indice_phot(nb_phot) = z3spec(1.0, i_h2o, 1.0, i_h, 1.0, i_oh)
540
541!===========================================================
542!      HO2 + hv -> OH + O
543!===========================================================
544
545nb_phot = nb_phot + 1
546
547indice_phot(nb_phot) = z3spec(1.0, i_ho2, 1.0, i_oh, 1.0, i_o)
548
549!===========================================================
550!      H2O2 + hv -> OH + OH
551!===========================================================
552
553nb_phot = nb_phot + 1
554
555indice_phot(nb_phot) = z3spec(1.0, i_h2o2, 2.0, i_oh, 0.0, i_dummy)
556
557!===========================================================
558!      HCl + hv -> H + Cl
559!===========================================================
560
561nb_phot = nb_phot + 1
562
563indice_phot(nb_phot) = z3spec(1.0, i_hcl, 1.0, i_h, 1.0, i_cl)
564
565!===========================================================
566!      Cl2 + hv -> Cl + Cl
567!===========================================================
568
569nb_phot = nb_phot + 1
570
571indice_phot(nb_phot) = z3spec(1.0, i_cl2, 2.0, i_cl, 0.0, i_dummy)
572
573!===========================================================
574!      HOCl + hv -> OH + Cl
575!===========================================================
576
577nb_phot = nb_phot + 1
578
579indice_phot(nb_phot) = z3spec(1.0, i_hocl, 1.0, i_oh, 1.0, i_cl)
580
581!===========================================================
582!      SO2 + hv -> SO + O
583!===========================================================
584
585nb_phot = nb_phot + 1
586
587indice_phot(nb_phot) = z3spec(1.0, i_so2, 1.0, i_so, 1.0, i_o)
588
589!===========================================================
590!      SO + hv -> S + O
591!===========================================================
592
593nb_phot = nb_phot + 1
594
595indice_phot(nb_phot) = z3spec(1.0, i_so, 1.0, i_s, 1.0, i_o)
596
597!===========================================================
598!      SO3 + hv -> SO2 + O
599!===========================================================
600
601nb_phot = nb_phot + 1
602
603indice_phot(nb_phot) = z3spec(1.0, i_so3, 1.0, i_so2, 1.0, i_o)
604
605!===========================================================
[2925]606!       S2 + hv -> S + S
607!===========================================================
608
609nb_phot = nb_phot + 1
610
611indice_phot(nb_phot) = z3spec(1.0, i_s2, 2.0, i_s, 0.0, i_dummy)
612
613!===========================================================
[2187]614!      ClO + hv -> Cl + O
615!===========================================================
616
617nb_phot = nb_phot + 1
618
619indice_phot(nb_phot) = z3spec(1.0, i_clo, 1.0, i_cl, 1.0, i_o)
620
621!===========================================================
622!      OCS + hv -> CO + S
623!===========================================================
624
625nb_phot = nb_phot + 1
626
627indice_phot(nb_phot) = z3spec(1.0, i_ocs, 1.0, i_co, 1.0, i_s)
628
629!===========================================================
630!      COCl2 + hv -> Cl + Cl + CO
631!===========================================================
632
633nb_phot = nb_phot + 1
634
635indice_phot(nb_phot) = z3spec(1.0, i_cocl2, 2.0, i_cl, 1.0, i_co)
636
637!===========================================================
638!      H2SO4 + hv -> SO3 + H2O
639!===========================================================
640
641nb_phot = nb_phot + 1
642
643indice_phot(nb_phot) = z3spec(1.0, i_h2so4, 1.0, i_so3, 1.0, i_h2o)
644
645!===========================================================
[2795]646!      NO2 + hv -> NO + O
647!===========================================================
648
649nb_phot = nb_phot + 1
650
651indice_phot(nb_phot) = z3spec(1.0, i_no2, 1.0, i_no, 1.0, i_o)
652
653!===========================================================
654!      NO + hv -> N + O
655!===========================================================
656
657nb_phot = nb_phot + 1
658
659indice_phot(nb_phot) = z3spec(1.0, i_no, 1.0, i_n, 1.0, i_o)
660
661!===========================================================
662!      N2 + hv -> N(2D) + N
663!===========================================================
664
665nb_phot = nb_phot + 1
666
667indice_phot(nb_phot) = z3spec(1.0, i_n2, 1.0, i_n, 1.0, i_n2d)
668
[2836]669!Only if ion chemistry included
670if (ok_ionchem) then
671
[2795]672!===========================================================
[2836]673!      CO2 + hv -> CO2+ + e-
[2187]674!===========================================================
675
[2836]676   nb_phot = nb_phot + 1
677
678   indice_phot(nb_phot) = z3spec(1.0, i_co2, 1.0, i_co2plus, 1.0, i_elec)
679
680!===========================================================
681!      CO2 + hv -> O+ + CO + e-
682!===========================================================
683!We divide this reaction in two
684
685!0.5 CO2 + hv -> CO
686   nb_phot = nb_phot + 1
687
688   indice_phot(nb_phot) = z3spec(0.5, i_co2, 1.0, i_co, 0.0, i_dummy)
689
690!0.5 CO2 + hv -> O+ + e-
691   nb_phot = nb_phot + 1
692
693   indice_phot(nb_phot) = z3spec(0.5, i_co2, 1.0, i_oplus, 1.0, i_elec)
694
695!===========================================================
696!      CO2 + hv -> CO+ + O + e-
697!===========================================================
698!We divide this reaction in two
699
700!0.5 CO2 + hv -> O
701   nb_phot = nb_phot + 1
702
703   indice_phot(nb_phot) = z3spec(0.5, i_co2, 1.0, i_o, 0.0, i_dummy)
704
705!0.5 CO2 + hv -> CO+ + e-
706   nb_phot = nb_phot + 1
707
708   indice_phot(nb_phot) = z3spec(0.5, i_co2, 1.0, i_coplus, 1.0, i_elec)
709
710!===========================================================
711!      CO2 + hv -> C+ + O2 + e-
712!===========================================================
713!We divide this reaction in two
714
715!0.5 CO2 + hv -> O2
716   nb_phot = nb_phot + 1
717
718   indice_phot(nb_phot) = z3spec(0.5, i_co2, 1.0, i_o2, 0.0, i_dummy)
719
720!0.5 CO2 + hv -> C+ + e-
721   nb_phot = nb_phot + 1
722
723   indice_phot(nb_phot) = z3spec(0.5, i_co2, 1.0, i_cplus, 1.0, i_elec)
724
725!===========================================================
726!      O2 + hv -> O2+ + e-
727!===========================================================
728
729   nb_phot = nb_phot + 1
730
731   indice_phot(nb_phot) = z3spec(1.0, i_o2, 1.0, i_o2plus, 1.0, i_elec)
732
733!===========================================================
734!      O + hv -> O+ + e-
735!===========================================================
736
737   nb_phot = nb_phot + 1
738
739   indice_phot(nb_phot) = z3spec(1.0, i_o, 1.0, i_oplus, 1.0, i_elec)
740
741!===========================================================
742!      NO + hv -> NO+ + e-
743!===========================================================
744
745   nb_phot = nb_phot + 1
746
747   indice_phot(nb_phot) = z3spec(1.0, i_no, 1.0, i_noplus, 1.0, i_elec)
748
749!===========================================================
750!      CO + hv -> CO+ + e-
751!===========================================================
752
753   nb_phot = nb_phot + 1
754
755   indice_phot(nb_phot) = z3spec(1.0, i_co, 1.0, i_coplus, 1.0, i_elec)
756
757!===========================================================
758!      CO + hv -> C+ + O + e-
759!===========================================================
760!We divide this reaction in two
761
762!0.5 CO + hv -> O
763   nb_phot = nb_phot + 1
764
765   indice_phot(nb_phot) = z3spec(0.5, i_co, 1.0, i_o, 0.0, i_dummy)
766
767!0.5 CO + hv -> C+ + e-
768   nb_phot = nb_phot + 1
769
770   indice_phot(nb_phot) = z3spec(0.5, i_co, 1.0, i_cplus, 1.0, i_elec)
771
772!===========================================================
773!      N2 + hv -> N2+ + e-
774!===========================================================
775
776   nb_phot = nb_phot + 1
777
778   indice_phot(nb_phot) = z3spec(1.0, i_n2, 1.0, i_n2plus, 1.0, i_elec)
779
780!===========================================================
781!      N2 + hv -> N+ + N + e-
782!===========================================================
783!We divide this reaction in two
784
785!0.5 N2 + hv -> N
786   nb_phot = nb_phot + 1
787
788   indice_phot(nb_phot) = z3spec(0.5, i_n2, 1.0, i_n, 0.0, i_dummy)
789
790!0.5 N2 + hv -> N+ + e-
791   nb_phot = nb_phot + 1
792
793   indice_phot(nb_phot) = z3spec(0.5, i_n2, 1.0, i_nplus, 1.0, i_elec)
794
795!===========================================================
796!      N + hv -> N+ + e-
797!===========================================================
798
799   nb_phot = nb_phot + 1
800
801   indice_phot(nb_phot) = z3spec(1.0, i_n, 1.0, i_nplus, 1.0, i_elec)
802
803!===========================================================
804!      H + hv -> H+ + e-
805!===========================================================
806
807   nb_phot = nb_phot + 1
808
809   indice_phot(nb_phot) = z3spec(1.0, i_h, 1.0, i_hplus, 1.0, i_elec)
810
811end if   !ok_ionchem
812
813!===========================================================
814!      a001 : O + O2 + (CO2 or M) -> O3 + (CO2 or M)
815!===========================================================
816
[2187]817nb_reaction_4 = nb_reaction_4 + 1
818
819indice_4(nb_reaction_4) = z4spec(1.0, i_o, 1.0, i_o2, 1.0, i_o3, 0.0, i_dummy)
820
821!===========================================================
[2836]822!      a002 : O + O + (CO2 or M) -> O2(Dg) + (CO2 or M)
[2187]823!===========================================================
824
825nb_reaction_3 = nb_reaction_3 + 1
826
827indice_3(nb_reaction_3) = z3spec(2.0, i_o, 1.0, i_o2dg, 0.0, i_dummy)
828
829!===========================================================
830!      a003 : O + O3 -> O2 + O2
831!===========================================================
832
833nb_reaction_4 = nb_reaction_4 + 1
834
835indice_4(nb_reaction_4) = z4spec(1.0, i_o, 1.0, i_o3, 2.0, i_o2, 0.0, i_dummy)
836
837!===========================================================
838!      b001 : O(1D) + CO2 -> O + CO2
839!===========================================================
840
841nb_phot = nb_phot + 1
842
843indice_phot(nb_phot) = z3spec(1.0, i_o1d, 1.0, i_o, 0.0, i_dummy)
844
845!===========================================================
846!      b002 : O(1D) + H2O -> OH + OH
847!===========================================================
848
849nb_reaction_4 = nb_reaction_4 + 1
850
851indice_4(nb_reaction_4) = z4spec(1.0, i_o1d, 1.0, i_h2o, 2.0, i_oh, 0.0, i_dummy)
852
853!===========================================================
854!      b003 : O(1D) + H2 -> OH + H
855!===========================================================
856
857nb_reaction_4 = nb_reaction_4 + 1
858
859indice_4(nb_reaction_4) = z4spec(1.0, i_o1d, 1.0, i_h2, 1.0, i_oh, 1.0, i_h)
860
861!===========================================================
862!      b004 : O(1D) + O2 -> O + O2
863!===========================================================
864
865nb_phot = nb_phot + 1
866
867indice_phot(nb_phot) = z3spec(1.0, i_o1d, 1.0, i_o, 0.0, i_dummy)
868
869!===========================================================
870!      b005 : O(1D) + O3 -> O2 + O2
871!===========================================================
872
873nb_reaction_4 = nb_reaction_4 + 1
874
875indice_4(nb_reaction_4) = z4spec(1.0, i_o1d, 1.0, i_o3, 2.0, i_o2, 0.0, i_dummy)
876
877!===========================================================
878!      b006 : O(1D) + O3 -> O2 + O + O
879!===========================================================
880
881nb_reaction_4 = nb_reaction_4 + 1
882
883indice_4(nb_reaction_4) = z4spec(1.0, i_o1d, 1.0, i_o3, 1.0, i_o2, 2.0, i_o)
884
885!===========================================================
886!      c001 : O + HO2 -> OH + O2
887!===========================================================
888
889nb_reaction_4 = nb_reaction_4 + 1
890
891indice_4(nb_reaction_4) = z4spec(1.0, i_o, 1.0, i_ho2, 1.0, i_oh, 1.0, i_o2)
892
893!===========================================================
894!      c002 : O + OH -> O2 + H
895!===========================================================
896
897nb_reaction_4 = nb_reaction_4 + 1
898
899indice_4(nb_reaction_4) = z4spec(1.0, i_o, 1.0, i_oh, 1.0, i_o2, 1.0, i_h)
900
901!===========================================================
902!      c003 : H + O3 -> OH + O2
903!===========================================================
904
905nb_reaction_4 = nb_reaction_4 + 1
906
907indice_4(nb_reaction_4) = z4spec(1.0, i_h, 1.0, i_o3, 1.0, i_oh, 1.0, i_o2)
908
909!===========================================================
910!      c004 : H + HO2 -> OH + OH
911!===========================================================
912
913nb_reaction_4 = nb_reaction_4 + 1
914
915indice_4(nb_reaction_4) = z4spec(1.0, i_h, 1.0, i_ho2, 2.0, i_oh, 0.0, i_dummy)
916
917!===========================================================
918!      c005 : H + HO2 -> H2 + O2
919!===========================================================
920
921nb_reaction_4 = nb_reaction_4 + 1
922
923indice_4(nb_reaction_4) = z4spec(1.0, i_h, 1.0, i_ho2, 1.0, i_h2, 1.0, i_o2)
924
925!===========================================================
926!      c006 : H + HO2 -> H2O + O
927!===========================================================
928
929nb_reaction_4 = nb_reaction_4 + 1
930
931indice_4(nb_reaction_4) = z4spec(1.0, i_h, 1.0, i_ho2, 1.0, i_h2o, 1.0, i_o)
932
933!===========================================================
934!      c007 : OH + HO2 -> H2O + O2
935!===========================================================
936
937nb_reaction_4 = nb_reaction_4 + 1
938
939indice_4(nb_reaction_4) = z4spec(1.0, i_oh, 1.0, i_ho2, 1.0, i_h2o, 1.0, i_o2)
940
941!===========================================================
942!      c008 : HO2 + HO2 -> H2O2 + O2
943!===========================================================
944
945nb_reaction_3 = nb_reaction_3 + 1
946
947indice_3(nb_reaction_3) = z3spec(2.0, i_ho2, 1.0, i_h2o2, 1.0, i_o2)
948
949!===========================================================
950!      c009 : OH + H2O2 -> H2O + HO2
951!===========================================================
952
953nb_reaction_4 = nb_reaction_4 + 1
954
955indice_4(nb_reaction_4) = z4spec(1.0, i_oh, 1.0, i_h2o2, 1.0, i_h2o, 1.0, i_ho2)
956
957!===========================================================
958!      c010 : OH + H2 -> H2O + H
959!===========================================================
960
961nb_reaction_4 = nb_reaction_4 + 1
962
963indice_4(nb_reaction_4) = z4spec(1.0, i_oh, 1.0, i_h2, 1.0, i_h2o, 1.0, i_h)
964
965!===========================================================
966!      c011 : H + O2 + CO2 -> HO2 + CO2
967!===========================================================
968
969nb_reaction_4 = nb_reaction_4 + 1
970
971indice_4(nb_reaction_4) = z4spec(1.0, i_h, 1.0, i_o2, 1.0, i_ho2, 0.0, i_dummy)
972
973!===========================================================
974!      c012 : O + H2O2 -> OH + HO2
975!===========================================================
976
977nb_reaction_4 = nb_reaction_4 + 1
978
979indice_4(nb_reaction_4) = z4spec(1.0, i_o, 1.0, i_h2o2, 1.0, i_oh, 1.0, i_ho2)
980
981!===========================================================
982!      c013 : OH + OH -> H2O + O
983!===========================================================
984
985nb_reaction_3 = nb_reaction_3 + 1
986
987indice_3(nb_reaction_3) = z3spec(2.0, i_oh, 1.0, i_h2o, 1.0, i_o)
988
989!===========================================================
990!      c014 : OH + O3 -> HO2 + O2
991!===========================================================
992
993nb_reaction_4 = nb_reaction_4 + 1
994
995indice_4(nb_reaction_4) = z4spec(1.0, i_oh, 1.0, i_o3, 1.0, i_ho2, 1.0, i_o2)
996
997!===========================================================
998!      c015 : HO2 + O3 -> OH + O2 + O2
999!===========================================================
1000
1001nb_reaction_4 = nb_reaction_4 + 1
1002
1003indice_4(nb_reaction_4) = z4spec(1.0, i_ho2, 1.0, i_o3, 1.0, i_oh, 2.0, i_o2)
1004
1005!===========================================================
1006!      c016 : HO2 + HO2 + CO2 -> H2O2 + O2 + CO2
1007!===========================================================
1008
1009nb_reaction_3 = nb_reaction_3 + 1
1010indice_3(nb_reaction_3) = z3spec(2.0, i_ho2, 1.0, i_h2o2, 1.0, i_o2)
1011
1012!===========================================================
1013!      c017 : OH + OH + CO2 -> H2O2 + CO2
1014!===========================================================
1015
1016nb_reaction_3 = nb_reaction_3 + 1
1017
1018indice_3(nb_reaction_3) = z3spec(2.0, i_oh, 1.0, i_h2o2, 0.0, i_dummy)
1019
1020!===========================================================
1021!      c018 : H + H + CO2 -> H2 + CO2
1022!===========================================================
1023
1024nb_reaction_3 = nb_reaction_3 + 1
1025
1026indice_3(nb_reaction_3) = z3spec(2.0, i_h, 1.0, i_h2, 0.0, i_dummy)
1027
1028!===========================================================
[2795]1029!      d001 : NO2 + O -> NO + O2
1030!===========================================================
1031
1032nb_reaction_4 = nb_reaction_4 + 1
1033
1034indice_4(nb_reaction_4) = z4spec(1.0, i_no2, 1.0, i_o, 1.0, i_no, 1.0, i_o2)
1035
1036!===========================================================
1037!      d002 : NO + O3 -> NO2 + O2
1038!===========================================================
1039
1040nb_reaction_4 = nb_reaction_4 + 1
1041
1042indice_4(nb_reaction_4) = z4spec(1.0, i_no, 1.0, i_o3, 1.0, i_no2, 1.0, i_o2)
1043
1044!===========================================================
1045!      d003 : NO + HO2 -> NO2 + OH
1046!===========================================================
1047
1048nb_reaction_4 = nb_reaction_4 + 1
1049
1050indice_4(nb_reaction_4) = z4spec(1.0, i_no, 1.0, i_ho2, 1.0, i_no2, 1.0, i_oh)
1051
1052!===========================================================
1053!      d004 : N + NO -> N2 + O
1054!===========================================================
1055
1056nb_reaction_4 = nb_reaction_4 + 1
1057
1058indice_4(nb_reaction_4) = z4spec(1.0, i_n, 1.0, i_no, 1.0, i_n2, 1.0, i_o)
1059
1060!===========================================================
1061!      d005 : N + O2 -> NO + O
1062!===========================================================
1063
1064nb_reaction_4 = nb_reaction_4 + 1
1065
1066indice_4(nb_reaction_4) = z4spec(1.0, i_n, 1.0, i_o2, 1.0, i_no, 1.0, i_o)
1067
1068!===========================================================
1069!      d006 : NO2 + H -> NO + OH
1070!===========================================================
1071
1072nb_reaction_4 = nb_reaction_4 + 1
1073
1074indice_4(nb_reaction_4) = z4spec(1.0, i_no2, 1.0, i_h, 1.0, i_no, 1.0, i_oh)
1075
1076!===========================================================
1077!      d007 : N + O -> NO
1078!===========================================================
1079
1080nb_reaction_4 = nb_reaction_4 + 1
1081
1082indice_4(nb_reaction_4) = z4spec(1.0, i_n, 1.0, i_o, 1.0, i_no, 0.0, i_dummy)
1083
1084!===========================================================
1085!      d008 : N + HO2 -> NO + OH
1086!===========================================================
1087
1088nb_reaction_4 = nb_reaction_4 + 1
1089
1090indice_4(nb_reaction_4) = z4spec(1.0, i_n, 1.0, i_ho2, 1.0, i_no, 1.0, i_oh)
1091
1092!===========================================================
1093!      d009 : N + OH -> NO + H
1094!===========================================================
1095
1096nb_reaction_4 = nb_reaction_4 + 1
1097
1098indice_4(nb_reaction_4) = z4spec(1.0, i_n, 1.0, i_oh, 1.0, i_no, 1.0, i_h)
1099
1100!===========================================================
1101!      d010 : N(2D) + O -> N + O
1102!===========================================================
1103
1104nb_phot = nb_phot + 1
1105
1106indice_phot(nb_phot) = z3spec(1.0, i_n2d, 1.0, i_n, 0.0, i_dummy)
1107
1108!===========================================================
1109!      d011 : N(2D) + N2 -> N + N2
1110!===========================================================
1111
1112nb_phot = nb_phot + 1
1113
1114indice_phot(nb_phot) = z3spec(1.0, i_n2d, 1.0, i_n, 0.0, i_dummy)
1115
1116!===========================================================
1117!      d012 : N(2D) + CO2 -> NO + CO
1118!===========================================================
1119
1120nb_reaction_4 = nb_reaction_4 + 1
1121
1122indice_4(nb_reaction_4) = z4spec(1.0, i_n2d, 1.0, i_co2, 1.0, i_no, 1.0, i_co)
1123
1124!===========================================================
1125!      d013 : N + O + CO2 -> NO + CO2
1126!===========================================================
1127
1128nb_reaction_4 = nb_reaction_4 + 1
1129
1130indice_4(nb_reaction_4) = z4spec(1.0, i_n, 1.0, i_o, 1.0, i_no, 0.0, i_dummy)
1131
1132!===========================================================
[2925]1133!      d014 : N(2D) + CO -> N + CO
1134!===========================================================
1135
1136nb_phot = nb_phot + 1
1137
1138indice_phot(nb_phot) = z3spec(1.0, i_n2d, 1.0, i_n, 0.0, i_dummy)
1139
1140!===========================================================
[2187]1141!      e001 : CO + OH -> CO2 + H
1142!===========================================================
1143
1144nb_reaction_4 = nb_reaction_4 + 1
1145
1146indice_4(nb_reaction_4) = z4spec(1.0, i_co, 1.0, i_oh, 1.0, i_co2, 1.0, i_h)
1147
1148!===========================================================
1149!      e002 : CO + O + M -> CO2 + M
1150!===========================================================
1151
1152nb_reaction_4 = nb_reaction_4 + 1
1153
1154indice_4(nb_reaction_4) = z4spec(1.0, i_co, 1.0, i_o, 1.0, i_co2, 0.0, i_dummy)
1155
1156!===========================================================
1157!      f001 : HCl + O(1D) -> OH + Cl
1158!===========================================================
1159
1160nb_reaction_4 = nb_reaction_4 + 1
1161
1162indice_4(nb_reaction_4) = z4spec(1.0, i_hcl, 1.0, i_o1d, 1.0, i_oh, 1.0, i_cl)
1163
1164!===========================================================
1165!      f002 : HCl + O(1D) -> H + ClO
1166!===========================================================
1167
1168nb_reaction_4 = nb_reaction_4 + 1
1169
1170indice_4(nb_reaction_4) = z4spec(1.0, i_hcl, 1.0, i_o1d, 1.0, i_h, 1.0, i_clo)
1171
1172!===========================================================
1173!      f003 : HCl + O -> OH + Cl
1174!===========================================================
1175
1176nb_reaction_4 = nb_reaction_4 + 1
1177
1178indice_4(nb_reaction_4) = z4spec(1.0, i_hcl, 1.0, i_o, 1.0, i_oh, 1.0, i_cl)
1179
1180!===========================================================
1181!      f004 : HCl + OH -> H2O + Cl
1182!===========================================================
1183
1184nb_reaction_4 = nb_reaction_4 + 1
1185
1186indice_4(nb_reaction_4) = z4spec(1.0, i_hcl, 1.0, i_oh, 1.0, i_h2o, 1.0, i_cl)
1187
1188!===========================================================
1189!      f005 : ClO + O -> Cl + O2
1190!===========================================================
1191
1192nb_reaction_4 = nb_reaction_4 + 1
1193
1194indice_4(nb_reaction_4) = z4spec(1.0, i_clo, 1.0, i_o, 1.0, i_cl, 1.0, i_o2)
1195
1196!===========================================================
1197!      f006 : ClO + OH -> Cl + HO2
1198!===========================================================
1199
1200nb_reaction_4 = nb_reaction_4 + 1
1201
1202indice_4(nb_reaction_4) = z4spec(1.0, i_clo, 1.0, i_oh, 1.0, i_cl, 1.0, i_ho2)
1203
1204!===========================================================
1205!      f007 : ClO + OH -> HCl + O2
1206!===========================================================
1207
1208nb_reaction_4 = nb_reaction_4 + 1
1209
1210indice_4(nb_reaction_4) = z4spec(1.0, i_clo, 1.0, i_oh, 1.0, i_hcl, 1.0, i_o2)
1211
1212!===========================================================
1213!      f008 : Cl + H2 -> HCl + H
1214!===========================================================
1215
1216nb_reaction_4 = nb_reaction_4 + 1
1217
1218indice_4(nb_reaction_4) = z4spec(1.0, i_cl, 1.0, i_h2, 1.0, i_hcl, 1.0, i_h)
1219
1220!===========================================================
1221!      f009 : Cl + O3 -> ClO + O2
1222!===========================================================
1223
1224nb_reaction_4 = nb_reaction_4 + 1
1225
1226indice_4(nb_reaction_4) = z4spec(1.0, i_cl, 1.0, i_o3, 1.0, i_clo, 1.0, i_o2)
1227
1228!===========================================================
1229!      f010 : Cl + HO2 -> ClO + OH
1230!===========================================================
1231
1232nb_reaction_4 = nb_reaction_4 + 1
1233
1234indice_4(nb_reaction_4) = z4spec(1.0, i_cl, 1.0, i_ho2, 1.0, i_clo, 1.0, i_oh)
1235
1236!===========================================================
1237!      f011 : Cl + HO2 -> HCl + O2
1238!===========================================================
1239
1240nb_reaction_4 = nb_reaction_4 + 1
1241
1242indice_4(nb_reaction_4) = z4spec(1.0, i_cl, 1.0, i_ho2, 1.0, i_hcl, 1.0, i_o2)
1243
1244!===========================================================
1245!      f012 : Cl + H2O2 -> HCl + HO2
1246!===========================================================
1247
1248nb_reaction_4 = nb_reaction_4 + 1
1249
1250indice_4(nb_reaction_4) = z4spec(1.0, i_cl, 1.0, i_h2o2, 1.0, i_hcl, 1.0, i_ho2)
1251
1252!===========================================================
1253!      f013 : Cl + CO + CO2 -> ClCO + CO2
1254!===========================================================
1255
1256nb_reaction_4 = nb_reaction_4 + 1
1257
1258indice_4(nb_reaction_4) = z4spec(1.0, i_cl, 1.0, i_co, 1.0, i_clco, 0.0, i_dummy)
1259
1260!===========================================================
1261!      f014 : ClCO + CO2 -> Cl + CO + CO2
1262!===========================================================
1263
1264nb_phot = nb_phot + 1
1265
1266indice_phot(nb_phot) = z3spec(1.0, i_clco, 1.0, i_cl, 1.0, i_co)
1267
1268!===========================================================
1269!      f015 : ClCO + O2 + CO2 -> ClCO3 + CO2
1270!===========================================================
1271
1272nb_reaction_4 = nb_reaction_4 + 1
1273
1274indice_4(nb_reaction_4) = z4spec(1.0, i_clco, 1.0, i_o2, 1.0, i_clco3, 0.0, i_dummy)
1275
1276!===========================================================
1277!      f016 : 0.5 ClCO3 + 0.5 Cl -> Cl
1278!             0.5 ClCO3 + 0.5 Cl -> ClO + CO2
1279!===========================================================
1280
1281nb_reaction_4 = nb_reaction_4 + 1
1282
1283indice_4(nb_reaction_4) = z4spec(0.5, i_clco3, 0.5, i_cl, 1.0, i_cl, 0.0, i_dummy)
1284
1285nb_reaction_4 = nb_reaction_4 + 1
1286
1287indice_4(nb_reaction_4) = z4spec(0.5, i_clco3, 0.5, i_cl, 1.0, i_clo, 1.0, i_co2)
1288
1289!===========================================================
1290!      f017 : 0.5 ClCO3 + 0.5 O -> Cl
1291!             0.5 ClCO3 + 0.5 O -> O2 + CO2
1292!===========================================================
1293
1294nb_reaction_4 = nb_reaction_4 + 1
1295
1296indice_4(nb_reaction_4) = z4spec(0.5, i_clco3, 0.5, i_o, 1.0, i_cl, 0.0, i_dummy)
1297
1298nb_reaction_4 = nb_reaction_4 + 1
1299
1300indice_4(nb_reaction_4) = z4spec(0.5, i_clco3, 0.5, i_o, 1.0, i_o2, 1.0, i_co2)
1301
1302!===========================================================
1303!      f018 : ClO + HO2 -> HOCl + O2
1304!===========================================================
1305
1306nb_reaction_4 = nb_reaction_4 + 1
1307
1308indice_4(nb_reaction_4) = z4spec(1.0, i_clo, 1.0, i_ho2, 1.0, i_hocl, 1.0, i_o2)
1309
1310!===========================================================
1311!      f019 : OH + HOCl -> H2O + ClO
1312!===========================================================
1313
1314nb_reaction_4 = nb_reaction_4 + 1
1315
1316indice_4(nb_reaction_4) = z4spec(1.0, i_oh, 1.0, i_hocl, 1.0, i_h2o, 1.0, i_clo)
1317
1318!===========================================================
1319!      f020 : O + HOCl -> OH + ClO
1320!===========================================================
1321
1322nb_reaction_4 = nb_reaction_4 + 1
1323
1324indice_4(nb_reaction_4) = z4spec(1.0, i_o, 1.0, i_hocl, 1.0, i_oh, 1.0, i_clo)
1325
1326!===========================================================
1327!      f021 : Cl + Cl + CO2 -> Cl2 + CO2
1328!===========================================================
1329
1330nb_reaction_3 = nb_reaction_3 + 1
1331
1332indice_3(nb_reaction_3) = z3spec(2.0, i_cl, 1.0, i_cl2, 0.0, i_dummy)
1333
1334!===========================================================
1335!      f022 : ClCO + O -> Cl + CO2
1336!===========================================================
1337
1338nb_reaction_4 = nb_reaction_4 + 1
1339
1340indice_4(nb_reaction_4) = z4spec(1.0, i_clco, 1.0, i_o, 1.0, i_cl, 1.0, i_co2)
1341
1342!===========================================================
1343!      f023 : Cl2 + O(1D) -> Cl + ClO
1344!===========================================================
1345
1346nb_reaction_4 = nb_reaction_4 + 1
1347
1348indice_4(nb_reaction_4) = z4spec(1.0, i_cl2, 1.0, i_o1d, 1.0, i_cl, 1.0, i_clo)
1349
1350!===========================================================
1351!      f024 : Cl2 + H -> HCl + Cl
1352!===========================================================
1353
1354nb_reaction_4 = nb_reaction_4 + 1
1355
1356indice_4(nb_reaction_4) = z4spec(1.0, i_cl2, 1.0, i_h, 1.0, i_hcl, 1.0, i_cl)
1357
1358!===========================================================
1359!      f025 : Cl + ClCO -> Cl2 + CO
1360!===========================================================
1361
1362nb_reaction_4 = nb_reaction_4 + 1
1363
1364indice_4(nb_reaction_4) = z4spec(1.0, i_cl, 1.0, i_clco, 1.0, i_cl2, 1.0, i_co)
1365
1366!===========================================================
1367!      f026 : ClCO + ClCO -> COCl2 + CO
1368!===========================================================
1369
1370nb_reaction_3 = nb_reaction_3 + 1
1371
1372indice_3(nb_reaction_3) = z3spec(2.0, i_clco, 1.0, i_cocl2, 1.0, i_co)
1373
1374!===========================================================
1375!      f027 : Cl + SO2 + CO2 -> ClSO2 + CO2
1376!===========================================================
1377
1378nb_reaction_4 = nb_reaction_4 + 1
1379
1380indice_4(nb_reaction_4) = z4spec(1.0, i_cl, 1.0, i_so2, 1.0, i_clso2, 0.0, i_dummy)
1381
1382!===========================================================
1383!      f028 : ClSO2 + O -> SO2 + ClO
1384!===========================================================
1385
1386nb_reaction_4 = nb_reaction_4 + 1
1387
1388indice_4(nb_reaction_4) = z4spec(1.0, i_clso2, 1.0, i_o, 1.0, i_so2, 1.0, i_clo)
1389
1390!===========================================================
1391!      f029 : ClSO2 + H -> SO2 + HCl
1392!===========================================================
1393
1394nb_reaction_4 = nb_reaction_4 + 1
1395
1396indice_4(nb_reaction_4) = z4spec(1.0, i_clso2, 1.0, i_h, 1.0, i_so2, 1.0, i_hcl)
1397
1398!===========================================================
1399!      f030 : ClSO2 + ClSO2 -> Cl2 + SO2 + SO2
1400!===========================================================
1401
1402nb_reaction_3 = nb_reaction_3 + 1
1403
1404indice_3(nb_reaction_3) = z3spec(2.0, i_clso2, 1.0, i_cl2, 2.0, i_so2)
1405
1406!===========================================================
1407!      f031 : Cl + O + CO2 -> ClO + CO2
1408!===========================================================
1409
1410nb_reaction_4 = nb_reaction_4 + 1
1411
1412indice_4(nb_reaction_4) = z4spec(1.0, i_cl, 1.0, i_o, 1.0, i_clo, 0.0, i_dummy)
1413
1414!===========================================================
1415!      f032 : Cl2 + O -> ClO + Cl
1416!===========================================================
1417
1418nb_reaction_4 = nb_reaction_4 + 1
1419
1420indice_4(nb_reaction_4) = z4spec(1.0, i_cl2, 1.0, i_o, 1.0, i_clo, 1.0, i_cl)
1421
1422!===========================================================
1423!      f033 : ClCO + OH -> HOCl + CO
1424!===========================================================
1425
1426nb_reaction_4 = nb_reaction_4 + 1
1427
1428indice_4(nb_reaction_4) = z4spec(1.0, i_clco, 1.0, i_oh, 1.0, i_hocl, 1.0, i_co)
1429
1430!===========================================================
1431!      f034 : Cl2 + OH -> Cl + HOCl
1432!===========================================================
1433
1434nb_reaction_4 = nb_reaction_4 + 1
1435
1436indice_4(nb_reaction_4) = z4spec(1.0, i_cl2, 1.0, i_oh, 1.0, i_cl, 1.0, i_hocl)
1437
1438!===========================================================
1439!      f035 : ClCO + O -> CO + ClO
1440!===========================================================
1441
1442nb_reaction_4 = nb_reaction_4 + 1
1443
1444indice_4(nb_reaction_4) = z4spec(1.0, i_clco, 1.0, i_o, 1.0, i_co, 1.0, i_clo)
1445
1446!===========================================================
1447!      f036 : ClCO + Cl2 -> COCl2 + Cl
1448!===========================================================
1449
1450nb_reaction_4 = nb_reaction_4 + 1
1451
1452indice_4(nb_reaction_4) = z4spec(1.0, i_clco, 1.0, i_cl2, 1.0, i_cocl2, 1.0, i_cl)
1453
1454!===========================================================
1455!      f037 : HCl + H -> H2 + Cl
1456!===========================================================
1457
1458nb_reaction_4 = nb_reaction_4 + 1
1459
1460indice_4(nb_reaction_4) = z4spec(1.0, i_hcl, 1.0, i_h, 1.0, i_h2, 1.0, i_cl)
1461
1462!===========================================================
1463!      f038 : ClCO + H -> HCl + CO
1464!===========================================================
1465
1466nb_reaction_4 = nb_reaction_4 + 1
1467
1468indice_4(nb_reaction_4) = z4spec(1.0, i_clco, 1.0, i_h, 1.0, i_hcl, 1.0, i_co)
1469
1470!===========================================================
1471!      f039 : Cl + H + M -> HCl + M
1472!===========================================================
1473
1474nb_reaction_4 = nb_reaction_4 + 1
1475
1476indice_4(nb_reaction_4) = z4spec(1.0, i_cl, 1.0, i_h, 1.0, i_hcl, 0.0, i_dummy)
1477
1478!===========================================================
1479!      g001 : S + O2 -> SO + O
1480!===========================================================
1481
1482nb_reaction_4 = nb_reaction_4 + 1
1483
1484indice_4(nb_reaction_4) = z4spec(1.0, i_s, 1.0, i_o2, 1.0, i_so, 1.0, i_o)
1485
1486!===========================================================
1487!      g002 : S + O3 -> SO + O2
1488!===========================================================
1489
1490nb_reaction_4 = nb_reaction_4 + 1
1491
1492indice_4(nb_reaction_4) = z4spec(1.0, i_s, 1.0, i_o3, 1.0, i_so, 1.0, i_o2)
1493
1494!===========================================================
1495!      g003 : SO + O2 -> SO2 + O
1496!===========================================================
1497
1498nb_reaction_4 = nb_reaction_4 + 1
1499
1500indice_4(nb_reaction_4) = z4spec(1.0, i_so, 1.0, i_o2, 1.0, i_so2, 1.0, i_o)
1501
1502!===========================================================
1503!      g004 : SO + O3 -> SO2 + O2
1504!===========================================================
1505
1506nb_reaction_4 = nb_reaction_4 + 1
1507
1508indice_4(nb_reaction_4) = z4spec(1.0, i_so, 1.0, i_o3, 1.0, i_so2, 1.0, i_o2)
1509
1510!===========================================================
1511!      g005 : SO + OH -> SO2 + H
1512!===========================================================
1513
1514nb_reaction_4 = nb_reaction_4 + 1
1515
1516indice_4(nb_reaction_4) = z4spec(1.0, i_so, 1.0, i_oh, 1.0, i_so2, 1.0, i_h)
1517
1518!===========================================================
1519!      g006 : S + OH -> SO + H
1520!===========================================================
1521
1522nb_reaction_4 = nb_reaction_4 + 1
1523
1524indice_4(nb_reaction_4) = z4spec(1.0, i_s, 1.0, i_oh, 1.0, i_so, 1.0, i_h)
1525
1526!===========================================================
1527!      g007 : SO + O + CO2 -> SO2 + CO2
1528!===========================================================
1529
1530nb_reaction_4 = nb_reaction_4 + 1
1531
1532indice_4(nb_reaction_4) = z4spec(1.0, i_so, 1.0, i_o, 1.0, i_so2, 0.0, i_dummy)
1533
1534!===========================================================
1535!      g008 : SO + HO2 -> SO2 + OH
1536!===========================================================
1537
1538nb_reaction_4 = nb_reaction_4 + 1
1539
1540indice_4(nb_reaction_4) = z4spec(1.0, i_so, 1.0, i_ho2, 1.0, i_so2, 1.0, i_oh)
1541
1542!===========================================================
1543!      g009 : SO2 + O + CO2 -> SO3 + CO2
1544!===========================================================
1545
1546nb_reaction_4 = nb_reaction_4 + 1
1547
1548indice_4(nb_reaction_4) = z4spec(1.0, i_so2, 1.0, i_o, 1.0, i_so3, 0.0, i_dummy)
1549
1550!===========================================================
1551!      g010 : S + O + CO2 -> SO + CO2
1552!===========================================================
1553
1554nb_reaction_4 = nb_reaction_4 + 1
1555
1556indice_4(nb_reaction_4) = z4spec(1.0, i_s, 1.0, i_o, 1.0, i_so, 0.0, i_dummy)
1557
1558!===========================================================
1559!      g011 : SO3 + H2O -> H2SO4
1560!===========================================================
1561
1562nb_reaction_4 = nb_reaction_4 + 1
1563
1564indice_4(nb_reaction_4) = z4spec(1.0, i_so3, 1.0, i_h2o, 1.0, i_h2so4, 0.0, i_dummy)
1565
1566!===========================================================
1567!      g012 : SO + ClO -> SO2 + Cl
1568!===========================================================
1569
1570nb_reaction_4 = nb_reaction_4 + 1
1571
1572indice_4(nb_reaction_4) = z4spec(1.0, i_so, 1.0, i_clo, 1.0, i_so2, 1.0, i_cl)
1573
1574!===========================================================
1575!      g013 : SO + SO3 -> SO2 + SO2
1576!===========================================================
1577
1578nb_reaction_4 = nb_reaction_4 + 1
1579
1580indice_4(nb_reaction_4) = z4spec(1.0, i_so, 1.0, i_so3, 2.0, i_so2, 0.0, i_dummy)
1581
1582!===========================================================
1583!      g014 : SO3 + O -> SO2 + O2
1584!===========================================================
1585
1586nb_reaction_4 = nb_reaction_4 + 1
1587
1588indice_4(nb_reaction_4) = z4spec(1.0, i_so3, 1.0, i_o, 1.0, i_so2, 1.0, i_o2)
1589
1590!===========================================================
1591!      g015 : SO + SO + CO2 -> S2O2 + CO2
1592!===========================================================
1593
1594nb_reaction_3 = nb_reaction_3 + 1
1595
1596indice_3(nb_reaction_3) = z3spec(2.0, i_so, 1.0, i_s2o2, 0.0, i_dummy)
1597
1598!===========================================================
1599!      g016 : S2O2 + CO2 -> SO + SO + CO2
1600!===========================================================
1601
1602nb_phot = nb_phot + 1
1603
1604indice_phot(nb_phot) = z3spec(1.0, i_s2o2, 2.0, i_so, 0.0, i_dummy)
1605
1606!===========================================================
1607!      g017 : 0.5 ClCO3 + 0.5 SO -> Cl 
1608!             0.5 ClCO3 + 0.5 SO -> SO2 + CO2
1609!===========================================================
1610
1611nb_reaction_4 = nb_reaction_4 + 1
1612
1613indice_4(nb_reaction_4) = z4spec(0.5, i_clco3, 0.5, i_so, 1.0, i_cl, 0.0, i_dummy)
1614
1615nb_reaction_4 = nb_reaction_4 + 1
1616
1617indice_4(nb_reaction_4) = z4spec(0.5, i_clco3, 0.5, i_so, 1.0, i_so2, 1.0, i_co2)
1618
1619!===========================================================
1620!      g018 : S + CO + CO2 -> OCS + CO2
1621!===========================================================
1622
1623nb_reaction_4 = nb_reaction_4 + 1
1624
1625indice_4(nb_reaction_4) = z4spec(1.0, i_s, 1.0, i_co, 1.0, i_ocs, 0.0, i_dummy)
1626
1627!===========================================================
1628!      g019 : ClCO + S -> OCS + Cl
1629!===========================================================
1630
1631nb_reaction_4 = nb_reaction_4 + 1
1632
1633indice_4(nb_reaction_4) = z4spec(1.0, i_clco, 1.0, i_s, 1.0, i_ocs, 1.0, i_cl)
1634
1635!===========================================================
1636!      g020 : SO2 + OH + CO2 -> HSO3 + CO2
1637!===========================================================
1638
1639nb_reaction_4 = nb_reaction_4 + 1
1640
1641indice_4(nb_reaction_4) = z4spec(1.0, i_so2, 1.0, i_oh, 1.0, i_hso3, 0.0, i_dummy)
1642
1643!===========================================================
1644!      g021 : HSO3 + O2 -> HO2 + SO3
1645!===========================================================
1646
1647nb_reaction_4 = nb_reaction_4 + 1
1648
1649indice_4(nb_reaction_4) = z4spec(1.0, i_hso3, 1.0, i_o2, 1.0, i_ho2, 1.0, i_so3)
1650
1651!===========================================================
1652!      g022 : S + S + CO2 -> S2 + CO2
1653!===========================================================
1654
1655nb_reaction_3 = nb_reaction_3 + 1
1656
1657indice_3(nb_reaction_3) = z3spec(2.0, i_s, 1.0, i_s2, 0.0, i_dummy)
1658
1659!===========================================================
[2925]1660!      g023 : S2 + O -> SO + S
[2187]1661!===========================================================
1662
1663nb_reaction_4 = nb_reaction_4 + 1
1664
1665indice_4(nb_reaction_4) = z4spec(1.0, i_s2, 1.0, i_o, 1.0, i_so, 1.0, i_s)
1666
1667!===========================================================
[2925]1668!      g024 : S + OCS -> S2 + CO
[2187]1669!===========================================================
1670
1671nb_reaction_4 = nb_reaction_4 + 1
1672
1673indice_4(nb_reaction_4) = z4spec(1.0, i_s, 1.0, i_ocs, 1.0, i_s2, 1.0, i_co)
1674
1675!===========================================================
[2925]1676!      g025 : OCS + O -> SO + CO
[2187]1677!===========================================================
1678
1679nb_reaction_4 = nb_reaction_4 + 1
1680
1681indice_4(nb_reaction_4) = z4spec(1.0, i_ocs, 1.0, i_o, 1.0, i_so, 1.0, i_co)
1682
1683!===========================================================
[2925]1684!      g026 : S + SO3 -> SO2 + SO
[2187]1685!===========================================================
1686
1687nb_reaction_4 = nb_reaction_4 + 1
1688
1689indice_4(nb_reaction_4) = z4spec(1.0, i_s, 1.0, i_so3, 1.0, i_so2, 1.0, i_so)
1690
1691!===========================================================
[2925]1692!      g027 : S + HO2 -> SO + OH
[2187]1693!===========================================================
1694
1695nb_reaction_4 = nb_reaction_4 + 1
1696
1697indice_4(nb_reaction_4) = z4spec(1.0, i_s, 1.0, i_ho2, 1.0, i_so, 1.0, i_oh)
1698
1699!===========================================================
[2925]1700!      g028 : S + ClO -> SO + Cl
[2187]1701!===========================================================
1702
1703nb_reaction_4 = nb_reaction_4 + 1
1704
1705indice_4(nb_reaction_4) = z4spec(1.0, i_s, 1.0, i_clo, 1.0, i_so, 1.0, i_cl)
1706
1707!===========================================================
[2925]1708!      g029: h2so4 + h2o -> so3 + h2o + h2o
[2187]1709!===========================================================
1710
1711nb_phot = nb_phot + 1
1712
1713indice_phot(nb_phot) = z3spec(1.0, i_h2so4, 1.0, i_so3, 1.0, i_h2o)
1714
1715!===========================================================
[2925]1716!      g030: so3 + ocs -> s2o2 +  co2
[2187]1717!===========================================================
1718
1719nb_reaction_4 = nb_reaction_4 + 1
1720
1721indice_4(nb_reaction_4) = z4spec(1.0, i_so3, 1.0, i_ocs, 1.0, i_s2o2, 1.0, i_co2)
1722
1723!===========================================================
[2925]1724!      g031: s2o2 + ocs -> co + so2 + s2
[2187]1725!===========================================================
1726!       decomposee en
1727!       0.5 s2o2 + 0.5 ocs -> co
1728!       0.5 s2o2 + 0.5 ocs -> so2 + s2
1729!===========================================================
1730
1731nb_reaction_4 = nb_reaction_4 + 1
1732
1733indice_4(nb_reaction_4) = z4spec(0.5, i_s2o2, 0.5, i_ocs, 1.0, i_co, 0.0, i_dummy)
1734
1735nb_reaction_4 = nb_reaction_4 + 1
1736
1737indice_4(nb_reaction_4) = z4spec(0.5, i_s2o2, 0.5, i_ocs, 1.0, i_so2, 1.0, i_s2)
1738
1739!===========================================================
[2925]1740!      g032: so + so -> so2 + s
[2187]1741!===========================================================
1742
1743nb_reaction_3 = nb_reaction_3 + 1
1744
1745indice_3(nb_reaction_3) = z3spec(2.0, i_so, 1.0, i_so2, 1.0, i_s)
1746
1747!===========================================================
1748!      h001: HO2 + ice -> products
1749!            treated as
1750!            HO2 -> 0.5 H2O + 0.75 O2
1751!===========================================================
1752
1753nb_phot = nb_phot + 1
1754
1755indice_phot(nb_phot) = z3spec(1.0, i_ho2, 0.5, i_h2o, 0.75, i_o2)
1756
1757!===========================================================
1758!      h002: OH + ice -> products
1759!            treated as
1760!            OH -> 0.5 H2O + 0.25 O2
1761!===========================================================
1762
1763nb_phot = nb_phot + 1
1764
1765indice_phot(nb_phot) = z3spec(1.0, i_oh, 0.5, i_h2o, 0.25, i_o2)
1766
1767!===========================================================
1768!      h003: H2O2 + ice -> products
1769!            treated as
1770!            H2O2 -> H2O + 0.5 O2
1771!===========================================================
1772
1773nb_phot = nb_phot + 1
1774
1775indice_phot(nb_phot) = z3spec(1.0, i_h2o2, 1.0, i_h2o, 0.5, i_o2)
1776
[2836]1777!Only if ion chemistry
1778if (ok_ionchem) then
1779
[2187]1780!===========================================================
[2836]1781!      i001 : CO2+ + O2 -> O2+ + CO2
[2187]1782!===========================================================
1783
[2836]1784   nb_reaction_4 = nb_reaction_4 + 1
1785
1786   indice_4(nb_reaction_4) = z4spec(1.0, i_co2plus, 1.0, i_o2, 1.0, i_o2plus, 1.0, i_co2)
1787
1788!===========================================================
1789!      i002 : CO2+ + O -> O+ + CO2
1790!===========================================================
1791
1792   nb_reaction_4 = nb_reaction_4 + 1
1793
1794   indice_4(nb_reaction_4) = z4spec(1.0, i_co2plus, 1.0, i_o, 1.0, i_oplus, 1.0, i_co2)
1795
1796!===========================================================
1797!      i003 : CO2+ + O -> O2+ + CO
1798!===========================================================
1799
1800   nb_reaction_4 = nb_reaction_4 + 1
1801
1802   indice_4(nb_reaction_4) = z4spec(1.0, i_co2plus, 1.0, i_o, 1.0, i_o2plus, 1.0, i_co)
1803
1804!===========================================================
1805!      i004 : O2+ + e- -> O + O
1806!===========================================================
1807
1808   nb_reaction_4 = nb_reaction_4 + 1
1809
1810   indice_4(nb_reaction_4) = z4spec(1.0, i_o2plus, 1.0, i_elec, 2.0, i_o, 0.0, i_dummy)
1811
1812!===========================================================
1813!      i005 : O+ + CO2 -> O2+ + CO
1814!===========================================================
1815
1816   nb_reaction_4 = nb_reaction_4 + 1
1817
1818   indice_4(nb_reaction_4) = z4spec(1.0, i_oplus, 1.0, i_co2, 1.0, i_o2plus, 1.0, i_co)
1819
1820!===========================================================
1821!      i006 : CO2+ + e -> CO + O
1822!===========================================================
1823
1824   nb_reaction_4 = nb_reaction_4 + 1
1825
1826   indice_4(nb_reaction_4) = z4spec(1.0, i_co2plus, 1.0, i_elec, 1.0, i_co, 1.0, i_o)
1827
1828!===========================================================
1829!      i007 : CO2+ + NO -> NO+ + CO2
1830!===========================================================
1831
1832   nb_reaction_4 = nb_reaction_4 + 1
1833
1834   indice_4(nb_reaction_4) = z4spec(1.0, i_co2plus, 1.0, i_no, 1.0, i_noplus, 1.0, i_co2)
1835
1836!===========================================================
1837!      i008 : O2+ + NO -> NO+ + O2
1838!===========================================================
1839
1840   nb_reaction_4 = nb_reaction_4 + 1
1841
1842   indice_4(nb_reaction_4) = z4spec(1.0, i_o2plus, 1.0, i_no, 1.0, i_noplus, 1.0, i_o2)
1843
1844!===========================================================
1845!      i009 : O2+ + N2 -> NO+ + NO
1846!===========================================================
1847
1848   nb_reaction_4 = nb_reaction_4 + 1
1849
1850   indice_4(nb_reaction_4) = z4spec(1.0, i_o2plus, 1.0, i_n2, 1.0, i_noplus, 1.0, i_no)
1851
1852!===========================================================
1853!      i010 : O2+ + N -> NO+ + O
1854!===========================================================
1855
1856   nb_reaction_4 = nb_reaction_4 + 1
1857
1858   indice_4(nb_reaction_4) = z4spec(1.0, i_o2plus, 1.0, i_n, 1.0, i_noplus, 1.0, i_o)
1859
1860!===========================================================
1861!      i011 : O+ + N2 -> NO+ + N
1862!===========================================================
1863
1864   nb_reaction_4 = nb_reaction_4 + 1
1865
1866   indice_4(nb_reaction_4) = z4spec(1.0, i_oplus, 1.0, i_n2, 1.0, i_noplus, 1.0, i_n)
1867
1868!===========================================================
1869!      i012 : NO+ + e -> N + O
1870!===========================================================
1871
1872   nb_reaction_4 = nb_reaction_4 + 1
1873
1874   indice_4(nb_reaction_4) = z4spec(1.0, i_noplus, 1.0, i_elec, 1.0, i_n, 1.0, i_o)
1875
1876!===========================================================
1877!      i013 : CO+ + CO2 -> CO2+ + CO
1878!===========================================================
1879
1880   nb_reaction_4 = nb_reaction_4 + 1
1881
1882   indice_4(nb_reaction_4) = z4spec(1.0, i_coplus, 1.0, i_co2, 1.0, i_co2plus, 1.0, i_co)
1883
1884!===========================================================
1885!      i014 : CO+ + O -> O+ + CO
1886!===========================================================
1887
1888   nb_reaction_4 = nb_reaction_4 + 1
1889
1890   indice_4(nb_reaction_4) = z4spec(1.0, i_coplus, 1.0, i_o, 1.0, i_oplus, 1.0, i_co)
1891
1892!===========================================================
1893!      i015 : C+ + CO2 -> CO+ + CO
1894!===========================================================
1895
1896   nb_reaction_4 = nb_reaction_4 + 1
1897
1898   indice_4(nb_reaction_4) = z4spec(1.0, i_cplus, 1.0, i_co2, 1.0, i_coplus, 1.0, i_co)
1899
1900!===========================================================
[2925]1901
[2836]1902!      i016 : N2+ + CO2 -> CO2+ + N2
1903!===========================================================
1904
1905   nb_reaction_4 = nb_reaction_4 + 1
1906
1907   indice_4(nb_reaction_4) = z4spec(1.0, i_n2plus, 1.0, i_co2, 1.0, i_co2plus, 1.0, i_n2)
1908
1909!===========================================================
1910!      i017 : N2+ + O -> NO+ + N
1911!===========================================================
1912
1913   nb_reaction_4 = nb_reaction_4 + 1
1914
1915   indice_4(nb_reaction_4) = z4spec(1.0, i_n2plus, 1.0, i_o, 1.0, i_noplus, 1.0, i_n)
1916
1917!===========================================================
1918!      i018 : N2+ + CO -> CO+ + N2
1919!===========================================================
1920
1921   nb_reaction_4 = nb_reaction_4 + 1
1922
1923   indice_4(nb_reaction_4) = z4spec(1.0, i_n2plus, 1.0, i_co, 1.0, i_coplus, 1.0, i_n2)
1924
1925!===========================================================
1926!      i019 : N2+ + e -> N + N
1927!===========================================================
1928
1929   nb_reaction_4 = nb_reaction_4 + 1
1930
1931   indice_4(nb_reaction_4) = z4spec(1.0, i_n2plus, 1.0, i_elec, 2.0, i_n, 0.0, i_dummy)
1932
1933!===========================================================
1934!      i020 : N2+ + O -> O+ + N2
1935!===========================================================
1936
1937   nb_reaction_4 = nb_reaction_4 + 1
1938
1939   indice_4(nb_reaction_4) = z4spec(1.0, i_n2plus, 1.0, i_o, 1.0, i_oplus, 1.0, i_n2)
1940
1941!===========================================================
1942!      i021 : N+ + CO2 -> CO2+ + N
1943!===========================================================
1944
1945   nb_reaction_4 = nb_reaction_4 + 1
1946
1947   indice_4(nb_reaction_4) = z4spec(1.0, i_nplus, 1.0, i_co2, 1.0, i_co2plus, 1.0, i_n)
1948
1949!===========================================================
1950!      i022 : CO+ + H -> H+ + CO
1951!===========================================================
1952
1953   nb_reaction_4 = nb_reaction_4 + 1
1954
1955   indice_4(nb_reaction_4) = z4spec(1.0, i_coplus, 1.0, i_h, 1.0, i_hplus, 1.0, i_co)
1956
1957!===========================================================
1958!      i023 : O+ + H -> H+ + O
1959!===========================================================
1960
1961   nb_reaction_4 = nb_reaction_4 + 1
1962
1963   indice_4(nb_reaction_4) = z4spec(1.0, i_oplus, 1.0, i_h, 1.0, i_hplus, 1.0, i_o)
1964
1965!===========================================================
1966!      i024 : H+ + O -> O+ + H
1967!===========================================================
1968
1969   nb_reaction_4 = nb_reaction_4 + 1
1970
1971   indice_4(nb_reaction_4) = z4spec(1.0, i_hplus, 1.0, i_o, 1.0, i_oplus, 1.0, i_h)
1972
1973!===========================================================
1974!      i025 : CO2+ + H2 -> HCO2+ + H
1975!===========================================================
1976
1977   nb_reaction_4 = nb_reaction_4 + 1
1978
1979   indice_4(nb_reaction_4) = z4spec(1.0, i_co2plus, 1.0, i_h2, 1.0, i_hco2plus, 1.0, i_h)
1980
1981!===========================================================
[3140]1982!      i026 : spare slot (reaction rate set to zero)
[2836]1983!===========================================================
1984
1985   nb_reaction_4 = nb_reaction_4 + 1
1986
1987   indice_4(nb_reaction_4) = z4spec(1.0, i_hco2plus, 1.0, i_elec, 1.0, i_h, 1.0, i_co2)
1988
1989!===========================================================
1990!      i027 : HCO2+ + e -> H + O + CO
1991!===========================================================
1992!We divide this reaction in two
1993
1994!0.5HCO2+ + 0.5e -> H
1995
1996   nb_reaction_4 = nb_reaction_4 + 1
1997
1998   indice_4(nb_reaction_4) = z4spec(.5, i_hco2plus, 0.5, i_elec, 1.0, i_h, 0.0, i_dummy)
1999
2000!0.5 HCO2+ + 0.5 e -> O + CO
2001
2002   nb_reaction_4 = nb_reaction_4 + 1
2003
2004   indice_4(nb_reaction_4) = z4spec(0.5, i_hco2plus, 0.5, i_elec, 1.0, i_o, 1.0, i_co)
2005
2006!===========================================================
2007!      i029 : HCO2+ + e -> OH + CO
2008!===========================================================
2009
2010   nb_reaction_4 = nb_reaction_4 + 1
2011
2012   indice_4(nb_reaction_4) = z4spec(1.0, i_hco2plus, 1.0, i_elec, 1.0, i_oh, 1.0, i_co)
2013
2014
2015!===========================================================
2016!      i030 : HCO2+ + e -> H + CO2
2017!===========================================================
2018
2019   nb_reaction_4 = nb_reaction_4 + 1
2020
2021   indice_4(nb_reaction_4) = z4spec(1.0, i_hco2plus, 1.0, i_elec, 1.0, i_h, 1.0, i_co2)
2022
2023
2024!===========================================================
2025!      i031 : HCO2+ + O -> HCO+ + O2
2026!===========================================================
2027
2028   nb_reaction_4 = nb_reaction_4 + 1
2029
2030   indice_4(nb_reaction_4) = z4spec(1.0, i_hco2plus, 1.0, i_o, 1.0, i_hcoplus, 1.0, i_o2)
2031
2032
2033!===========================================================
2034!      i032 : HCO2+ + CO -> HCO+ + CO2
2035!===========================================================
2036
2037   nb_reaction_4 = nb_reaction_4 + 1
2038   indice_4(nb_reaction_4) = z4spec(1.0, i_hco2plus, 1.0, i_co, 1.0, i_hcoplus, 1.0, i_co2)
2039
2040
2041!===========================================================
2042!      i033 : H+ + CO2 -> HCO+ + O
2043!===========================================================
2044
2045   nb_reaction_4 = nb_reaction_4 + 1
2046   indice_4(nb_reaction_4) = z4spec(1.0, i_hplus, 1.0, i_co2, 1.0, i_hcoplus, 1.0, i_o)
2047
2048
2049!===========================================================
2050!      i034 : CO2+ + H -> HCO+ + O
2051!===========================================================
2052
2053   nb_reaction_4 = nb_reaction_4 + 1
2054   indice_4(nb_reaction_4) = z4spec(1.0, i_co2plus, 1.0, i_h, 1.0, i_hcoplus, 1.0, i_o)
2055
2056
2057!===========================================================
2058!      i035 : CO+ + H2 -> HCO+ + H
2059!===========================================================
2060
2061   nb_reaction_4 = nb_reaction_4 + 1
2062   indice_4(nb_reaction_4) = z4spec(1.0, i_coplus, 1.0, i_h2, 1.0, i_hcoplus, 1.0, i_h)
2063
2064
2065!===========================================================
2066!      i036 : HCO+ + e- -> CO + H
2067!===========================================================
2068
2069   nb_reaction_4 = nb_reaction_4 + 1
2070   indice_4(nb_reaction_4) = z4spec(1.0, i_hcoplus, 1.0, i_elec, 1.0, i_co, 1.0, i_h)
2071
2072!===========================================================
2073!      i037 : CO2+ + H2O -> H2O+ + CO2
2074!===========================================================
2075
2076   nb_reaction_4 = nb_reaction_4 + 1
2077   indice_4(nb_reaction_4) = z4spec(1.0, i_co2plus, 1.0, i_h2o, 1.0, i_h2oplus, 1.0, i_co2)
2078
2079!===========================================================
2080!      i038 : CO+ + H2O -> H2O+ + CO
2081!===========================================================
2082
2083   nb_reaction_4 = nb_reaction_4 + 1
2084   indice_4(nb_reaction_4) = z4spec(1.0, i_coplus, 1.0, i_h2o, 1.0, i_h2oplus, 1.0, i_co)
2085
2086!===========================================================
2087!      i039 : O+ + H2O -> H2O+ + O
2088!===========================================================
2089
2090   nb_reaction_4 = nb_reaction_4 + 1
2091   indice_4(nb_reaction_4) = z4spec(1.0, i_oplus, 1.0, i_h2o, 1.0, i_h2oplus, 1.0, i_o)
2092
2093!===========================================================
2094!      i040 : N2+ + H2O -> H2O+ + N2
2095!===========================================================
2096
2097   nb_reaction_4 = nb_reaction_4 + 1
2098   indice_4(nb_reaction_4) = z4spec(1.0, i_n2plus, 1.0, i_h2o, 1.0, i_h2oplus, 1.0, i_n2)
2099
2100!===========================================================
2101!      i041 : N+ + H2O -> H2O+ + N
2102!===========================================================
2103
2104   nb_reaction_4 = nb_reaction_4 + 1
2105   indice_4(nb_reaction_4) = z4spec(1.0, i_nplus, 1.0, i_h2o, 1.0, i_h2oplus, 1.0, i_n)
2106
2107!===========================================================
2108!      i042 : H+ + H2O -> H2O+ + H
2109!===========================================================
2110
2111   nb_reaction_4 = nb_reaction_4 + 1
2112   indice_4(nb_reaction_4) = z4spec(1.0, i_hplus, 1.0, i_h2o, 1.0, i_h2oplus, 1.0, i_h)
2113
2114!===========================================================
2115!      i043 : H2O+ + O2 -> O2+ + H2O
2116!===========================================================
2117
2118   nb_reaction_4 = nb_reaction_4 + 1
2119   indice_4(nb_reaction_4) = z4spec(1.0, i_h2oplus, 1.0, i_o2, 1.0, i_o2plus, 1.0, i_h2o)
2120
2121!===========================================================
2122!      i044 : H2O+ + CO -> HCO+ + OH
2123!===========================================================
2124
2125   nb_reaction_4 = nb_reaction_4 + 1
2126   indice_4(nb_reaction_4) = z4spec(1.0, i_h2oplus, 1.0, i_co, 1.0, i_hcoplus, 1.0, i_oh)
2127
2128!===========================================================
2129!      i045 : H2O+ + O -> O2+ + H2
2130!===========================================================
2131
2132   nb_reaction_4 = nb_reaction_4 + 1
2133   indice_4(nb_reaction_4) = z4spec(1.0, i_h2oplus, 1.0, i_o, 1.0, i_o2plus, 1.0, i_h2)
2134
2135!===========================================================
2136!      i046 : H2O+ + NO -> NO+ + H2O
2137!===========================================================
2138
2139   nb_reaction_4 = nb_reaction_4 + 1
2140   indice_4(nb_reaction_4) = z4spec(1.0, i_h2oplus, 1.0, i_no, 1.0, i_noplus, 1.0, i_h2o)
2141
2142!===========================================================
2143!      i047 : H2O+ + e- -> H + H + O
2144!===========================================================
2145
2146   nb_reaction_4 = nb_reaction_4 + 1
2147   indice_4(nb_reaction_4) = z4spec(1.0, i_h2oplus, 1.0, i_elec, 2.0, i_h, 1.0, i_o)
2148
2149!===========================================================
2150!      i048 : H2O+ + e- -> H + OH
2151!===========================================================
2152
2153   nb_reaction_4 = nb_reaction_4 + 1
2154   indice_4(nb_reaction_4) = z4spec(1.0, i_h2oplus, 1.0, i_elec, 1.0, i_h, 1.0, i_oh)
2155
2156!===========================================================
2157!      i049 : H2O+ + e- -> H2 + O
2158!===========================================================
2159
2160   nb_reaction_4 = nb_reaction_4 + 1
2161   indice_4(nb_reaction_4) = z4spec(1.0, i_h2oplus, 1.0, i_elec, 1.0, i_h2, 1.0, i_o)
2162
2163!===========================================================
2164!      i050 : H2O+ + H2O -> H3O+ + OH
2165!===========================================================
2166
2167   nb_reaction_4 = nb_reaction_4 + 1
2168   indice_4(nb_reaction_4) = z4spec(1.0, i_h2oplus, 1.0, i_h2o, 1.0, i_h3oplus, 1.0, i_oh)
2169
2170!===========================================================
2171!      i051 : H2O+ + H2 -> H3O+ + H
2172!===========================================================
2173
2174   nb_reaction_4 = nb_reaction_4 + 1
2175   indice_4(nb_reaction_4) = z4spec(1.0, i_h2oplus, 1.0, i_h2, 1.0, i_h3oplus, 1.0, i_h)
2176
2177!===========================================================
2178!      i052 : HCO+ + H2O -> H3O+ + CO
2179!===========================================================
2180
2181   nb_reaction_4 = nb_reaction_4 + 1
2182   indice_4(nb_reaction_4) = z4spec(1.0, i_hcoplus, 1.0, i_h2o, 1.0, i_h3oplus, 1.0, i_co)
2183
2184!===========================================================
2185!      i053: H3O+ + e -> OH + H + H
2186!===========================================================
2187
2188   nb_reaction_4 = nb_reaction_4 + 1
2189   indice_4(nb_reaction_4) = z4spec(1.0, i_h3oplus, 1.0, i_elec, 1.0, i_oh, 2.0, i_h)
2190
2191!===========================================================
2192!      i054: H3O+ + e -> H2O + H
2193!===========================================================
2194
2195   nb_reaction_4 = nb_reaction_4 + 1
2196   indice_4(nb_reaction_4) = z4spec(1.0, i_h3oplus, 1.0, i_elec, 1.0, i_h2o, 1.0, i_h)
2197
2198!===========================================================
2199!      i055: H3O+ + e -> HO + H2
2200!===========================================================
2201
2202   nb_reaction_4 = nb_reaction_4 + 1
2203   indice_4(nb_reaction_4) = z4spec(1.0, i_h3oplus, 1.0, i_elec, 1.0, i_oh, 1.0, i_h2)
2204
2205!===========================================================
2206!      i056: H3O+ + e -> O + H2 + H
2207!===========================================================
2208!We divide this reaction in two
2209
2210!0.5H3O+ + 0.5e -> O
2211
2212   nb_reaction_4 = nb_reaction_4 + 1
2213   indice_4(nb_reaction_4) = z4spec(0.5, i_h3oplus, 0.5, i_elec, 1.0, i_o, 0.0, i_dummy)
2214
2215!0.5H3O+ + 0.5e -> H2 + H
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_h2, 1.0, i_h)
2219
2220!===========================================================
2221!      i057: O+ + H2 -> OH+ + H
2222!===========================================================
2223
2224   nb_reaction_4 = nb_reaction_4 + 1
2225   indice_4(nb_reaction_4) = z4spec(1.0, i_oplus, 1.0, i_h2, 1.0, i_ohplus, 1.0, i_h)
2226
2227!===========================================================
2228!      i058: OH+ + O -> O2+ + H
2229!===========================================================
2230
2231   nb_reaction_4 = nb_reaction_4 + 1
2232   indice_4(nb_reaction_4) = z4spec(1.0, i_ohplus, 1.0, i_o, 1.0, i_o2plus, 1.0, i_h)
2233
2234!===========================================================
2235!      i059: OH+ + CO2 -> HCO2+ + O
2236!===========================================================
2237
2238   nb_reaction_4 = nb_reaction_4 + 1
2239   indice_4(nb_reaction_4) = z4spec(1.0, i_ohplus, 1.0, i_co2, 1.0, i_hco2plus, 1.0, i_o)
2240
2241!===========================================================
2242!      i060: OH+ + CO -> HCO+ + O
2243!===========================================================
2244
2245   nb_reaction_4 = nb_reaction_4 + 1
2246   indice_4(nb_reaction_4) = z4spec(1.0, i_ohplus, 1.0, i_co, 1.0, i_hcoplus, 1.0, i_o)
2247
2248!===========================================================
2249!      i061: OH+ + NO -> NO+ + OH
2250!===========================================================
2251
2252   nb_reaction_4 = nb_reaction_4 + 1
2253   indice_4(nb_reaction_4) = z4spec(1.0, i_ohplus, 1.0, i_no, 1.0, i_noplus, 1.0, i_oh)
2254
2255!===========================================================
2256!      i062: OH+ + H2 -> H2O+ + H
2257!===========================================================
2258
2259   nb_reaction_4 = nb_reaction_4 + 1
2260   indice_4(nb_reaction_4) = z4spec(1.0, i_ohplus, 1.0, i_h2, 1.0, i_h2oplus, 1.0, i_h)
2261
2262!===========================================================
2263!      i063: OH+ + O2 -> O2+ + OH
2264!===========================================================
2265
2266   nb_reaction_4 = nb_reaction_4 + 1
2267   indice_4(nb_reaction_4) = z4spec(1.0, i_ohplus, 1.0, i_o2, 1.0, i_o2plus, 1.0, i_oh)
2268
2269end if    !ok_ionchem
2270
2271!===========================================================
2272!      j001: O2(Dg) + (CO2 or O) -> O2 + (CO2 or O)
2273!===========================================================
2274
[2187]2275nb_phot = nb_phot + 1
2276
2277indice_phot(nb_phot) = z3spec(1.0, i_o2dg, 1.0, i_o2, 0.0, i_dummy)
2278
2279!===========================================================
[2836]2280!      j002: O2(Dg) -> O2 + hv
[2187]2281!===========================================================
2282
2283nb_phot = nb_phot + 1
2284
2285indice_phot(nb_phot) = z3spec(1.0, i_o2dg, 1.0, i_o2, 0.0, i_dummy)
2286
2287!===========================================================
2288!  check dimensions
2289!===========================================================
2290
2291print*, 'nb_phot       = ', nb_phot
[2925]2292print*, 'nb_phot_max   = ', nb_phot_max
[2187]2293print*, 'nb_reaction_4 = ', nb_reaction_4
[2925]2294print*, 'nb_reaction_4_max = ', nb_reaction_4_max
[2187]2295print*, 'nb_reaction_3 = ', nb_reaction_3
[2925]2296print*, 'nb_reaction_3_max = ', nb_reaction_3_max
[2187]2297
2298!print*, 'check dimension'
2299if ((nb_phot /= nb_phot_max)             .or.  &
2300    (nb_reaction_3 /= nb_reaction_3_max) .or.  &
2301    (nb_reaction_4 /= nb_reaction_4_max)) then
[2795]2302   print*, 'wrong dimensions in indice'
2303   stop
[2187]2304end if 
2305
2306end subroutine indice
2307
2308!===========================================================
2309
2310subroutine phot(nj, nztable, nsza, nso2, sza_input, dist_sol, mumean, rmco2, rmso2,                     &
2311                jphot, table_colair, table_colso2, table_sza, nz, nb_phot_max, t, p, v_phot)
2312
2313!===========================================================
2314
2315implicit none
[2580]2316#include "clesphys.h"
[2187]2317
2318integer, INTENT(IN) :: nz
2319integer, INTENT(IN) :: nj, nztable, nsza, nso2
2320
2321real, INTENT(IN), dimension(nz) :: t, p
2322real, INTENT(IN), dimension(nz) :: mumean        ! [g/mol]
2323real, INTENT(IN), dimension(nso2,nsza,nztable,nj) :: jphot
2324real, INTENT(IN), dimension(nso2,nztable) :: table_colso2
2325real, INTENT(IN), dimension(nztable) :: table_colair
2326real, INTENT(IN), dimension(nsza) :: table_sza
2327real, INTENT(IN), dimension(nz) :: rmco2, rmso2
2328real, INTENT(IN) :: sza_input, dist_sol
2329
2330real, dimension(nz,nj) :: j
2331real, dimension(nz) :: coef, col, colso2
2332real, dimension(nso2) :: colref
2333real, dimension(2,2,2) :: poids
2334real :: cicol, cisza, ciso2
2335real :: avogadro, gvenus, dp
2336
2337integer :: indcol, indsza, indso2
2338integer :: isza, iz, i, iso2, ij
2339integer :: nb_phot_max
2340real, dimension(nz,nb_phot_max), INTENT(INOUT) :: v_phot
2341
2342!mugaz    = 43.44E-3
2343avogadro = 6.022E+23
2344gvenus   = 8.87
2345
2346! day/night test
2347
2348if (sza_input <= 95.) then      ! day
2349
2350! interpolation in solar zenith angle
2351
2352indsza = nsza - 1
2353do isza = 1,nsza
2354   if (table_sza(isza) >= sza_input) then
2355      indsza = min(indsza,isza - 1)
2356      indsza = max(indsza, 1)
2357   end if
2358end do
2359
2360cisza = (sza_input - table_sza(indsza))                       &
2361       /(table_sza(indsza + 1) - table_sza(indsza))
2362
2363!    print*, 'indsza    = ', indsza
2364!    print*, 'table_sza = ', table_sza(indsza)
2365!    print*, 'cisza     = ', cisza
2366
2367! co2 and so2 columns
2368
2369coef(nz)   = avogadro/(gvenus*mumean(nz)*1.E-3)*1.E-4
2370col(nz)    = coef(nz)*rmco2(nz)*p(nz)*100.
2371colso2(nz) = coef(nz)*rmso2(nz)*p(nz)*100.
2372
2373do iz = nz-1, 1, -1
2374!   print*,"L2490 new_photochemistry", iz,mumean(iz)
2375   dp = (p(iz) - p(iz+1))*100.
2376   coef(iz)   = avogadro/(gvenus*mumean(iz)*1.E-3)*1.E-4
2377   col(iz)    = col(iz+1) + coef(iz)*(rmco2(iz+1) + rmco2(iz))*0.5*dp
2378   col(iz)    = min(col(iz), table_colair(1))
2379   colso2(iz) = colso2(iz+1) + coef(iz)*(rmso2(iz+1) + rmso2(iz))*0.5*dp
2380   colso2(iz) = min(colso2(iz), table_colso2(nso2,1))
2381end do
2382
2383! loop over altitude
2384
2385do iz = 1,nz
2386
2387! interpolation in co2 column
2388
[2453]2389   indcol = nztable - 1
[2418]2390   cicol  = 0.
2391
[2464]2392   do i = 1,nztable-1
[2187]2393      if (table_colair(i) < col(iz)) then
2394         cicol = (log(col(iz)) - log(table_colair(i)))           &
2395                /(log(table_colair(i-1)) - log(table_colair(i)))
2396         indcol = i - 1
2397         exit
2398      end if
2399   end do
2400
2401! interpolation in so2 column
2402
2403! initialize indso2 and ciso2 in case colref is never larger
2404! than the gcm so2 column.
2405
2406   indso2 = nso2 - 1
2407   ciso2 = 1.
2408
2409! search for the index indso2 between which interpolate
2410
2411   do iso2 = 1,nso2
2412      colref(iso2) = cicol*table_colso2(iso2,indcol)               &
2413                   + (1.-cicol)*table_colso2(iso2,indcol+1)
2414      if (colref(iso2) > colso2(iz)) then
2415         ciso2 = (colso2(iz) - colref(iso2-1))                     &
2416                /(colref(iso2) - colref(iso2-1))
2417         indso2 = iso2 - 1
2418         exit
2419      end if
2420   end do
2421
2422! 4-dimensional interpolation weights
2423
2424! poids(so2,sza_input,co2)
2425
2426   poids(1,1,1) = (1.-ciso2)*(1.-cisza)*    cicol
2427   poids(1,1,2) = (1.-ciso2)*(1.-cisza)*(1.-cicol)
2428   poids(1,2,1) = (1.-ciso2)*    cisza *    cicol
2429   poids(1,2,2) = (1.-ciso2)*    cisza *(1.-cicol)
2430   poids(2,1,1) =     ciso2 *(1.-cisza)*    cicol
2431   poids(2,1,2) =     ciso2 *(1.-cisza)*(1.-cicol)
2432   poids(2,2,1) =     ciso2 *    cisza *    cicol
2433   poids(2,2,2) =     ciso2 *    cisza *(1.-cicol)
2434
2435! 4-dimensional interpolation in the lookup table
2436
2437   do ij = 1,nj
2438      j(iz,ij) =                                          &
2439      poids(1,1,1)*jphot(indso2  ,indsza  ,indcol  ,ij)   &
2440    + poids(1,1,2)*jphot(indso2  ,indsza  ,indcol+1,ij)   &
2441    + poids(1,2,1)*jphot(indso2  ,indsza+1,indcol  ,ij)   &
2442    + poids(1,2,2)*jphot(indso2  ,indsza+1,indcol+1,ij)   &
2443    + poids(2,1,1)*jphot(indso2+1,indsza  ,indcol  ,ij)   &
2444    + poids(2,1,2)*jphot(indso2+1,indsza  ,indcol+1,ij)   &
2445    + poids(2,2,1)*jphot(indso2+1,indsza+1,indcol  ,ij)   &
2446    + poids(2,2,2)*jphot(indso2+1,indsza+1,indcol+1,ij)
2447   end do
2448
2449end do           ! end of loop over altitude
2450
2451else             ! night
2452   j(:,:) = 0.
2453end if
2454
2455! photodissociation rates numbering in the lookup table
2456
2457!    1     o2 + hv     -> o + o
2458!    2     o2 + hv     -> o + o(1d)
2459!    3     co2 + hv    -> co + o
2460!    4     co2 + hv    -> co + o(1d)
2461!    5     o3 + hv     -> o2(Dg) + o(1d)
2462!    6     o3 + hv     -> o2 + o
2463!    7     h2o + hv    -> h + oh
2464!    8     ho2 + hv    -> oh + o
2465!    9     h2o2 + hv   -> oh + oh
2466!    10    hcl + hv    -> h + cl
2467!    11    cl2 + hv    -> cl + cl
2468!    12    hocl + hv   -> oh + cl
2469!    13    so2 + hv    -> so + o
2470!    14    so + hv     -> s + o
2471!    15    so3 + hv    -> so2 + o
2472!    16    clo + hv    -> cl + o
2473!    17    ocs + hv    -> co + s
2474!    18    cocl2 + hv  -> cl + cl + co
2475!    19    h2so4 + hv  -> so3 + h2o
[2795]2476!    20    no2 + hv    -> no + o
2477!    21    no + hv     -> n + o 
2478!    22    n2 + hv     -> n + n
[2187]2479
2480! fill v_phot array
2481
2482do ij = 1,nj
2483   v_phot(:,ij) = j(:,ij)
2484end do
2485
[2580]2486!!! TEST: artificial increase of CO2 photodissociation
2487if (tuneupperatm) then
2488!-- TuneA
2489!   v_phot(65:78,4) = v_phot(65:78,4)*10.
2490!   v_phot(60:64,4) = v_phot(60:64,4)*3.
2491!   v_phot(55:59,3) = v_phot(55:59,3)*2.
2492!--
2493!-- TuneB
2494!   v_phot(65:78,4) = v_phot(65:78,4)*10.
2495!   v_phot(55:59,3) = v_phot(55:59,3)*5.
2496!--
2497!-- TuneC
2498! VCD 1.1 tuning
[2622]2499!   v_phot(65:78,4) = v_phot(65:78,4)*10.
2500!   v_phot(52:59,3) = v_phot(52:59,3)*5.
[2580]2501!--
2502!-- TuneE
2503! VCD 2.0 tuning
[3035]2504    v_phot(65:nz,4) = v_phot(65:nz,4)*10. ! CO2 + hv ==> O(1D) + CO
[2580]2505!--
2506!   v_phot(:,4) = v_phot(:,4)*10.
2507!do ij=3,4
2508!   v_phot(:,ij) = v_phot(:,ij)*10.
2509!end do
2510endif
2511!!!!!!!!!!!!!!!
2512
[2187]2513!PRINT*,'sza_input: ',sza_input
2514!IF (sza_input.le.40.5 .AND. sza_input.gt.39.5) THEN
2515!open(200, form = 'formatted')
2516!100    format(e20.6)
2517!write(200,100)(v_phot(:,19))
2518!stop
2519!END IF
2520
2521end subroutine phot
2522
2523!======================================================================
2524
[2836]2525 subroutine krates(hetero_ice,hetero_dust,ok_ionchem, nphotion,        &
2526                   nz, nesp, c, conc, t, t_elect, p,                   &
2527                   nb_phot_max, nb_reaction_3_max, nb_reaction_4_max,  &
2528                   tuneupperatm, v_3, v_4, v_phot,sza_input,           &
2529                   ind_norec, ind_orec)
[2187]2530 
2531!================================================================
2532! compute reaction rates                                        !
2533!----------------------------------------------------------------
2534! reaction               type                array              !
2535!----------------------------------------------------------------
2536! A + B    --> C + D     bimolecular         v_4                !
2537! A + A    --> B + C     quadratic           v_3                !
2538! A + C    --> B + C     quenching           v_phot             !
2539! A + ice  --> B + C     heterogeneous       v_phot             !
2540!================================================================
2541
2542 USE chemparam_mod
[2836]2543 USE photolysis_mod, only : nphot
[2187]2544implicit none
2545
[2836]2546!----------------------------------------------------------------------
2547!     input
2548!----------------------------------------------------------------------
2549
2550integer, INTENT(IN) :: nesp, nz
2551real, INTENT(IN)    :: sza_input  ! [degree]
2552real, INTENT(IN), dimension(nz)  :: t_elect, t, p, conc
2553logical, INTENT(IN) :: hetero_ice, hetero_dust, tuneupperatm
2554
2555real, INTENT(IN), dimension(nz,nesp) :: c
2556
2557integer, intent(in) :: nb_reaction_3_max ! number of quadratic reactions
2558integer, intent(in) :: nb_reaction_4_max ! number of bimolecular reactions
2559integer, intent(in) :: nb_phot_max       ! number of reactions treated numerically as photodissociations
2560integer, intent(in) :: nphotion          ! number of photoionizations
2561logical, intent(in) :: ok_ionchem        ! if .true. then ionchem reaction used
2562
2563!----------------------------------------------------------------------
2564!     output
2565!----------------------------------------------------------------------
2566
2567real (kind = 8), dimension(nz,       nb_phot_max) :: v_phot
2568real (kind = 8), dimension(nz, nb_reaction_3_max) :: v_3
2569real (kind = 8), dimension(nz, nb_reaction_4_max) :: v_4
2570integer :: ind_norec
2571integer :: ind_orec
2572
2573!----------------------------------------------------------------------
2574!     local
2575!----------------------------------------------------------------------
2576
[2187]2577integer :: iz
[3135]2578real    :: ak0, ak1, xpo, rate, rate1, rate2, pi, gam, epsil
[2851]2579real    :: k1a0, k1b0, k1ainf, k1a, k1b, k0, kinf, kf, kint, kca, fc, fx, x, y
[2836]2580integer :: nb_phot, nb_reaction_3, nb_reaction_4
[2187]2581real, dimension(nz)  :: surfice1d, surfdust1d
2582real, dimension(nz) :: deq
2583real, dimension(nz) :: a001, a002, a003,                           &
2584                       b001, b002, b003, b004, b005, b006, b007,   &
2585                       b008, b009,                                 &
2586                       c001, c002, c003, c004, c005, c006, c007,   &
2587                       c008, c009, c010, c011, c012, c013, c014,   &
2588                       c015, c016, c017, c018,                     &
[2795]2589                       d001, d002, d003, d004, d005, d006, d007,   &
[2925]2590                       d008, d009, d010, d011, d012, d013, d014,   &
[2187]2591                       e001, e002, e003, e004, e005, e006, e007,   &
2592                       e008, e009, e010, e011, e012, e013, e014,   &
2593                       e015, e016, e017, e018, e019, e020, e021,   &
2594                       e022, e023, e024, e025, e026, e027, e028,   &
2595                       e029, e030, e031, e032, e033, e034, e035,   &
2596                       e036, e037, e038, e039, e040, e041, e042,   &
2597                       e043,                                       &
2598                       f001, f002, f003, f004, f005, f006, f007,   &
2599                       f008, f009, f010, f011, f012, f013, f014,   &
2600                       f015, f016, f017, f018, f019, f020, f021,   &
2601                       f022, f023, f024, f025, f026, f027, f028,   &
2602                       f029, f030, f031, f032, f033, f034, f035,   &
2603                       f036, f037, f038, f039,                     &
2604                       g001, g002, g003, g004, g005, g006, g007,   &
2605                       g008, g009, g010, g011, g012, g013, g014,   &
2606                       g015, g016, g017, g018, g019, g020, g021,   &
2607                       g022, g023, g024, g025, g026, g027, g028,   &
[2925]2608                       g029, g030, g031, g032,                     &
[2187]2609                       h001, h002, h003,                           &
[2836]2610                       i001, i002, i003, i004, i005, i006,         &
2611                       i007, i008, i009, i010, i011, i012,         &
2612                       i013, i014, i015, i016, i017, i018, i019,   &
2613                       i020, i021, i022, i023, i024, i025, i026,   &
2614                       i027, i028, i029, i030, i031, i032, i033,   &
2615                       i034, i035, i036, i037, i038, i039, i040,   &
2616                       i041, i042, i043, i044, i045, i046, i047,   &
2617                       i048, i049, i050, i051, i052, i053, i054,   &
2618                       i055, i056, i057, i058, i059, i060, i061,   &
2619                       i062, i063,                                 &
[2925]2620                       j001, j002                                 
[2836]2621!----------------------------------------------------------------------
2622!     initialisation
2623!----------------------------------------------------------------------
[2187]2624
[2836]2625      pi = acos(-1.)
2626     
2627      nb_phot       = nphot + nphotion ! initialised to the number of photolysis + number of photoionization rates
2628      nb_reaction_3 = 0
2629      nb_reaction_4 = 0
[2187]2630
2631!----------------------------------------------------------------------
2632!        reactions avec ox
2633!----------------------------------------------------------------------
2634
[3135]2635!---  a001: o + o2 + m -> o3 + m
[2187]2636
[3135]2637!     jpl 2019
2638 
2639!     co2/n2 efficiency as a third body = 2.075
2640!     from sehested et al., j. geophys. res., 100, 1995.
[2187]2641
[3135]2642      a001(:) = 6.1e-34*(t(:)/298.)**(-2.4)     &
2643              *(2.075*c(:,i_co2) + 1.0*(conc(:) - c(:,i_co2)))
[2187]2644
[3135]2645      nb_reaction_4 = nb_reaction_4 + 1
2646      v_4(:,nb_reaction_4) = a001(:)
[2187]2647
[3135]2648!---  a002: o + o + m -> o2(delta_g) + m
2649 
2650!     baulch et al., 1976 (confirmed by smith and robertson, 2008)
[2187]2651
[3135]2652!     epsil : net effective yield
[2836]2653
[3135]2654      epsil = 0.75 ! (crisp et al., 1996; krasnopolsky, 1991)
2655
2656      a002(:) = 2.76e-34*exp(720./t(:))  &
2657              *(2.5*c(:,i_co2) + 1.0*(conc(:) - c(:,i_co2)))*epsil
[2836]2658     
[2187]2659      nb_reaction_3 = nb_reaction_3 + 1
2660      v_3(:,nb_reaction_3) = a002(:)
[3135]2661
[2795]2662      ind_orec = nb_reaction_3
2663
[3135]2664!---  a003: o + o3 -> o2 + o2
[2187]2665
2666!     jpl 2003
2667
2668      a003(:) = 8.0E-12*exp(-2060./t(:))
2669
2670      nb_reaction_4 = nb_reaction_4 + 1
2671      v_4(:,nb_reaction_4) = a003(:)
2672
2673!----------------------------------------------------------------------
2674!        reactions avec o(1d)
2675!----------------------------------------------------------------------
2676
2677!---  b001: o(1d) + co2  -> o + co2
2678
2679!     jpl 2006
2680
2681      b001(:) = 7.5E-11*exp(115./t(:))
2682
2683      nb_phot = nb_phot + 1
2684      v_phot(:,nb_phot) = b001(:)*c(:,i_co2)
2685
2686!---  b002: o(1d) + h2o  -> oh + oh
2687
2688!     jpl 2006
[2851]2689         
[2187]2690      b002(:) = 1.63E-10*exp(60./t(:))
[2851]2691             
[2187]2692      nb_reaction_4 = nb_reaction_4 + 1
2693      v_4(:,nb_reaction_4) = b002(:)
2694
2695!---  b003: o(1d) + h2  -> oh + h
2696
[2843]2697!     jpl 2011     
[2187]2698
2699      b003(:) = 1.2E-10
2700
2701      nb_reaction_4 = nb_reaction_4 + 1
2702      v_4(:,nb_reaction_4) = b003(:)
2703
2704!---  b004: o(1d) + o2  -> o + o2
2705
2706!     jpl 2006
2707
2708      b004(:) = 3.3E-11*exp(55./t(:))
2709
2710      nb_phot = nb_phot + 1
2711      v_phot(:,nb_phot) = b004(:)*c(:,i_o2)
[2851]2712           
[2187]2713!---  b005: o(1d) + o3  -> o2 + o2
2714
2715!     jpl 2003
2716
2717      b005(:) = 1.2E-10
2718
2719      nb_reaction_4 = nb_reaction_4 + 1
2720      v_4(:,nb_reaction_4) = b005(:)
[2851]2721           
[2187]2722!---  b006: o(1d) + o3  -> o2 + o + o
2723
2724!     jpl 2003
2725
2726      b006(:) = 1.2E-10
2727
2728      nb_reaction_4 = nb_reaction_4 + 1
2729      v_4(:,nb_reaction_4) = b006(:)
[2851]2730           
[2187]2731!----------------------------------------------------------------------
2732!        reactions des hox   
2733!----------------------------------------------------------------------
2734
2735!---  c001: o + ho2 -> oh + o2
2736
2737!     jpl 2003
2738
2739      c001(:) = 3.0E-11*exp(200./t(:))
2740
2741      nb_reaction_4 = nb_reaction_4 + 1
2742      v_4(:,nb_reaction_4) = c001(:)
2743
2744!---  c002: o + oh -> o2 + h
2745
[2843]2746!     jpl 2011 
[2187]2747
2748      c002(:) = 1.8E-11*exp(180./t(:))
2749
2750      nb_reaction_4 = nb_reaction_4 + 1
2751      v_4(:,nb_reaction_4) = c002(:)
2752
2753!---  c003: h + o3 -> oh + o2
2754
2755!     jpl 2003
2756
2757      c003(:) = 1.4E-10*exp(-470./t(:))
2758
2759      nb_reaction_4 = nb_reaction_4 + 1
2760      v_4(:,nb_reaction_4) = c003(:)
2761
2762!---  c004: h + ho2 -> oh + oh
2763
2764!     jpl 2006
2765
2766      c004(:) = 7.2E-11
2767
2768      nb_reaction_4 = nb_reaction_4 + 1
2769      v_4(:,nb_reaction_4) = c004(:)
2770
2771!---  c005: h + ho2 -> h2 + o2
2772
2773!     jpl 2006
2774
2775      c005(:) = 6.9E-12
2776
2777      nb_reaction_4 = nb_reaction_4 + 1
2778      v_4(:,nb_reaction_4) = c005(:)
2779
2780!---  c006: h + ho2 -> h2o + o
2781
2782!     jpl 2006
2783
2784      c006(:) = 1.6E-12
2785
2786      nb_reaction_4 = nb_reaction_4 + 1
2787      v_4(:,nb_reaction_4) = c006(:)
2788
2789!---  c007: oh + ho2 -> h2o + o2
2790
2791!     jpl 2003
2792
2793      c007(:) = 4.8E-11*exp(250./t(:))
2794
2795      nb_reaction_4 = nb_reaction_4 + 1
2796      v_4(:,nb_reaction_4) = c007(:)
2797
2798!---  c008: ho2 + ho2 -> h2o2 + o2
2799
[2843]2800!     jpl 2015
[2187]2801
[2843]2802      c008(:) = 3.0E-13*exp(460./t(:))
[2187]2803
2804!     christensen et al., grl, 13, 2002
2805
[2843]2806!     c008(:) = 1.5E-12*exp(19./t(:))
[2187]2807
2808      nb_reaction_3 = nb_reaction_3 + 1
2809      v_3(:,nb_reaction_3) = c008(:)
2810
2811!---  c009: oh + h2o2 -> h2o + ho2
2812
2813!     jpl 2006
2814
2815      c009(:) = 1.8E-12
2816
2817      nb_reaction_4 = nb_reaction_4 + 1
2818      v_4(:,nb_reaction_4) = c009(:)
2819
2820!---  c010: oh + h2 -> h2o + h
2821
2822!     jpl 2006
2823
2824      c010(:) = 2.8E-12*exp(-1800./t(:))
2825
2826      nb_reaction_4 = nb_reaction_4 + 1
2827      v_4(:,nb_reaction_4) = c010(:)
2828
2829!---  c011: h + o2 + co2 -> ho2 + co2
2830
2831!     jpl 2006
2832
[2851]2833!     do iz = 1,nz
2834!        ak0 = 2.5*4.4E-32*(t(iz)/300.)**(-1.3)
2835!        ak1 = 4.7E-11*(t(iz)/300.)**(-0.2)
2836
2837!        rate = (ak0*conc(iz))/(1. + ak0*conc(iz)/ak1)
2838!        xpo = 1./(1. + alog10((ak0*conc(iz))/ak1)**2)
2839!        c011(iz) = rate*0.6**xpo
2840!     end do
2841
2842!     jpl 2019
2843
[2187]2844      do iz = 1,nz
[2851]2845         ak0 = 2.4*5.3e-32*(t(iz)/298.)**(-1.8)
2846         ak1 = 9.5e-11*(t(iz)/298.)**(0.4)
[2187]2847
2848         rate = (ak0*conc(iz))/(1. + ak0*conc(iz)/ak1)
2849         xpo = 1./(1. + alog10((ak0*conc(iz))/ak1)**2)
2850         c011(iz) = rate*0.6**xpo
2851      end do
2852
2853      nb_reaction_4 = nb_reaction_4 + 1
2854      v_4(:,nb_reaction_4) = c011(:)
2855
2856!---  c012: o + h2o2 -> oh + ho2
2857
2858!     jpl 2003
2859
2860      c012(:) = 1.4E-12*exp(-2000./t(:))
2861
2862      nb_reaction_4 = nb_reaction_4 + 1
2863      v_4(:,nb_reaction_4) = c012(:)
2864
2865!---  c013: oh + oh -> h2o + o
2866
2867!     jpl 2006
2868
2869      c013(:) = 1.8E-12
2870
2871      nb_reaction_3 = nb_reaction_3 + 1
2872      v_3(:,nb_reaction_3) = c013(:)
2873
2874!---  c014: oh + o3 -> ho2 + o2
2875
2876!     jpl 2003
2877
2878      c014(:) = 1.7E-12*exp(-940./t(:))
2879
2880      nb_reaction_4 = nb_reaction_4 + 1
2881      v_4(:,nb_reaction_4) = c014(:)
2882
2883!---  c015: ho2 + o3 -> oh + o2 + o2
2884
2885!     jpl 2003
2886
2887      c015(:) = 1.0E-14*exp(-490./t(:))
2888
2889      nb_reaction_4 = nb_reaction_4 + 1
2890      v_4(:,nb_reaction_4) = c015(:)
2891
2892!---  c016: ho2 + ho2 + co2 -> h2o2 + o2 + co2
2893
[2843]2894!     jpl 2011
[2187]2895
2896      c016(:) = 2.5*2.1E-33*exp(920./t(:))*conc(:)
2897
2898      nb_reaction_3 = nb_reaction_3 + 1
2899      v_3(:,nb_reaction_3) = c016(:)
2900
2901!---  c017: oh + oh + co2 -> h2o2 + co2
2902
2903!     jpl 2003
2904
2905      do iz = 1,nz
2906         ak0 = 2.5*6.9E-31*(t(iz)/300.)**(-1.0)
2907         ak1 = 2.6E-11*(t(iz)/300.)**(0.0)
2908
2909         rate = (ak0*conc(iz))/(1. + ak0*conc(iz)/ak1)
2910         xpo = 1./(1. + alog10((ak0*conc(iz))/ak1)**2)
2911         c017(iz) = rate*0.6**xpo
2912      end do
2913
2914      nb_reaction_3 = nb_reaction_3 + 1
2915      v_3(:,nb_reaction_3) = c017(:)
2916
2917!---  c018: h + h + co2 -> h2 + co2
2918
2919!     baulch et al., 2005
2920
2921      c018(:) = 2.5*1.8E-30*(t(:)**(-1.0))*conc(:)
2922
2923      nb_reaction_3 = nb_reaction_3 + 1
2924      v_3(:,nb_reaction_3) = c018(:)
2925
2926!----------------------------------------------------------------------
2927!        reactions des composes azotes
2928!----------------------------------------------------------------------
2929
2930!---  d001: no2 + o -> no + o2
2931
2932!     jpl 2006
2933
[2851]2934!     d001(:) = 5.1e-12*exp(210./t(:))
[2187]2935
[2851]2936!     jpl 2019
2937
2938!     For the sake of simplicity, it is assumed that the association
2939!     yield (kf) gives the same product as the chemical activation yield
2940!     (kca). Thus the only products are no + o2. There is no production
2941!     of no3.
2942
2943      do iz = 1,nz
2944
2945!        association
2946
2947        k0 = 2.5*3.4e-31*(298./t(iz))**(1.6)
2948        kinf = 2.3e-11*(298./t(iz))**(0.2)
2949
2950        kf = (kinf*k0*conc(iz)/(kinf + k0*conc(iz))) &
2951             *0.6**(1. + (log10(k0*conc(iz)/kinf))**2.)**(-1.0)
2952
2953!       chemical acitvation
2954
2955         kint = 5.3e-12*exp(200./t(iz))
2956
2957         kca = kint*(1. - kf/kinf)
2958
2959!        total : association + chemical activation
2960
2961         d001(iz) = kf + kca
2962
2963      end do
2964
[2795]2965      nb_reaction_4 = nb_reaction_4 + 1
2966      v_4(:,nb_reaction_4) = d001(:)
2967
[2187]2968!---  d002: no + o3 -> no2 + o2
2969
2970!     jpl 2006
2971
[2795]2972      d002(:) = 3.0e-12*exp(-1500./t(:))
[2187]2973
[2795]2974      nb_reaction_4 = nb_reaction_4 + 1
2975      v_4(:,nb_reaction_4) = d002(:)
2976
[2187]2977!---  d003: no + ho2 -> no2 + oh
2978
[2795]2979!     jpl 2011
[2187]2980
[2851]2981!     d003(:) = 3.3e-12*exp(270./t(:))
[2187]2982
[2851]2983!     jpl 2019
2984
2985      d003(:) = 3.44e-12*exp(270./t(:))
2986
[2795]2987      nb_reaction_4 = nb_reaction_4 + 1
2988      v_4(:,nb_reaction_4) = d003(:)
2989
2990
2991!---  d004: n + no -> n2 + o
2992
2993!     jpl 2011
2994
2995      d004(:) = 2.1e-11*exp(100./t(:))
2996
2997      nb_reaction_4 = nb_reaction_4 + 1
2998      v_4(:,nb_reaction_4) = d004(:)
2999
3000!---  d005: n + o2 -> no + o
3001
3002!     jpl 2011
3003
[2851]3004!     d005(:) = 1.5e-11*exp(-3600./t(:))
[2795]3005
[2851]3006!     jpl 2019
3007
3008      d005(:) = 3.3e-12*exp(-3150./t(:))
3009
[2795]3010      nb_reaction_4 = nb_reaction_4 + 1
3011      v_4(:,nb_reaction_4) = d005(:)
3012
3013!---  d006: no2 + h -> no + oh
3014
3015!     jpl 2011
3016
[2851]3017!     d006(:) = 4.0e-10*exp(-340./t(:))
[2795]3018
[2851]3019!     jpl 2019
3020
3021      d006(:) = 1.35e-10
3022
[2795]3023      nb_reaction_4 = nb_reaction_4 + 1
3024      v_4(:,nb_reaction_4) = d006(:)
3025
3026!---  d007: n + o -> no
3027
[2851]3028      d007(:) = 1.9e-17*(300./t(:))**(0.5)*exp(1-(0.57/(t(:)**(0.5))))
[2795]3029
3030      nb_reaction_4 = nb_reaction_4 + 1
3031      v_4(:,nb_reaction_4) = d007(:)
3032
3033      ind_norec = nb_reaction_4
3034
3035!---  d008: n + ho2 -> no + oh
3036
3037!     brune et al., j. chem. phys., 87, 1983
3038
3039      d008(:) = 2.19e-11
3040
3041      nb_reaction_4 = nb_reaction_4 + 1
3042      v_4(:,nb_reaction_4) = d008(:)
3043
3044!---  d009: n + oh -> no + h
3045
3046!     atkinson et al., j. phys. chem. ref. data, 18, 881, 1989
3047
3048      d009(:) = 3.8e-11*exp(85./t(:))
3049
3050      nb_reaction_4 = nb_reaction_4 + 1
3051      v_4(:,nb_reaction_4) = d009(:)
3052
3053!---  d010: n2d + o -> n + o
3054
3055!     herron, j. phys. chem. ref. data, 1999
3056
3057      d010(:) = 3.3e-12*exp(-260./t(:))
3058
3059      nb_phot = nb_phot + 1
3060      v_phot(:,nb_phot) = d010(:)*c(:,i_o)
3061
3062!---  d011: n2d + n2 -> n + n2
3063
3064!     herron, j. phys. chem. ref. data, 1999
3065
3066      d011(:) = 1.7e-14
3067
3068      nb_phot = nb_phot + 1
3069      v_phot(:,nb_phot) = d011(:)*c(:,i_n2)
3070
3071!---  d012: n2d + co2 -> no + co
3072
3073!     herron, j. phys. chem. ref. data, 1999
3074
3075      d012(:) = 3.6e-13
3076
3077      nb_reaction_4 = nb_reaction_4 + 1
3078      v_4(:,nb_reaction_4) = d012(:)
3079
3080!---  d013: n + o + co2 -> no + co2
[2925]3081
3082!     Campbell & Trush, 1966     
3083
3084      d013(:) = 2.5 * conc(:) * 1.83e-32 * (298./t(:))**0.5
[2795]3085     
3086      nb_reaction_4 = nb_reaction_4 + 1
3087      v_4(:,nb_reaction_4) = d013(:)
3088
[2925]3089!--- d014: n2d + co -> n + co
3090
3091!    herron, j. phys. chem. ref. data, 1999
3092
3093     d014(:) = 1.9e-12
3094
3095     nb_phot = nb_phot + 1
3096     v_phot(:,nb_phot) = d014(:)*c(:,i_co)
[2187]3097!----------------------------------------------------------------------
3098!        reactions des composes carbones
3099!----------------------------------------------------------------------
3100
3101!---  e001: oh + co -> co2 + h
3102
[2795]3103!     jpl 2015
[2187]3104
[2851]3105!      do iz = 1,nz
[2187]3106
[2795]3107!        branch 1 : oh + co -> h + co2
[2187]3108
[2851]3109!         rate1 = 1.5e-13*(t(iz)/300.)**(0.0)
[2187]3110
[2795]3111!        branch 2 : oh + co + m -> hoco + m
[2187]3112
[2851]3113!         ak0 = 5.9e-33*(t(iz)/300.)**(-1.0)
3114!         ak1 = 1.1e-12*(t(iz)/300.)**(1.3)
3115!         rate2 = (ak0*conc(iz))/(1. + ak0*conc(iz)/ak1)
3116!         xpo = 1./(1. + alog10((ak0*conc(iz))/ak1)**2)
[2187]3117
[2851]3118!         e001(iz) = rate1 + rate2*0.6**xpo
3119!      end do
[2187]3120
3121!     joshi et al., 2006
3122
[2795]3123!     do iz = 1,nz
3124!        k1a0 = 1.34*2.5*conc(iz)                                &
3125!              *1/(1/(3.62E-26*t(iz)**(-2.739)*exp(-20./t(iz)))  &
3126!              + 1/(6.48E-33*t(iz)**(0.14)*exp(-57./t(iz))))     ! typo in paper corrected
3127!        k1b0 = 1.17E-19*t(iz)**(2.053)*exp(139./t(iz))          &
3128!             + 9.56E-12*t(iz)**(-0.664)*exp(-167./t(iz))
3129!        k1ainf = 1.52E-17*t(iz)**(1.858)*exp(28.8/t(iz))        &
3130!               + 4.78E-8*t(iz)**(-1.851)*exp(-318./t(iz))
3131!        x = k1a0/(k1ainf - k1b0)
3132!        y = k1b0/(k1ainf - k1b0)
3133!        fc = 0.628*exp(-1223./t(iz)) + (1. - 0.628)*exp(-39./t(iz))  &
3134!           + exp(-t(iz)/255.)
3135!        fx = fc**(1./(1. + (alog(x))**2))                       ! typo in paper corrected
3136!        k1a = k1a0*((1. + y)/(1. + x))*fx
3137!        k1b = k1b0*(1./(1.+x))*fx
3138!        e001(iz) = k1a + k1b
3139!     end do
[2187]3140
[2851]3141!     jpl 2019
3142
3143      do iz = 1,nz
3144
3145!       association
3146
3147        k0 = 2.5*6.9e-33*(398./t(iz))**(2.1)
3148        kinf = 1.1e-12*(298./t(iz))**(-1.3)
3149
3150        kf = (kinf*k0*conc(iz)/(kinf + k0*conc(iz))) &
3151             *0.6**(1. + (log10(k0*conc(iz)/kinf))**2.)**(-1.0)
3152
3153!       chemical activation
3154
3155        kint = 1.85e-13*exp(-65/t(iz))
3156
3157        kca = kint*(1. - kf/kinf)
3158
3159!       total : association + chemical activation
3160
3161        e001(iz) = kf + kca
3162
3163      end do
3164
[2187]3165      nb_reaction_4 = nb_reaction_4 + 1
3166      v_4(:,nb_reaction_4) = e001(:)
3167
3168!---  e002: o + co + m -> co2 + m
3169
3170!     tsang and hampson, 1986.
3171
3172      e002(:) = 2.5*6.5E-33*exp(-2184./t(:))*conc(:)
3173
3174      nb_reaction_4 = nb_reaction_4 + 1
3175      v_4(:,nb_reaction_4) = e002(:)
3176
3177!----------------------------------------------------------------------
3178!        reactions des composes chlores
3179!----------------------------------------------------------------------
3180
3181!---  f001: hcl + o(1d) -> oh + cl
3182
3183!     jpl 2011
3184
3185      f001(:) = 1.0E-10
3186
3187      nb_reaction_4 = nb_reaction_4 + 1
3188      v_4(:,nb_reaction_4) = f001(:)
3189
3190!---  f002: hcl + o(1d) -> h + clo
3191
3192!     jpl 2011
3193
3194      f002(:) = 3.6E-11
3195     
3196      nb_reaction_4 = nb_reaction_4 + 1
3197      v_4(:,nb_reaction_4) = f002(:)
3198
3199!---  f003: hcl + o -> oh + cl
3200
3201!     jpl 2006
3202
3203      f003(:) = 1.0E-11*exp(-3300./t(:))
3204
3205      nb_reaction_4 = nb_reaction_4 + 1
3206      v_4(:,nb_reaction_4) = f003(:)
3207
3208!---  f004: hcl + oh -> h2o + cl
3209
[2843]3210!     jpl 2009
[2187]3211
3212      f004(:) = 1.8E-12*exp(-250./t(:))
3213
3214      nb_reaction_4 = nb_reaction_4 + 1
3215      v_4(:,nb_reaction_4) = f004(:)
3216
3217!---  f005: clo + o -> cl + o2
3218
3219!     jpl 2006
3220
3221      f005(:) = 2.8E-11*exp(85./t(:))
3222
3223      nb_reaction_4 = nb_reaction_4 + 1
3224      v_4(:,nb_reaction_4) = f005(:)
3225
3226!---  f006: clo + oh -> cl + ho2
3227
3228!     jpl 2006
3229
3230      f006(:) = 7.4E-12*exp(270./t(:))
3231
3232      nb_reaction_4 = nb_reaction_4 + 1
3233      v_4(:,nb_reaction_4) = f006(:)
3234
3235!---  f007: clo + oh -> hcl + o2
3236
3237!     jpl 2006
3238
3239      f007(:) = 6.0E-13*exp(230./t(:))
3240
3241      nb_reaction_4 = nb_reaction_4 + 1
3242      v_4(:,nb_reaction_4) = f007(:)
3243
3244!---  f008: cl + h2 -> hcl + h
3245
3246!     jpl 2006
3247
3248      f008(:) = 3.05E-11*exp(-2270./t(:))
3249
3250      nb_reaction_4 = nb_reaction_4 + 1
3251      v_4(:,nb_reaction_4) = f008(:)
3252
3253!---  f009: cl + o3 -> clo + o2
3254
3255!     jpl 2006
3256
3257      f009(:) = 2.3E-11*exp(-200./t(:))
3258
3259      nb_reaction_4 = nb_reaction_4 + 1
3260      v_4(:,nb_reaction_4) = f009(:)
3261
3262!---  f010: cl + ho2 -> clo + oh
3263
[2843]3264!     jpl 2009
[2187]3265
3266      f010(:) = 3.6E-11*exp(-375./t(:))
3267     
3268      nb_reaction_4 = nb_reaction_4 + 1
3269      v_4(:,nb_reaction_4) = f010(:)
3270
3271!---  f011: cl + ho2 -> hcl + o2
3272
[2843]3273!     jpl 2009
[2187]3274
3275      f011(:) = 1.4E-11*exp(270./t(:))
3276
3277      nb_reaction_4 = nb_reaction_4 + 1
3278      v_4(:,nb_reaction_4) = f011(:)
3279
3280!---  f012: cl + h2o2 -> hcl + ho2
3281
3282!     jpl 2006
3283
3284      f012(:) = 1.1E-11*exp(-980./t(:))
3285
3286      nb_reaction_4 = nb_reaction_4 + 1
3287      v_4(:,nb_reaction_4) = f012(:)
3288
3289!---  f013: cl + co + co2 -> clco + co2
3290
3291!     jpl 2011 + nicovich et al., j. phys. chem., 1990
3292
3293      f013(:) = 3.2*1.3E-33*(t(:)/300.)**(-3.8)*conc(:)
3294
3295      nb_reaction_4 = nb_reaction_4 + 1
3296      v_4(:,nb_reaction_4) = f013(:)
3297
3298!---  f014: clco + co2 -> cl + co + co2
3299
3300!     jpl 2011
3301
3302!     deq(:) = 3.2*3.5E-25*exp(3730./t(:))
3303
3304!     mills, 1998
3305
3306      deq(:) = 1.6E-25*exp(4000./t(:))
3307
3308      f014(:) = f013(:)/(deq(:)*conc(:))
3309
3310      nb_phot = nb_phot + 1
3311      v_phot(:,nb_phot) = f014(:)*conc(:)
3312
3313!     do iz = 1, nz
3314!     print*, z(iz), t(iz), f013(iz), f014(iz), v_phot(iz,nb_phot)
3315!     end do
3316!     stop
3317
3318!---  f015: clco + o2 + m -> clco3 + m
3319
3320!     yung and demore, icarus, 51, 199-247, 1982.
3321
3322      f015(:) = 5.7E-15*exp(500./t(:))*conc(:)   &
3323               /(1.e17 + 0.05*conc(:))
3324
3325      nb_reaction_4 = nb_reaction_4 + 1
3326      v_4(:,nb_reaction_4) = f015(:)
3327
3328!---  f016: clco3 + cl -> cl + clo + co2
3329
3330!     yung and demore, icarus, 51, 199-247, 1982.
3331
3332!     decomposee en :
3333!     0.5 clco3 + 0.5 cl -> cl + 0.5 co2
3334!     0.5 clco3 + 0.5 cl -> clo + 0.5 co2
3335
3336      f016(:) = 1.0E-11
3337
3338      nb_reaction_4 = nb_reaction_4 + 1
3339      v_4(:,nb_reaction_4) = f016(:)
3340
3341      nb_reaction_4 = nb_reaction_4 + 1
3342      v_4(:,nb_reaction_4) = f016(:)
3343
3344!---  f017: clco3 + o -> cl + o2 + co2
3345
3346!     yung and demore, icarus, 51, 199-247, 1982.
3347
3348!     decomposee en :
3349!     0.5 clco3 + 0.5 o -> cl
3350!     0.5 clco3 + 0.5 o -> o2 + co2
3351
3352      f017(:) = 1.0E-11
3353
3354      nb_reaction_4 = nb_reaction_4 + 1
3355      v_4(:,nb_reaction_4) = f017(:)
3356
3357      nb_reaction_4 = nb_reaction_4 + 1
3358      v_4(:,nb_reaction_4) = f017(:)
3359
3360!---  f018: clo + ho2  -> hocl + o2
3361
[2851]3362!     jpl 2019
[2187]3363
[2851]3364      f018(:) = 2.6E-12*exp(290./t(:))
3365
[2187]3366      nb_reaction_4 = nb_reaction_4 + 1
3367      v_4(:,nb_reaction_4) = f018(:)
3368
3369!---  f019: oh + hocl -> h2o + clo
3370
3371      f019(:) = 3.0E-12*exp(-500./t(:))
3372
3373      nb_reaction_4 = nb_reaction_4 + 1
3374      v_4(:,nb_reaction_4) = f019(:)
3375
3376!---  f020: o + hocl -> oh + clo
3377
3378      f020(:) = 1.7E-13
3379
3380      nb_reaction_4 = nb_reaction_4 + 1
3381      v_4(:,nb_reaction_4) = f020(:)
3382
3383!---  f021: cl + cl + co2 -> cl2 + co2
3384
3385!     donohoue et al., j. phys. chem. a, 109, 7732-7741, 2005
3386
3387!     f021(:) = 2.5*8.4E-33*exp(850.*(1./t(:) - 1./298.))*conc(:)
3388
3389!     valeur utilisee par Zhang et al., 2011:
3390
3391      f021(:) = 2.6E-33*exp(900./t(:))*conc(:)
3392
3393      nb_reaction_3 = nb_reaction_3 + 1
3394      v_3(:,nb_reaction_3) = f021(:)
3395
3396!---  f022: clco + o -> cl + co2
3397
3398!     yung et al., icarus, 1982 (estimated)
3399
3400      f022(:) = 3.0E-11
3401
3402      nb_reaction_4 = nb_reaction_4 + 1
3403      v_4(:,nb_reaction_4) = f022(:)
3404
3405!---  f023: cl2 + o(1d) -> cl + clo
3406
3407!     jpl 2011
3408
3409      f023(:) = 2.0E-10
3410
3411      nb_reaction_4 = nb_reaction_4 + 1
3412      v_4(:,nb_reaction_4) = f023(:)
3413
3414!---  f024: cl2 + h  -> hcl + cl
3415
3416!     baulch et al., j. phys. chem. ref. data, 1981
3417
3418      f024(:) = 1.43E-10*exp(-591./t(:))
3419
3420      nb_reaction_4 = nb_reaction_4 + 1
3421      v_4(:,nb_reaction_4) = f024(:)
3422
3423!---  f025: cl + clco  -> cl2 + co
3424
3425!     baulch et al., j. phys. chem. ref. data, 1981
3426
3427      f025(:) = 2.16E-9*exp(-1670./t(:))
3428
3429      nb_reaction_4 = nb_reaction_4 + 1
3430      v_4(:,nb_reaction_4) = f025(:)
3431
3432!---  f026: clco + clco  -> cocl2 + co
3433
3434!     zhang et al., icarus, 2011 (estimated)
3435
3436      f026(:) = 5.0E-11
3437
3438      nb_reaction_3 = nb_reaction_3 + 1
3439      v_3(:,nb_reaction_3) = f026(:)
3440
3441!---  f027: cl + so2 + co2  -> clso2 + co2
3442
3443!     mills, phd, 1998
3444
3445      f027(:) = 1.3E-34*exp(940./t(:))*conc(:)
3446
3447      nb_reaction_4 = nb_reaction_4 + 1
3448      v_4(:,nb_reaction_4) = f027(:)
3449
3450!---  f028: clso2 + o  -> so2 + clo
3451
3452!     mills, phd, 1998
3453
3454      f028(:) = 1.0E-11
3455
3456      nb_reaction_4 = nb_reaction_4 + 1
3457      v_4(:,nb_reaction_4) = f028(:)
3458
3459!---  f029: clso2 + h  -> so2 + hcl
3460
3461!     mills, phd, 1998
3462
3463      f029(:) = 1.0E-11
3464
3465      nb_reaction_4 = nb_reaction_4 + 1
3466      v_4(:,nb_reaction_4) = f029(:)
3467
3468!---  f030: clso2 + clso2  -> cl2 + so2 + so2
3469
3470!     moses et al. 2002
3471
3472      f030(:) = 5.0E-13
3473
3474      nb_reaction_3 = nb_reaction_3 + 1
3475      v_3(:,nb_reaction_3) = f030(:)
3476
3477!---  f031: cl + o + co2  -> clo + co2
3478
3479!     yung and demore, 1999 (estimated)
3480
3481      f031(:) = 5.0E-32*conc(:)
3482
3483      nb_reaction_4 = nb_reaction_4 + 1
3484      v_4(:,nb_reaction_4) = f031(:)
3485
3486!---  f032: cl2 + o -> clo + cl
3487
3488!     mills, phd, 1998
3489
3490      f032(:) = 7.4E-12*exp(-1650./t(:))
3491
3492      nb_reaction_4 = nb_reaction_4 + 1
3493      v_4(:,nb_reaction_4) = f032(:)
3494
3495!---  f033: clco + oh -> hocl + co
3496
3497!     mills, phd, 1998
3498
3499      f033(:) = 1.5E-10
3500
3501      nb_reaction_4 = nb_reaction_4 + 1
3502      v_4(:,nb_reaction_4) = f033(:)
3503
3504!---  f034: cl2 + oh -> cl + hocl
3505
3506!     jpl 2011
3507
3508      f034(:) = 2.6E-12*exp(-1100./t(:))
3509
3510      nb_reaction_4 = nb_reaction_4 + 1
3511      v_4(:,nb_reaction_4) = f034(:)
3512
3513!---  f035: clco + o -> co + clo
3514
3515!     yung and demore, 1982
3516
3517      f035(:) = 3.0E-12
3518
3519      nb_reaction_4 = nb_reaction_4 + 1
3520      v_4(:,nb_reaction_4) = f035(:)
3521
3522!---  f036: clco + cl2 -> cocl2 + cl
3523
3524!     ohta, bull. chem. soc. jpn., 1983
3525
3526      f036(:) = 6.45E-2*f015(:)
3527
3528      nb_reaction_4 = nb_reaction_4 + 1
3529      v_4(:,nb_reaction_4) = f036(:)
3530
3531!---  f037: hcl + h -> h2 + cl
3532
3533!     mills, phd, 1998
3534
3535      f037(:) = 1.5E-11*exp(-1750./t(:))
3536
3537      nb_reaction_4 = nb_reaction_4 + 1
3538      v_4(:,nb_reaction_4) = f037(:)
3539
3540!---  f038: clco + h -> hcl + co
3541
3542!     yung and demore, 1982
3543
3544      f038(:) = 1.0E-11
3545
3546      nb_reaction_4 = nb_reaction_4 + 1
3547      v_4(:,nb_reaction_4) = f038(:)
3548
3549!---  f039: cl + h + m -> hcl + m
3550
3551!     yung and demore, 1982 (estimate)
3552
3553      f039(:) = 1.0E-32*conc(:)
3554
3555      nb_reaction_4 = nb_reaction_4 + 1
3556      v_4(:,nb_reaction_4) = f039(:)
3557
3558!----------------------------------------------------------------------
3559!        reactions des composes soufres
3560!----------------------------------------------------------------------
3561
3562!---  g001: s + o2 -> so + o
3563
[2843]3564!     jpl 2015
[2187]3565
3566      g001(:) = 1.6E-12*exp(100./t(:))
3567
3568      nb_reaction_4 = nb_reaction_4 + 1
3569      v_4(:,nb_reaction_4) = g001(:)
3570
3571!---  g002: s + o3 -> so + o2
3572
[2843]3573!     jpl 2015
3574
[2187]3575      g002(:) = 1.2E-11
3576
3577      nb_reaction_4 = nb_reaction_4 + 1
3578      v_4(:,nb_reaction_4) = g002(:)
3579
3580!---  g003: so + o2 -> so2 + o
3581
[2843]3582!     jpl 2015
[2187]3583
[2843]3584      g003(:) = 1.6E-13*exp(-2280./t(:))
[2187]3585
3586      nb_reaction_4 = nb_reaction_4 + 1
3587      v_4(:,nb_reaction_4) = g003(:)
3588
3589!---  g004: so + o3 -> so2 + o2
3590
[2843]3591!     jpl 2015
3592
[2187]3593      g004(:) = 3.4E-12*exp(-1100./t(:))
3594
3595      nb_reaction_4 = nb_reaction_4 + 1
3596      v_4(:,nb_reaction_4) = g004(:)
3597
3598!---  g005: so + oh -> so2 + h
3599
[2851]3600!     jpl 2019
[2843]3601
[2851]3602      g005(:) = 2.6E-11*exp(330./t(:))
[2187]3603
3604      nb_reaction_4 = nb_reaction_4 + 1
3605      v_4(:,nb_reaction_4) = g005(:)
3606
3607!---  g006: s + oh -> so + h
3608
[2843]3609!     jpl 2015
3610
[2187]3611      g006(:) = 6.6E-11
3612
3613      nb_reaction_4 = nb_reaction_4 + 1
3614      v_4(:,nb_reaction_4) = g006(:)
3615
3616!---  g007: so + o + co2 -> so2 + co2
3617
3618!     singleton and cvetanovic, j. phys. chem. ref. data, 1988
3619!     measured with co2 as third body
3620
3621      do iz = 1,nz
3622         ak0 = 4.2E-30
3623         ak1 = 5.3E-11
3624
3625         rate = (ak0*conc(iz))/(1. + ak0*conc(iz)/ak1)
3626         xpo = 1./(1. + alog10((ak0*conc(iz))/ak1)**2)
3627         g007(iz) = rate*0.6**xpo
3628      end do
3629
3630      nb_reaction_4 = nb_reaction_4 + 1
3631      v_4(:,nb_reaction_4) = g007(:)
3632
3633!---  g008: so + ho2 -> so2 + oh
3634
3635      g008(:) = 2.8E-11
3636
3637      nb_reaction_4 = nb_reaction_4 + 1
3638      v_4(:,nb_reaction_4) = g008(:)
3639
3640!---  g009: so2 + o + co2 -> so3 + co2
3641
[2862]3642!     Naidoo et al., Proceedings of the Combustion Institute,
3643!                    30, 1219-1225, 2005
3644!     Also recommended by jpl 2019 with a simpler expression (fc = 0.6)
3645!
3646!     Factor of 5 for third-body efficiency of co2 to be confirmed!
[2187]3647
[2862]3648      do iz = 1,nz
3649         ak0 = 5.*9.5e-23*(t(iz)**(-3.0))*exp(-2400./t(iz))
3650         ak1 = 6.1e-13*exp(-850./t(iz))
3651         rate = (ak0*conc(iz))/(1. + ak0*conc(iz)/ak1)
3652         xpo = 1./(1. + alog10((ak0*conc(iz))/ak1)**2)
3653         fc = 0.558*exp(-t(iz)/316.) + 0.442*exp(-t(iz)/7442.)
3654         g009(iz) = rate*fc**xpo
3655      end do
[2851]3656
[2187]3657      nb_reaction_4 = nb_reaction_4 + 1
3658      v_4(:,nb_reaction_4) = g009(:)
3659
3660!---  g010: s + o + co2 -> so + co2
3661
3662!     zhang et al., icarus, 2011
3663
3664      g010(:) = 1.5E-34*exp(900./t(:))*conc(:)
3665
3666      nb_reaction_4 = nb_reaction_4 + 1
3667      v_4(:,nb_reaction_4) = g010(:)
3668
[3137]3669!---  g011: so3 + h2o + h2o -> h2so4 + h2o
[2187]3670
[3137]3671!     lovejoy et al., j.phys.chem., 1996
[2187]3672
[3137]3673      do iz = 1,nz
3674         g011(iz) = 2.26E-23*max(t(iz),100.)*exp(6540./max(t(iz),100.))
3675         g011(iz) = g011(iz)*1.0E-20*c(iz,i_h2o)
3676      end do
3677
[2187]3678      nb_reaction_4 = nb_reaction_4 + 1
3679      v_4(:,nb_reaction_4) = g011(:)
3680
3681!---  g012: so + clo -> so2 + cl
3682
3683!     jpl 2011
3684
3685      g012(:) = 2.8E-11
3686
3687      nb_reaction_4 = nb_reaction_4 + 1
3688      v_4(:,nb_reaction_4) = g012(:)
3689
3690!---  g013: so + so3 -> so2 + so2
3691
3692!     chung et al., int. j. chem. kinet., 1975
3693
3694      g013(:) = 2.0E-15
3695
3696      nb_reaction_4 = nb_reaction_4 + 1
3697      v_4(:,nb_reaction_4) = g013(:)
3698
3699!---  g014: so3 + o -> so2 + o2
3700
3701!     jacob and winkler, j. chem. soc. faraday trans. 1, 1972
3702
3703      g014(:) = 2.32E-16*exp(-487./t(:))
3704
3705      nb_reaction_4 = nb_reaction_4 + 1
3706      v_4(:,nb_reaction_4) = g014(:)
3707
3708!---  g015: so + so + co2 -> s2o2 + co2
3709
3710!     herron and huie, chem. phys. lett., 1980.
3711
3712      do iz = 1,nz
3713         ak0 = 2.5*4.4E-31
3714         ak1 = 1.0E-11
3715
3716         rate = (ak0*conc(iz))/(1. + ak0*conc(iz)/ak1)
3717         xpo = 1./(1. + alog10((ak0*conc(iz))/ak1)**2)
3718         g015(iz) = rate*0.6**xpo
3719      end do
3720
3721      nb_reaction_3 = nb_reaction_3 + 1
3722      v_3(:,nb_reaction_3) = g015(:)
3723
3724!---  g016: s2o2 + co2 -> so + so + co2
3725
3726!     mills, phd, 1998
3727
3728      deq(:) = 2.5*1.0E-28*exp(6000./t(:))
3729
3730      g016(:) = g015(:)/(deq(:)*conc(:))
3731
3732      nb_phot = nb_phot + 1
3733      v_phot(:,nb_phot) = g016(:)*conc(:)
3734
3735!---  g017: clco3 + so -> cl + so2 + co2
3736
3737!     mills, phd, 1998
3738
3739!     decomposee en :
3740!     0.5 clco3 + 0.5 so -> cl
3741!     0.5 clco3 + 0.5 so -> so2 + co2
3742
3743      g017(:) = 1.0E-11
3744
3745      nb_reaction_4 = nb_reaction_4 + 1
3746      v_4(:,nb_reaction_4) = g017(:)
3747
3748      nb_reaction_4 = nb_reaction_4 + 1
3749      v_4(:,nb_reaction_4) = g017(:)
3750
3751!---  g018: s + co + co2 -> ocs + co2
3752
3753!     zhang et al., icarus, 2011 (estimate?)
3754
3755      g018(:) = 2.5*4.0E-33*exp(-1940./t(:))*conc(:)
3756     
3757!      g018(:) = 0.0E+0
3758
3759      nb_reaction_4 = nb_reaction_4 + 1
3760      v_4(:,nb_reaction_4) = g018(:)
3761
3762!---  g019: clco + s -> ocs + cl
3763
3764!     zhang et al., icarus, 2011
3765
3766      g019(:) = 3.0E-12
3767
3768!      g019(:) = 0.0E+0
3769
3770      nb_reaction_4 = nb_reaction_4 + 1
3771      v_4(:,nb_reaction_4) = g019(:)
3772
3773!---  g020: so2 + oh + co2 -> hso3 + co2
3774
3775!     jpl 2011
3776
3777      do iz = 1,nz
3778         ak0 = 2.5*3.3E-31*(t(iz)/300.)**(-4.3)
3779         ak1 = 1.6E-12
3780
3781         rate = (ak0*conc(iz))/(1. + ak0*conc(iz)/ak1)
3782         xpo = 1./(1. + alog10((ak0*conc(iz))/ak1)**2)
3783         g020(iz) = rate*0.6**xpo
3784      end do
3785
3786      nb_reaction_4 = nb_reaction_4 + 1
3787      v_4(:,nb_reaction_4) = g020(:)
3788
3789!---  g021: hso3 + o2 -> ho2 + so3
3790
3791!     jpl 2011
3792
3793      g021(:) = 1.3E-12*exp(-330./t(:))
3794
3795      nb_reaction_4 = nb_reaction_4 + 1
3796      v_4(:,nb_reaction_4) = g021(:)
3797
3798!---  g022: s + s + co2 -> s2 + co2
3799
3800!     nicholas et al., j. chem. soc. faraday trans. 1, 1979
3801
3802      do iz = 1,nz
3803         ak0 = 1.19E-29
3804         ak1 = 1.0E-10
3805
3806         rate = (ak0*conc(iz))/(1. + ak0*conc(iz)/ak1)
3807         xpo = 1./(1. + alog10((ak0*conc(iz))/ak1)**2)
3808         g022(iz) = rate*0.6**xpo
3809      end do
3810
3811      nb_reaction_3 = nb_reaction_3 + 1
3812      v_3(:,nb_reaction_3) = g022(:)
3813
3814
[2925]3815!---  g023: s2 + o -> so + s
[2187]3816
3817!     zhang et al., icarus, 2011
3818
[2925]3819      g023(:) = 2.2E-11*exp(-84./t(:))
[2187]3820
3821      nb_reaction_4 = nb_reaction_4 + 1
[2949]3822      v_4(:,nb_reaction_4) = g023(:)
[2187]3823
[2925]3824!---  g024: s + ocs -> s2 +  co
[2187]3825
3826!     lu et al., j. chem. phys., 2006
3827
[2925]3828      g024(:) = 6.63E-20*(t(:)**2.57)*exp(-1180./t(:))
[2187]3829     
3830!      g025(:) = 0.0E+0
3831
3832      nb_reaction_4 = nb_reaction_4 + 1
[2925]3833      v_4(:,nb_reaction_4) = g024(:)
[2187]3834
[2925]3835!---  g025: ocs + o -> so + co
[2187]3836
3837!     atkinson et al., 2004
3838
[2925]3839      g025(:) = 1.60E-11*exp(-2150./t(:))
[2187]3840
3841      nb_reaction_4 = nb_reaction_4 + 1
[2925]3842      v_4(:,nb_reaction_4) = g025(:)
[2187]3843
[2925]3844!---  g026: s + so3 -> so2 +  so
[2187]3845
3846!     moses et al., 2002
3847
[2925]3848      g026(:) = 1.0E-16
[2187]3849
3850      nb_reaction_4 = nb_reaction_4 + 1
[2925]3851      v_4(:,nb_reaction_4) = g026(:)
[2187]3852
[2925]3853!---  g027: s + ho2 -> so +  oh
[2187]3854
3855!     yung and demore, 1982
3856
[2925]3857      g027(:) = 3.0E-11*exp(200./t(:))
[2187]3858
3859      nb_reaction_4 = nb_reaction_4 + 1
[2925]3860      v_4(:,nb_reaction_4) = g027(:)
[2187]3861
[2925]3862!---  g028: s + clo -> so +  cl
[2187]3863
3864!     moses et al., 2002
3865
[2925]3866      g028(:) = 4.0E-11
[2187]3867
3868      nb_reaction_4 = nb_reaction_4 + 1
[2925]3869      v_4(:,nb_reaction_4) = g028(:)
[2187]3870
[2925]3871!---  g029: h2so4 + h2o -> so3 + h2o + h2o
[2187]3872
3873!     krasnopolsky , 2007
3874
[2925]3875      g029(:) = 7.0E-14*exp(-5170./t(:))
[2187]3876
3877!      g030(:) = g011(:)/(deq(:)*c(:,i_h2o))
3878!      g030(:) = 0.0E+0
3879
3880      nb_phot = nb_phot + 1
[2925]3881      v_phot(:,nb_phot) = g029(:)*c(:,i_h2o)
[2187]3882 !     v_phot(:,nb_phot) = 0.0E+0
3883     
[2925]3884!---  g030: so3 + ocs -> s2o2 +  co2
[2187]3885
3886!     krasnopolsky , 2007
3887
[2925]3888      g030(:) = 1.0E-11*exp(-10000./t(:))
[2187]3889!      g031(:) = 0.0E+0
3890     
3891      nb_reaction_4 = nb_reaction_4 + 1
[2925]3892      v_4(:,nb_reaction_4) = g030(:)
[2187]3893     
[2925]3894!---  g031: s2o2 + ocs -> co + so2 + s2
[2187]3895
3896!       decomposee en
3897!       0.5 s2o2 + 0.5 ocs -> co
3898!       0.5 s2o2 + 0.5 ocs -> so2 + s2
3899
3900!     krasnopolsky , 2007
3901
[2925]3902      g031(:) = 1.0E-20
[2187]3903!      g032(:) = 0.0E+0
3904     
3905      nb_reaction_4 = nb_reaction_4 + 1
[2925]3906      v_4(:,nb_reaction_4) = g031(:)
[2187]3907     
3908      nb_reaction_4 = nb_reaction_4 + 1
[2925]3909      v_4(:,nb_reaction_4) = g031(:)
[2187]3910
[2925]3911!      g032: so + so -> so2 + s
[2187]3912!  Krasnopolsky 2012 from Martinez & Heron 1983 or Moses et al 2002
3913
[2925]3914!      g032(:) = 3.5E-15
3915      g032(:) =1.0E-12*exp(-1700.0/t(:))
[2187]3916     
3917      nb_reaction_3 = nb_reaction_3 + 1
[2925]3918      v_3(:,nb_reaction_3) = g032(:)
[2187]3919           
3920!----------------------------------------------------------------------
3921!     heterogeneous chemistry
3922!----------------------------------------------------------------------
3923
3924      if (hetero_ice) then
3925
3926!        k = (surface*v*gamma)/4 (s-1)
3927!        v = 100*sqrt(8rt/(pi*m))  (cm s-1)
3928 
3929!---     h001: ho2 + ice -> products
3930 
3931!        cooper and abbatt, 1996: gamma = 0.025
3932     
3933         gam = 0.025
3934         h001(:) = surfice1d(:)*1.E-8       &
3935                   *100.*sqrt(8.*8.31*t(:)/(33.E-3*pi))*gam/4.
3936 
3937!        h002: oh + ice -> products
3938 
3939!        cooper and abbatt, 1996: gamma = 0.03
3940 
3941         gam = 0.03
3942         h002(:) = surfice1d(:)*1.E-8       &
3943                   *100.*sqrt(8.*8.31*t(:)/(17.E-3*pi))*gam/4.
3944
3945!---     h003: h2o2 + ice -> products
3946 
3947!        gamma = 0.    test value
3948 
3949         gam = 0.
3950         h003(:) = surfice1d(:)*1.E-8        &
3951                   *100.*sqrt(8.*8.31*t(:)/(34.E-3*pi))*gam/4.
3952      else
3953         h001(:) = 0.
3954         h002(:) = 0.
3955         h003(:) = 0.
3956      end if
3957
3958      nb_phot = nb_phot + 1
3959      v_phot(:,nb_phot) = h001(:)
3960
3961      nb_phot = nb_phot + 1
3962      v_phot(:,nb_phot) = h002(:)
3963
3964      nb_phot = nb_phot + 1
3965      v_phot(:,nb_phot) = h003(:)
3966
3967!     do iz = 1,nz
3968!        print*, z(iz), surfice1d(iz), h001(iz), h002(iz)
3969!     end do
3970!     stop
3971
3972!     print*, 'krates : nb_phot       = ', nb_phot
3973!     print*, 'krates : nb_reaction_4 = ', nb_reaction_4
3974!     print*, 'krates : nb_reaction_3 = ', nb_reaction_3
3975!     stop
3976
3977!----------------------------------------------------------------------
[2836]3978!     ionospheric reactions
3979!     only if ok_ionchem=true
3980!----------------------------------------------------------------------
3981
3982      if (ok_ionchem) then
3983
3984!---     i001: co2+ + o2 -> o2+ + co2
3985
3986!        aninich, j. phys. chem. ref. data 1993
3987
3988         i001(:) = 5.5e-11*(300./t_elect(:))**0.5
3989
3990         nb_reaction_4 = nb_reaction_4 + 1
3991         v_4(:,nb_reaction_4) = i001(:)
3992
3993!---     i002: co2+ + o -> o+ + co2
3994
3995!        UMIST database
3996
3997         i002(:) = 9.6e-11
3998     
3999         nb_reaction_4 = nb_reaction_4 + 1
4000         v_4(:,nb_reaction_4) = i002(:)
4001
4002!---     i003: co2+ + o -> o2+ + co
4003
4004!        UMIST database
4005
4006         i003(:) = 1.64e-10
4007
4008         nb_reaction_4 = nb_reaction_4 + 1
4009         v_4(:,nb_reaction_4) = i003(:)
4010
4011!---     i004: o2+ + e- -> o + o
4012
4013!        Alge et al., J. Phys. B, At. Mol. Phys. 1983
4014         !i004(:) = 2.0e-7*(300./t_elect(:))**0.7
4015         
4016         do iz = 1,nz
4017           if (t_elect(iz)<1200.) then
4018             i004(iz) = 2.0e-7*(300./t_elect(iz))**0.7
4019           else
4020             i004(iz) = 7.4e-8*(1200./t_elect(iz))**0.56
4021           end if
4022         end do
4023
4024         nb_reaction_4 = nb_reaction_4 + 1
4025         v_4(:,nb_reaction_4) = i004(:)
4026
4027!---     i005: o+ + co2 -> o2+ + co
4028
4029!        UMIST database
4030
4031         i005(:) = 9.4e-10
4032
4033         nb_reaction_4 = nb_reaction_4 + 1
4034         v_4(:,nb_reaction_4) = i005(:)
4035
4036
4037!---     i006: co2+ + e- -> co + o
4038
4039!        UMIST database
4040
4041         i006(:) = 3.8e-7*(300./t_elect(:))**0.5
4042
4043         nb_reaction_4 = nb_reaction_4 + 1
4044         v_4(:,nb_reaction_4) = i006(:)
4045
4046
4047!---     i007: co2+ + no -> no+ + co2
4048
4049!        UMIST database
4050
4051         i007(:) = 1.2e-10
4052
4053         nb_reaction_4 = nb_reaction_4 + 1
4054         v_4(:,nb_reaction_4) = i007(:)
4055
4056!---     i008: o2+ + no -> no+ + o2
4057
4058!        UMIST database
4059
4060         i008(:) = 4.6e-10
4061
4062         nb_reaction_4 = nb_reaction_4 + 1
4063         v_4(:,nb_reaction_4) = i008(:)
4064
4065!---     i009: o2+ + n2 -> no+ + no
4066     
4067!        Fox & Sung 2001
4068
4069         i009(:) = 1.0e-15
4070     
4071         nb_reaction_4 = nb_reaction_4 + 1
4072         v_4(:,nb_reaction_4) = i009(:)
4073
4074!---     i010: o2+ + n -> no+ + o
4075
4076!        Fox & Sung 2001
4077
4078         i010(:) = 1.0e-10
4079
4080         nb_reaction_4 = nb_reaction_4 + 1
4081         v_4(:,nb_reaction_4) = i010(:)
4082
4083!---     i011: o+ + n2 -> no+ + n
4084
4085!        Fox & Sung 2001
4086
4087         i011(:) = 1.2e-12 * (300./t_elect(:))**0.45
4088
4089         nb_reaction_4 = nb_reaction_4 + 1
4090         v_4(:,nb_reaction_4) = i011(:)
4091
4092!---     i012: no+ + e -> n + o
4093
4094!        UMIST database
4095
4096         i012(:) = 4.3e-7*(300./t_elect(:))**0.37
4097
4098         nb_reaction_4 = nb_reaction_4 + 1
4099         v_4(:,nb_reaction_4) = i012(:)
4100
4101
4102!---     i013: co+ + co2 -> co2+ + co
4103
4104!        UMIST database
4105
4106         i013(:) = 1.0e-9
4107
4108         nb_reaction_4 = nb_reaction_4 + 1
4109         v_4(:,nb_reaction_4) = i013(:)
4110
4111
4112!---     i014: co+ + o -> o+ + co
4113
4114!        UMIST database
4115
4116         i014(:) = 1.4e-10
4117
4118         nb_reaction_4 = nb_reaction_4 + 1
4119         v_4(:,nb_reaction_4) = i014(:)
4120
4121!---     i015: c+ + co2 -> co+ + co
4122
4123!        UMIST database
4124
4125         i015(:) = 1.1e-9
4126
4127         nb_reaction_4 = nb_reaction_4 + 1
4128         v_4(:,nb_reaction_4) = i015(:)
4129
4130
4131!---     i016: N2+ + co2 -> co2+ + N2
4132
4133!        Fox & Song 2001
4134
4135         i016(:) = 9.0e-10*(300./t_elect(:))**0.23
4136
4137         nb_reaction_4 = nb_reaction_4 + 1
4138         v_4(:,nb_reaction_4) = i016(:)
4139
4140
4141!---     i017: N2+ + o -> no+ + N
4142
4143!        Fox & Song 2001
4144
4145         i017(:) = 1.33e-10*(300./t_elect(:))**0.44
4146
4147         nb_reaction_4 = nb_reaction_4 + 1
4148         v_4(:,nb_reaction_4) = i017(:)
4149
4150!---     i018: N2+ + co -> co+ + N2
4151
4152!        UMIST
4153
4154         i018(:) = 7.4e-11
4155
4156         nb_reaction_4 = nb_reaction_4 + 1
4157         v_4(:,nb_reaction_4) = i018(:)
4158
4159!---     i019: N2+ + e -> N + N
4160
4161!        UMIST
4162
[2927]4163         i019(:) = 1.7e-7*(300./t_elect(:))**0.3
[2836]4164
4165         nb_reaction_4 = nb_reaction_4 + 1
[2928]4166         v_4(:,nb_reaction_4) = i019(:)
[2836]4167
4168!---     i020: N2+ + o -> o+ + N2
4169
4170!        Fox & Song 2001
4171
4172         i020(:) = 7.0e-12*(300./t_elect(:))**0.23
4173
4174         nb_reaction_4 = nb_reaction_4 + 1
4175         v_4(:,nb_reaction_4) = i020(:)
4176
4177!---     i021: N+ + co2 -> co2+ + N
4178
4179!        UMIST
4180
4181         i021(:) = 7.5e-10
4182
4183         nb_reaction_4 = nb_reaction_4 + 1
4184         v_4(:,nb_reaction_4) = i021(:)
4185
4186!---     i022: CO+ + H -> H+ + CO
4187
4188!        Fox & Sung 2001
4189
4190         i022(:) = 4.0e-10
4191
4192         nb_reaction_4 = nb_reaction_4 + 1
4193         v_4(:,nb_reaction_4) = i022(:)
4194
4195!---     i023: O+ + H -> H+ + O
4196
4197!        UMIST
4198
4199         i023(:) = 5.66e-10*((t_elect(:)/300.)**0.36)*exp(8.6/t_elect(:))
4200
4201         nb_reaction_4 = nb_reaction_4 + 1
4202         v_4(:,nb_reaction_4) = i023(:)
4203
4204!---     i024: H+ + O -> O+ + H
4205
4206!        UMIST
4207
4208         i024(:) = 6.86e-10*((t_elect(:)/300.)**0.26)*exp(-224.3/t_elect(:))
4209
4210         nb_reaction_4 = nb_reaction_4 + 1
4211         v_4(:,nb_reaction_4) = i024(:)
4212
4213!---     i025: CO+ + H2 -> HCO2+ + H
4214
4215!        UMIST
4216
4217         i025(:) = 9.5e-10
4218
4219         nb_reaction_4 = nb_reaction_4 + 1
4220         v_4(:,nb_reaction_4) = i025(:)
4221
[3140]4222!---     i026: spare slot
[2836]4223
[3140]4224         i026(:) = 0.
[2836]4225
4226         nb_reaction_4 = nb_reaction_4 + 1
4227         v_4(:,nb_reaction_4) = i026(:)
4228
4229!---     i027+i028: HCO2+ + e -> H + O + CO
4230
4231!        UMIST
4232         !Reaction splitted in 2: i027: 0.5 (HCO2+ + e-) -> H
4233         !i028: 0.5 (HCO2+ + e-) -> O + CO
4234
4235         i027(:) = 8.1e-7*((300./t_elect(:))**0.64)
4236
4237         nb_reaction_4 = nb_reaction_4 + 1
4238         v_4(:,nb_reaction_4) = i027(:)
4239
4240         nb_reaction_4 = nb_reaction_4 + 1
4241         v_4(:,nb_reaction_4) = i027(:)
4242
4243!---     i029: HCO2+ + e -> OH + CO
4244
4245!        UMIST
4246
4247         i029(:) = 3.2e-7*((300./t_elect(:))**0.64)
4248
4249         nb_reaction_4 = nb_reaction_4 + 1
4250         v_4(:,nb_reaction_4) = i029(:)
4251
4252!---     i030: HCO2+ + e -> H + CO2
4253
[3140]4254!        UMIST
4255
[2836]4256         i030(:) = 6.0e-8*((300./t_elect(:))**0.64)
4257         nb_reaction_4 = nb_reaction_4 + 1
4258         v_4(:,nb_reaction_4) = i030(:)
4259
4260!---     i031: HCO2+ + O -> HCO+ + O2
4261
4262!        UMIST
4263
4264         i031(:) = 1.e-9
4265         nb_reaction_4 = nb_reaction_4 + 1
4266         v_4(:,nb_reaction_4) = i031(:)
4267
4268!---     i032: HCO2+ + CO -> HCO+ + CO2
4269
4270!        UMIST, from Prassad & Huntress 1980
4271
4272         i032(:) = 7.8e-10
4273         nb_reaction_4 = nb_reaction_4 + 1
4274         v_4(:,nb_reaction_4) = i032(:)
4275
4276!---     i033: H+ + CO2 -> HCO+ + O
4277
4278!        UMIST, from Smith et al., Int. J. Mass Spectrom. Ion Proc., 117, 457-473(1992)
4279
4280         i033(:) = 3.5e-9
4281         nb_reaction_4 = nb_reaction_4 + 1
4282         v_4(:,nb_reaction_4) = i033(:)
4283
4284
4285!---     i034: CO2+ + H -> HCO+ + O
4286
4287!        Seen in Fox 2015, from Borodi et al., Int. J. Mass Spectrom. 280, 218-225, 2009
4288
4289         i034(:) = 4.5e-10
4290         nb_reaction_4 = nb_reaction_4 + 1
4291         v_4(:,nb_reaction_4) = i034(:)
4292
4293!---     i035: CO+ + H2 -> HCO+ + H
4294
4295         !UMIST, from Scott et al., J. Chem. Phys., 106, 3982-3987(1997)
4296
4297         i035(:) = 7.5e-10
4298         nb_reaction_4 = nb_reaction_4 + 1
4299         v_4(:,nb_reaction_4) = i035(:)
4300
4301!---     i036: HCO+ + e- -> CO + H
4302
4303         !UMIST, from Mitchell, Phys. Rep., 186, 215 (1990)
4304
4305         i036(:) = 2.4e-7 *((300./t_elect(:))**0.69)
4306         nb_reaction_4 = nb_reaction_4 + 1
4307         v_4(:,nb_reaction_4) = i036(:)
4308
4309!---     i037: CO2+ + H2O -> H2O+ + CO2
4310
4311         !UMIST, from Karpas, Z., Anicich, V.G., and Huntress, W.T., Chem. Phys. Lett., 59, 84 (1978)
4312
4313         i037(:) = 2.04e-9 *((300./t_elect(:))**0.5)
4314         nb_reaction_4 = nb_reaction_4 + 1
4315         v_4(:,nb_reaction_4) = i037(:)
4316
4317!---     i038: CO+ + H2O -> H2O+ + CO
4318
4319         !UMIST, from Huntress, W.T., McEwan, M.J., Karpas, Z., and Anicich, V.G., Astrophys. J. Supp. Series, 44, 481 (1980)
4320
4321         i038(:) = 1.72e-9*((300./t_elect(:))**0.5)
4322         nb_reaction_4 = nb_reaction_4 + 1
4323         v_4(:,nb_reaction_4) = i038(:)
4324
4325!---     i039: O+ + H2O -> H2O+ + O
4326
4327         !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)
4328
4329         i039(:) = 3.2e-9*((300./t_elect(:))**0.5)
4330         nb_reaction_4 = nb_reaction_4 + 1
4331         v_4(:,nb_reaction_4) = i039(:)
4332
4333!---     i040: N2+ + H2O -> H2O+ + N2
4334
4335         !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)
4336
4337         i040(:) = 2.3e-9*((300./t_elect(:))**0.5)
4338         nb_reaction_4 = nb_reaction_4 + 1
4339         v_4(:,nb_reaction_4) = i040(:)
4340
4341!---     i041: N+ + H2O -> H2O+ + N
4342
4343         !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)
4344
4345         i041(:) = 2.8e-9*((300./t_elect(:))**0.5)
4346         nb_reaction_4 = nb_reaction_4 + 1
4347         v_4(:,nb_reaction_4) = i041(:)
4348
4349
4350!---     i042: H+ + H2O -> H2O+ + H
4351
4352         !UMIST, from D. Smith, P. Spanel and C. A. Mayhew, Int. J. Mass Spectrom. Ion Proc., 117, 457-473(1992)
4353
4354         i042(:) = 6.9e-9*((300./t_elect(:))**0.5)
4355         nb_reaction_4 = nb_reaction_4 + 1
4356         v_4(:,nb_reaction_4) = i042(:)
4357
4358!---     i043: H2O+ + O2 -> O2+ + H2O
4359
4360         !UMIST, from A. B. Raksit and P. Warneck, J. Chem. Soc. Faraday Trans., 76, 1084-1092(1980)
4361
4362         i043(:) = 4.6e-10
4363         nb_reaction_4 = nb_reaction_4 + 1
4364         v_4(:,nb_reaction_4) = i043(:)
4365
4366!---     i044: H2O+ + CO -> HCO+ + OH
4367
4368         !UMIST, from Jones, J.D.C., Birkinshaw, K., and Twiddy, N.D., Chem. Phys. Lett., 77, 484 (1981)
4369
4370         i044(:) = 5.0e-10
4371         nb_reaction_4 = nb_reaction_4 + 1
4372         v_4(:,nb_reaction_4) = i044(:)
4373
4374!---     i045: H2O+ + O -> O2+ + H2
4375
4376         !UMIST, from Viggiano, A.A, Howarka, F., Albritton, D.L., Fehsenfeld, F.C., Adams, N.G., and Smith, D., Astrophys. J., 236, 492 (1980)
4377
4378         i045(:) = 4.0e-11
4379         nb_reaction_4 = nb_reaction_4 + 1
4380         v_4(:,nb_reaction_4) = i045(:)
4381
4382!---     i046: H2O+ + NO -> NO+ + H2O
4383
4384         !UMIST, from A. B. Raksit and P. Warneck, J. Chem. Soc. Faraday Trans., 76, 1084-1092(1980)
4385
4386         i046(:) = 2.7e-10
4387         nb_reaction_4 = nb_reaction_4 + 1
4388         v_4(:,nb_reaction_4) = i046(:)
4389
4390!---     i047: H2O+ + e- -> H + H + O
4391
4392         !UMIST, from Rosen, S., Derkatch, A., Semaniak, J., et al., 2000, Far. Disc., 115, 295
4393         
4394         i047(:) = 3.05e-7*((300./t_elect(:))**0.5)
4395         nb_reaction_4 = nb_reaction_4 + 1
4396         v_4(:,nb_reaction_4) = i047(:)
4397
4398!---     i048: H2O+ + e- -> H + OH
4399         
4400         !UMIST, from Rosen, S., Derkatch, A., Semaniak, J., et al., 2000, Far. Disc., 115, 295
4401
4402         i048(:) = 8.6e-8*((300./t_elect(:))**0.5)
4403         nb_reaction_4 = nb_reaction_4 + 1
4404         v_4(:,nb_reaction_4) = i048(:)
4405
4406!---     i049: H2O+ + e- -> O + H2
4407
4408         !UMIST, from Rosen, S., Derkatch, A., Semaniak, J., et al., 2000, Far. Disc., 115, 295
4409
4410         i049(:) = 3.9e-8*((300./t_elect(:))**0.5)
4411         nb_reaction_4 = nb_reaction_4 + 1
4412         v_4(:,nb_reaction_4) = i049(:)
4413
4414!---     i050: H2O+ + H2O -> H3O+ + OH
4415
4416         !UMIST, from Huntress, W.T. and Pinizzotto, R.F., J. Chem. Phys., 59, 4742 (1973)
4417
4418         i050(:) = 2.1e-9*((300./t_elect(:))**0.5)
4419         nb_reaction_4 = nb_reaction_4 + 1
4420         v_4(:,nb_reaction_4) = i050(:)
4421
4422
4423!---     i051: H2O+ + H2 -> H3O+ + H
4424
4425         !UMIST, from A. B. Raksit and P. Warneck, J. Chem. Soc. Faraday Trans., 76, 1084-1092(1980)
4426
4427         i051(:) = 6.4e-10
4428         nb_reaction_4 = nb_reaction_4 + 1
4429         v_4(:,nb_reaction_4) = i051(:)
4430
4431!---     i052: HCO+ + H2O -> H3O+ + CO
4432
4433         !UMIST, from Adams, N.G., Smith, D., and Grief, D., Int. J. Mass Spectrom. Ion Phys., 26, 405 (1978)
4434
4435         i052(:) = 2.5e-9*((300./t_elect(:))**0.5)
4436         nb_reaction_4 = nb_reaction_4 + 1
4437         v_4(:,nb_reaction_4) = i052(:)
4438
4439!---     i053: H3O+ + e -> OH + H + H
4440
4441         !UMIST, from Novotny, O. et al., J. Phys. Chem. A 2010, 114, 14, 4870-4874
4442
4443         i053(:) = 3.05e-7*((300./t_elect(:))**0.5)
4444         nb_reaction_4 = nb_reaction_4 + 1
4445         v_4(:,nb_reaction_4) = i053(:)
4446
4447!---     i054: H3O+ + e -> H2O + H
4448
4449         !UMIST, from Novotny, O. et al., J. Phys. Chem. A 2010, 114, 14, 4870-4874
4450         
4451         i054(:) = 7.09e-8*((300./t_elect(:))**0.5)
4452         nb_reaction_4 = nb_reaction_4 + 1
4453         v_4(:,nb_reaction_4) = i054(:)
4454
4455!---     i055: H3O+ + e -> OH + H2
4456
4457         !UMIST, from Novotny, O. et al., J. Phys. Chem. A 2010, 114, 14, 4870-4874
4458
4459         i055(:) = 5.37e-8*((300./t_elect(:))**0.5)
4460         nb_reaction_4 = nb_reaction_4 + 1
4461         v_4(:,nb_reaction_4) = i055(:)
4462
4463!---     i056: H3O+ + e -> O + H2 + H
4464
4465         !UMIST, from Novotny, O. et al., J. Phys. Chem. A 2010, 114, 14, 4870-4874
4466
4467         i056(:) = 5.6e-9*((300./t_elect(:))**0.5)
4468         nb_reaction_4 = nb_reaction_4 + 1
4469         v_4(:,nb_reaction_4) = i056(:)
4470
4471         nb_reaction_4 = nb_reaction_4 + 1
4472         v_4(:,nb_reaction_4) = i056(:)
4473
4474!---     i057: O+ + H2 -> OH+ + H
4475
4476         !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)
4477
4478         i057(:) = 1.7e-9
4479         nb_reaction_4 = nb_reaction_4 + 1
4480         v_4(:,nb_reaction_4) = i057(:)
4481
4482!---     i058: OH+ + O -> O2+ + H
4483
4484         !UMIST, from Prasad & Huntress, 1980, ApJS, 43, 1
4485
4486         i058(:) = 7.1e-10
4487         nb_reaction_4 = nb_reaction_4 + 1
4488         v_4(:,nb_reaction_4) = i058(:)
4489
4490!---     i059: OH+ + CO2 -> HCO2+ + O
4491
4492         !UMIST, from Jones, J.D.C., Birkinshaw, K., and Twiddy, N.D., Chem. Phys. Lett., 77, 484 (1981)
4493
4494         i059(:) = 1.44e-9
4495         nb_reaction_4 = nb_reaction_4 + 1
4496         v_4(:,nb_reaction_4) = i059(:)
4497
4498!---     i060: OH+ + CO -> HCO+ + O
4499
4500         !UMIST, from Jones, J.D.C., Birkinshaw, K., and Twiddy, N.D., Chem. Phys. Lett., 77, 484 (1981)
4501
4502         i060(:) = 1.05e-9
4503         nb_reaction_4 = nb_reaction_4 + 1
4504         v_4(:,nb_reaction_4) = i060(:)
4505
4506!---     i061: OH+ + NO -> NO+ + OH (tasa de reacción UMIST 3.59e-10)
4507
4508         !UMIST, from Jones, J.D.C., Birkinshaw, K., and Twiddy, N.D., Chem. Phys. Lett., 77, 484 (1981)
4509
4510         i061(:) = 3.59e-10
4511         nb_reaction_4 = nb_reaction_4 + 1
4512         v_4(:,nb_reaction_4) = i061(:)
4513
4514!---     i062: OH+ + H2 -> H2O+ + H (tasa de reacción UMIST 1.01e-9,
4515
4516         !UMIST, from Jones, J.D.C., Birkinshaw, K., and Twiddy, N.D., Chem. Phys. Lett., 77, 484 (1981)
4517
4518         i062(:) = 1.01e-9
4519         nb_reaction_4 = nb_reaction_4 + 1
4520         v_4(:,nb_reaction_4) = i062(:)
4521
4522!---     i063: OH+ + O2 -> O2+ + OH (tasa de reacción UMIST 5.9e-10
4523
4524         !UMIST, from Jones, J.D.C., Birkinshaw, K., and Twiddy, N.D., Chem. Phys. Lett., 77, 484 (1981)
4525
4526         i063(:) = 5.9e-10
4527         nb_reaction_4 = nb_reaction_4 + 1
4528         v_4(:,nb_reaction_4) = i063(:)
4529
4530      end if   ! ok_ionchem
4531
4532!----------------------------------------------------------------------
[2187]4533!     reactions avec 02(Dg)
4534!----------------------------------------------------------------------
4535
[2836]4536!---     j001: O2(Dg) + (CO2 and O) -> O2 + (CO2 and O) + hv
[2187]4537
[2836]4538!        Krasnopolsky (2010a) for CO2 & Clark and Wayne, 1969 for O (JPL)
[2187]4539
[2836]4540      j001(:) = 1.E-20 * c(:,i_co2) !+ 2.E-16 * c(:,i_o)
[2187]4541
4542      nb_phot = nb_phot + 1
[2836]4543      v_phot(:,nb_phot) = j001(:)
[2187]4544
[2836]4545!---     j002: O2(Dg) -> O2 + hv
[2187]4546
4547!        Lafferty et al; (1998)
4548
[2836]4549      j002(:) = 2.2E-4
[2187]4550
4551      nb_phot = nb_phot + 1
[2836]4552      v_phot(:,nb_phot) = j002(:)
[2187]4553
[2836]4554      !!! TEST: artificial increase of CO2 photodissociation
4555      if (tuneupperatm) then
4556      !-- TuneA
4557      !   v_phot(65:78,4) = v_phot(65:78,4)*10.
4558      !   v_phot(60:64,4) = v_phot(60:64,4)*3.
4559      !   v_phot(55:59,3) = v_phot(55:59,3)*2.
4560      !--
4561      !-- TuneB
4562      !   v_phot(65:78,4) = v_phot(65:78,4)*10.
4563      !   v_phot(55:59,3) = v_phot(55:59,3)*5.
4564      !--
4565      !-- TuneC
4566      ! VCD 1.1 tuning
4567      !   v_phot(65:78,4) = v_phot(65:78,4)*10.
4568      !   v_phot(52:59,3) = v_phot(52:59,3)*5.
4569      !--
4570      !-- TuneE
4571      ! VCD 2.0 tuning
[2920]4572      !  v_phot(65:nz,4) = v_phot(65:nz,4)*10. ! CO2 + hv ==> O(1D) + CO
[2836]4573      !--
4574      ! VCD 2.1 tuning
[2920]4575          v_phot(65:nz,4) = v_phot(65:nz,4)*8. ! CO2 + hv ==> O(1D) + CO
[2836]4576      !--
[3035]4577      ! TEST TUNEH
4578      !     v_phot(62:74,4) = v_phot(62:74,4)*6.5 ! CO2 + hv ==> O(1D) + CO
4579      !--
[2836]4580      !   v_phot(:,4) = v_phot(:,4)*10.
4581      !do ij=3,4
4582      !   v_phot(:,ij) = v_phot(:,ij)*10.
4583      !end do
[2920]4584      end if
[2187]4585return
4586end subroutine krates
4587
4588!======================================================================
4589
[2580]4590 subroutine fill_matrix(ilev, mat, prod, loss, lossconc, c, nesp, nlayer,  &
[2187]4591                        nb_reaction_3_max, nb_reaction_4_max, nb_phot_max, &
4592                        v_phot, v_3, v_4)
4593
4594!======================================================================
4595! filling of the jacobian matrix
4596!======================================================================
4597
4598use types_asis
4599
4600implicit none
4601
4602! input
4603
4604integer             :: ilev    ! level index
4605integer             :: nesp    ! number of species in the chemistry
4606integer, intent(in) :: nlayer  ! number of atmospheric layers
4607integer, intent(in) :: nb_reaction_3_max
4608                               ! number of quadratic reactions
4609integer, intent(in) :: nb_reaction_4_max
4610                               ! number of bimolecular reactions
4611integer, intent(in) :: nb_phot_max
4612                               ! number of processes treated numerically as photodissociations
4613
[2836]4614real (kind = 8), dimension(nlayer,nesp)              :: c    ! number densities
4615real (kind = 8), dimension(nlayer,      nb_phot_max) :: v_phot
4616real (kind = 8), dimension(nlayer,nb_reaction_3_max) :: v_3
4617real (kind = 8), dimension(nlayer,nb_reaction_4_max) :: v_4
[2187]4618
4619! output
4620
[2836]4621real (kind = 8), dimension(nesp,nesp), intent(out) :: mat  ! matrix
4622real (kind = 8), dimension(nesp), intent(out)      :: prod, loss, lossconc
[2187]4623
4624! local
4625
4626integer :: iesp
4627integer :: ind_phot_2,ind_phot_4,ind_phot_6
4628integer :: ind_3_2,ind_3_4,ind_3_6
4629integer :: ind_4_2,ind_4_4,ind_4_6,ind_4_8
4630integer :: iphot,i3,i4
4631
[2836]4632real(kind = 8) :: eps, eps_4  ! implicit/explicit coefficient
[2187]4633
4634! initialisations
4635
4636mat(:,:) = 0.
4637prod(:)  = 0.
4638loss(:)  = 0.
[2580]4639lossconc(:) = 0.
[2187]4640
4641! photodissociations
4642! or reactions a + c -> b + c
4643! or reactions a + ice -> b + c
4644do iphot = 1,nb_phot_max
4645
4646  ind_phot_2 = indice_phot(iphot)%z2
4647  ind_phot_4 = indice_phot(iphot)%z4
4648  ind_phot_6 = indice_phot(iphot)%z6
4649
4650  mat(ind_phot_2,ind_phot_2) = mat(ind_phot_2,ind_phot_2) + indice_phot(iphot)%z1*v_phot(ilev,iphot)
4651  mat(ind_phot_4,ind_phot_2) = mat(ind_phot_4,ind_phot_2) - indice_phot(iphot)%z3*v_phot(ilev,iphot)
4652  mat(ind_phot_6,ind_phot_2) = mat(ind_phot_6,ind_phot_2) - indice_phot(iphot)%z5*v_phot(ilev,iphot)
4653
[2580]4654  loss(ind_phot_2)     = loss(ind_phot_2) + indice_phot(iphot)%z1*v_phot(ilev,iphot)
4655  lossconc(ind_phot_2) = lossconc(ind_phot_2) + indice_phot(iphot)%z1*v_phot(ilev,iphot)*c(ilev,ind_phot_2)
4656 
4657  prod(ind_phot_4)     = prod(ind_phot_4) + indice_phot(iphot)%z3*v_phot(ilev,iphot)*c(ilev,ind_phot_2)
4658  prod(ind_phot_6)     = prod(ind_phot_6) + indice_phot(iphot)%z5*v_phot(ilev,iphot)*c(ilev,ind_phot_2)
[2187]4659
4660end do
4661
4662! reactions a + a -> b + c
4663
4664do i3 = 1,nb_reaction_3_max
4665
4666  ind_3_2 = indice_3(i3)%z2
4667  ind_3_4 = indice_3(i3)%z4
4668  ind_3_6 = indice_3(i3)%z6
4669
4670  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)
4671  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)
4672  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)
4673
[2580]4674  loss(ind_3_2)     = loss(ind_3_2) + indice_3(i3)%z1*v_3(ilev,i3)*c(ilev,ind_3_2)
4675  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)
4676 
4677  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)
4678  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)
[2187]4679
4680end do
4681
4682! reactions a + b -> c + d
4683
4684eps = 1.d-10
4685
4686do i4 = 1,nb_reaction_4_max
4687
4688  ind_4_2 = indice_4(i4)%z2
4689  ind_4_4 = indice_4(i4)%z4
4690  ind_4_6 = indice_4(i4)%z6
4691  ind_4_8 = indice_4(i4)%z8
4692
4693  eps_4 = abs(c(ilev,ind_4_2))/(abs(c(ilev,ind_4_2)) + abs(c(ilev,ind_4_4)) + eps)
4694  eps_4 = min(eps_4,1.0)
4695
4696  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)
4697  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)
4698  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)
4699  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)   
4700  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)
4701  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)
4702  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)
4703  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)
4704
4705
[2580]4706  loss(ind_4_2)     = loss(ind_4_2) + indice_4(i4)%z1*v_4(ilev,i4)*c(ilev,ind_4_4)
4707  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)
4708  loss(ind_4_4)     = loss(ind_4_4) + indice_4(i4)%z3*v_4(ilev,i4)*c(ilev,ind_4_2)
4709  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)
4710 
4711  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)
4712  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)
[2187]4713
4714end do
4715
4716end subroutine fill_matrix
4717
4718!================================================================
4719
4720 subroutine define_dt(nesp, dtnew, dtold, ctimestep, cold, ccur, mat1, &
[2320]4721                      prod, loss, dens, lon, lat)
[2187]4722
4723!================================================================
4724! iterative evaluation of the appropriate time step dtnew
4725! according to curvature criterion based on
4726! e = 2 Rtol [r Cn+1 -(1-r) Cn + Cn-1 ]/[(1+r) Cn]
4727! with r = (tn - tn-1)/(tn+1 - tn)
4728!================================================================
4729
4730implicit none
4731
4732! input
4733
4734integer :: nesp  ! number of species in the chemistry
4735
4736real :: dtold, ctimestep
[2836]4737real (kind = 8), dimension(nesp)      :: cold, ccur
4738real (kind = 8), dimension(nesp,nesp) :: mat1
4739real (kind = 8), dimension(nesp)      :: prod, loss
[2187]4740real                       :: dens
[2320]4741real                       :: lon, lat
[2187]4742
4743! output
4744
4745real :: dtnew
4746
4747! local
4748
[2836]4749real (kind = 8), dimension(nesp)      :: cnew
4750real (kind = 8), dimension(nesp,nesp) :: mat
4751real (kind = 8) :: atol, ratio, e, es, coef
[2187]4752
4753integer                  :: code, iesp, iter
4754integer, dimension(nesp) :: indx
4755integer :: imax
4756
4757real :: dttest
4758
4759! parameters
4760
[2836]4761real (kind = 8), parameter :: dtmin   = 10.      ! minimum time step (s)
4762real (kind = 8), parameter :: vmrtol  = 1.e-11   ! absolute tolerance on vmr
4763real (kind = 8), parameter :: rtol    = 0.05     ! rtol recommended value : 0.1-0.02
4764integer,         parameter :: niter   = 3        ! number of iterations
4765real (kind = 8), parameter :: coefmax = 2.
4766real (kind = 8), parameter :: coefmin = 0.1
4767logical                    :: fast_guess = .true.
[2187]4768
[2836]4769
[2187]4770dttest = dtold   ! dttest = dtold = dt_guess
4771
4772atol = vmrtol*dens ! absolute tolerance in molecule.cm-3
4773
4774do iter = 1,niter
4775
4776if (fast_guess) then
4777
4778! first guess : fast semi-implicit method
4779
4780   do iesp = 1, nesp
4781      cnew(iesp) = (ccur(iesp) + prod(iesp)*dttest)/(1. + loss(iesp)*dttest)
4782   end do
4783
4784else
4785
4786! first guess : form the matrix identity + mat*dt_guess
4787
4788   mat(:,:) = mat1(:,:)*dttest
4789   do iesp = 1,nesp
4790      mat(iesp,iesp) = 1. + mat(iesp,iesp)
4791   end do
4792
4793! form right-hand side (RHS) of the system
4794
4795   cnew(:) = ccur(:)
4796
4797! solve the linear system  M*Cn+1 = Cn (RHS in cnew, then replaced by solution)
4798
4799#ifdef LAPACK
4800   call dgesv(nesp,1,mat,nesp,indx,cnew,nesp,code)
4801#else
4802   write(*,*) "photochemistry error, missing LAPACK routine dgesv"
4803   stop
4804#endif
4805
4806end if
4807
4808! ratio old/new subtimestep
4809
4810ratio = dtold/dttest
4811
4812! e : local error indicator
4813
4814e = 0.
4815
4816do iesp = 1,nesp
4817   es = 2.*abs((ratio*cnew(iesp) - (1. + ratio)*ccur(iesp) + cold(iesp))   &
4818         /(1. + ratio)/max(ccur(iesp)*rtol,atol))
4819
4820   if (es > e) then
4821      e = es
4822      imax = iesp
4823   end if
4824end do
4825
4826! timestep correction
4827
4828coef = max(coefmin, min(coefmax,0.8/sqrt(e)))
4829
4830dttest = max(dtmin,dttest*coef)
4831dttest = min(ctimestep,dttest)
4832
4833end do ! iter
4834
4835! new timestep
4836
4837dtnew = dttest
4838
4839end subroutine define_dt
4840
4841!======================================================================
[2836]4842!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
4843!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
4844! CE CODE EST OBSOLETE !! A NE PAS UTILISER !!!!!!!!!!!!!!!!!!!!!!!!!!!
4845!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
4846!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
[2187]4847
4848      SUBROUTINE  rate_save(            &
4849                           n_lev,       &
4850                           pres,        &
4851                           temperature, &
4852                           traceur,     &
4853                           nq_max,      &
4854                           vphot,       &
4855                           v3,          &
4856                           v4)     
4857!==================
4858!!!!! MODEL 1D !!!! ==> n_lon = 1 !!!!
4859!==================
4860! Ici on a les variables pour le modele 1D, surtout pour la sauvegarde des taux de prod/consom
4861!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
4862!PENSER a changer les conditions de time_tot
4863!time_tot=nbr_pdt*(nbr_jour-1)
4864!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
4865
4866      USE chemparam_mod
4867      IMPLICIT none
4868           
4869
4870!INTEGER, PARAMETER :: time_tot=6000*1
4871
4872INTEGER :: unit_loc, ierr_loc           ! unite de lecture de "rcm1d.def"
4873     
4874INTEGER, SAVE :: time_tot,nbr_pdt,nbr_jour
4875INTEGER, SAVE :: cpt_time, cpt_time_rate
4876DOUBLE PRECISION, DIMENSION(n_lev,126) :: rate_day
4877DOUBLE PRECISION, DIMENSION(n_lev,126) :: rate_night
4878DOUBLE PRECISION :: rate_local
4879DOUBLE PRECISION :: concentration(n_lev)
4880DOUBLE PRECISION :: pres(n_lev)
4881DOUBLE PRECISION :: temperature(n_lev)
4882DOUBLE PRECISION :: traceur(n_lev,nq_max)
4883     
4884INTEGER :: n_lev, nq_max
4885INTEGER :: i_lev, i_react, i_v
4886
4887INTEGER :: i
4888 
4889LOGICAL, SAVE :: f_call = .true.
4890
[2780]4891integer, parameter :: nb_phot_max = 30
4892integer, parameter :: nb_reaction_3_max = 12
4893integer, parameter :: nb_reaction_4_max = 87
[2187]4894     
4895real, dimension(n_lev,nb_phot_max) :: vphot
4896real, dimension(n_lev,nb_reaction_3_max) :: v3
4897real, dimension(n_lev,nb_reaction_4_max) :: v4
4898
4899!PRINT*,"DEBUT subroutine rate_save"
4900
4901
4902      IF (f_call) THEN
4903! ------------------------------------------------------
4904!  Lecture des parametres dans "rcm1d.def"
4905! ------------------------------------------------------
4906
4907!   Opening parameters file "rcm1d.def"
4908!   ---------------------------------------
4909      unit_loc =98
4910      OPEN(unit_loc,file='rcm1d.def',status='old',form='formatted'  &
4911          ,iostat=ierr_loc)
4912
4913      IF(ierr_loc.ne.0) THEN
4914        write(*,*) 'Problem to open "rcm1d.def'
4915        write(*,*) 'Is it there ?'
4916        stop
4917      ELSE
4918        write(*,*) 'open rcm1d.def success '
4919      END IF
4920
4921      do i=1, 2
4922        read (unit_loc, *)
4923      end do
4924
4925      PRINT *,'nombre de pas de temps par jour ?'
4926      READ(unit_loc,*) nbr_pdt
4927      print*,nbr_pdt
4928
4929      PRINT *,'nombre de jours simules ?'
4930      READ(unit_loc,*) nbr_jour
4931      print*,nbr_jour
4932     
4933 
4934     
4935      time_tot = nbr_pdt*(nbr_jour-1)
4936      PRINT *,'nombre de PdT avant calcul des taux production/consommation ?'
4937      PRINT*,time_tot
4938     
4939      PRINT*,'nlev',n_lev
4940           
4941         cpt_time = 1
4942         cpt_time_rate = 1
4943         f_call = .false.
4944         PRINT*,"f_call: ",f_call
4945         rate_night(:,:)=0.
4946         rate_day(:,:)=0.
4947     
4948      END IF           
4949     
4950!      PRINT*,"P        T"
4951!      PRINT*,pres,temperature
4952             
4953      IF (cpt_time .GE. time_tot) THEN
4954
4955!       PRINT*,'cpt_time',cpt_time
4956             
4957         DO i_lev=1, n_lev
4958         concentration(i_lev) = pres(i_lev)/(1.3806488E-19 * temperature(i_lev))     
4959         END DO
4960         
4961         IF (((cpt_time_rate .GE. 1).AND.(cpt_time_rate .LE. (nbr_pdt/4))).OR. &
4962         (cpt_time_rate .GT. (3*(nbr_pdt/4)))) THEN
4963         
4964!===============================
4965!        !!!! NUIT !!!!
4966!===============================
4967!       PRINT*,'NUIT'
4968       
4969           DO i_lev=1, n_lev
4970           i_react=1
4971           i_v=1
4972!===============================
4973!    1     o2 + hv     -> o + o
4974!===============================
4975                rate_local = vphot(i_lev,i_v)*traceur(i_lev,i_o2)*concentration(i_lev)
4976                rate_night(i_lev,i_react) = rate_night(i_lev,i_react) + 2.*rate_local/nbr_pdt
4977                i_react=i_react+1
4978                i_v=i_v+1
4979!===============================
4980!    2     o2 + hv     -> o + o(1d)
4981!===============================
4982                rate_local = vphot(i_lev,i_v)*traceur(i_lev,i_o2)*concentration(i_lev)
4983                rate_night(i_lev,i_react) = rate_night(i_lev,i_react) + 2.*rate_local/nbr_pdt
4984                i_react=i_react+1
4985                i_v=i_v+1
4986!===============================
4987!    3     co2 + hv    -> co + o
4988!===============================
4989            rate_local = vphot(i_lev,i_v)*traceur(i_lev,i_co2)*concentration(i_lev)
4990            rate_night(i_lev,i_react) = rate_night(i_lev,i_react) + 2.*rate_local/nbr_pdt
4991            i_react=i_react+1
4992                i_v=i_v+1
4993!===============================
4994!    4     co2 + hv    -> co + o(1d)
4995!===============================
4996            rate_local = vphot(i_lev,i_v)*traceur(i_lev,i_co2)*concentration(i_lev)
4997            rate_night(i_lev,i_react) = rate_night(i_lev,i_react) + 2.*rate_local/nbr_pdt
4998            i_react=i_react+1
4999                i_v=i_v+1
5000!===============================
5001!    5     o3 + hv     -> o2(Dg) + o(1d)
5002!===============================
5003            rate_local = vphot(i_lev,i_v)*traceur(i_lev,i_o3)*concentration(i_lev)
5004            rate_night(i_lev,i_react) = rate_night(i_lev,i_react) + 2.*rate_local/nbr_pdt
5005            i_react=i_react+1
5006                i_v=i_v+1
5007!===============================
5008!    6     o3 + hv     -> o2 + o
5009!===============================
5010            rate_local = vphot(i_lev,i_v)*traceur(i_lev,i_o3)*concentration(i_lev)
5011            rate_night(i_lev,i_react) = rate_night(i_lev,i_react) + 2.*rate_local/nbr_pdt
5012            i_react=i_react+1
5013                i_v=i_v+1
5014!===============================
5015!    7     h2o + hv    -> h + oh
5016!===============================
5017            rate_local = vphot(i_lev,i_v)*traceur(i_lev,i_h2o)*concentration(i_lev)
5018            rate_night(i_lev,i_react) = rate_night(i_lev,i_react) + 2.*rate_local/nbr_pdt
5019            i_react=i_react+1
5020                i_v=i_v+1
5021!===============================
5022!    8     ho2 + hv    -> oh + o
5023!===============================
5024            rate_local = vphot(i_lev,i_v)*traceur(i_lev,i_ho2)*concentration(i_lev)
5025            rate_night(i_lev,i_react) = rate_night(i_lev,i_react) + 2.*rate_local/nbr_pdt
5026            i_react=i_react+1
5027                i_v=i_v+1
5028!===============================
5029!    9     h2o2 + hv   -> oh + oh
5030!===============================
5031            rate_local = vphot(i_lev,i_v)*traceur(i_lev,i_h2o2)*concentration(i_lev)
5032            rate_night(i_lev,i_react) = rate_night(i_lev,i_react) + 2.*rate_local/nbr_pdt
5033            i_react=i_react+1
5034                i_v=i_v+1
5035!===============================
5036!    10    hcl + hv    -> h + cl
5037!===============================
5038            rate_local = vphot(i_lev,i_v)*traceur(i_lev,i_hcl)*concentration(i_lev)
5039            rate_night(i_lev,i_react) = rate_night(i_lev,i_react) + 2.*rate_local/nbr_pdt
5040            i_react=i_react+1
5041                i_v=i_v+1
5042!===============================
5043!    11    cl2 + hv    -> cl + cl
5044!===============================
5045            rate_local = vphot(i_lev,i_v)*traceur(i_lev,i_cl2)*concentration(i_lev)
5046            rate_night(i_lev,i_react) = rate_night(i_lev,i_react) + 2.*rate_local/nbr_pdt
5047            i_react=i_react+1
5048                i_v=i_v+1
5049!===============================
5050!    12    hocl + hv   -> oh + cl
5051!===============================
5052            rate_local = vphot(i_lev,i_v)*traceur(i_lev,i_hocl)*concentration(i_lev)
5053            rate_night(i_lev,i_react) = rate_night(i_lev,i_react) + 2.*rate_local/nbr_pdt
5054            i_react=i_react+1
5055                i_v=i_v+1
5056!===============================
5057!    13    so2 + hv    -> so + o
5058!===============================
5059            rate_local = vphot(i_lev,i_v)*traceur(i_lev,i_so2)*concentration(i_lev)
5060            rate_night(i_lev,i_react) = rate_night(i_lev,i_react) + 2.*rate_local/nbr_pdt
5061            i_react=i_react+1
5062                i_v=i_v+1
5063!===============================
5064!    14    so + hv     -> s + o
5065!===============================
5066            rate_local = vphot(i_lev,i_v)*traceur(i_lev,i_so)*concentration(i_lev)
5067            rate_night(i_lev,i_react) = rate_night(i_lev,i_react) + 2.*rate_local/nbr_pdt
5068            i_react=i_react+1
5069                i_v=i_v+1
5070!===============================
5071!    15    so3 + hv    -> so2 + o
5072!===============================
5073            rate_local = vphot(i_lev,i_v)*traceur(i_lev,i_so3)*concentration(i_lev)
5074            rate_night(i_lev,i_react) = rate_night(i_lev,i_react) + 2.*rate_local/nbr_pdt
5075            i_react=i_react+1
5076                i_v=i_v+1
5077!===============================
5078!    16    clo + hv    -> cl + o
5079!===============================
5080            rate_local = vphot(i_lev,i_v)*traceur(i_lev,i_clo)*concentration(i_lev)
5081            rate_night(i_lev,i_react) = rate_night(i_lev,i_react) + 2.*rate_local/nbr_pdt
5082            i_react=i_react+1
5083                i_v=i_v+1
5084!===============================
5085!    17    ocs + hv    -> co + s
5086!===============================
5087            rate_local = vphot(i_lev,i_v)*traceur(i_lev,i_ocs)*concentration(i_lev)
5088            rate_night(i_lev,i_react) = rate_night(i_lev,i_react) + 2.*rate_local/nbr_pdt
5089            i_react=i_react+1
5090                i_v=i_v+1
5091!===============================
5092!    18    cocl2 + hv  -> cl + cl + co
5093!===============================
5094            rate_local = vphot(i_lev,i_v)*traceur(i_lev,i_cocl2)*concentration(i_lev)
5095            rate_night(i_lev,i_react) = rate_night(i_lev,i_react) + 2.*rate_local/nbr_pdt
5096            i_react=i_react+1
5097                i_v=i_v+1
5098!===============================
5099!    19    h2so4 + hv  -> so3 + h2o
5100!===============================
5101            rate_local = vphot(i_lev,i_v)*traceur(i_lev,i_h2so4)*concentration(i_lev)
5102            rate_night(i_lev,i_react) = rate_night(i_lev,i_react) + 2.*rate_local/nbr_pdt
5103            i_react=i_react+1
5104                i_v=i_v+1
5105!===============================
5106!--- 20 b001 o(1d) + co2 -> o + co2
5107!===============================
5108            rate_local = vphot(i_lev,i_v)*traceur(i_lev,i_o1d)*concentration(i_lev)
5109            rate_night(i_lev,i_react) = rate_night(i_lev,i_react) + 2.*rate_local/nbr_pdt
5110            i_react=i_react+1
5111                i_v=i_v+1
5112!===============================
5113!--- 21 b004 o(1d) + o2 -> o + o2
5114!===============================
5115            rate_local = vphot(i_lev,i_v)*traceur(i_lev,i_o1d)*concentration(i_lev)
5116            rate_night(i_lev,i_react) = rate_night(i_lev,i_react) + 2.*rate_local/nbr_pdt
5117            i_react=i_react+1
5118                i_v=i_v+1
5119!===============================
5120!--- 22 f014 clco + co2 -> cl + co + co2
5121!===============================
5122            rate_local = vphot(i_lev,22)*traceur(i_lev,i_clco)*concentration(i_lev)
5123            rate_night(i_lev,i_react) = rate_night(i_lev,i_react) + 2.*rate_local/nbr_pdt
5124            i_react=i_react+1
5125                i_v=i_v+1
5126!===============================
5127!--- 23 g016 s2o2 + co2 -> 2so + co2
5128!===============================
5129            rate_local = vphot(i_lev,23)*traceur(i_lev,i_s2o2)*concentration(i_lev)
5130            rate_night(i_lev,i_react) = rate_night(i_lev,i_react) + 2.*rate_local/nbr_pdt
5131            i_react=i_react+1
5132                i_v=i_v+1
5133!===============================
5134!--- 24 g023 s2 + co2 -> 2s + co2
5135!===============================
5136            rate_local = vphot(i_lev,i_v)*traceur(i_lev,i_s2)*concentration(i_lev)
5137            rate_night(i_lev,i_react) = rate_night(i_lev,i_react) + 2.*rate_local/nbr_pdt
5138            i_react=i_react+1
5139                i_v=i_v+1
5140!===============================
5141!--- 25 h001 ICE
5142!===============================
5143            i_react=i_react+1
5144                i_v=i_v+1
5145!===============================
5146!--- 26 h002 ICE
5147!===============================
5148            i_react=i_react+1
5149                i_v=i_v+1 
5150!===============================
5151!--- 27 h003 ICE
5152!===============================
5153            i_react=i_react+1
5154                i_v=i_v+1 
5155!===============================
5156!---  30 i001 o2(Dg) + CO2 -> O2 + CO2 + hv
5157!===============================
5158            rate_local = vphot(i_lev,i_v)*traceur(i_lev,i_o2dg)*concentration(i_lev)
5159            rate_night(i_lev,i_react) = rate_night(i_lev,i_react) + 2.*rate_local/nbr_pdt
5160            i_react=i_react+1
5161                i_v=i_v+1
5162!===============================
5163!--- 31 i002 o2(Dg) -> O2 + hv
5164!===============================
5165            rate_local = vphot(i_lev,i_v)*traceur(i_lev,i_o2dg)*concentration(i_lev)
5166            rate_night(i_lev,i_react) = rate_night(i_lev,i_react) + 2.*rate_local/nbr_pdt
5167            i_react=i_react+1
5168                i_v=i_v+1
5169
5170! DEBUT DES REACTION V3
5171                i_v = i_v - nb_phot_max
5172!===============================
5173!--- 32 a002: o + o + co2 -> o2 + co2
5174!===============================
5175            rate_local = v3(i_lev,i_v)*traceur(i_lev,i_o)*concentration(i_lev) &
5176            *traceur(i_lev,i_o)*concentration(i_lev)
5177            rate_night(i_lev,i_react) = rate_night(i_lev,i_react) + 2.*rate_local/nbr_pdt
5178            i_react=i_react+1
5179                i_v=i_v+1
5180!===============================
5181!--- 33 c008: ho2 + ho2 -> h2o2 + o2
5182!===============================
5183            rate_local = v3(i_lev,i_v)*traceur(i_lev,i_ho2)*concentration(i_lev) &
5184            *traceur(i_lev,i_ho2)*concentration(i_lev)
5185            rate_night(i_lev,i_react) = rate_night(i_lev,i_react) + 2.*rate_local/nbr_pdt
5186            i_react=i_react+1
5187                i_v=i_v+1
5188!===============================
5189!--- 34 c013: oh + oh -> h2o + o
5190!===============================
5191            rate_local = v3(i_lev,i_v)*traceur(i_lev,i_oh)*concentration(i_lev) &
5192            *traceur(i_lev,i_oh)*concentration(i_lev)
5193            rate_night(i_lev,i_react) = rate_night(i_lev,i_react) + 2.*rate_local/nbr_pdt
5194            i_react=i_react+1
5195                i_v=i_v+1
5196!===============================
5197!--- 35 c016: ho2 + ho2 + co2 -> h2o2 + o2 + co2
5198!===============================
5199            rate_local = v3(i_lev,i_v)*traceur(i_lev,i_ho2)*concentration(i_lev) &
5200            *traceur(i_lev,i_ho2)*concentration(i_lev)
5201            rate_night(i_lev,i_react) = rate_night(i_lev,i_react) + 2.*rate_local/nbr_pdt
5202            i_react=i_react+1
5203                i_v=i_v+1
5204!===============================
5205!--- 36 c017: oh + oh + co2 -> h2o2 + co2
5206!===============================
5207            rate_local = v3(i_lev,i_v)*traceur(i_lev,i_oh)*concentration(i_lev) &
5208            *traceur(i_lev,i_oh)*concentration(i_lev)
5209            rate_night(i_lev,i_react) = rate_night(i_lev,i_react) + 2.*rate_local/nbr_pdt
5210            i_react=i_react+1
5211                i_v=i_v+1
5212!===============================
5213!--- 37 c018: h + h + co2 -> h2 + co2
5214!===============================
5215            rate_local = v3(i_lev,i_v)*traceur(i_lev,i_h)*concentration(i_lev) &
5216            *traceur(i_lev,i_h)*concentration(i_lev)
5217            rate_night(i_lev,i_react) = rate_night(i_lev,i_react) + 2.*rate_local/nbr_pdt
5218            i_react=i_react+1
5219                i_v=i_v+1
5220!===============================
5221!--- 38 f021: cl + cl + co2 -> cl2 + co2
5222!===============================
5223            rate_local = v3(i_lev,i_v)*traceur(i_lev,i_cl)*concentration(i_lev) &
5224            *traceur(i_lev,i_cl)*concentration(i_lev)
5225            rate_night(i_lev,i_react) = rate_night(i_lev,i_react) + 2.*rate_local/nbr_pdt
5226            i_react=i_react+1
5227                i_v=i_v+1
5228!===============================
5229!--- 39 f026: clco + clco  -> cocl2 + co
5230!===============================
5231            rate_local = v3(i_lev,i_v)*traceur(i_lev,i_clco)*concentration(i_lev) &
5232            *traceur(i_lev,i_clco)*concentration(i_lev)
5233            rate_night(i_lev,i_react) = rate_night(i_lev,i_react) + 2.*rate_local/nbr_pdt
5234            i_react=i_react+1
5235                i_v=i_v+1
5236!===============================
5237!--- 40 f030: clso2 + clso2  -> cl2 + so2 + so2
5238!===============================
5239            rate_local = v3(i_lev,i_v)*traceur(i_lev,i_clso2)*concentration(i_lev) &
5240            *traceur(i_lev,i_clso2)*concentration(i_lev)
5241            rate_night(i_lev,i_react) = rate_night(i_lev,i_react) + 2.*rate_local/nbr_pdt
5242            i_react=i_react+1
5243                i_v=i_v+1
5244!===============================
5245!--- 41 g015: so + so + co2 -> s2o2 + co2
5246!===============================
5247            rate_local = v3(i_lev,i_v)*traceur(i_lev,i_so)*concentration(i_lev) &
5248            *traceur(i_lev,i_so)*concentration(i_lev)
5249            rate_night(i_lev,i_react) = rate_night(i_lev,i_react) + 2.*rate_local/nbr_pdt
5250            i_react=i_react+1
5251                i_v=i_v+1
5252!===============================
5253!--- 42 g022: s + s + co2 -> s2 + co2
5254!===============================
5255            rate_local = v3(i_lev,i_v)*traceur(i_lev,i_s)*concentration(i_lev) &
5256            *traceur(i_lev,i_s)*concentration(i_lev)
5257            rate_night(i_lev,i_react) = rate_night(i_lev,i_react) + 2.*rate_local/nbr_pdt
5258            i_react=i_react+1
5259                i_v=i_v+1
5260
5261! DEBUT DES REACTION V4
5262
5263                i_v = i_v - nb_reaction_3_max
5264
5265!===============================
5266!--- 43 a001: o + o2 + co2 -> o3 + co2
5267!===============================
5268            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_o2)*concentration(i_lev) &
5269            *traceur(i_lev,i_o)*concentration(i_lev)
5270            rate_night(i_lev,i_react) = rate_night(i_lev,i_react) + 2.*rate_local/nbr_pdt
5271            i_react=i_react+1
5272                i_v=i_v+1
5273!===============================
5274!--- 44 a003: o + o3 -> o2 + o2
5275!===============================
5276            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_o3)*concentration(i_lev) &
5277            *traceur(i_lev,i_o)*concentration(i_lev) 
5278            rate_night(i_lev,i_react) = rate_night(i_lev,i_react) + 2.*rate_local/nbr_pdt
5279            i_react=i_react+1
5280                i_v=i_v+1
5281!===============================
5282!--- 45 b002: o(1d) + h2o  -> oh + oh
5283!===============================
5284            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_o1d)*concentration(i_lev) &
5285            *traceur(i_lev,i_h2o)*concentration(i_lev) 
5286            rate_night(i_lev,i_react) = rate_night(i_lev,i_react) + 2.*rate_local/nbr_pdt
5287            i_react=i_react+1
5288                i_v=i_v+1
5289!===============================
5290!--- 46 b003: o(1d) + h2  -> oh + h
5291!===============================
5292            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_o1d)*concentration(i_lev) &
5293            *traceur(i_lev,i_h2)*concentration(i_lev) 
5294            rate_night(i_lev,i_react) = rate_night(i_lev,i_react) + 2.*rate_local/nbr_pdt
5295            i_react=i_react+1
5296                i_v=i_v+1
5297!===============================
5298!--- 47 b005: o(1d) + o3  -> o2 + o2
5299!===============================
5300            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_o1d)*concentration(i_lev) &
5301            *traceur(i_lev,i_o3)*concentration(i_lev)
5302            rate_night(i_lev,i_react) = rate_night(i_lev,i_react) + 2.*rate_local/nbr_pdt
5303            i_react=i_react+1
5304                i_v=i_v+1
5305!===============================
5306!--- 48 b006: o(1d) + o3  -> o2 + o + o
5307!===============================
5308            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_o1d)*concentration(i_lev) &
5309            *traceur(i_lev,i_o3)*concentration(i_lev)
5310            rate_night(i_lev,i_react) = rate_night(i_lev,i_react) + 2.*rate_local/nbr_pdt
5311            i_react=i_react+1
5312                i_v=i_v+1
5313!===============================
5314!--- 49 c001: o + ho2 -> oh + o2
5315!===============================
5316            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_o)*concentration(i_lev) &
5317            *traceur(i_lev,i_ho2)*concentration(i_lev)
5318            rate_night(i_lev,i_react) = rate_night(i_lev,i_react) + 2.*rate_local/nbr_pdt
5319            i_react=i_react+1
5320                i_v=i_v+1
5321!===============================
5322!--- 50 c002: o + oh -> o2 + h
5323!===============================
5324            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_s2)*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!--- 51 c003: h + o3 -> oh + o2
5330!===============================
5331            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_h)*concentration(i_lev) &
5332            *traceur(i_lev,i_o3)*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!--- 52 c004: h + ho2 -> oh + oh
5338!===============================
5339            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_h)*concentration(i_lev) &
5340            *traceur(i_lev,i_ho2)*concentration(i_lev)
5341            rate_night(i_lev,i_react) = rate_night(i_lev,i_react) + 2.*rate_local/nbr_pdt
5342            i_react=i_react+1
5343                i_v=i_v+1
5344!===============================
5345!--- 53 c005: h + ho2 -> h2 + o2
5346!===============================
5347            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_h)*concentration(i_lev) &
5348            *traceur(i_lev,i_ho2)*concentration(i_lev)
5349            rate_night(i_lev,i_react) = rate_night(i_lev,i_react) + 2.*rate_local/nbr_pdt
5350            i_react=i_react+1
5351                i_v=i_v+1
5352!===============================
5353!--- 54 c006: h + ho2 -> h2o + o
5354!===============================
5355            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_h)*concentration(i_lev) &
5356            *traceur(i_lev,i_ho2)*concentration(i_lev)
5357            rate_night(i_lev,i_react) = rate_night(i_lev,i_react) + 2.*rate_local/nbr_pdt
5358            i_react=i_react+1
5359                i_v=i_v+1
5360!===============================
5361!--- 55 c007: oh + ho2 -> h2o + o2
5362!===============================
5363            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_oh)*concentration(i_lev) &
5364            *traceur(i_lev,i_ho2)*concentration(i_lev)
5365            rate_night(i_lev,i_react) = rate_night(i_lev,i_react) + 2.*rate_local/nbr_pdt
5366            i_react=i_react+1
5367                i_v=i_v+1
5368!===============================
5369!--- 56 c009: oh + h2o2 -> h2o + ho2
5370!===============================
5371            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_oh)*concentration(i_lev) &
5372            *traceur(i_lev,i_h2o2)*concentration(i_lev)
5373            rate_night(i_lev,i_react) = rate_night(i_lev,i_react) + 2.*rate_local/nbr_pdt
5374            i_react=i_react+1
5375                i_v=i_v+1
5376!===============================
5377!--- 57 c010: oh + h2 -> h2o + h
5378!===============================
5379            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_oh)*concentration(i_lev) &
5380            *traceur(i_lev,i_h2)*concentration(i_lev)
5381            rate_night(i_lev,i_react) = rate_night(i_lev,i_react) + 2.*rate_local/nbr_pdt
5382            i_react=i_react+1
5383                i_v=i_v+1
5384!===============================
5385!--- 58 c011: h + o2 + co2 -> ho2 + co2
5386!===============================
5387            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_o2)*concentration(i_lev) &
5388            *traceur(i_lev,i_h)*concentration(i_lev)
5389            rate_night(i_lev,i_react) = rate_night(i_lev,i_react) + 2.*rate_local/nbr_pdt
5390            i_react=i_react+1
5391                i_v=i_v+1
5392!===============================
5393!--- 59 c012: o + h2o2 -> oh + ho2
5394!===============================
5395            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_o)*concentration(i_lev) &
5396            *traceur(i_lev,i_h2o2)*concentration(i_lev)
5397            rate_night(i_lev,i_react) = rate_night(i_lev,i_react) + 2.*rate_local/nbr_pdt
5398            i_react=i_react+1
5399                i_v=i_v+1
5400!===============================
5401!--- 60 c014: oh + o3 -> ho2 + o2
5402!===============================
5403            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_oh)*concentration(i_lev) &
5404            *traceur(i_lev,i_o3)*concentration(i_lev)
5405            rate_night(i_lev,i_react) = rate_night(i_lev,i_react) + 2.*rate_local/nbr_pdt
5406            i_react=i_react+1
5407                i_v=i_v+1
5408!===============================
5409!--- 61 c015: ho2 + o3 -> oh + o2 + o2
5410!===============================
5411            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_o3)*concentration(i_lev) &
5412            *traceur(i_lev,i_ho2)*concentration(i_lev)
5413            rate_night(i_lev,i_react) = rate_night(i_lev,i_react) + 2.*rate_local/nbr_pdt
5414            i_react=i_react+1
5415                i_v=i_v+1
5416!===============================
5417!--- 62 e001: oh + co -> co2 + h
5418!===============================
5419            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_s2)*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!--- 63 e002: o + co + m -> co2 + m
5425!===============================
5426            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_o)*concentration(i_lev) &
5427            *traceur(i_lev,i_co)*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!--- 64 f001: hcl + o(1d) -> oh + cl
5433!===============================
5434            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_hcl)*concentration(i_lev) &
5435            *traceur(i_lev,i_o1d)*concentration(i_lev)
5436            rate_night(i_lev,i_react) = rate_night(i_lev,i_react) + 2.*rate_local/nbr_pdt
5437            i_react=i_react+1
5438                i_v=i_v+1
5439!===============================
5440!--- 65 f002: hcl + o(1d) -> h + clo
5441!===============================
5442            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_hcl)*concentration(i_lev) &
5443            *traceur(i_lev,i_o1d)*concentration(i_lev)
5444            rate_night(i_lev,i_react) = rate_night(i_lev,i_react) + 2.*rate_local/nbr_pdt
5445            i_react=i_react+1
5446                i_v=i_v+1
5447!===============================
5448!--- 66 f003: hcl + o -> oh + cl
5449!===============================
5450            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_hcl)*concentration(i_lev) &
5451            *traceur(i_lev,i_o)*concentration(i_lev)
5452            rate_night(i_lev,i_react) = rate_night(i_lev,i_react) + 2.*rate_local/nbr_pdt
5453            i_react=i_react+1
5454                i_v=i_v+1
5455!===============================
5456!--- 67 f004: hcl + oh -> h2o + cl
5457!===============================
5458            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_hcl)*concentration(i_lev) &
5459            *traceur(i_lev,i_oh)*concentration(i_lev)
5460            rate_night(i_lev,i_react) = rate_night(i_lev,i_react) + 2.*rate_local/nbr_pdt
5461            i_react=i_react+1
5462                i_v=i_v+1
5463!===============================
5464!--- 68 f005: clo + o -> cl + o2
5465!===============================
5466            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_clo)*concentration(i_lev) &
5467            *traceur(i_lev,i_o)*concentration(i_lev)
5468            rate_night(i_lev,i_react) = rate_night(i_lev,i_react) + 2.*rate_local/nbr_pdt
5469            i_react=i_react+1
5470                i_v=i_v+1
5471!===============================
5472!--- 69 f006: clo + oh -> cl + ho2
5473!===============================
5474            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_clo)*concentration(i_lev) &
5475            *traceur(i_lev,i_oh)*concentration(i_lev)
5476            rate_night(i_lev,i_react) = rate_night(i_lev,i_react) + 2.*rate_local/nbr_pdt
5477            i_react=i_react+1
5478                i_v=i_v+1
5479!===============================
5480!--- 70 f007: clo + oh -> hcl + o2
5481!===============================
5482            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_clo)*concentration(i_lev) &
5483            *traceur(i_lev,i_oh)*concentration(i_lev)
5484            rate_night(i_lev,i_react) = rate_night(i_lev,i_react) + 2.*rate_local/nbr_pdt
5485            i_react=i_react+1
5486                i_v=i_v+1
5487!===============================
5488!--- 71 f008: cl + h2 -> hcl + h
5489!===============================
5490            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_cl)*concentration(i_lev) &
5491            *traceur(i_lev,i_h2)*concentration(i_lev)
5492            rate_night(i_lev,i_react) = rate_night(i_lev,i_react) + 2.*rate_local/nbr_pdt
5493            i_react=i_react+1
5494                i_v=i_v+1
5495!===============================
5496!--- 72 f009: cl + o3 -> clo + o2
5497!===============================
5498            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_cl)*concentration(i_lev) &
5499            *traceur(i_lev,i_o3)*concentration(i_lev)
5500            rate_night(i_lev,i_react) = rate_night(i_lev,i_react) + 2.*rate_local/nbr_pdt
5501            i_react=i_react+1
5502                i_v=i_v+1
5503!===============================
5504!--- 73 f010: cl + ho2 -> clo + oh
5505!===============================
5506            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_cl)*concentration(i_lev) &
5507            *traceur(i_lev,i_ho2)*concentration(i_lev)
5508            rate_night(i_lev,i_react) = rate_night(i_lev,i_react) + 2.*rate_local/nbr_pdt
5509            i_react=i_react+1
5510                i_v=i_v+1
5511!===============================
5512!--- 74 f011: cl + ho2 -> hcl + o2
5513!===============================
5514            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_cl)*concentration(i_lev) &
5515            *traceur(i_lev,i_ho2)*concentration(i_lev)
5516            rate_night(i_lev,i_react) = rate_night(i_lev,i_react) + 2.*rate_local/nbr_pdt
5517            i_react=i_react+1
5518                i_v=i_v+1
5519!===============================
5520!--- 75 f012: cl + h2o2 -> hcl + ho2
5521!===============================
5522            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_cl)*concentration(i_lev) &
5523            *traceur(i_lev,i_h2o2)*concentration(i_lev)
5524            rate_night(i_lev,i_react) = rate_night(i_lev,i_react) + 2.*rate_local/nbr_pdt
5525            i_react=i_react+1
5526                i_v=i_v+1
5527!===============================
5528!--- 76 f013: cl + co + co2 -> clco + co2
5529!===============================
5530            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_cl)*concentration(i_lev) &
5531            *traceur(i_lev,i_co)*concentration(i_lev)
5532            rate_night(i_lev,i_react) = rate_night(i_lev,i_react) + 2.*rate_local/nbr_pdt
5533            i_react=i_react+1
5534                i_v=i_v+1
5535!===============================
5536!--- 77 f015: clco + o2 + m -> clco3 + m
5537!===============================
5538                rate_local = v4(i_lev,i_v)*traceur(i_lev,i_o2)*concentration(i_lev) &
5539            *traceur(i_lev,i_clco)*concentration(i_lev)
5540            rate_night(i_lev,i_react) = rate_night(i_lev,i_react) + 2.*rate_local/nbr_pdt
5541            i_react=i_react+1
5542                i_v=i_v+1
5543!===============================
5544!--- 78 & 79 f016: clco3 + cl -> cl + clo + co2
5545!===============================
5546!     decomposee en :
5547!     0.5 clco3 + 0.5 cl -> cl + 0.5 co2
5548!     0.5 clco3 + 0.5 cl -> clo + 0.5 co2
5549            rate_local = v4(i_lev,i_v)*0.25*traceur(i_lev,i_clco3)*concentration(i_lev) &
5550            *traceur(i_lev,i_cl)*concentration(i_lev)
5551            rate_night(i_lev,i_react) = rate_night(i_lev,i_react) + 2.*rate_local/nbr_pdt
5552            i_react=i_react+1
5553                i_v=i_v+1
5554           
5555            rate_local = v4(i_lev,i_v)*0.25*traceur(i_lev,i_clco3)*concentration(i_lev) &
5556            *traceur(i_lev,i_cl)*concentration(i_lev)
5557            rate_night(i_lev,i_react) = rate_night(i_lev,i_react) + 2.*rate_local/nbr_pdt
5558            i_react=i_react+1
5559                i_v=i_v+1
5560!===============================
5561!--- 80 & 81 f017: clco3 + o -> cl + o2 + co2
5562!===============================
5563!     decomposee en :
5564!     0.5 clco3 + 0.5 o -> cl
5565!     0.5 clco3 + 0.5 o -> o2 + co2
5566            rate_local = v4(i_lev,i_v)*0.25*traceur(i_lev,i_clco3)*concentration(i_lev) &
5567            *traceur(i_lev,i_o)*concentration(i_lev)
5568            rate_night(i_lev,i_react) = rate_night(i_lev,i_react) + 2.*rate_local/nbr_pdt
5569            i_react=i_react+1
5570                i_v=i_v+1
5571           
5572            rate_local = v4(i_lev,i_v)*0.25*traceur(i_lev,i_clco3)*concentration(i_lev) &
5573            *traceur(i_lev,i_o)*concentration(i_lev)
5574            rate_night(i_lev,i_react) = rate_night(i_lev,i_react) + 2.*rate_local/nbr_pdt
5575            i_react=i_react+1
5576                i_v=i_v+1
5577!===============================
5578!--- 82 f018: clo + ho2  -> hocl + o2
5579!===============================
5580            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_clo)*concentration(i_lev) &
5581            *traceur(i_lev,i_ho2)*concentration(i_lev) 
5582            rate_night(i_lev,i_react) = rate_night(i_lev,i_react) + 2.*rate_local/nbr_pdt
5583            i_react=i_react+1
5584                i_v=i_v+1
5585!===============================
5586!--- 83 f019: oh + hocl -> h2o + clo
5587!===============================
5588            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_oh)*concentration(i_lev) &
5589            *traceur(i_lev,i_hocl)*concentration(i_lev) 
5590            rate_night(i_lev,i_react) = rate_night(i_lev,i_react) + 2.*rate_local/nbr_pdt
5591            i_react=i_react+1
5592                i_v=i_v+1
5593!===============================
5594!--- 84 f020: o + hocl -> oh + clo
5595!===============================
5596            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_hocl)*concentration(i_lev) &
5597            *traceur(i_lev,i_o)*concentration(i_lev) 
5598            rate_night(i_lev,i_react) = rate_night(i_lev,i_react) + 2.*rate_local/nbr_pdt
5599            i_react=i_react+1
5600                i_v=i_v+1
5601!===============================
5602!--- 85 f022: clco + o -> cl + co2
5603!===============================
5604            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_clco)*concentration(i_lev) &
5605            *traceur(i_lev,i_o)*concentration(i_lev) 
5606            rate_night(i_lev,i_react) = rate_night(i_lev,i_react) + 2.*rate_local/nbr_pdt
5607            i_react=i_react+1
5608                i_v=i_v+1
5609!===============================
5610!--- 86 f023: cl2 + o(1d) -> cl + clo
5611!===============================
5612            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_cl2)*concentration(i_lev) &
5613            *traceur(i_lev,i_o1d)*concentration(i_lev) 
5614            rate_night(i_lev,i_react) = rate_night(i_lev,i_react) + 2.*rate_local/nbr_pdt
5615            i_react=i_react+1
5616                i_v=i_v+1
5617!===============================
5618!--- 87 f024: cl2 + h  -> hcl + cl
5619!==============================
5620            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_cl2)*concentration(i_lev) &
5621            *traceur(i_lev,i_h)*concentration(i_lev) 
5622            rate_night(i_lev,i_react) = rate_night(i_lev,i_react) + 2.*rate_local/nbr_pdt
5623            i_react=i_react+1
5624                i_v=i_v+1
5625!===============================
5626!--- 88 f025: cl + clco  -> cl2 + co
5627!===============================
5628            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_cl)*concentration(i_lev) &
5629            *traceur(i_lev,i_clco)*concentration(i_lev) 
5630            rate_night(i_lev,i_react) = rate_night(i_lev,i_react) + 2.*rate_local/nbr_pdt
5631            i_react=i_react+1
5632                i_v=i_v+1
5633!===============================
5634!--- 89 f027: cl + so2 + co2  -> clso2 + co2
5635!===============================
5636            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_so2)*concentration(i_lev) &
5637            *traceur(i_lev,i_cl)*concentration(i_lev) 
5638            rate_night(i_lev,i_react) = rate_night(i_lev,i_react) + 2.*rate_local/nbr_pdt
5639            i_react=i_react+1
5640                i_v=i_v+1
5641!===============================
5642!--- 90 f028: clso2 + o  -> so2 + clo
5643!===============================
5644            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_clso2)*concentration(i_lev) &
5645            *traceur(i_lev,i_o)*concentration(i_lev) 
5646            rate_night(i_lev,i_react) = rate_night(i_lev,i_react) + 2.*rate_local/nbr_pdt
5647            i_react=i_react+1
5648                i_v=i_v+1
5649!===============================
5650!--- 91 f029: clso2 + h  -> so2 + hcl
5651!===============================
5652            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_clso2)*concentration(i_lev) &
5653            *traceur(i_lev,i_h)*concentration(i_lev) 
5654            rate_night(i_lev,i_react) = rate_night(i_lev,i_react) + 2.*rate_local/nbr_pdt
5655            i_react=i_react+1
5656                i_v=i_v+1
5657!===============================
5658!--- 92 f031: cl + o + co2  -> clo + co2
5659!===============================
5660            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_cl)*concentration(i_lev) &
5661            *traceur(i_lev,i_o)*concentration(i_lev) 
5662            rate_night(i_lev,i_react) = rate_night(i_lev,i_react) + 2.*rate_local/nbr_pdt
5663            i_react=i_react+1
5664                i_v=i_v+1
5665!===============================
5666!--- 93 f032: cl2 + o -> clo + cl
5667!===============================
5668            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_cl2)*concentration(i_lev) &
5669            *traceur(i_lev,i_o)*concentration(i_lev) 
5670            rate_night(i_lev,i_react) = rate_night(i_lev,i_react) + 2.*rate_local/nbr_pdt
5671            i_react=i_react+1
5672                i_v=i_v+1
5673!===============================
5674!--- 94 f033: clco + oh -> hocl + co
5675!===============================
5676            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_clco)*concentration(i_lev) &
5677            *traceur(i_lev,i_oh)*concentration(i_lev) 
5678            rate_night(i_lev,i_react) = rate_night(i_lev,i_react) + 2.*rate_local/nbr_pdt
5679            i_react=i_react+1
5680                i_v=i_v+1
5681!===============================
5682!--- 95 f034: cl2 + oh -> cl + hocl
5683!===============================
5684            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_cl2)*concentration(i_lev) &
5685            *traceur(i_lev,i_oh)*concentration(i_lev) 
5686            rate_night(i_lev,i_react) = rate_night(i_lev,i_react) + 2.*rate_local/nbr_pdt
5687            i_react=i_react+1
5688                i_v=i_v+1
5689!===============================
5690!--- 96 f035: clco + o -> co + clo
5691!===============================
5692            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_clco)*concentration(i_lev) &
5693            *traceur(i_lev,i_o)*concentration(i_lev) 
5694            rate_night(i_lev,i_react) = rate_night(i_lev,i_react) + 2.*rate_local/nbr_pdt
5695            i_react=i_react+1
5696                i_v=i_v+1
5697!===============================
5698!--- 97 f036: clco + cl2 -> cocl2 + cl
5699!===============================
5700            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_cl2)*concentration(i_lev) &
5701            *traceur(i_lev,i_clco)*concentration(i_lev) 
5702            rate_night(i_lev,i_react) = rate_night(i_lev,i_react) + 2.*rate_local/nbr_pdt
5703            i_react=i_react+1
5704                i_v=i_v+1
5705!===============================
5706!--- 98 f037: hcl + h -> h2 + cl
5707!===============================
5708            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_hcl)*concentration(i_lev) &
5709            *traceur(i_lev,i_h)*concentration(i_lev) 
5710            rate_night(i_lev,i_react) = rate_night(i_lev,i_react) + 2.*rate_local/nbr_pdt
5711            i_react=i_react+1
5712                i_v=i_v+1
5713!===============================
5714!--- 99 f038: clco + h -> hcl + co
5715!===============================
5716            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_s2)*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!--- 100 f039: cl + h + m -> hcl + m
5722!===============================
5723            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_cl)*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!--- 101 g001: s + o2 -> so + o
5730!===============================
5731            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_s)*concentration(i_lev) &
5732            *traceur(i_lev,i_o2)*concentration(i_lev) 
5733            rate_night(i_lev,i_react) = rate_night(i_lev,i_react) + 2.*rate_local/nbr_pdt
5734            i_react=i_react+1
5735                i_v=i_v+1
5736!===============================
5737!--- 102 g002: s + o3 -> so + o2
5738!===============================
5739            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_s)*concentration(i_lev) &
5740            *traceur(i_lev,i_o3)*concentration(i_lev) 
5741            rate_night(i_lev,i_react) = rate_night(i_lev,i_react) + 2.*rate_local/nbr_pdt
5742            i_react=i_react+1
5743                i_v=i_v+1
5744!===============================
5745!--- 103 g003: so + o2 -> so2 + o
5746!===============================
5747             rate_local = v4(i_lev,i_v)*traceur(i_lev,i_so)*concentration(i_lev) &
5748            *traceur(i_lev,i_o2)*concentration(i_lev) 
5749            rate_night(i_lev,i_react) = rate_night(i_lev,i_react) + 2.*rate_local/nbr_pdt
5750            i_react=i_react+1
5751                i_v=i_v+1
5752!===============================
5753!--- 104 g004: so + o3 -> so2 + o2
5754!===============================
5755            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_so)*concentration(i_lev) &
5756            *traceur(i_lev,i_o3)*concentration(i_lev) 
5757            rate_night(i_lev,i_react) = rate_night(i_lev,i_react) + 2.*rate_local/nbr_pdt
5758            i_react=i_react+1
5759                i_v=i_v+1
5760!===============================
5761!--- 105 g005: so + oh -> so2 + h
5762!===============================
5763            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_so)*concentration(i_lev) &
5764            *traceur(i_lev,i_oh)*concentration(i_lev) 
5765            rate_night(i_lev,i_react) = rate_night(i_lev,i_react) + 2.*rate_local/nbr_pdt
5766            i_react=i_react+1
5767                i_v=i_v+1
5768!===============================
5769!--- 106 g006: s + oh -> so + h
5770!===============================
5771            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_s)*concentration(i_lev) &
5772            *traceur(i_lev,i_oh)*concentration(i_lev) 
5773            rate_night(i_lev,i_react) = rate_night(i_lev,i_react) + 2.*rate_local/nbr_pdt
5774            i_react=i_react+1
5775                i_v=i_v+1
5776!===============================
5777!--- 107 g007: so + o + co2 -> so2 + co2
5778!===============================
5779            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_so)*concentration(i_lev) &
5780            *traceur(i_lev,i_o)*concentration(i_lev) 
5781            rate_night(i_lev,i_react) = rate_night(i_lev,i_react) + 2.*rate_local/nbr_pdt
5782            i_react=i_react+1
5783                i_v=i_v+1
5784!===============================
5785!--- 108 g008: so + ho2 -> so2 + oh
5786!===============================
5787            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_so)*concentration(i_lev) &
5788            *traceur(i_lev,i_ho2)*concentration(i_lev) 
5789            rate_night(i_lev,i_react) = rate_night(i_lev,i_react) + 2.*rate_local/nbr_pdt
5790            i_react=i_react+1
5791                i_v=i_v+1
5792!===============================
5793!--- 109 g009: so2 + o + co2 -> so3 + co2
5794!===============================
5795            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_so2)*concentration(i_lev) &
5796            *traceur(i_lev,i_o)*concentration(i_lev) 
5797            rate_night(i_lev,i_react) = rate_night(i_lev,i_react) + 2.*rate_local/nbr_pdt
5798            i_react=i_react+1
5799                i_v=i_v+1
5800!===============================
5801!--- 110 g010: s + o + co2 -> so + co2
5802!===============================
5803            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_s)*concentration(i_lev) &
5804            *traceur(i_lev,i_o)*concentration(i_lev) 
5805            rate_night(i_lev,i_react) = rate_night(i_lev,i_react) + 2.*rate_local/nbr_pdt
5806            i_react=i_react+1
5807                i_v=i_v+1
5808!===============================
5809!--- 111 g011: so3 + h2o -> h2so4
5810!===============================
5811            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_so3)*concentration(i_lev) &
5812            *traceur(i_lev,i_h2o)*concentration(i_lev) 
5813            rate_night(i_lev,i_react) = rate_night(i_lev,i_react) + 2.*rate_local/nbr_pdt
5814            i_react=i_react+1
5815                i_v=i_v+1
5816!===============================
5817!--- 112 g012: so + clo -> so2 + cl
5818!===============================
5819            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_so)*concentration(i_lev) &
5820            *traceur(i_lev,i_clo)*concentration(i_lev) 
5821            rate_night(i_lev,i_react) = rate_night(i_lev,i_react) + 2.*rate_local/nbr_pdt
5822            i_react=i_react+1
5823                i_v=i_v+1
5824!===============================
5825!--- 113 g013: so + so3 -> so2 + so2
5826!===============================
5827            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_so)*concentration(i_lev) &
5828            *traceur(i_lev,i_so3)*concentration(i_lev) 
5829            rate_night(i_lev,i_react) = rate_night(i_lev,i_react) + 2.*rate_local/nbr_pdt
5830            i_react=i_react+1
5831                i_v=i_v+1
5832!===============================
5833!--- 114 g014: so3 + o -> so2 + o2
5834!===============================
5835            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_so3)*concentration(i_lev) &
5836            *traceur(i_lev,i_o)*concentration(i_lev) 
5837            rate_night(i_lev,i_react) = rate_night(i_lev,i_react) + 2.*rate_local/nbr_pdt
5838            i_react=i_react+1
5839                i_v=i_v+1
5840!===============================
5841!--- 115 & 116 g017: clco3 + so -> cl + so2 + co2
5842!===============================
5843!     decomposee en :
5844!     0.5 clco3 + 0.5 so -> cl
5845!     0.5 clco3 + 0.5 so -> so2 + co2
5846            rate_local = v4(i_lev,i_v)*0.25*traceur(i_lev,i_clco3)*concentration(i_lev) &
5847            *traceur(i_lev,i_so)*concentration(i_lev) 
5848            rate_night(i_lev,i_react) = rate_night(i_lev,i_react) + 2.*rate_local/nbr_pdt
5849            i_react=i_react+1
5850                i_v=i_v+1
5851           
5852            rate_local = v4(i_lev,i_v)*0.25*traceur(i_lev,i_clco3)*concentration(i_lev) &
5853            *traceur(i_lev,i_so)*concentration(i_lev) 
5854            rate_night(i_lev,i_react) = rate_night(i_lev,i_react) + 2.*rate_local/nbr_pdt
5855            i_react=i_react+1
5856                i_v=i_v+1
5857!===============================
5858!--- 117 g018: s + co + co2 -> ocs + co2
5859!===============================
5860            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_s)*concentration(i_lev) &
5861            *traceur(i_lev,i_co)*concentration(i_lev) 
5862            rate_night(i_lev,i_react) = rate_night(i_lev,i_react) + 2.*rate_local/nbr_pdt
5863            i_react=i_react+1
5864                i_v=i_v+1
5865!===============================
5866!--- 118 g019: clco + s -> ocs + cl
5867!===============================
5868            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_clco)*concentration(i_lev) &
5869            *traceur(i_lev,i_s)*concentration(i_lev) 
5870            rate_night(i_lev,i_react) = rate_night(i_lev,i_react) + 2.*rate_local/nbr_pdt
5871            i_react=i_react+1
5872                i_v=i_v+1
5873!===============================
5874!--- 119 g020: so2 + oh + co2 -> hso3 + co2
5875!===============================
5876            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_so2)*concentration(i_lev) &
5877            *traceur(i_lev,i_oh)*concentration(i_lev) 
5878            rate_night(i_lev,i_react) = rate_night(i_lev,i_react) + 2.*rate_local/nbr_pdt
5879            i_react=i_react+1
5880                i_v=i_v+1
5881!===============================
5882!--- 120 g021: hso3 + o2 -> ho2 + so3
5883!===============================
5884            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_o2)*concentration(i_lev) &
5885            *traceur(i_lev,i_hso3)*concentration(i_lev) 
5886            rate_night(i_lev,i_react) = rate_night(i_lev,i_react) + 2.*rate_local/nbr_pdt
5887            i_react=i_react+1
5888                i_v=i_v+1
5889!===============================
5890!--- 121 g024: s2 + o -> so + s
5891!===============================
5892            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_s2)*concentration(i_lev) &
5893            *traceur(i_lev,i_o)*concentration(i_lev) 
5894            rate_night(i_lev,i_react) = rate_night(i_lev,i_react) + 2.*rate_local/nbr_pdt
5895            i_react=i_react+1
5896                i_v=i_v+1
5897!===============================
5898!--- 122 g025: s + ocs -> s2 +  co
5899!===============================
5900            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_s)*concentration(i_lev) &
5901            *traceur(i_lev,i_ocs)*concentration(i_lev) 
5902            rate_night(i_lev,i_react) = rate_night(i_lev,i_react) + 2.*rate_local/nbr_pdt
5903            i_react=i_react+1
5904                i_v=i_v+1
5905!===============================
5906!--- 123 g026: ocs + o -> so + co
5907!===============================
5908            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_o)*concentration(i_lev) &
5909            *traceur(i_lev,i_ocs)*concentration(i_lev) 
5910            rate_night(i_lev,i_react) = rate_night(i_lev,i_react) + 2.*rate_local/nbr_pdt
5911            i_react=i_react+1
5912                i_v=i_v+1
5913!===============================
5914!--- 124 g027: s + so3 -> so2 +  so
5915!===============================
5916            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_s)*concentration(i_lev) &
5917            *traceur(i_lev,i_so3)*concentration(i_lev) 
5918            rate_night(i_lev,i_react) = rate_night(i_lev,i_react) + 2.*rate_local/nbr_pdt
5919            i_react=i_react+1
5920                i_v=i_v+1
5921!===============================
5922!--- 125 g028: s + ho2 -> so +  oh
5923!===============================
5924            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_s)*concentration(i_lev) &
5925            *traceur(i_lev,i_ho2)*concentration(i_lev) 
5926            rate_night(i_lev,i_react) = rate_night(i_lev,i_react) + 2.*rate_local/nbr_pdt
5927            i_react=i_react+1
5928                i_v=i_v+1
5929!===============================
5930!--- 126 g029: s + clo -> so +  cl
5931!===============================
5932            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_s)*concentration(i_lev) &
5933            *traceur(i_lev,i_clo)*concentration(i_lev) 
5934            rate_night(i_lev,i_react) = rate_night(i_lev,i_react) + 2.*rate_local/nbr_pdt
5935            i_react=i_react+1
5936                i_v=i_v+1   
5937           END DO       
5938         ELSE
5939!===============================         
5940!        !!!! JOUR !!!!
5941!===============================
5942!       PRINT*,'JOUR'
5943       
5944           DO i_lev=1, n_lev
5945           i_react=1
5946           i_v=1
5947!===============================
5948!    1     o2 + hv     -> o + o
5949!===============================
5950                rate_local = vphot(i_lev,i_v)*traceur(i_lev,i_o2)*concentration(i_lev)
5951                rate_day(i_lev,i_react) = rate_day(i_lev,i_react) + 2.*rate_local/nbr_pdt
5952                i_react=i_react+1
5953                i_v=i_v+1
5954!===============================
5955!    2     o2 + hv     -> o + o(1d)
5956!===============================
5957                rate_local = vphot(i_lev,i_v)*traceur(i_lev,i_o2)*concentration(i_lev)
5958                rate_day(i_lev,i_react) = rate_day(i_lev,i_react) + 2.*rate_local/nbr_pdt
5959                i_react=i_react+1
5960                i_v=i_v+1
5961!===============================
5962!    3     co2 + hv    -> co + o
5963!===============================
5964            rate_local = vphot(i_lev,i_v)*traceur(i_lev,i_co2)*concentration(i_lev)
5965            rate_day(i_lev,i_react) = rate_day(i_lev,i_react) + 2.*rate_local/nbr_pdt
5966            i_react=i_react+1
5967                i_v=i_v+1
5968!===============================
5969!    4     co2 + hv    -> co + o(1d)
5970!===============================
5971            rate_local = vphot(i_lev,i_v)*traceur(i_lev,i_co2)*concentration(i_lev)
5972            rate_day(i_lev,i_react) = rate_day(i_lev,i_react) + 2.*rate_local/nbr_pdt
5973            i_react=i_react+1
5974                i_v=i_v+1
5975!===============================
5976!    5     o3 + hv     -> o2(Dg) + o(1d)
5977!===============================
5978            rate_local = vphot(i_lev,i_v)*traceur(i_lev,i_o3)*concentration(i_lev)
5979            rate_day(i_lev,i_react) = rate_day(i_lev,i_react) + 2.*rate_local/nbr_pdt
5980            i_react=i_react+1
5981                i_v=i_v+1
5982!===============================
5983!    6     o3 + hv     -> o2 + o
5984!===============================
5985            rate_local = vphot(i_lev,i_v)*traceur(i_lev,i_o3)*concentration(i_lev)
5986            rate_day(i_lev,i_react) = rate_day(i_lev,i_react) + 2.*rate_local/nbr_pdt
5987            i_react=i_react+1
5988                i_v=i_v+1
5989!===============================
5990!    7     h2o + hv    -> h + oh
5991!===============================
5992            rate_local = vphot(i_lev,i_v)*traceur(i_lev,i_h2o)*concentration(i_lev)
5993            rate_day(i_lev,i_react) = rate_day(i_lev,i_react) + 2.*rate_local/nbr_pdt
5994            i_react=i_react+1
5995                i_v=i_v+1
5996!===============================
5997!    8     ho2 + hv    -> oh + o
5998!===============================
5999            rate_local = vphot(i_lev,i_v)*traceur(i_lev,i_ho2)*concentration(i_lev)
6000            rate_day(i_lev,i_react) = rate_day(i_lev,i_react) + 2.*rate_local/nbr_pdt
6001            i_react=i_react+1
6002                i_v=i_v+1
6003!===============================
6004!    9     h2o2 + hv   -> oh + oh
6005!===============================
6006            rate_local = vphot(i_lev,i_v)*traceur(i_lev,i_h2o2)*concentration(i_lev)
6007            rate_day(i_lev,i_react) = rate_day(i_lev,i_react) + 2.*rate_local/nbr_pdt
6008            i_react=i_react+1
6009                i_v=i_v+1
6010!===============================
6011!    10    hcl + hv    -> h + cl
6012!===============================
6013            rate_local = vphot(i_lev,i_v)*traceur(i_lev,i_hcl)*concentration(i_lev)
6014            rate_day(i_lev,i_react) = rate_day(i_lev,i_react) + 2.*rate_local/nbr_pdt
6015            i_react=i_react+1
6016                i_v=i_v+1
6017!===============================
6018!    11    cl2 + hv    -> cl + cl
6019!===============================
6020            rate_local = vphot(i_lev,i_v)*traceur(i_lev,i_cl2)*concentration(i_lev)
6021            rate_day(i_lev,i_react) = rate_day(i_lev,i_react) + 2.*rate_local/nbr_pdt
6022            i_react=i_react+1
6023                i_v=i_v+1
6024!===============================
6025!    12    hocl + hv   -> oh + cl
6026!===============================
6027            rate_local = vphot(i_lev,i_v)*traceur(i_lev,i_hocl)*concentration(i_lev)
6028            rate_day(i_lev,i_react) = rate_day(i_lev,i_react) + 2.*rate_local/nbr_pdt
6029            i_react=i_react+1
6030                i_v=i_v+1
6031!===============================
6032!    13    so2 + hv    -> so + o
6033!===============================
6034            rate_local = vphot(i_lev,i_v)*traceur(i_lev,i_so2)*concentration(i_lev)
6035            rate_day(i_lev,i_react) = rate_day(i_lev,i_react) + 2.*rate_local/nbr_pdt
6036            i_react=i_react+1
6037                i_v=i_v+1
6038!===============================
6039!    14    so + hv     -> s + o
6040!===============================
6041            rate_local = vphot(i_lev,i_v)*traceur(i_lev,i_so)*concentration(i_lev)
6042            rate_day(i_lev,i_react) = rate_day(i_lev,i_react) + 2.*rate_local/nbr_pdt
6043            i_react=i_react+1
6044                i_v=i_v+1
6045!===============================
6046!    15    so3 + hv    -> so2 + o
6047!===============================
6048            rate_local = vphot(i_lev,i_v)*traceur(i_lev,i_so3)*concentration(i_lev)
6049            rate_day(i_lev,i_react) = rate_day(i_lev,i_react) + 2.*rate_local/nbr_pdt
6050            i_react=i_react+1
6051                i_v=i_v+1
6052!===============================
6053!    16    clo + hv    -> cl + o
6054!===============================
6055            rate_local = vphot(i_lev,i_v)*traceur(i_lev,i_clo)*concentration(i_lev)
6056            rate_day(i_lev,i_react) = rate_day(i_lev,i_react) + 2.*rate_local/nbr_pdt
6057            i_react=i_react+1
6058                i_v=i_v+1
6059!===============================
6060!    17    ocs + hv    -> co + s
6061!===============================
6062            rate_local = vphot(i_lev,i_v)*traceur(i_lev,i_ocs)*concentration(i_lev)
6063            rate_day(i_lev,i_react) = rate_day(i_lev,i_react) + 2.*rate_local/nbr_pdt
6064            i_react=i_react+1
6065                i_v=i_v+1
6066!===============================
6067!    18    cocl2 + hv  -> cl + cl + co
6068!===============================
6069            rate_local = vphot(i_lev,i_v)*traceur(i_lev,i_cocl2)*concentration(i_lev)
6070            rate_day(i_lev,i_react) = rate_day(i_lev,i_react) + 2.*rate_local/nbr_pdt
6071            i_react=i_react+1
6072                i_v=i_v+1
6073!===============================
6074!    19    h2so4 + hv  -> so3 + h2o
6075!===============================
6076            rate_local = vphot(i_lev,i_v)*traceur(i_lev,i_h2so4)*concentration(i_lev)
6077            rate_day(i_lev,i_react) = rate_day(i_lev,i_react) + 2.*rate_local/nbr_pdt
6078            i_react=i_react+1
6079                i_v=i_v+1
6080!===============================
6081!    20     o(1d) + co2 -> o + co2
6082!===============================
6083            rate_local = vphot(i_lev,i_v)*traceur(i_lev,i_o1d)*concentration(i_lev)
6084            rate_day(i_lev,i_react) = rate_day(i_lev,i_react) + 2.*rate_local/nbr_pdt
6085            i_react=i_react+1
6086                i_v=i_v+1
6087!===============================
6088!    21    o(1d) + o2 -> o + o2
6089!===============================
6090            rate_local = vphot(i_lev,i_v)*traceur(i_lev,i_o1d)*concentration(i_lev)
6091            rate_day(i_lev,i_react) = rate_day(i_lev,i_react) + 2.*rate_local/nbr_pdt
6092            i_react=i_react+1
6093                i_v=i_v+1
6094!===============================
6095!    22    clco + co2 -> cl + co + co2
6096!===============================
6097            rate_local = vphot(i_lev,22)*traceur(i_lev,i_clco)*concentration(i_lev)
6098            rate_day(i_lev,i_react) = rate_day(i_lev,i_react) + 2.*rate_local/nbr_pdt
6099            i_react=i_react+1
6100                i_v=i_v+1
6101!===============================
6102!    23    s2o2 + co2 -> 2so + co2
6103!===============================
6104            rate_local = vphot(i_lev,23)*traceur(i_lev,i_s2o2)*concentration(i_lev)
6105            rate_day(i_lev,i_react) = rate_day(i_lev,i_react) + 2.*rate_local/nbr_pdt
6106            i_react=i_react+1
6107                i_v=i_v+1
6108!===============================
6109!    24    s2 + co2 -> 2s + co2
6110!===============================
6111            rate_local = vphot(i_lev,i_v)*traceur(i_lev,i_s2)*concentration(i_lev)
6112            rate_day(i_lev,i_react) = rate_day(i_lev,i_react) + 2.*rate_local/nbr_pdt
6113            i_react=i_react+1
6114                i_v=i_v+1
6115!===============================
6116!    25    ICE
6117!===============================
6118            i_react=i_react+1
6119                i_v=i_v+1
6120!===============================
6121!    26    ICE
6122!===============================
6123            i_react=i_react+1
6124                i_v=i_v+1 
6125!===============================
6126!    27    ICE
6127!===============================
6128            i_react=i_react+1
6129                i_v=i_v+1 
6130!===============================
6131!    28    ICE
6132!===============================
6133            i_react=i_react+1
6134                i_v=i_v+1 
6135!===============================
6136!    29    ICE
6137!===============================
6138            i_react=i_react+1
6139                i_v=i_v+1 
6140!===============================
[2795]6141!    30    o2(Dg) + CO2 -> O2 + CO2
[2187]6142!===============================
6143            rate_local = vphot(i_lev,i_v)*traceur(i_lev,i_o2dg)*concentration(i_lev)
6144            rate_day(i_lev,i_react) = rate_day(i_lev,i_react) + 2.*rate_local/nbr_pdt
6145            i_react=i_react+1
6146                i_v=i_v+1
6147!===============================
6148!    31    o2(Dg) -> O2 + hv
6149!===============================
6150            rate_local = vphot(i_lev,i_v)*traceur(i_lev,i_o2dg)*concentration(i_lev)
6151            rate_day(i_lev,i_react) = rate_day(i_lev,i_react) + 2.*rate_local/nbr_pdt
6152            i_react=i_react+1
6153                i_v=i_v+1
6154               
6155! DEBUT DES REACTION V3
6156                i_v = i_v - nb_phot_max
6157!===============================
6158!--- 32 a002: o + o + co2 -> o2 + co2
6159!===============================
6160            rate_local = v3(i_lev,i_v)*traceur(i_lev,i_o)*concentration(i_lev) &
6161            *traceur(i_lev,i_o)*concentration(i_lev)
6162            rate_day(i_lev,i_react) = rate_day(i_lev,i_react) + 2.*rate_local/nbr_pdt
6163            i_react=i_react+1
6164                i_v=i_v+1
6165!===============================
6166!--- 33 c008: ho2 + ho2 -> h2o2 + o2
6167!===============================
6168            rate_local = v3(i_lev,i_v)*traceur(i_lev,i_ho2)*concentration(i_lev) &
6169            *traceur(i_lev,i_ho2)*concentration(i_lev)
6170            rate_day(i_lev,i_react) = rate_day(i_lev,i_react) + 2.*rate_local/nbr_pdt
6171            i_react=i_react+1
6172                i_v=i_v+1
6173!===============================
6174!--- 34 c013: oh + oh -> h2o + o
6175!===============================
6176            rate_local = v3(i_lev,i_v)*traceur(i_lev,i_oh)*concentration(i_lev) &
6177            *traceur(i_lev,i_oh)*concentration(i_lev)
6178            rate_day(i_lev,i_react) = rate_day(i_lev,i_react) + 2.*rate_local/nbr_pdt
6179            i_react=i_react+1
6180                i_v=i_v+1
6181!===============================
6182!--- 35 c016: ho2 + ho2 + co2 -> h2o2 + o2 + co2
6183!===============================
6184            rate_local = v3(i_lev,i_v)*traceur(i_lev,i_ho2)*concentration(i_lev) &
6185            *traceur(i_lev,i_ho2)*concentration(i_lev)
6186            rate_day(i_lev,i_react) = rate_day(i_lev,i_react) + 2.*rate_local/nbr_pdt
6187            i_react=i_react+1
6188                i_v=i_v+1
6189!===============================
6190!--- 36 c017: oh + oh + co2 -> h2o2 + co2
6191!===============================
6192            rate_local = v3(i_lev,i_v)*traceur(i_lev,i_oh)*concentration(i_lev) &
6193            *traceur(i_lev,i_oh)*concentration(i_lev)
6194            rate_day(i_lev,i_react) = rate_day(i_lev,i_react) + 2.*rate_local/nbr_pdt
6195            i_react=i_react+1
6196                i_v=i_v+1
6197!===============================
6198!--- 37 c018: h + h + co2 -> h2 + co2
6199!===============================
6200            rate_local = v3(i_lev,i_v)*traceur(i_lev,i_h)*concentration(i_lev) &
6201            *traceur(i_lev,i_h)*concentration(i_lev)
6202            rate_day(i_lev,i_react) = rate_day(i_lev,i_react) + 2.*rate_local/nbr_pdt
6203            i_react=i_react+1
6204                i_v=i_v+1
6205!===============================
6206!--- 38 f021: cl + cl + co2 -> cl2 + co2
6207!===============================
6208            rate_local = v3(i_lev,i_v)*traceur(i_lev,i_cl)*concentration(i_lev) &
6209            *traceur(i_lev,i_cl)*concentration(i_lev)
6210            rate_day(i_lev,i_react) = rate_day(i_lev,i_react) + 2.*rate_local/nbr_pdt
6211            i_react=i_react+1
6212                i_v=i_v+1
6213!===============================
6214!--- 39 f026: clco + clco  -> cocl2 + co
6215!===============================
6216            rate_local = v3(i_lev,i_v)*traceur(i_lev,i_clco)*concentration(i_lev) &
6217            *traceur(i_lev,i_clco)*concentration(i_lev)
6218            rate_day(i_lev,i_react) = rate_day(i_lev,i_react) + 2.*rate_local/nbr_pdt
6219            i_react=i_react+1
6220                i_v=i_v+1
6221!===============================
6222!--- 40 f030: clso2 + clso2  -> cl2 + so2 + so2
6223!===============================
6224            rate_local = v3(i_lev,i_v)*traceur(i_lev,i_clso2)*concentration(i_lev) &
6225            *traceur(i_lev,i_clso2)*concentration(i_lev)
6226            rate_day(i_lev,i_react) = rate_day(i_lev,i_react) + 2.*rate_local/nbr_pdt
6227            i_react=i_react+1
6228                i_v=i_v+1
6229!===============================
6230!--- 41 g015: so + so + co2 -> s2o2 + co2
6231!===============================
6232            rate_local = v3(i_lev,i_v)*traceur(i_lev,i_so)*concentration(i_lev) &
6233            *traceur(i_lev,i_so)*concentration(i_lev)
6234            rate_day(i_lev,i_react) = rate_day(i_lev,i_react) + 2.*rate_local/nbr_pdt
6235            i_react=i_react+1
6236                i_v=i_v+1
6237!===============================
6238!--- 42 g022: s + s + co2 -> s2 + co2
6239!===============================
6240            rate_local = v3(i_lev,i_v)*traceur(i_lev,i_s)*concentration(i_lev) &
6241            *traceur(i_lev,i_s)*concentration(i_lev)
6242            rate_day(i_lev,i_react) = rate_day(i_lev,i_react) + 2.*rate_local/nbr_pdt
6243            i_react=i_react+1
6244                i_v=i_v+1
6245
6246! DEBUT DES REACTION V4
6247
6248                i_v = i_v - nb_reaction_3_max
6249
6250!===============================
6251!--- 43 a001: o + o2 + co2 -> o3 + co2
6252!===============================
6253            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_o2)*concentration(i_lev) &
6254            *traceur(i_lev,i_o)*concentration(i_lev)
6255            rate_day(i_lev,i_react) = rate_day(i_lev,i_react) + 2.*rate_local/nbr_pdt
6256            i_react=i_react+1
6257                i_v=i_v+1
6258!===============================
6259!--- 44 a003: o + o3 -> o2 + o2
6260!===============================
6261            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_o3)*concentration(i_lev) &
6262            *traceur(i_lev,i_o)*concentration(i_lev) 
6263            rate_day(i_lev,i_react) = rate_day(i_lev,i_react) + 2.*rate_local/nbr_pdt
6264            i_react=i_react+1
6265                i_v=i_v+1
6266!===============================
6267!--- 45 b002: o(1d) + h2o  -> oh + oh
6268!===============================
6269            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_o1d)*concentration(i_lev) &
6270            *traceur(i_lev,i_h2o)*concentration(i_lev) 
6271            rate_day(i_lev,i_react) = rate_day(i_lev,i_react) + 2.*rate_local/nbr_pdt
6272            i_react=i_react+1
6273                i_v=i_v+1
6274!===============================
6275!--- 46 b003: o(1d) + h2  -> oh + h
6276!===============================
6277            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_o1d)*concentration(i_lev) &
6278            *traceur(i_lev,i_h2)*concentration(i_lev) 
6279            rate_day(i_lev,i_react) = rate_day(i_lev,i_react) + 2.*rate_local/nbr_pdt
6280            i_react=i_react+1
6281                i_v=i_v+1
6282!===============================
6283!--- 47 b005: o(1d) + o3  -> o2 + o2
6284!===============================
6285            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_o1d)*concentration(i_lev) &
6286            *traceur(i_lev,i_o3)*concentration(i_lev)
6287            rate_day(i_lev,i_react) = rate_day(i_lev,i_react) + 2.*rate_local/nbr_pdt
6288            i_react=i_react+1
6289                i_v=i_v+1
6290!===============================
6291!--- 48 b006: o(1d) + o3  -> o2 + o + o
6292!===============================
6293            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_o1d)*concentration(i_lev) &
6294            *traceur(i_lev,i_o3)*concentration(i_lev)
6295            rate_day(i_lev,i_react) = rate_day(i_lev,i_react) + 2.*rate_local/nbr_pdt
6296            i_react=i_react+1
6297                i_v=i_v+1
6298!===============================
6299!--- 49 c001: o + ho2 -> oh + o2
6300!===============================
6301            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_o)*concentration(i_lev) &
6302            *traceur(i_lev,i_ho2)*concentration(i_lev)
6303            rate_day(i_lev,i_react) = rate_day(i_lev,i_react) + 2.*rate_local/nbr_pdt
6304            i_react=i_react+1
6305                i_v=i_v+1
6306!===============================
6307!--- 50 c002: o + oh -> o2 + h
6308!===============================
6309            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_s2)*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!--- 51 c003: h + o3 -> oh + o2
6315!===============================
6316            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_h)*concentration(i_lev) &
6317            *traceur(i_lev,i_o3)*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!--- 52 c004: h + ho2 -> oh + oh
6323!===============================
6324            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_h)*concentration(i_lev) &
6325            *traceur(i_lev,i_ho2)*concentration(i_lev)
6326            rate_day(i_lev,i_react) = rate_day(i_lev,i_react) + 2.*rate_local/nbr_pdt
6327            i_react=i_react+1
6328                i_v=i_v+1
6329!===============================
6330!--- 53 c005: h + ho2 -> h2 + o2
6331!===============================
6332            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_h)*concentration(i_lev) &
6333            *traceur(i_lev,i_ho2)*concentration(i_lev)
6334            rate_day(i_lev,i_react) = rate_day(i_lev,i_react) + 2.*rate_local/nbr_pdt
6335            i_react=i_react+1
6336                i_v=i_v+1
6337!===============================
6338!--- 54 c006: h + ho2 -> h2o + o
6339!===============================
6340            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_h)*concentration(i_lev) &
6341            *traceur(i_lev,i_ho2)*concentration(i_lev)
6342            rate_day(i_lev,i_react) = rate_day(i_lev,i_react) + 2.*rate_local/nbr_pdt
6343            i_react=i_react+1
6344                i_v=i_v+1
6345!===============================
6346!--- 55 c007: oh + ho2 -> h2o + o2
6347!===============================
6348            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_oh)*concentration(i_lev) &
6349            *traceur(i_lev,i_ho2)*concentration(i_lev)
6350            rate_day(i_lev,i_react) = rate_day(i_lev,i_react) + 2.*rate_local/nbr_pdt
6351            i_react=i_react+1
6352                i_v=i_v+1
6353!===============================
6354!--- 56 c009: oh + h2o2 -> h2o + ho2
6355!===============================
6356            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_oh)*concentration(i_lev) &
6357            *traceur(i_lev,i_h2o2)*concentration(i_lev)
6358            rate_day(i_lev,i_react) = rate_day(i_lev,i_react) + 2.*rate_local/nbr_pdt
6359            i_react=i_react+1
6360                i_v=i_v+1
6361!===============================
6362!--- 57 c010: oh + h2 -> h2o + h
6363!===============================
6364            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_oh)*concentration(i_lev) &
6365            *traceur(i_lev,i_h2)*concentration(i_lev)
6366            rate_day(i_lev,i_react) = rate_day(i_lev,i_react) + 2.*rate_local/nbr_pdt
6367            i_react=i_react+1
6368                i_v=i_v+1
6369!===============================
6370!--- 58 c011: h + o2 + co2 -> ho2 + co2
6371!===============================
6372            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_o2)*concentration(i_lev) &
6373            *traceur(i_lev,i_h)*concentration(i_lev)
6374            rate_day(i_lev,i_react) = rate_day(i_lev,i_react) + 2.*rate_local/nbr_pdt
6375            i_react=i_react+1
6376                i_v=i_v+1
6377!===============================
6378!--- 59 c012: o + h2o2 -> oh + ho2
6379!===============================
6380            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_o)*concentration(i_lev) &
6381            *traceur(i_lev,i_h2o2)*concentration(i_lev)
6382            rate_day(i_lev,i_react) = rate_day(i_lev,i_react) + 2.*rate_local/nbr_pdt
6383            i_react=i_react+1
6384                i_v=i_v+1
6385!===============================
6386!--- 60 c014: oh + o3 -> ho2 + o2
6387!===============================
6388            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_oh)*concentration(i_lev) &
6389            *traceur(i_lev,i_o3)*concentration(i_lev)
6390            rate_day(i_lev,i_react) = rate_day(i_lev,i_react) + 2.*rate_local/nbr_pdt
6391            i_react=i_react+1
6392                i_v=i_v+1
6393!===============================
6394!--- 61 c015: ho2 + o3 -> oh + o2 + o2
6395!===============================
6396            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_o3)*concentration(i_lev) &
6397            *traceur(i_lev,i_ho2)*concentration(i_lev)
6398            rate_day(i_lev,i_react) = rate_day(i_lev,i_react) + 2.*rate_local/nbr_pdt
6399            i_react=i_react+1
6400                i_v=i_v+1
6401!===============================
6402!--- 62 e001: oh + co -> co2 + h
6403!===============================
6404            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_s2)*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!--- 63 e002: o + co + m -> co2 + m
6410!===============================
6411            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_o)*concentration(i_lev) &
6412            *traceur(i_lev,i_co)*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!--- 64 f001: hcl + o(1d) -> oh + cl
6418!===============================
6419            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_hcl)*concentration(i_lev) &
6420            *traceur(i_lev,i_o1d)*concentration(i_lev)
6421            rate_day(i_lev,i_react) = rate_day(i_lev,i_react) + 2.*rate_local/nbr_pdt
6422            i_react=i_react+1
6423                i_v=i_v+1
6424!===============================
6425!--- 65 f002: hcl + o(1d) -> h + clo
6426!===============================
6427            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_hcl)*concentration(i_lev) &
6428            *traceur(i_lev,i_o1d)*concentration(i_lev)
6429            rate_day(i_lev,i_react) = rate_day(i_lev,i_react) + 2.*rate_local/nbr_pdt
6430            i_react=i_react+1
6431                i_v=i_v+1
6432!===============================
6433!--- 66 f003: hcl + o -> oh + cl
6434!===============================
6435            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_hcl)*concentration(i_lev) &
6436            *traceur(i_lev,i_o)*concentration(i_lev)
6437            rate_day(i_lev,i_react) = rate_day(i_lev,i_react) + 2.*rate_local/nbr_pdt
6438            i_react=i_react+1
6439                i_v=i_v+1
6440!===============================
6441!--- 67 f004: hcl + oh -> h2o + cl
6442!===============================
6443            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_hcl)*concentration(i_lev) &
6444            *traceur(i_lev,i_oh)*concentration(i_lev)
6445            rate_day(i_lev,i_react) = rate_day(i_lev,i_react) + 2.*rate_local/nbr_pdt
6446            i_react=i_react+1
6447                i_v=i_v+1
6448!===============================
6449!--- 68 f005: clo + o -> cl + o2
6450!===============================
6451            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_clo)*concentration(i_lev) &
6452            *traceur(i_lev,i_o)*concentration(i_lev)
6453            rate_day(i_lev,i_react) = rate_day(i_lev,i_react) + 2.*rate_local/nbr_pdt
6454            i_react=i_react+1
6455                i_v=i_v+1
6456!===============================
6457!--- 69 f006: clo + oh -> cl + ho2
6458!===============================
6459            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_clo)*concentration(i_lev) &
6460            *traceur(i_lev,i_oh)*concentration(i_lev)
6461            rate_day(i_lev,i_react) = rate_day(i_lev,i_react) + 2.*rate_local/nbr_pdt
6462            i_react=i_react+1
6463                i_v=i_v+1
6464!===============================
6465!--- 70 f007: clo + oh -> hcl + o2
6466!===============================
6467            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_clo)*concentration(i_lev) &
6468            *traceur(i_lev,i_oh)*concentration(i_lev)
6469            rate_day(i_lev,i_react) = rate_day(i_lev,i_react) + 2.*rate_local/nbr_pdt
6470            i_react=i_react+1
6471                i_v=i_v+1
6472!===============================
6473!--- 71 f008: cl + h2 -> hcl + h
6474!===============================
6475            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_cl)*concentration(i_lev) &
6476            *traceur(i_lev,i_h2)*concentration(i_lev)
6477            rate_day(i_lev,i_react) = rate_day(i_lev,i_react) + 2.*rate_local/nbr_pdt
6478            i_react=i_react+1
6479                i_v=i_v+1
6480!===============================
6481!--- 72 f009: cl + o3 -> clo + o2
6482!===============================
6483            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_cl)*concentration(i_lev) &
6484            *traceur(i_lev,i_o3)*concentration(i_lev)
6485            rate_day(i_lev,i_react) = rate_day(i_lev,i_react) + 2.*rate_local/nbr_pdt
6486            i_react=i_react+1
6487                i_v=i_v+1
6488!===============================
6489!--- 73 f010: cl + ho2 -> clo + oh
6490!===============================
6491            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_cl)*concentration(i_lev) &
6492            *traceur(i_lev,i_ho2)*concentration(i_lev)
6493            rate_day(i_lev,i_react) = rate_day(i_lev,i_react) + 2.*rate_local/nbr_pdt
6494            i_react=i_react+1
6495                i_v=i_v+1
6496!===============================
6497!--- 74 f011: cl + ho2 -> hcl + o2
6498!===============================
6499            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_cl)*concentration(i_lev) &
6500            *traceur(i_lev,i_ho2)*concentration(i_lev)
6501            rate_day(i_lev,i_react) = rate_day(i_lev,i_react) + 2.*rate_local/nbr_pdt
6502            i_react=i_react+1
6503                i_v=i_v+1
6504!===============================
6505!--- 75 f012: cl + h2o2 -> hcl + ho2
6506!===============================
6507            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_cl)*concentration(i_lev) &
6508            *traceur(i_lev,i_h2o2)*concentration(i_lev)
6509            rate_day(i_lev,i_react) = rate_day(i_lev,i_react) + 2.*rate_local/nbr_pdt
6510            i_react=i_react+1
6511                i_v=i_v+1
6512!===============================
6513!--- 76 f013: cl + co + co2 -> clco + co2
6514!===============================
6515            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_cl)*concentration(i_lev) &
6516            *traceur(i_lev,i_co)*concentration(i_lev)
6517            rate_day(i_lev,i_react) = rate_day(i_lev,i_react) + 2.*rate_local/nbr_pdt
6518            i_react=i_react+1
6519                i_v=i_v+1
6520!===============================
6521!--- 77 f015: clco + o2 + m -> clco3 + m
6522!===============================
6523                rate_local = v4(i_lev,i_v)*traceur(i_lev,i_o2)*concentration(i_lev) &
6524            *traceur(i_lev,i_clco)*concentration(i_lev)
6525            rate_day(i_lev,i_react) = rate_day(i_lev,i_react) + 2.*rate_local/nbr_pdt
6526            i_react=i_react+1
6527                i_v=i_v+1
6528!===============================
6529!--- 78 & 79 f016: clco3 + cl -> cl + clo + co2
6530!===============================
6531!     decomposee en :
6532!     0.5 clco3 + 0.5 cl -> cl + 0.5 co2
6533!     0.5 clco3 + 0.5 cl -> clo + 0.5 co2
6534            rate_local = v4(i_lev,i_v)*0.25*traceur(i_lev,i_clco3)*concentration(i_lev) &
6535            *traceur(i_lev,i_cl)*concentration(i_lev)
6536            rate_day(i_lev,i_react) = rate_day(i_lev,i_react) + 2.*rate_local/nbr_pdt
6537            i_react=i_react+1
6538                i_v=i_v+1
6539           
6540            rate_local = v4(i_lev,i_v)*0.25*traceur(i_lev,i_clco3)*concentration(i_lev) &
6541            *traceur(i_lev,i_cl)*concentration(i_lev)
6542            rate_day(i_lev,i_react) = rate_day(i_lev,i_react) + 2.*rate_local/nbr_pdt
6543            i_react=i_react+1
6544                i_v=i_v+1
6545!===============================
6546!--- 80 & 81 f017: clco3 + o -> cl + o2 + co2
6547!===============================
6548!     decomposee en :
6549!     0.5 clco3 + 0.5 o -> cl
6550!     0.5 clco3 + 0.5 o -> o2 + co2
6551            rate_local = v4(i_lev,i_v)*0.25*traceur(i_lev,i_clco3)*concentration(i_lev) &
6552            *traceur(i_lev,i_o)*concentration(i_lev)
6553            rate_day(i_lev,i_react) = rate_day(i_lev,i_react) + 2.*rate_local/nbr_pdt
6554            i_react=i_react+1
6555                i_v=i_v+1
6556           
6557            rate_local = v4(i_lev,i_v)*0.25*traceur(i_lev,i_clco3)*concentration(i_lev) &
6558            *traceur(i_lev,i_o)*concentration(i_lev)
6559            rate_day(i_lev,i_react) = rate_day(i_lev,i_react) + 2.*rate_local/nbr_pdt
6560            i_react=i_react+1
6561                i_v=i_v+1
6562!===============================
6563!--- 82 f018: clo + ho2  -> hocl + o2
6564!===============================
6565            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_clo)*concentration(i_lev) &
6566            *traceur(i_lev,i_ho2)*concentration(i_lev) 
6567            rate_day(i_lev,i_react) = rate_day(i_lev,i_react) + 2.*rate_local/nbr_pdt
6568            i_react=i_react+1
6569                i_v=i_v+1
6570!===============================
6571!--- 83 f019: oh + hocl -> h2o + clo
6572!===============================
6573            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_oh)*concentration(i_lev) &
6574            *traceur(i_lev,i_hocl)*concentration(i_lev) 
6575            rate_day(i_lev,i_react) = rate_day(i_lev,i_react) + 2.*rate_local/nbr_pdt
6576            i_react=i_react+1
6577                i_v=i_v+1
6578!===============================
6579!--- 84 f020: o + hocl -> oh + clo
6580!===============================
6581            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_hocl)*concentration(i_lev) &
6582            *traceur(i_lev,i_o)*concentration(i_lev) 
6583            rate_day(i_lev,i_react) = rate_day(i_lev,i_react) + 2.*rate_local/nbr_pdt
6584            i_react=i_react+1
6585                i_v=i_v+1
6586!===============================
6587!--- 85 f022: clco + o -> cl + co2
6588!===============================
6589            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_clco)*concentration(i_lev) &
6590            *traceur(i_lev,i_o)*concentration(i_lev) 
6591            rate_day(i_lev,i_react) = rate_day(i_lev,i_react) + 2.*rate_local/nbr_pdt
6592            i_react=i_react+1
6593                i_v=i_v+1
6594!===============================
6595!--- 86 f023: cl2 + o(1d) -> cl + clo
6596!===============================
6597            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_cl2)*concentration(i_lev) &
6598            *traceur(i_lev,i_o1d)*concentration(i_lev) 
6599            rate_day(i_lev,i_react) = rate_day(i_lev,i_react) + 2.*rate_local/nbr_pdt
6600            i_react=i_react+1
6601                i_v=i_v+1
6602!===============================
6603!--- 87 f024: cl2 + h  -> hcl + cl
6604!==============================
6605            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_cl2)*concentration(i_lev) &
6606            *traceur(i_lev,i_h)*concentration(i_lev) 
6607            rate_day(i_lev,i_react) = rate_day(i_lev,i_react) + 2.*rate_local/nbr_pdt
6608            i_react=i_react+1
6609                i_v=i_v+1
6610!===============================
6611!--- 88 f025: cl + clco  -> cl2 + co
6612!===============================
6613            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_cl)*concentration(i_lev) &
6614            *traceur(i_lev,i_clco)*concentration(i_lev) 
6615            rate_day(i_lev,i_react) = rate_day(i_lev,i_react) + 2.*rate_local/nbr_pdt
6616            i_react=i_react+1
6617                i_v=i_v+1
6618!===============================
6619!--- 89 f027: cl + so2 + co2  -> clso2 + co2
6620!===============================
6621            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_so2)*concentration(i_lev) &
6622            *traceur(i_lev,i_cl)*concentration(i_lev) 
6623            rate_day(i_lev,i_react) = rate_day(i_lev,i_react) + 2.*rate_local/nbr_pdt
6624            i_react=i_react+1
6625                i_v=i_v+1
6626!===============================
6627!--- 90 f028: clso2 + o  -> so2 + clo
6628!===============================
6629            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_clso2)*concentration(i_lev) &
6630            *traceur(i_lev,i_o)*concentration(i_lev) 
6631            rate_day(i_lev,i_react) = rate_day(i_lev,i_react) + 2.*rate_local/nbr_pdt
6632            i_react=i_react+1
6633                i_v=i_v+1
6634!===============================
6635!--- 91 f029: clso2 + h  -> so2 + hcl
6636!===============================
6637            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_clso2)*concentration(i_lev) &
6638            *traceur(i_lev,i_h)*concentration(i_lev) 
6639            rate_day(i_lev,i_react) = rate_day(i_lev,i_react) + 2.*rate_local/nbr_pdt
6640            i_react=i_react+1
6641                i_v=i_v+1
6642!===============================
6643!--- 92 f031: cl + o + co2  -> clo + co2
6644!===============================
6645            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_cl)*concentration(i_lev) &
6646            *traceur(i_lev,i_o)*concentration(i_lev) 
6647            rate_day(i_lev,i_react) = rate_day(i_lev,i_react) + 2.*rate_local/nbr_pdt
6648            i_react=i_react+1
6649                i_v=i_v+1
6650!===============================
6651!--- 93 f032: cl2 + o -> clo + cl
6652!===============================
6653            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_cl2)*concentration(i_lev) &
6654            *traceur(i_lev,i_o)*concentration(i_lev) 
6655            rate_day(i_lev,i_react) = rate_day(i_lev,i_react) + 2.*rate_local/nbr_pdt
6656            i_react=i_react+1
6657                i_v=i_v+1
6658!===============================
6659!--- 94 f033: clco + oh -> hocl + co
6660!===============================
6661            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_clco)*concentration(i_lev) &
6662            *traceur(i_lev,i_oh)*concentration(i_lev) 
6663            rate_day(i_lev,i_react) = rate_day(i_lev,i_react) + 2.*rate_local/nbr_pdt
6664            i_react=i_react+1
6665                i_v=i_v+1
6666!===============================
6667!--- 95 f034: cl2 + oh -> cl + hocl
6668!===============================
6669            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_cl2)*concentration(i_lev) &
6670            *traceur(i_lev,i_oh)*concentration(i_lev) 
6671            rate_day(i_lev,i_react) = rate_day(i_lev,i_react) + 2.*rate_local/nbr_pdt
6672            i_react=i_react+1
6673                i_v=i_v+1
6674!===============================
6675!--- 96 f035: clco + o -> co + clo
6676!===============================
6677            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_clco)*concentration(i_lev) &
6678            *traceur(i_lev,i_o)*concentration(i_lev) 
6679            rate_day(i_lev,i_react) = rate_day(i_lev,i_react) + 2.*rate_local/nbr_pdt
6680            i_react=i_react+1
6681                i_v=i_v+1
6682!===============================
6683!--- 97 f036: clco + cl2 -> cocl2 + cl
6684!===============================
6685            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_cl2)*concentration(i_lev) &
6686            *traceur(i_lev,i_clco)*concentration(i_lev) 
6687            rate_day(i_lev,i_react) = rate_day(i_lev,i_react) + 2.*rate_local/nbr_pdt
6688            i_react=i_react+1
6689                i_v=i_v+1
6690!===============================
6691!--- 98 f037: hcl + h -> h2 + cl
6692!===============================
6693            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_hcl)*concentration(i_lev) &
6694            *traceur(i_lev,i_h)*concentration(i_lev) 
6695            rate_day(i_lev,i_react) = rate_day(i_lev,i_react) + 2.*rate_local/nbr_pdt
6696            i_react=i_react+1
6697                i_v=i_v+1
6698!===============================
6699!--- 99 f038: clco + h -> hcl + co
6700!===============================
6701            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_s2)*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!--- 100 f039: cl + h + m -> hcl + m
6707!===============================
6708            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_cl)*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!--- 101 g001: s + o2 -> so + o
6715!===============================
6716            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_s)*concentration(i_lev) &
6717            *traceur(i_lev,i_o2)*concentration(i_lev) 
6718            rate_day(i_lev,i_react) = rate_day(i_lev,i_react) + 2.*rate_local/nbr_pdt
6719            i_react=i_react+1
6720                i_v=i_v+1
6721!===============================
6722!--- 102 g002: s + o3 -> so + o2
6723!===============================
6724            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_s)*concentration(i_lev) &
6725            *traceur(i_lev,i_o3)*concentration(i_lev) 
6726            rate_day(i_lev,i_react) = rate_day(i_lev,i_react) + 2.*rate_local/nbr_pdt
6727            i_react=i_react+1
6728                i_v=i_v+1
6729!===============================
6730!--- 103 g003: so + o2 -> so2 + o
6731!===============================
6732             rate_local = v4(i_lev,i_v)*traceur(i_lev,i_so)*concentration(i_lev) &
6733            *traceur(i_lev,i_o2)*concentration(i_lev) 
6734            rate_day(i_lev,i_react) = rate_day(i_lev,i_react) + 2.*rate_local/nbr_pdt
6735            i_react=i_react+1
6736                i_v=i_v+1
6737!===============================
6738!--- 104 g004: so + o3 -> so2 + o2
6739!===============================
6740            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_so)*concentration(i_lev) &
6741            *traceur(i_lev,i_o3)*concentration(i_lev) 
6742            rate_day(i_lev,i_react) = rate_day(i_lev,i_react) + 2.*rate_local/nbr_pdt
6743            i_react=i_react+1
6744                i_v=i_v+1
6745!===============================
6746!--- 105 g005: so + oh -> so2 + h
6747!===============================
6748            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_so)*concentration(i_lev) &
6749            *traceur(i_lev,i_oh)*concentration(i_lev) 
6750            rate_day(i_lev,i_react) = rate_day(i_lev,i_react) + 2.*rate_local/nbr_pdt
6751            i_react=i_react+1
6752                i_v=i_v+1
6753!===============================
6754!--- 106 g006: s + oh -> so + h
6755!===============================
6756            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_s)*concentration(i_lev) &
6757            *traceur(i_lev,i_oh)*concentration(i_lev) 
6758            rate_day(i_lev,i_react) = rate_day(i_lev,i_react) + 2.*rate_local/nbr_pdt
6759            i_react=i_react+1
6760                i_v=i_v+1
6761!===============================
6762!--- 107 g007: so + o + co2 -> so2 + co2
6763!===============================
6764            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_so)*concentration(i_lev) &
6765            *traceur(i_lev,i_o)*concentration(i_lev) 
6766            rate_day(i_lev,i_react) = rate_day(i_lev,i_react) + 2.*rate_local/nbr_pdt
6767            i_react=i_react+1
6768                i_v=i_v+1
6769!===============================
6770!--- 108 g008: so + ho2 -> so2 + oh
6771!===============================
6772            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_so)*concentration(i_lev) &
6773            *traceur(i_lev,i_ho2)*concentration(i_lev) 
6774            rate_day(i_lev,i_react) = rate_day(i_lev,i_react) + 2.*rate_local/nbr_pdt
6775            i_react=i_react+1
6776                i_v=i_v+1
6777!===============================
6778!--- 109 g009: so2 + o + co2 -> so3 + co2
6779!===============================
6780            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_so2)*concentration(i_lev) &
6781            *traceur(i_lev,i_o)*concentration(i_lev) 
6782            rate_day(i_lev,i_react) = rate_day(i_lev,i_react) + 2.*rate_local/nbr_pdt
6783            i_react=i_react+1
6784                i_v=i_v+1
6785!===============================
6786!--- 110 g010: s + o + co2 -> so + co2
6787!===============================
6788            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_s)*concentration(i_lev) &
6789            *traceur(i_lev,i_o)*concentration(i_lev) 
6790            rate_day(i_lev,i_react) = rate_day(i_lev,i_react) + 2.*rate_local/nbr_pdt
6791            i_react=i_react+1
6792                i_v=i_v+1
6793!===============================
6794!--- 111 g011: so3 + h2o -> h2so4
6795!===============================
6796            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_so3)*concentration(i_lev) &
6797            *traceur(i_lev,i_h2o)*concentration(i_lev) 
6798            rate_day(i_lev,i_react) = rate_day(i_lev,i_react) + 2.*rate_local/nbr_pdt
6799            i_react=i_react+1
6800                i_v=i_v+1
6801!===============================
6802!--- 112 g012: so + clo -> so2 + cl
6803!===============================
6804            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_so)*concentration(i_lev) &
6805            *traceur(i_lev,i_clo)*concentration(i_lev) 
6806            rate_day(i_lev,i_react) = rate_day(i_lev,i_react) + 2.*rate_local/nbr_pdt
6807            i_react=i_react+1
6808                i_v=i_v+1
6809!===============================
6810!--- 113 g013: so + so3 -> so2 + so2
6811!===============================
6812            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_so)*concentration(i_lev) &
6813            *traceur(i_lev,i_so3)*concentration(i_lev) 
6814            rate_day(i_lev,i_react) = rate_day(i_lev,i_react) + 2.*rate_local/nbr_pdt
6815            i_react=i_react+1
6816                i_v=i_v+1
6817!===============================
6818!--- 114 g014: so3 + o -> so2 + o2
6819!===============================
6820            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_so3)*concentration(i_lev) &
6821            *traceur(i_lev,i_o)*concentration(i_lev) 
6822            rate_day(i_lev,i_react) = rate_day(i_lev,i_react) + 2.*rate_local/nbr_pdt
6823            i_react=i_react+1
6824                i_v=i_v+1
6825!===============================
6826!--- 115 & 116 g017: clco3 + so -> cl + so2 + co2
6827!===============================
6828!     decomposee en :
6829!     0.5 clco3 + 0.5 so -> cl
6830!     0.5 clco3 + 0.5 so -> so2 + co2
6831            rate_local = v4(i_lev,i_v)*0.25*traceur(i_lev,i_clco3)*concentration(i_lev) &
6832            *traceur(i_lev,i_so)*concentration(i_lev) 
6833            rate_day(i_lev,i_react) = rate_day(i_lev,i_react) + 2.*rate_local/nbr_pdt
6834            i_react=i_react+1
6835                i_v=i_v+1
6836           
6837            rate_local = v4(i_lev,i_v)*0.25*traceur(i_lev,i_clco3)*concentration(i_lev) &
6838            *traceur(i_lev,i_so)*concentration(i_lev) 
6839            rate_day(i_lev,i_react) = rate_day(i_lev,i_react) + 2.*rate_local/nbr_pdt
6840            i_react=i_react+1
6841                i_v=i_v+1
6842!===============================
6843!--- 117 g018: s + co + co2 -> ocs + co2
6844!===============================
6845            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_s)*concentration(i_lev) &
6846            *traceur(i_lev,i_co)*concentration(i_lev) 
6847            rate_day(i_lev,i_react) = rate_day(i_lev,i_react) + 2.*rate_local/nbr_pdt
6848            i_react=i_react+1
6849                i_v=i_v+1
6850!===============================
6851!--- 118 g019: clco + s -> ocs + cl
6852!===============================
6853            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_clco)*concentration(i_lev) &
6854            *traceur(i_lev,i_s)*concentration(i_lev) 
6855            rate_day(i_lev,i_react) = rate_day(i_lev,i_react) + 2.*rate_local/nbr_pdt
6856            i_react=i_react+1
6857                i_v=i_v+1
6858!===============================
6859!--- 119 g020: so2 + oh + co2 -> hso3 + co2
6860!===============================
6861            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_so2)*concentration(i_lev) &
6862            *traceur(i_lev,i_oh)*concentration(i_lev) 
6863            rate_day(i_lev,i_react) = rate_day(i_lev,i_react) + 2.*rate_local/nbr_pdt
6864            i_react=i_react+1
6865                i_v=i_v+1
6866!===============================
6867!--- 120 g021: hso3 + o2 -> ho2 + so3
6868!===============================
6869            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_o2)*concentration(i_lev) &
6870            *traceur(i_lev,i_hso3)*concentration(i_lev) 
6871            rate_day(i_lev,i_react) = rate_day(i_lev,i_react) + 2.*rate_local/nbr_pdt
6872            i_react=i_react+1
6873                i_v=i_v+1
6874!===============================
6875!--- 121 g024: s2 + o -> so + s
6876!===============================
6877            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_s2)*concentration(i_lev) &
6878            *traceur(i_lev,i_o)*concentration(i_lev) 
6879            rate_day(i_lev,i_react) = rate_day(i_lev,i_react) + 2.*rate_local/nbr_pdt
6880            i_react=i_react+1
6881                i_v=i_v+1
6882!===============================
6883!--- 122 g025: s + ocs -> s2 +  co
6884!===============================
6885            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_s)*concentration(i_lev) &
6886            *traceur(i_lev,i_ocs)*concentration(i_lev) 
6887            rate_day(i_lev,i_react) = rate_day(i_lev,i_react) + 2.*rate_local/nbr_pdt
6888            i_react=i_react+1
6889                i_v=i_v+1
6890!===============================
6891!--- 123 g026: ocs + o -> so + co
6892!===============================
6893            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_o)*concentration(i_lev) &
6894            *traceur(i_lev,i_ocs)*concentration(i_lev) 
6895            rate_day(i_lev,i_react) = rate_day(i_lev,i_react) + 2.*rate_local/nbr_pdt
6896            i_react=i_react+1
6897                i_v=i_v+1
6898!===============================
6899!--- 124 g027: s + so3 -> so2 +  so
6900!===============================
6901            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_s)*concentration(i_lev) &
6902            *traceur(i_lev,i_so3)*concentration(i_lev) 
6903            rate_day(i_lev,i_react) = rate_day(i_lev,i_react) + 2.*rate_local/nbr_pdt
6904            i_react=i_react+1
6905                i_v=i_v+1
6906!===============================
6907!--- 125 g028: s + ho2 -> so +  oh
6908!===============================
6909            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_s)*concentration(i_lev) &
6910            *traceur(i_lev,i_ho2)*concentration(i_lev) 
6911            rate_day(i_lev,i_react) = rate_day(i_lev,i_react) + 2.*rate_local/nbr_pdt
6912            i_react=i_react+1
6913                i_v=i_v+1
6914!===============================
6915!--- 126 g029: s + clo -> so +  cl
6916!===============================
6917            rate_local = v4(i_lev,i_v)*traceur(i_lev,i_s)*concentration(i_lev) &
6918            *traceur(i_lev,i_clo)*concentration(i_lev) 
6919            rate_day(i_lev,i_react) = rate_day(i_lev,i_react) + 2.*rate_local/nbr_pdt
6920            i_react=i_react+1
6921                i_v=i_v+1
6922           END DO
6923         END IF
6924         cpt_time_rate = cpt_time_rate + 1
6925     
6926      END IF
6927           
6928      IF (cpt_time .EQ. (time_tot+nbr_pdt)) THEN
6929               OPEN(100,file='profile_rate_day.csv')
6930               DO i_lev=1,n_lev
6931               write (100,"(128(e15.8,','))")pres(i_lev), temperature(i_lev), (rate_day(i_lev,i_react),i_react=1,126)
6932               END DO
6933               
6934               OPEN(101,file='profile_rate_night.csv')
6935               DO i_lev=1,n_lev
6936               write (101,"(128(e15.8,','))") pres(i_lev), temperature(i_lev), (rate_night(i_lev,i_react),i_react=1,126)
6937               END DO
6938               
6939               OPEN(102,file='profile_rate_fullday.csv')
6940               rate_day=(rate_day+rate_night)/2.
6941               DO i_lev=1,n_lev
6942               write (102,"(128(e15.8,','))") pres(i_lev), temperature(i_lev), (rate_day(i_lev,i_react),i_react=1,126)
6943               END DO
6944               
6945               PRINT*,"pression top",pres(n_lev)
6946               PRINT*,"temp top",temperature(n_lev)
6947               
6948      END IF
6949     
6950      cpt_time = cpt_time + 1
6951     
6952      END     
Note: See TracBrowser for help on using the repository browser.