Changeset 3689 for trunk/LMDZ.VENUS


Ignore:
Timestamp:
Mar 17, 2025, 4:36:24 PM (3 months ago)
Author:
flefevre
Message:

Implementation of SO dimer photochemistry. From the work of Joanna Egan et al. (GRL, e2024GL113090, 2015). Many thanks Jo!
Three extra species: osso_cis, osso_trans, s2o2_cyc
One less species: s2o2

Extra OSSO UV cross_section file: OSSO_cross_sections_formatted.txt (to be placed in INPUT/cross_sections)
download link : https://owncloud.latmos.ipsl.fr/index.php/s/7kmP3ANi9o37PoZ

Location:
trunk/LMDZ.VENUS
Files:
2 deleted
7 edited

Legend:

Unmodified
Added
Removed
  • trunk/LMDZ.VENUS/deftank/traceur-chemistry-IONOSPHERE.def

    r2836 r3689  
    252510 10 so2
    262610 10 so3
    27 10 10 s2o2
     2710 10 osso_cis
     2810 10 osso_trans
     2910 10 s2o2_cyc
    283010 10 ocs
    293110 10 hso3
  • trunk/LMDZ.VENUS/deftank/traceur-chemistry.def

    r1782 r3689  
    1 35
     142
    2210 10 co2
    3310 10 co
     
    252510 10 so2
    262610 10 so3
    27 10 10 s2o2
     2710 10 osso_cis
     2810 10 osso_trans
     2910 10 s2o2_cyc
    283010 10 ocs
    293110 10 hso3
     
    333510 10 oscl
    343610 10 n2
     3710 10 he
     3810 10 n
     3910 10 n2d
     4010 10 no
     4110 10 no2
    354210 10 h2oliq
    364310 10 h2so4liq
    37 
  • trunk/LMDZ.VENUS/libf/phyvenus/chemparam_mod.F90

    r3323 r3689  
    1919                 i_cl2, i_hcl, i_hocl, i_clco, i_clco3,  &
    2020                 i_cocl2, i_s, i_so, i_so2, i_so3,       &
    21                  i_s2o2, i_ocs, i_hso3, i_h2so4, i_s2,   &
     21                 i_osso_cis, i_osso_trans, i_s2o2_cyc,   &
     22                 i_ocs, i_hso3, i_h2so4, i_s2,           &
    2223                 i_clso2, i_oscl, i_n2, i_he, i_n, i_no, &
    2324                 i_no2, i_n2d,                           &
     
    15331534      i_so2      = 0
    15341535      i_so3      = 0
    1535       i_s2o2     = 0
     1536      i_osso_cis = 0
     1537      i_osso_trans = 0
     1538      i_s2o2_cyc = 0
    15361539      i_ocs      = 0
    15371540      i_hso3     = 0
     
    17011704               m_tr(i_so3) = 80.063
    17021705               type_tr(i_so3) = 1
    1703             case('s2o2')
    1704                i_s2o2 = i
    1705                print*,'s2o2',i_s2o2
    1706                m_tr(i_s2o2)= 96.1288
    1707                type_tr(i_s2o2) = 1
     1706            case('osso_cis')
     1707               i_osso_cis = i
     1708               print*,'osso_cis',i_osso_cis
     1709               m_tr(i_osso_cis)= 96.1288
     1710               type_tr(i_osso_cis) = 1
     1711            case('osso_trans')
     1712               i_osso_trans = i
     1713               print*,'osso_trans',i_osso_trans
     1714               m_tr(i_osso_trans)= 96.1288
     1715               type_tr(i_osso_trans) = 1
     1716            case('s2o2_cyc')
     1717               i_s2o2_cyc = i
     1718               print*,'s2o2_cyc',i_s2o2_cyc
     1719               m_tr(i_s2o2_cyc)= 96.1288
     1720               type_tr(i_s2o2_cyc) = 1
    17081721            case('ocs')
    17091722               i_ocs = i
  • trunk/LMDZ.VENUS/libf/phyvenus/photochemistry_venus.F90

    r3675 r3689  
    2929use param_v4_h, only: jion
    3030use iono_h, only: phdisrate
    31 !nphot ! number of photodissociations, include in "use photolysis_mod" 
    3231     
    3332implicit none
     
    207206if (ok_jonline) then
    208207   if (sza_input <= 95.) then ! day at 300 km
    209       call photolysis_online(nz, nb_phot_max, zlocal, p,                  &
    210                              t, mumean, i_co2,i_co, i_o, i_o1d,           &
    211                              i_o2, i_o3, i_h2, i_oh, i_ho2, i_h2o2, i_h2o,&
    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,              &
    215                              nesp, tr, sza_input, dist_sol, v_phot)
     208      call photolysis_online(nz, nb_phot_max,                                       &
     209                             zlocal, p, t, mumean,                                  &
     210                             i_co2, i_co, i_o, i_o1d, i_o2, i_o3, i_h2,             &
     211                             i_oh, i_ho2, i_h2o2, i_h2o, i_h, i_hcl,                &
     212                             i_cl, i_clo, i_cl2, i_hocl, i_so2, i_so, i_so3, i_s2,  &
     213                             i_osso_cis, i_osso_trans, i_s2o2_cyc,                  &
     214                             i_ocs, i_cocl2, i_h2so4,                               &
     215                             i_no2, i_no, i_n2, i_n2d,                              &
     216                             nesp, tr, sza_input, dist_sol, v_phot)                 
    216217
    217218      !Calculation of photoionization rates, if needed
     
    530531indice_phot(nb_phot) = z3spec(1.0, i_h2, 2.0, i_h, 0.0, i_dummy)
    531532
    532 
    533533!===========================================================
    534534!      H2O + hv -> H + OH
     
    580580
    581581!===========================================================
     582!      ClO + hv -> Cl + O
     583!===========================================================
     584
     585nb_phot = nb_phot + 1
     586
     587indice_phot(nb_phot) = z3spec(1.0, i_clo, 1.0, i_cl, 1.0, i_o)
     588
     589!===========================================================
    582590!      SO2 + hv -> SO + O
    583591!===========================================================
     
    612620
    613621!===========================================================
    614 !      ClO + hv -> Cl + O
     622!       OSSO_cis + hv -> SO + SO
    615623!===========================================================
    616624
    617625nb_phot = nb_phot + 1
    618626
    619 indice_phot(nb_phot) = z3spec(1.0, i_clo, 1.0, i_cl, 1.0, i_o)
     627indice_phot(nb_phot) = z3spec(1.0, i_osso_cis, 2.0, i_so, 0.0, i_dummy)
     628
     629!===========================================================
     630!       OSSO_trans + hv -> SO + SO
     631!===========================================================
     632
     633nb_phot = nb_phot + 1
     634
     635indice_phot(nb_phot) = z3spec(1.0, i_osso_trans, 2.0, i_so, 0.0, i_dummy)
     636
     637!===========================================================
     638!       S2O2_cyc + hv -> SO + SO
     639!===========================================================
     640
     641nb_phot = nb_phot + 1
     642
     643indice_phot(nb_phot) = z3spec(1.0, i_s2o2_cyc, 2.0, i_so, 0.0, i_dummy)
    620644
    621645!===========================================================
     
    15891613
    15901614!===========================================================
    1591 !      g015 : SO + SO + CO2 -> S2O2 + CO2
    1592 !===========================================================
    1593 
    1594 nb_reaction_3 = nb_reaction_3 + 1
    1595 
    1596 indice_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 
    1602 nb_phot = nb_phot + 1
    1603 
    1604 indice_phot(nb_phot) = z3spec(1.0, i_s2o2, 2.0, i_so, 0.0, i_dummy)
    1605 
    1606 !===========================================================
    16071615!      g017 : 0.5 ClCO3 + 0.5 SO -> Cl 
    16081616!             0.5 ClCO3 + 0.5 SO -> SO2 + CO2
     
    17141722
    17151723!===========================================================
    1716 !      g030: so3 + ocs -> s2o2 +  co2
    1717 !===========================================================
    1718 
    1719 nb_reaction_4 = nb_reaction_4 + 1
    1720 
    1721 indice_4(nb_reaction_4) = z4spec(1.0, i_so3, 1.0, i_ocs, 1.0, i_s2o2, 1.0, i_co2)
    1722 
    1723 !===========================================================
    1724 !      g031: s2o2 + ocs -> co + so2 + s2
    1725 !===========================================================
    1726 !       decomposee en
    1727 !       0.5 s2o2 + 0.5 ocs -> co
    1728 !       0.5 s2o2 + 0.5 ocs -> so2 + s2
    1729 !===========================================================
    1730 
    1731 nb_reaction_4 = nb_reaction_4 + 1
    1732 
    1733 indice_4(nb_reaction_4) = z4spec(0.5, i_s2o2, 0.5, i_ocs, 1.0, i_co, 0.0, i_dummy)
    1734 
    1735 nb_reaction_4 = nb_reaction_4 + 1
    1736 
    1737 indice_4(nb_reaction_4) = z4spec(0.5, i_s2o2, 0.5, i_ocs, 1.0, i_so2, 1.0, i_s2)
    1738 
    1739 !===========================================================
    17401724!      g032: so + so -> so2 + s
    17411725!===========================================================
     
    17441728
    17451729indice_3(nb_reaction_3) = z3spec(2.0, i_so, 1.0, i_so2, 1.0, i_s)
     1730
     1731!===========================================================
     1732!      g033 : SO + SO + CO2 -> OSSO_cis + CO2
     1733!===========================================================
     1734
     1735nb_reaction_3 = nb_reaction_3 + 1
     1736
     1737indice_3(nb_reaction_3) = z3spec(2.0, i_so, 1.0, i_osso_cis, 0.0, i_dummy)
     1738
     1739!===========================================================
     1740!      g034: OSSO_cis + CO2 -> SO + SO + CO2
     1741!===========================================================
     1742
     1743nb_phot = nb_phot + 1
     1744
     1745indice_phot(nb_phot) = z3spec(1.0, i_osso_cis, 2.0, i_so, 0.0, i_dummy)
     1746
     1747!===========================================================
     1748!      g035 : SO + SO + CO2 -> OSSO_trans + CO2
     1749!===========================================================
     1750
     1751nb_reaction_3 = nb_reaction_3 + 1
     1752
     1753indice_3(nb_reaction_3) = z3spec(2.0, i_so, 1.0, i_osso_trans, 0.0, i_dummy)
     1754
     1755!===========================================================
     1756!      g036: OSSO_trans + CO2 -> SO + SO + CO2
     1757!===========================================================
     1758
     1759nb_phot = nb_phot + 1
     1760
     1761indice_phot(nb_phot) = z3spec(1.0, i_osso_trans, 2.0, i_so, 0.0, i_dummy)
     1762
     1763!===========================================================
     1764!      g037 : SO + SO + CO2 -> S2O2_cyc + CO2
     1765!===========================================================
     1766
     1767nb_reaction_3 = nb_reaction_3 + 1
     1768
     1769indice_3(nb_reaction_3) = z3spec(2.0, i_so, 1.0, i_s2o2_cyc, 0.0, i_dummy)
     1770
     1771!===========================================================
     1772!      g038: S2O2_cyc + CO2 -> SO + SO + CO2
     1773!===========================================================
     1774
     1775nb_phot = nb_phot + 1
     1776
     1777indice_phot(nb_phot) = z3spec(1.0, i_s2o2_cyc, 2.0, i_so, 0.0, i_dummy)
     1778
     1779!===========================================================
     1780!      g040: OSSO_cis + O -> SO2 + SO
     1781!===========================================================
     1782
     1783nb_reaction_4 = nb_reaction_4 + 1
     1784
     1785indice_4(nb_reaction_4) = z4spec(1.0, i_osso_cis, 1.0, i_o, 1.0, i_so2, 1.0, i_so)
     1786
     1787!===========================================================
     1788!      g042: OSSO_trans + O -> SO2 + SO
     1789!===========================================================
     1790
     1791nb_reaction_4 = nb_reaction_4 + 1
     1792
     1793indice_4(nb_reaction_4) = z4spec(1.0, i_osso_trans, 1.0, i_o, 1.0, i_so2, 1.0, i_so)
     1794
     1795!===========================================================
     1796!      g044: S2O2_cyc + O -> SO2 + SO
     1797!===========================================================
     1798
     1799nb_reaction_4 = nb_reaction_4 + 1
     1800
     1801indice_4(nb_reaction_4) = z4spec(1.0, i_s2o2_cyc, 1.0, i_o, 1.0, i_so2, 1.0, i_so)
    17461802
    17471803!===========================================================
     
    26062662                       g015, g016, g017, g018, g019, g020, g021,   &
    26072663                       g022, g023, g024, g025, g026, g027, g028,   &
    2608                        g029, g030, g031, g032,                     &
     2664                       g029, g030, g031, g032, g033, g034, g035,   &
     2665                       g036, g037, g038, g039, g040, g041, g042,   &
     2666                       g043, g044, g045,                           &
    26092667                       h001, h002, h003,                           &
    26102668                       i001, i002, i003, i004, i005, i006,         &
     
    30953153     nb_phot = nb_phot + 1
    30963154     v_phot(:,nb_phot) = d014(:)*c(:,i_co)
    3097 
    30983155!----------------------------------------------------------------------
    30993156!        reactions des composes carbones
     
    37073764      v_4(:,nb_reaction_4) = g014(:)
    37083765
    3709 !---  g015: so + so + co2 -> s2o2 + co2
    3710 
    3711 !     herron and huie, chem. phys. lett., 1980.
    3712 
    3713       do iz = 1,nz
    3714          ak0 = 2.5*4.4E-31
    3715          ak1 = 1.0E-11
    3716 
    3717          rate = (ak0*conc(iz))/(1. + ak0*conc(iz)/ak1)
    3718          xpo = 1./(1. + alog10((ak0*conc(iz))/ak1)**2)
    3719          g015(iz) = rate*0.6**xpo
    3720       end do
    3721 
    3722       nb_reaction_3 = nb_reaction_3 + 1
    3723       v_3(:,nb_reaction_3) = g015(:)
    3724 
    3725 !---  g016: s2o2 + co2 -> so + so + co2
    3726 
    3727 !     mills, phd, 1998
    3728 
    3729       deq(:) = 2.5*1.0E-28*exp(6000./t(:))
    3730 
    3731       g016(:) = g015(:)/(deq(:)*conc(:))
    3732 
    3733       nb_phot = nb_phot + 1
    3734       v_phot(:,nb_phot) = g016(:)*conc(:)
     3766!---  g015: free slot
     3767
     3768!---  g016: free slot
    37353769
    37363770!---  g017: clco3 + so -> cl + so2 + co2
     
    38763910      v_phot(:,nb_phot) = g029(:)*c(:,i_h2o)
    38773911     
    3878 !---  g030: so3 + ocs -> s2o2 +  co2
    3879 
    3880 !     krasnopolsky , 2007
    3881 
    3882       g030(:) = 1.0E-11*exp(-10000./t(:))
    3883      
    3884       nb_reaction_4 = nb_reaction_4 + 1
    3885       v_4(:,nb_reaction_4) = g030(:)
    3886      
    3887 !---  g031: s2o2 + ocs -> co + so2 + s2
    3888 
    3889 !     split into
    3890 !     0.5 s2o2 + 0.5 ocs -> co
    3891 !     0.5 s2o2 + 0.5 ocs -> so2 + s2
    3892 
    3893 !     krasnopolsky , 2007
    3894 
    3895       g031(:) = 1.0E-20
    3896      
    3897       nb_reaction_4 = nb_reaction_4 + 1
    3898       v_4(:,nb_reaction_4) = g031(:)
    3899      
    3900       nb_reaction_4 = nb_reaction_4 + 1
    3901       v_4(:,nb_reaction_4) = g031(:)
    3902 
    3903 !     g032: so + so -> so2 + s
     3912!---  g030: free slot
     3913
     3914!---  g031: free slot
     3915
     3916!---  g032: so + so -> so2 + s
    39043917
    39053918!     krasnopolsky, 2012
     
    39093922      nb_reaction_3 = nb_reaction_3 + 1
    39103923      v_3(:,nb_reaction_3) = g032(:)
     3924
     3925!---  g033: so + so + co2 -> osso_cis + co2
     3926                       
     3927!     Egan et al., 2025 
     3928                       
     3929      do iz = 1,nz   
     3930         ak0 = 2.5*1.54e-31*(t(iz)/298.)**(-3.36)
     3931         ak1 = 1.1e-10*(t(iz)/298.)**0.167
     3932         rate = (ak0*conc(iz))/(1. + ak0*conc(iz)/ak1)
     3933         xpo = 1./(1. + alog10((ak0*conc(iz))/ak1)**2)
     3934         g033(iz) = rate*0.42**xpo
     3935      end do
     3936
     3937      nb_reaction_3 = nb_reaction_3 + 1
     3938      v_3(:,nb_reaction_3) = g033(:)
    39113939           
     3940!---  g034: osso_cis + co2 -> so + so + co2
     3941
     3942!     Egan et al., 2025
     3943
     3944      deq(:) = 1.02e-27*exp(17231./t(:))
     3945      g034(:) = g033(:)/(deq(:)*conc(:))
     3946
     3947      nb_phot = nb_phot + 1
     3948      v_phot(:,nb_phot) = g034(:)*conc(:)
     3949
     3950!---  g035: so + so + co2 -> osso_trans + co2
     3951                       
     3952!     Egan et al., 2025 
     3953                       
     3954      do iz = 1,nz   
     3955         ak0 = 2.5*1.13e-31*(t(iz)/298.)**(-3.38)
     3956         ak1 = 1.1e-10*(t(iz)/298.)**0.167
     3957         rate = (ak0*conc(iz))/(1. + ak0*conc(iz)/ak1)
     3958         xpo = 1./(1. + alog10((ak0*conc(iz))/ak1)**2)
     3959         g035(iz) = rate*0.42**xpo
     3960      end do
     3961
     3962      nb_reaction_3 = nb_reaction_3 + 1
     3963      v_3(:,nb_reaction_3) = g035(:)
     3964
     3965!---  g036: osso_trans + co2 -> so + so + co2
     3966
     3967!     Egan et al., 2025
     3968
     3969      deq(:) = 1.73e-27*exp(15395./t(:))
     3970      g036(:) = g035(:)/(deq(:)*conc(:))
     3971
     3972      nb_phot = nb_phot + 1
     3973      v_phot(:,nb_phot) = g036(:)*conc(:)
     3974           
     3975!---  g037: so + so + co2 -> s2o2_cyc + co2
     3976                       
     3977!     Egan et al., 2025 
     3978                       
     3979      do iz = 1,nz   
     3980         ak0 = 2.5*1.70e-32*(t(iz)/298.)**(-3.38)
     3981         ak1 = 1.1e-10*(t(iz)/298.)**0.167
     3982         rate = (ak0*conc(iz))/(1. + ak0*conc(iz)/ak1)
     3983         xpo = 1./(1. + alog10((ak0*conc(iz))/ak1)**2)
     3984         g037(iz) = rate*0.42**xpo
     3985      end do
     3986
     3987      nb_reaction_3 = nb_reaction_3 + 1
     3988      v_3(:,nb_reaction_3) = g037(:)
     3989
     3990!---  g038: s2o2_cyc + co2 -> so + so + co2
     3991
     3992!     Egan et al., 2025
     3993
     3994      deq(:) = 6.75e-28*exp(13392./t(:))
     3995      g038(:) = g037(:)/(deq(:)*conc(:))
     3996
     3997      nb_phot = nb_phot + 1
     3998      v_phot(:,nb_phot) = g038(:)*conc(:)
     3999
     4000!---  g040: osso_cis + o -> so2 + so
     4001
     4002!     Egan et al., 2025
     4003
     4004      g040(:) = 1.10e-10*(t(:)/298.)**0.167
     4005
     4006      nb_reaction_4 = nb_reaction_4 + 1
     4007      v_4(:,nb_reaction_4) = g040(:)
     4008
     4009!---  g042: osso_trans + o -> so2 + so
     4010
     4011!     Egan et al., 2025
     4012
     4013      g042(:) = 1.10e-10*(t(:)/298.)**0.167
     4014
     4015      nb_reaction_4 = nb_reaction_4 + 1
     4016      v_4(:,nb_reaction_4) = g042(:)
     4017
     4018!---  g044: s2o2_cyc + o -> so2 + so
     4019
     4020!     Egan et al., 2025
     4021
     4022      g044(:) = 1.10e-10*(t(:)/298.)**0.167
     4023
     4024      nb_reaction_4 = nb_reaction_4 + 1
     4025      v_4(:,nb_reaction_4) = g044(:)
     4026
    39124027!----------------------------------------------------------------------
    39134028!     heterogeneous chemistry
     
    51175232                i_v=i_v+1
    51185233!===============================
    5119 !--- 23 g016 s2o2 + co2 -> 2so + co2
    5120 !===============================
    5121             rate_local = vphot(i_lev,23)*traceur(i_lev,i_s2o2)*concentration(i_lev)
    5122             rate_night(i_lev,i_react) = rate_night(i_lev,i_react) + 2.*rate_local/nbr_pdt
    5123             i_react=i_react+1
    5124                 i_v=i_v+1
    5125 !===============================
    51265234!--- 24 g023 s2 + co2 -> 2s + co2
    51275235!===============================
     
    52375345!--- 41 g015: so + so + co2 -> s2o2 + co2
    52385346!===============================
    5239             rate_local = v3(i_lev,i_v)*traceur(i_lev,i_so)*concentration(i_lev) &
    5240             *traceur(i_lev,i_so)*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
     5347!           rate_local = v3(i_lev,i_v)*traceur(i_lev,i_so)*concentration(i_lev) &
     5348!           *traceur(i_lev,i_so)*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
    52445352!===============================
    52455353!--- 42 g022: s + s + co2 -> s2 + co2
     
    60946202!    23    s2o2 + co2 -> 2so + co2
    60956203!===============================
    6096             rate_local = vphot(i_lev,23)*traceur(i_lev,i_s2o2)*concentration(i_lev)
    6097             rate_day(i_lev,i_react) = rate_day(i_lev,i_react) + 2.*rate_local/nbr_pdt
    6098             i_react=i_react+1
    6099                 i_v=i_v+1
     6204!           rate_local = vphot(i_lev,23)*traceur(i_lev,i_s2o2)*concentration(i_lev)
     6205!           rate_day(i_lev,i_react) = rate_day(i_lev,i_react) + 2.*rate_local/nbr_pdt
     6206!           i_react=i_react+1
     6207!           i_v=i_v+1
    61006208!===============================
    61016209!    24    s2 + co2 -> 2s + co2
     
    62226330!--- 41 g015: so + so + co2 -> s2o2 + co2
    62236331!===============================
    6224             rate_local = v3(i_lev,i_v)*traceur(i_lev,i_so)*concentration(i_lev) &
    6225             *traceur(i_lev,i_so)*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
     6332!           rate_local = v3(i_lev,i_v)*traceur(i_lev,i_so)*concentration(i_lev) &
     6333!           *traceur(i_lev,i_so)*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
    62296337!===============================
    62306338!--- 42 g022: s + s + co2 -> s2 + co2
  • trunk/LMDZ.VENUS/libf/phyvenus/photolysis_mod.F90

    r3597 r3689  
    55! photolysis
    66
    7   integer, save :: nphot = 24             ! number of photolysis
     7  integer, save :: nphot = 27             ! number of photolysis
    88
    99!$OMP THREADPRIVATE(nphot)
    1010
    11   integer, parameter :: nabs  = 21        ! number of absorbing gases
     11  integer, parameter :: nabs  = 24        ! number of absorbing gases
    1212
    1313! spectral grid
     
    3939  real, dimension(nw), save :: xscl2                                  ! cl2 absorption cross-section (cm2)
    4040  real, dimension(nw), save :: xshocl                                 ! hocl absorption cross-section (cm2)
     41  real, dimension(nw), save :: xsclo                                  ! clo absorption cross-section (cm2)
    4142  real, dimension(nw), save :: xsso2_200, xsso2_298, xsso2_360        ! so2 absorption cross-section (cm2)
    4243  real, dimension(nw), save :: xsso_150, xsso_250                     ! so absorption cross-section (cm2)
    4344  real, dimension(nw), save :: xsso3                                  ! so3 absorption cross-section (cm2)
    44   real, dimension(nw), save :: xsclo                                  ! clo absorption cross-section (cm2)
     45  real, dimension(nw), save :: xss2                                   ! s2 absorption cross-section (cm2)
     46  real, dimension(nw), save :: xsosso_cis                             ! osso_cis absorption cross-section (cm2)
     47  real, dimension(nw), save :: xsosso_trans                           ! osso_trans absorption cross-section (cm2)
     48  real, dimension(nw), save :: xss2o2_cyc                             ! s2o2_cyc absorption cross-section (cm2)
    4549  real, dimension(nw), save :: xsocs                                  ! cos absorption cross-section (cm2)
    46   real, dimension(nw), save :: xss2                                   ! s2 absorption cross-section (cm2)
    4750  real, dimension(nw), save :: xscocl2                                ! cocl2 absorption cross-section (cm2)
    4851  real, dimension(nw), save :: xsh2so4                                ! h2so4 absorption cross-section (cm2)
     
    117120  call rdxshocl(nw,wl,xshocl)
    118121
     122! read and grid clo cross-sections
     123
     124  call rdxsclo(nw,wl,xsclo)
     125
    119126! read and grid so2 cross-sections
    120127
     
    129136  call rdxsso3(nw,wl,xsso3)
    130137
    131 ! read and grid clo cross-sections
    132 
    133   call rdxsclo(nw,wl,xsclo)
     138! read and grid s2 cross-sections
     139
     140  call rdxss2(nw,wl,xss2)
     141
     142! read and grid osso cross-sections
     143
     144  call rdxsosso(nw,wl,wc,xsosso_cis,xsosso_trans,xss2o2_cyc)
    134145
    135146! read and grid ocs cross-sections
     
    141152  call rdxscocl2(nw,wl,xscocl2)
    142153
    143 ! read and grid s2 cross-sections
    144 
    145   call rdxss2(nw,wl,xss2)
    146 
    147154! read and grid h2so4 cross-sections
    148155
     
    151158! read and grid h2 cross-sections
    152159
    153   call rdxsh2(nw,wl,wc,xsh2,yieldh2)
     160  call rdxsh2(nw,wl,xsh2,yieldh2)
    154161
    155162! read and grid no cross-sections
     
    25732580!==============================================================================
    25742581
     2582      subroutine rdxsosso(nw,wl,wc,yg1,yg2,yg3)
     2583
     2584!-----------------------------------------------------------------------------*
     2585!=  PURPOSE:                                                                 =*
     2586!=  read SO dimer absorption cross-sections                                  =*
     2587!=                                                                           =*
     2588!=           OSSO_cis + hv -> SO + SO                                        =*
     2589!=           OSSO_trans + hv -> SO + SO                                      =*
     2590!=           S2O2_cyc + hv -> SO + SO                                        =*
     2591!=                                                                           =*
     2592!=  Theoritical Cross section: from Egan et al. GRL, 2025                    =*
     2593!=  Quantum yield: assumed to be unity                                       =*
     2594!-----------------------------------------------------------------------------*
     2595!=  PARAMETERS:                                                              =*
     2596!=  NW     - INTEGER, number of specified intervals + 1 in working        (I)=*
     2597!=           wavelength grid                                                 =*
     2598!=  WL     - REAL, vector of lower limits of wavelength intervals in      (I)=*
     2599!=           working wavelength grid                                         =*
     2600!-----------------------------------------------------------------------------*
     2601!=  EDIT HISTORY:                                                            =*
     2602!=  2025/02/14  Original, Franck Lefevre                                     =*
     2603!-----------------------------------------------------------------------------*
     2604
     2605      USE mod_phys_lmdz_para, ONLY: is_master
     2606      USE mod_phys_lmdz_transfert_para, ONLY: bcast
     2607
     2608      implicit none
     2609
     2610!     input
     2611
     2612      integer :: nw                   ! number of wavelength grid points
     2613      real, dimension(nw) :: wl, wc   ! lower and central wavelength for each interval
     2614
     2615!     output
     2616
     2617      real, dimension(nw) :: yg1  ! osso_cis cross-sections (cm2)
     2618      real, dimension(nw) :: yg2  ! osso_trans cross-sections (cm2)
     2619      real, dimension(nw) :: yg3  ! s2o2_cyc cross-sections (cm2)
     2620
     2621!     local
     2622
     2623      integer, parameter :: kdata = 1000
     2624      integer :: i, iw, n, n1, n2, n3, ierr
     2625      integer :: kin
     2626      real, parameter :: deltax = 1.e-4
     2627      real, dimension(kdata) :: x1, y1, x2, y2, x3, y3
     2628      real :: qy, lambda
     2629      character(len = 100) :: fil
     2630
     2631!**** cross sections from Egan et al., 2025
     2632
     2633      fil = 'cross_sections/OSSO_cross_sections_formatted.txt'
     2634      print*, 'OSSO cross-section: ', fil
     2635
     2636      if (is_master) then
     2637
     2638      kin = 10
     2639      open(kin, file=fil, status='old', iostat=ierr)
     2640
     2641      n = 600
     2642      do i = 1,9
     2643         read(kin,*)
     2644      end do
     2645      do i = 1,n
     2646         read(kin,*) x1(i), y1(i), x2(i), y2(i), x3(i), y3(i)
     2647      end do
     2648      close(kin)
     2649
     2650      n1 = n
     2651      call addpnt(x1,y1,kdata,n1,x1(1)*(1.-deltax),0.)
     2652      call addpnt(x1,y1,kdata,n1,          0.,0.)
     2653      call addpnt(x1,y1,kdata,n1,x1(n1)*(1.+deltax),0.)
     2654      call addpnt(x1,y1,kdata,n1,        1E38,0.)
     2655      call inter2(nw,wl,yg1,n1,x1,y1,ierr)
     2656
     2657      n2 = n
     2658      call addpnt(x2,y2,kdata,n2,x2(1)*(1.-deltax),0.)
     2659      call addpnt(x2,y2,kdata,n2,          0.,0.)
     2660      call addpnt(x2,y2,kdata,n2,x2(n2)*(1.+deltax),0.)
     2661      call addpnt(x2,y2,kdata,n2,        1E38,0.)
     2662      call inter2(nw,wl,yg2,n2,x2,y2,ierr)
     2663     
     2664      n3 = n
     2665      call addpnt(x3,y3,kdata,n3,x3(1)*(1.-deltax),0.)
     2666      call addpnt(x3,y3,kdata,n3,          0.,0.)
     2667      call addpnt(x3,y3,kdata,n3,x3(n3)*(1.+deltax),0.)
     2668      call addpnt(x3,y3,kdata,n3,        1E38,0.)
     2669      call inter2(nw,wl,yg3,n3,x3,y3,ierr)
     2670
     2671      if (ierr /= 0) THEN
     2672         write(*,*) ierr, fil
     2673         stop
     2674      end if
     2675
     2676!**** quantum yield assumed to be unity
     2677
     2678      qy = 1.
     2679     
     2680      do iw = 1,nw - 1
     2681         lambda = wc(iw)
     2682         if (lambda < 842.) then
     2683            yg1(iw) = qy*yg1(iw)
     2684         else
     2685            yg1(iw) = 0.
     2686         end if
     2687         if (lambda < 938.) then
     2688            yg2(iw) = qy*yg2(iw)
     2689         else
     2690            yg2(iw) = 0.
     2691         end if
     2692         yg3(iw) = qy*yg3(iw)
     2693!        write(55,'(f8.3,3e12.4)') lambda, yg1(iw), yg2(iw), yg3(iw)
     2694      end do
     2695
     2696      end if ! is_master
     2697
     2698      call bcast(yg1)
     2699      call bcast(yg2)
     2700      call bcast(yg3)
     2701
     2702      end subroutine rdxsosso
     2703
     2704!==============================================================================
     2705
    25752706      subroutine rdxsclo(nw, wl, yg)
    25762707
     
    28693000!==============================================================================
    28703001
    2871        subroutine rdxsh2(nw, wl, wc, yg, yieldh2)
     3002       subroutine rdxsh2(nw, wl, yg, yieldh2)
    28723003
    28733004!-----------------------------------------------------------------------------*
     
    28883019
    28893020      integer :: nw                   ! number of wavelength grid points
    2890       real, dimension(nw) :: wl, wc   ! lower and central wavelength for each interval
     3021      real, dimension(nw) :: wl       ! lower and central wavelength for each interval
    28913022
    28923023!     output
  • trunk/LMDZ.VENUS/libf/phyvenus/photolysis_online.F

    r3569 r3689  
    33      subroutine photolysis_online(nlayer, nb_phot_max,
    44     $           alt, press, temp, mmean,
    5      $           i_co2, i_co, i_o, i_o1d, i_o2, i_o3,i_h2,
    6      $           i_oh, i_ho2, i_h2o2, i_h2o,i_h,i_hcl,
    7      $           i_cl2, i_hocl, i_so2, i_so, i_so3, i_s2,
    8      $           i_clo, i_ocs, i_cocl2, i_h2so4, i_cl,                 
    9      $           i_no2, i_no, i_n2, i_n2d, nesp, rm,
    10      $           sza, dist_sol, v_phot)
     5     $           i_co2, i_co, i_o, i_o1d, i_o2, i_o3, i_h2,
     6     $           i_oh, i_ho2, i_h2o2, i_h2o, i_h, i_hcl,
     7     $           i_cl, i_clo, i_cl2, i_hocl, i_so2, i_so, i_so3, i_s2,
     8     $           i_osso_cis, i_osso_trans, i_s2o2_cyc,
     9     $           i_ocs, i_cocl2, i_h2so4,
     10     $           i_no2, i_no, i_n2, i_n2d,
     11     &           nesp, rm, sza, dist_sol, v_phot)
    1112
    1213      use photolysis_mod
     
    1920      integer, intent(in) :: nlayer
    2021      integer, intent(in) :: nb_phot_max
    21       integer, intent(in) :: i_co2, i_co, i_o, i_o1d, i_o2, i_o3,
     22      integer, intent(in) :: i_co2, i_co, i_o, i_o1d, i_o2, i_o3, i_h2,
    2223     $                       i_oh, i_ho2, i_h2o2, i_h2o, i_h, i_hcl,
    23      $                       i_cl2, i_hocl, i_so2, i_so, i_so3,i_s2,
    24      $                       i_clo,i_ocs, i_cl, i_cocl2, i_h2so4,
    25      $                       i_no2,i_no, i_n2, i_n2d, i_h2
     24     $                       i_cl, i_clo, i_cl2, i_hocl, i_so2, i_so,
     25     $                       i_so3, i_s2,
     26     $                       i_osso_cis, i_osso_trans, i_s2o2_cyc,
     27     $                       i_ocs, i_cocl2, i_h2so4,
     28     $                       i_no2, i_no, i_n2, i_n2d
    2629
    2730      real, dimension(nlayer), intent(in) :: press, temp, mmean      ! pressure (hpa)/temperature (k)/mean molecular mass (g.mol-1)
     
    6770
    6871      integer :: j_o2_o, j_o2_o1d, j_co2_o, j_co2_o1d, j_o3_o1d, j_o3_o,
    69      $           j_h2o, j_h2o2, j_ho2, j_h, j_hcl, j_cl2, j_hocl, j_so2,
    70      $           j_so, j_so3,j_s2, j_clo, j_ocs, j_cocl2, j_h2so4,
     72     $           j_h2o, j_h2o2, j_ho2, j_h, j_hcl, j_cl2, j_hocl, j_clo,
     73     $           j_so2, j_so, j_so3, j_s2, j_osso_cis, j_osso_trans,
     74     $           j_s2o2_cyc, j_ocs, j_cocl2, j_h2so4,
    7175     $           j_no2, j_no, j_n2, j_h2
    7276
    7377      integer :: a_o2, a_co2, a_o3, a_h2o, a_h2o2, a_ho2, a_hcl, a_cl2,
    74      $           a_hocl, a_so2, a_so, a_so3, a_s2, a_clo, a_ocs,
     78     $           a_hocl, a_clo, a_so2, a_so, a_so3, a_s2, a_osso_cis,
     79     $           a_osso_trans, a_s2o2_cyc, a_ocs,
    7580     $           a_cocl2, a_h2so4, a_no2, a_no, a_n2, a_h2
     81
    7682      integer :: nlev, i, ilay, ilev, iw, ialt
    7783      real    :: deltaj
     
    8086!     absorbing gas numbering
    8187
    82       a_o2      = 1      ! o2
    83       a_co2     = 2      ! co2
    84       a_o3      = 3      ! o3
    85       a_h2      = 4      ! h2
    86       a_h2o     = 5      ! h2o
    87       a_h2o2    = 6      ! h2o2
    88       a_ho2     = 7      ! ho2
    89       a_hcl     = 8      ! hcl
    90       a_cl2     = 9      ! cl2
    91       a_hocl    = 10     ! hocl
    92       a_so2     = 11     ! so2
    93       a_so      = 12     ! so
    94       a_so3     = 13     ! so3
    95       a_s2      = 14     ! s2
    96       a_clo     = 15     ! clo
    97       a_ocs     = 16     ! ocs
    98       a_cocl2   = 17     ! cocl2
    99       a_h2so4   = 18     ! h2so4
    100       a_no2     = 19     ! no2
    101       a_no      = 20     ! no
    102       a_n2      = 21     ! n2
     88      a_o2         = 1      ! o2
     89      a_co2        = 2      ! co2
     90      a_o3         = 3      ! o3
     91      a_h2         = 4      ! h2
     92      a_h2o        = 5      ! h2o
     93      a_h2o2       = 6      ! h2o2
     94      a_ho2        = 7      ! ho2
     95      a_hcl        = 8      ! hcl
     96      a_cl2        = 9      ! cl2
     97      a_hocl       = 10     ! hocl
     98      a_clo        = 11     ! clo
     99      a_so2        = 12     ! so2
     100      a_so         = 13     ! so
     101      a_so3        = 14     ! so3
     102      a_s2         = 15     ! s2
     103      a_osso_cis   = 16     ! osso_cis
     104      a_osso_trans = 17     ! osso_trans
     105      a_s2o2_cyc   = 18     ! s2o2_cyc
     106      a_ocs        = 19     ! ocs
     107      a_cocl2      = 20     ! cocl2
     108      a_h2so4      = 21     ! h2so4
     109      a_no2        = 22     ! no2
     110      a_no         = 23     ! no
     111      a_n2         = 24     ! n2
    103112
    104113!     photodissociation rates numbering.
    105114!     photodissociations must be ordered the same way in subroutine "indice"
    106115
    107       j_o2_o    = 1      ! o2 + hv     -> o + o
    108       j_o2_o1d  = 2      ! o2 + hv     -> o + o(1d)
    109       j_co2_o   = 3      ! co2 + hv    -> co + o
    110       j_co2_o1d = 4      ! co2 + hv    -> co + o(1d)
    111       j_o3_o1d  = 5      ! o3 + hv     -> o2 + o(1d)
    112       j_o3_o    = 6      ! o3 + hv     -> o2 + o
    113       j_h2      = 7      ! h2 + hv     -> h + h
    114       j_h2o     = 8      ! h2o + hv    -> h + oh
    115       j_ho2     = 9      ! ho2 + hv    -> oh + o
    116       j_h2o2    = 10     ! h2o2 + hv   -> oh + oh
    117       j_hcl     = 11     ! hcl + hv    -> h + cl
    118       j_cl2     = 12     ! cl2 + hv    -> cl + cl
    119       j_hocl    = 13     ! hocl + hv   -> oh + cl
    120       j_so2     = 14     ! so2 + hv    -> so + o
    121       j_so      = 15     ! so + hv     -> s + o
    122       j_so3     = 16     ! so3 + hv    -> so2 + o
    123       j_s2      = 17     ! s2 + hv     -> s + s
    124       j_clo     = 18     ! clo + hv    -> cl + o
    125       j_ocs     = 19     ! ocs + hv    -> co + s
    126       j_cocl2   = 20     ! cocl2 + hv  -> 2cl + co
    127       j_h2so4   = 21     ! h2so4 + hv  -> so3 + h2o
    128       j_no2     = 22     ! no2 + hv    -> no + o
    129       j_no      = 23     ! no + hv     -> n + o
    130       j_n2      = 24     ! n2 + hv     -> n(2d) + n
    131 
    132 !     j_hdo_od  =        ! hdo + hv    -> od + h
    133 !     j_hdo_d   =        ! hdo + hv    -> d + oh
     116      j_o2_o       = 1      ! o2 + hv         -> o + o
     117      j_o2_o1d     = 2      ! o2 + hv         -> o + o(1d)
     118      j_co2_o      = 3      ! co2 + hv        -> co + o
     119      j_co2_o1d    = 4      ! co2 + hv        -> co + o(1d)
     120      j_o3_o1d     = 5      ! o3 + hv         -> o2 + o(1d)
     121      j_o3_o       = 6      ! o3 + hv         -> o2 + o
     122      j_h2         = 7      ! h2 + hv         -> h + h
     123      j_h2o        = 8      ! h2o + hv        -> h + oh
     124      j_ho2        = 9      ! ho2 + hv        -> oh + o
     125      j_h2o2       = 10     ! h2o2 + hv       -> oh + oh
     126      j_hcl        = 11     ! hcl + hv        -> h + cl
     127      j_cl2        = 12     ! cl2 + hv        -> cl + cl
     128      j_hocl       = 13     ! hocl + hv       -> oh + cl
     129      j_clo        = 14     ! clo + hv        -> cl + o
     130      j_so2        = 15     ! so2 + hv        -> so + o
     131      j_so         = 16     ! so + hv         -> s + o
     132      j_so3        = 17     ! so3 + hv        -> so2 + o
     133      j_s2         = 18     ! s2 + hv         -> s + s
     134      j_osso_cis   = 19     ! osso_cis + hv   -> so + so
     135      j_osso_trans = 20     ! osso_trans + hv -> so + so
     136      j_s2o2_cyc   = 21     ! s2o2_cyc + hv   -> so + so
     137      j_ocs        = 22     ! ocs + hv        -> co + s
     138      j_cocl2      = 23     ! cocl2 + hv      -> 2cl + co
     139      j_h2so4      = 24     ! h2so4 + hv      -> so3 + h2o
     140      j_no2        = 25     ! no2 + hv        -> no + o
     141      j_no         = 26     ! no + hv         -> n + o
     142      j_n2         = 27     ! n2 + hv         -> n(2d) + n
     143
     144!     j_hdo_od  =           ! hdo + hv        -> od + h
     145!     j_hdo_d   =           ! hdo + hv        -> d + oh
    134146
    135147!==== define working vertical grid for the uv radiative code
     
    215227            dtgas(ilay,iw,a_hocl) = colinc(ilay)*rm(ilay,i_hocl)
    216228     $      *xshocl(iw)
     229            dtgas(ilay,iw,a_clo) = colinc(ilay)*rm(ilay,i_clo)*xsclo(iw)
    217230            dtgas(ilay,iw,a_so3) = colinc(ilay)*rm(ilay,i_so3)*xsso3(iw)
    218231            dtgas(ilay,iw,a_s2) = colinc(ilay)*rm(ilay,i_s2)*xss2(iw)
    219             dtgas(ilay,iw,a_clo) = colinc(ilay)*rm(ilay,i_clo)*xsclo(iw)
     232            dtgas(ilay,iw,a_osso_cis) =
     233     $      colinc(ilay)*rm(ilay,i_osso_cis)*xsosso_cis(iw)
     234            dtgas(ilay,iw,a_osso_trans) =
     235     $      colinc(ilay)*rm(ilay,i_osso_trans)*xsosso_trans(iw)
     236            dtgas(ilay,iw,a_s2o2_cyc) =
     237     $      colinc(ilay)*rm(ilay,i_s2o2_cyc)*xss2o2_cyc(iw)
    220238            dtgas(ilay,iw,a_ocs) = colinc(ilay)*rm(ilay,i_ocs)*xsocs(iw)
    221239            dtgas(ilay,iw,a_cocl2) = colinc(ilay)*rm(ilay,i_cocl2)
     
    250268            sj(ilay,iw,j_cl2) = xscl2(iw)                ! cl2
    251269            sj(ilay,iw,j_hocl) = xshocl(iw)              ! hocl
     270            sj(ilay,iw,j_clo) = xsclo(iw)                ! clo
    252271            sj(ilay,iw,j_s2) = xss2(iw)                  ! s2
    253272            sj(ilay,iw,j_so3) = xsso3(iw)                ! so3
    254             sj(ilay,iw,j_clo) = xsclo(iw)                ! clo
     273            sj(ilay,iw,j_osso_cis) = xsosso_cis(iw)      ! osso_cis
     274            sj(ilay,iw,j_osso_trans) = xsosso_trans(iw)  ! osso_trans
     275            sj(ilay,iw,j_s2o2_cyc) = xss2o2_cyc(iw)      ! s2o2_cyc
    255276            sj(ilay,iw,j_ocs) = xsocs(iw)                ! ocs
    256277            sj(ilay,iw,j_cocl2) = xscocl2(iw)            ! cocl2
     
    757778     $                              /(360. - 298.)*(temp - 298.)
    758779            end if
    759 !     219 nm photolysis treshold
     780!     219 nm photolysis threshold
    760781            if (wc(iw) <= 219.) then
    761782               sj(ilev,iw,j_so2) = xsso2
  • trunk/LMDZ.VENUS/libf/phyvenus/phytrac_chimie.F

    r3323 r3689  
    9595!!! If the values are changed there, the same has to be done here  !!!
    9696
    97 !      integer,parameter :: i_co2=1
    98 !      integer,parameter :: i_n2=13
    99 !      integer,parameter :: i_n=14
    100 !      integer,parameter :: i_o=3
    101 !      integer,parameter :: i_co=4
    102 
    10397      integer,parameter :: ix_co2  =  1
    10498      integer,parameter :: ix_co   =  2
     
    119113      integer,parameter :: ix_n2   = 17
    120114
    121       ! NEED TO BE THE SAME THAN IN EUVHEAT.F90
    122       integer,parameter :: nespeuv=17    ! Number of species considered (11, 12 or 17 (with nitrogen))
     115      ! NEED TO BE THE SAME AS IN EUVHEAT.F90
     116      integer,parameter :: nespeuv = 17    ! Number of species considered (11, 12 or 17 (with nitrogen))
    123117
    124118      real :: vmr_dens_euv(nlon,nlev,nespeuv) ! local species density for EUV heating
     
    141135
    142136         if (ok_chem) then
     137
    143138           ! set number of reactions, depending on ion chemistry or not
     139
    144140           nb_reaction_4_ion  = 64
    145141           !nb_reaction_4_deut = 35
    146142   
    147            !Default numbers if no ion and no deuterium chemistry included
     143           ! default numbers if no ion and no deuterium chemistry
    148144   
    149145           nb_reaction_4_max = 98     ! set number of bimolecular reactions
    150            nb_reaction_3_max = 12     ! set number of quadratic reactions
    151            nquench           = 13     ! set number of quenching + heterogeneous
     146           nb_reaction_3_max = 14     ! set number of quadratic reactions
     147           nquench           = 15     ! set number of first-order reactions:
     148                                      !               quenching
     149                                      !               thermal dissociation
     150                                      !               heterogeneous
    152151           nphotion          = 0      ! set number of photoionizations
    153152   
    154153           if (ok_ionchem) then
    155               nb_reaction_4_max = nb_reaction_4_max+nb_reaction_4_ion 
    156               nphotion          = 18   ! set number of photoionizations
     154              nb_reaction_4_max = nb_reaction_4_max + nb_reaction_4_ion
     155              nphotion       = 18     ! set number of photoionizations
    157156           endif
     157
    158158           !if(deutchem) then
    159159           !   nb_reaction_4_max = nb_reaction_4_max + nb_reaction_4_deut 
    160160           !end if
    161161   
    162            !nb_phot_max is the total number of processes that are treated
    163            !numerically as a photolysis:
     162           ! nb_phot_max is the total number of processes that are treated
     163           ! numerically as a photolysis (first-order reaction):
    164164   
    165165           nb_phot_max = nphot + nphotion + nquench
     
    171171           if (reinit_trac .and. ok_chem) then
    172172 
    173   !!! in this reinitialisation, trac is VOLUME mixing ratio
    174   ! ONLY SO2!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    175   !           convert mass to volume mixing ratio
     173!             convert mass to volume mixing ratio
    176174              do iq = 1,nqmax - nmicro
    177175                 trac(:,:,iq) = trac(:,:,iq)*mmean(:,:)/m_tr(iq)
     
    181179
    182180              if (i_so2 /= 0) then
    183                  trac(:,:,i_so2) = 0.
    184                  trac(:,1:22,i_so2) = 10.e-6
    185  
    186   ! AL TRACERS!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    187   !           print*, "Tracers are re-initialised"
    188   !           trac(:,:,:) = 1.0e-30
    189  
    190   !           if ((i_ocs /= 0) .and. (i_co /= 0) .and. (i_hcl /= 0)
    191   !   $          .and. (i_so2 /= 0) .and. (i_h2o /= 0)
    192   !   $          .and. (i_n2 /= 0)  .and. (i_co2 /= 0)) then
    193  
    194   !              trac(:,1:22,i_ocs) = 3.e-6
    195   !              trac(:,1:22,i_co)  = 25.e-6
    196   !              trac(:,:,i_hcl)    = 0.4e-6
    197   !              trac(:,1:22,i_so2) = 7.e-6
    198   !              trac(:,1:22,i_h2o) = 30.e-6
    199   !              trac(:,:,i_n2)     = 0.35e-1
    200   !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
     181                 trac(:,25:,i_so2)  = 100.e-9
     182                 trac(:,1:24,i_so2) = 10.e-6
     183                 trac(:,25:,i_h2o)  = 1.e-6
     184                 trac(:,1:24,i_h2o) = 30.e-6
     185
     186                 trac(:,:,i_osso_cis)   = 0.
     187                 trac(:,:,i_osso_trans) = 0.
     188                 trac(:,:,i_s2o2_cyc)   = 0.
     189 
     190! AL TRACERS!!!!!!!!!!!!!!!!!!!!!!!!!!!!
     191!           print*, "Tracers are re-initialised"
     192!           trac(:,:,:) = 1.0e-30
     193 
     194!             if ((i_ocs /= 0) .and. (i_co /= 0) .and. (i_hcl /= 0)
     195!     $          .and. (i_so2 /= 0) .and. (i_h2o /= 0)
     196!     $          .and. (i_n2 /= 0)  .and. (i_co2 /= 0)) then
     197 
     198!                trac(:,1:22,i_ocs) = 3.e-6
     199!                trac(:,1:22,i_co)  = 25.e-6
     200!                trac(:,:,i_hcl)    = 0.4e-6
     201!                trac(:,1:22,i_so2) = 7.e-6
     202!                trac(:,1:22,i_h2o) = 30.e-6
     203!                trac(:,:,i_n2)     = 0.35e-1
     204! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    201205     
    202   !          ensure that sum of mixing ratios = 1
     206!                ensure that sum of mixing ratios = 1
    203207 
    204208                 trac_sum(:,:) = 0.
     
    210214                 end do
    211215 
    212   !          initialise co2
     216!                initialise co2
    213217 
    214218                 trac(:,:,i_co2) = 1. - trac_sum(:,:)
     
    219223              end if
    220224         
    221   !           update mmean
     225           update mmean
    222226 
    223227              mmean(:,:) = 0.
     
    227231              rnew(:,:) = 8.314/mmean(:,:)*1.e3     ! J/kg K
    228232 
    229   !           convert volume to mass mixing ratio
     233           convert volume to mass mixing ratio
    230234 
    231235              do iq = 1,nqmax - nmicro
     
    408412
    409413!           electron temperature
     414
    410415            do ilev = 1, nlev
    411               t_elec(ilev) = temp_elect(zlocal(ilev),temp(ilon,ilev),
    412      $                                    sza_local,t_elec_origin) 
     416               t_elec(ilev) = temp_elect(zlocal(ilev),temp(ilon,ilev),
     417     $                                   sza_local,t_elec_origin) 
    413418            end do
    414419
Note: See TracChangeset for help on using the changeset viewer.