Changeset 4601 for LMDZ6/trunk/libf/phylmd/StratAer/ocs_to_so2.F90
- Timestamp:
- Jul 1, 2023, 12:07:30 AM (11 months ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
LMDZ6/trunk/libf/phylmd/StratAer/ocs_to_so2.F90
r3677 r4601 8 8 USE infotrac_phy 9 9 USE YOMCST, ONLY : RG 10 USE phys_local_var_mod, ONLY : OCS_lifetime, budg_3D_ocs_to_so2, budg_ocs_to_so2 10 USE phys_local_var_mod, ONLY : OCS_lifetime, budg_3D_ocs_to_so2, budg_ocs_to_so2 11 USE strataer_local_var_mod, ONLY : flag_min_rreduce 11 12 12 13 IMPLICIT NONE … … 23 24 ! local variables 24 25 INTEGER :: i,j,k,nb,ilon,ilev 25 26 REAL :: rreduce 27 26 28 !--convert OCS to SO2 27 29 budg_3D_ocs_to_so2(:,:)=0.0 … … 29 31 30 32 DO ilon=1, klon 31 DO ilev=1, klev 32 !only in the stratosphere 33 IF (is_strato(ilon,ilev)) THEN 34 IF (OCS_lifetime(ilon,ilev).GT.0.0) THEN 35 budg_3D_ocs_to_so2(ilon,ilev)=tr_seri(ilon,ilev,id_OCS_strat)*(1.0-exp(-pdtphys/OCS_lifetime(ilon,ilev))) 36 ENDIF 37 tr_seri(ilon,ilev,id_OCS_strat)=tr_seri(ilon,ilev,id_OCS_strat) - budg_3D_ocs_to_so2(ilon,ilev) 38 tr_seri(ilon,ilev,id_SO2_strat)=tr_seri(ilon,ilev,id_SO2_strat) + mSO2mol/mOCSmol*budg_3D_ocs_to_so2(ilon,ilev) 39 !convert budget from kg(OCS)/kgA to kg(S)/m2/layer/s for saving as diagnostic 40 budg_3D_ocs_to_so2(ilon,ilev)=budg_3D_ocs_to_so2(ilon,ilev)*mSatom/mOCSmol*(paprs(ilon,ilev)-paprs(ilon,ilev+1))/RG/pdtphys 41 budg_ocs_to_so2(ilon)=budg_ocs_to_so2(ilon)+budg_3D_ocs_to_so2(ilon,ilev) 42 ENDIF 43 ENDDO 33 DO ilev=1, klev 34 !only in the stratosphere 35 IF (is_strato(ilon,ilev)) THEN 36 IF (OCS_lifetime(ilon,ilev).GT.0.0.AND.OCS_lifetime(ilon,ilev).LT.1.E10) THEN 37 rreduce = OCS_lifetime(ilon,ilev) 38 ! Check lifetime rreduce < timestep*3 (such as H2SO4 loss > 0.28*H2SO4) with exp(-1/3)=0.72 39 IF(flag_min_rreduce) THEN 40 IF (rreduce .LT. (3.*pdtphys)) rreduce = 3.*pdtphys 41 ENDIF 42 budg_3D_ocs_to_so2(ilon,ilev)=tr_seri(ilon,ilev,id_OCS_strat)*(1.0-exp(-pdtphys/rreduce)) 43 tr_seri(ilon,ilev,id_OCS_strat)=tr_seri(ilon,ilev,id_OCS_strat) - budg_3D_ocs_to_so2(ilon,ilev) 44 tr_seri(ilon,ilev,id_SO2_strat)=tr_seri(ilon,ilev,id_SO2_strat) + mSO2mol/mOCSmol*budg_3D_ocs_to_so2(ilon,ilev) 45 !convert budget from kg(OCS)/kgA to kg(S)/m2/layer/s for saving as diagnostic 46 budg_3D_ocs_to_so2(ilon,ilev)=budg_3D_ocs_to_so2(ilon,ilev)*mSatom/mOCSmol*(paprs(ilon,ilev)-paprs(ilon,ilev+1))/RG/pdtphys 47 budg_ocs_to_so2(ilon)=budg_ocs_to_so2(ilon)+budg_3D_ocs_to_so2(ilon,ilev) 48 ENDIF 49 ! END IF(OCS_lifetime(ilon,ilev).GT.0.0.AND.OCS_lifetime(ilon,ilev).LT.1.E10) 50 ENDIF 51 ! END IF(is_strato(ilon,ilev)) 52 ENDDO 44 53 ENDDO 45 54
Note: See TracChangeset
for help on using the changeset viewer.