Changeset 3722 for trunk/LMDZ.VENUS/libf
- Timestamp:
- Apr 14, 2025, 1:25:10 PM (2 months ago)
- Location:
- trunk/LMDZ.VENUS/libf/phyvenus
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/LMDZ.VENUS/libf/phyvenus/photochemistry_venus.F90
r3689 r3722 211 211 i_oh, i_ho2, i_h2o2, i_h2o, i_h, i_hcl, & 212 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, 213 i_osso_cis, i_osso_trans, i_s2o2_cyc, i_clso2, & 214 214 i_ocs, i_cocl2, i_h2so4, & 215 215 i_no2, i_no, i_n2, i_n2d, & … … 644 644 645 645 !=========================================================== 646 ! ClSO2 + hv -> Cl + SO2 647 !=========================================================== 648 649 nb_phot = nb_phot + 1 650 651 indice_phot(nb_phot) = z3spec(1.0, i_clso2, 1.0, i_cl, 1.0, i_so2) 652 653 !=========================================================== 646 654 ! OCS + hv -> CO + S 647 655 !=========================================================== … … 1405 1413 1406 1414 !=========================================================== 1407 ! f028 : ClSO2 + O -> SO 2 + ClO1408 !=========================================================== 1409 1410 nb_reaction_4 = nb_reaction_4 + 1 1411 1412 indice_4(nb_reaction_4) = z4spec(1.0, i_clso2, 1.0, i_o, 1.0, i_so 2, 1.0, i_clo)1415 ! f028 : ClSO2 + O -> SO3 + Cl 1416 !=========================================================== 1417 1418 nb_reaction_4 = nb_reaction_4 + 1 1419 1420 indice_4(nb_reaction_4) = z4spec(1.0, i_clso2, 1.0, i_o, 1.0, i_so3, 1.0, i_cl) 1413 1421 1414 1422 !=========================================================== … … 3506 3514 v_4(:,nb_reaction_4) = f027(:) 3507 3515 3508 !--- f028: clso2 + o -> so2 + clo 3516 !--- f028: clso2 + o -> cl + so3 3517 3518 ! mills, phd, 1998 (products clo + so2) 3519 3520 ! f028(:) = 1.0E-11 3521 3522 ! croce and cobos, 2018 3523 3524 f028(:) = 7.69E-11*(t(:)/250.)**0.093 3525 3526 nb_reaction_4 = nb_reaction_4 + 1 3527 v_4(:,nb_reaction_4) = f028(:) 3528 3529 !--- f029: clso2 + h -> so2 + hcl 3509 3530 3510 3531 ! mills, phd, 1998 3511 3532 3512 f028(:) = 1.0E-11 3513 3514 nb_reaction_4 = nb_reaction_4 + 1 3515 v_4(:,nb_reaction_4) = f028(:) 3516 3517 !--- f029: clso2 + h -> so2 + hcl 3518 3519 ! mills, phd, 1998 3520 3521 f029(:) = 1.0E-11 3533 ! f029(:) = 1.0E-11 3534 3535 ! croce and cobos, 2018 3536 3537 f029(:) = 2.71E-11*(t(:)/250.)**0.47 3522 3538 3523 3539 nb_reaction_4 = nb_reaction_4 + 1 … … 3528 3544 ! moses et al. 2002 3529 3545 3530 f030(:) = 5.0E-13 3546 ! f030(:) = 5.0E-13 3547 3548 do iz = 1,nz 3549 ak1 = 2.6E-14*(t(iz)/250.)**0.61 3550 ak0 = 3.27E-28*(t(iz)/250.)**(-6.35) 3551 3552 rate = (ak0*conc(iz))/(1. + ak0*conc(iz)/ak1) 3553 xpo = 1./(1. + alog10((ak0*conc(iz))/ak1)**2) 3554 fc = 0.558*exp(-t(iz)/316.) + 0.442*exp(-t(iz)/7442.) 3555 f030(iz) = rate*fc**xpo 3556 end do 3531 3557 3532 3558 nb_reaction_3 = nb_reaction_3 + 1 -
trunk/LMDZ.VENUS/libf/phyvenus/photolysis_mod.F90
r3689 r3722 5 5 ! photolysis 6 6 7 integer, save :: nphot = 2 7! number of photolysis7 integer, save :: nphot = 28 ! number of photolysis 8 8 9 9 !$OMP THREADPRIVATE(nphot) 10 10 11 integer, parameter :: nabs = 2 4! number of absorbing gases11 integer, parameter :: nabs = 25 ! number of absorbing gases 12 12 13 13 ! spectral grid … … 47 47 real, dimension(nw), save :: xsosso_trans ! osso_trans absorption cross-section (cm2) 48 48 real, dimension(nw), save :: xss2o2_cyc ! s2o2_cyc absorption cross-section (cm2) 49 real, dimension(nw), save :: xsclso2 ! clso2 absorption cross-section (cm2) 49 50 real, dimension(nw), save :: xsocs ! cos absorption cross-section (cm2) 50 51 real, dimension(nw), save :: xscocl2 ! cocl2 absorption cross-section (cm2) … … 143 144 144 145 call rdxsosso(nw,wl,wc,xsosso_cis,xsosso_trans,xss2o2_cyc) 146 147 ! read and grid clso2 cross-sections 148 149 call rdxsclso2(nw,wl,wc,xsclso2) 145 150 146 151 ! read and grid ocs cross-sections … … 2704 2709 !============================================================================== 2705 2710 2711 subroutine rdxsclso2(nw, wl, wc, yg) 2712 2713 !-----------------------------------------------------------------------------* 2714 != PURPOSE: =* 2715 != Read clso2 cross-sections =* 2716 != From Trabelsi et al., J. Chem. Phys. 161, 109901 (2024) =* 2717 !-----------------------------------------------------------------------------* 2718 != PARAMETERS: =* 2719 != NW - INTEGER, number of specified intervals + 1 in working (I)=* 2720 != wavelength grid =* 2721 !-----------------------------------------------------------------------------* 2722 2723 USE mod_phys_lmdz_para, ONLY: is_master 2724 USE mod_phys_lmdz_transfert_para, ONLY: bcast 2725 2726 IMPLICIT NONE 2727 2728 ! input 2729 2730 integer :: nw ! number of wavelength grid points 2731 real, dimension(nw) :: wl, wc ! lower and central wavelength for each interval 2732 2733 ! output 2734 2735 real, dimension(nw) :: yg ! clso2 cross-sections (cm2) 2736 2737 ! local 2738 2739 real, parameter :: deltax = 1.e-4 2740 integer, parameter :: kdata = 1500 2741 2742 real, dimension(kdata) :: x1, y1 2743 real :: qy, lambda 2744 integer :: i, iw, n, ierr 2745 integer :: kin, kout ! input/output logical units 2746 character*100 fil 2747 2748 kin = 10 2749 2750 !*** cross sections from Trabelsi et al., J. Chem. Phys. 161, 109901 (2024) 2751 2752 fil = 'cross_sections/clso2_trabelsi_2024.txt' 2753 print*, 'section efficace ClSO2: ', fil 2754 2755 if (is_master) then 2756 2757 n = 1001 2758 2759 OPEN(kin,FILE=fil,STATUS='OLD') 2760 2761 do i = 1,5 2762 read(kin,*) 2763 end do 2764 do i = n,1,-1 2765 read(kin,*) x1(i), y1(i) 2766 end do 2767 close(kin) 2768 2769 call addpnt(x1,y1,kdata,n,x1(1)*(1.-deltax),0.) 2770 call addpnt(x1,y1,kdata,n, 0.,0.) 2771 call addpnt(x1,y1,kdata,n,x1(n)*(1.+deltax),0.) 2772 call addpnt(x1,y1,kdata,n, 1e38,0.) 2773 2774 call inter2(nw,wl,yg,n,x1,y1,ierr) 2775 2776 if (ierr /= 0) then 2777 write(*,*) ierr, fil 2778 stop 2779 end if 2780 2781 do iw = 1,nw - 1 2782 lambda = wc(iw) 2783 if (lambda > 316.) then ! photodissociation threshold (tbc) 2784 yg(iw) = 0. 2785 end if 2786 ! write(55,'(f8.3,3e12.4)') lambda, yg(iw) 2787 end do 2788 2789 end if !is_master 2790 2791 call bcast(yg) 2792 2793 end subroutine rdxsclso2 2794 2795 !============================================================================== 2796 2706 2797 subroutine rdxsclo(nw, wl, yg) 2707 2798 -
trunk/LMDZ.VENUS/libf/phyvenus/photolysis_online.F
r3689 r3722 6 6 $ i_oh, i_ho2, i_h2o2, i_h2o, i_h, i_hcl, 7 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, 8 $ i_osso_cis, i_osso_trans, i_s2o2_cyc, i_clso2, 9 9 $ i_ocs, i_cocl2, i_h2so4, 10 10 $ i_no2, i_no, i_n2, i_n2d, … … 25 25 $ i_so3, i_s2, 26 26 $ i_osso_cis, i_osso_trans, i_s2o2_cyc, 27 $ i_ ocs, i_cocl2, i_h2so4,27 $ i_clso2, i_ocs, i_cocl2, i_h2so4, 28 28 $ i_no2, i_no, i_n2, i_n2d 29 29 … … 72 72 $ j_h2o, j_h2o2, j_ho2, j_h, j_hcl, j_cl2, j_hocl, j_clo, 73 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,74 $ j_s2o2_cyc, j_clso2, j_ocs, j_cocl2, j_h2so4, 75 75 $ j_no2, j_no, j_n2, j_h2 76 76 77 77 integer :: a_o2, a_co2, a_o3, a_h2o, a_h2o2, a_ho2, a_hcl, a_cl2, 78 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,79 $ a_osso_trans, a_s2o2_cyc, a_clso2, a_ocs, 80 80 $ a_cocl2, a_h2so4, a_no2, a_no, a_n2, a_h2 81 81 … … 104 104 a_osso_trans = 17 ! osso_trans 105 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 106 a_clso2 = 19 ! clso2 107 a_ocs = 20 ! ocs 108 a_cocl2 = 21 ! cocl2 109 a_h2so4 = 22 ! h2so4 110 a_no2 = 23 ! no2 111 a_no = 24 ! no 112 a_n2 = 25 ! n2 112 113 113 114 ! photodissociation rates numbering. … … 135 136 j_osso_trans = 20 ! osso_trans + hv -> so + so 136 137 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 138 j_clso2 = 22 ! clso2 + hv -> cl + so2 139 j_ocs = 23 ! ocs + hv -> co + s 140 j_cocl2 = 24 ! cocl2 + hv -> 2cl + co 141 j_h2so4 = 25 ! h2so4 + hv -> so3 + h2o 142 j_no2 = 26 ! no2 + hv -> no + o 143 j_no = 27 ! no + hv -> n + o 144 j_n2 = 28 ! n2 + hv -> n(2d) + n 143 145 144 146 ! j_hdo_od = ! hdo + hv -> od + h … … 236 238 dtgas(ilay,iw,a_s2o2_cyc) = 237 239 $ colinc(ilay)*rm(ilay,i_s2o2_cyc)*xss2o2_cyc(iw) 240 dtgas(ilay,iw,a_clso2) = 241 $ colinc(ilay)*rm(ilay,i_clso2)*xsclso2(iw) 238 242 dtgas(ilay,iw,a_ocs) = colinc(ilay)*rm(ilay,i_ocs)*xsocs(iw) 239 243 dtgas(ilay,iw,a_cocl2) = colinc(ilay)*rm(ilay,i_cocl2) … … 274 278 sj(ilay,iw,j_osso_trans) = xsosso_trans(iw) ! osso_trans 275 279 sj(ilay,iw,j_s2o2_cyc) = xss2o2_cyc(iw) ! s2o2_cyc 280 sj(ilay,iw,j_clso2) = xsclso2(iw) ! clso2 276 281 sj(ilay,iw,j_ocs) = xsocs(iw) ! ocs 277 282 sj(ilay,iw,j_cocl2) = xscocl2(iw) ! cocl2
Note: See TracChangeset
for help on using the changeset viewer.