Changeset 2752 for LMDZ5/trunk/libf/phylmd/StratAer
- Timestamp:
- Jan 8, 2017, 4:44:10 PM (8 years ago)
- Location:
- LMDZ5/trunk/libf/phylmd/StratAer
- Files:
-
- 7 edited
Legend:
- Unmodified
- Added
- Removed
-
LMDZ5/trunk/libf/phylmd/StratAer/aer_sedimnt.F90
r2690 r2752 14 14 !----------------------------------------------------------------------- 15 15 16 USE phys_local_var_mod, ONLY: mdw, sfluxaer, DENSO4, f_r_wet, vsed_aer16 USE phys_local_var_mod, ONLY: mdw, budg_sed_part, DENSO4, f_r_wet, vsed_aer 17 17 USE dimphy, ONLY : klon,klev 18 18 USE infotrac … … 106 106 !---ZAERONWM1 now contains the surface concentration at the new timestep 107 107 !---PFLUXAER in unit of xx m-2 s-1 108 sfluxaer(:)=0.0108 budg_sed_part(:)=0.0 109 109 DO JL=1,klon 110 110 ZRHO=pplay(JL,1)/(RD*t_seri(JL,1)) 111 111 DO nb=1,nbtr_bin 112 !compute sfluxaeras sum over bins in kg(S)/m2/s113 sfluxaer(JL)=sfluxaer(JL)+ZRHO*ZAERONWM1(JL,nb)*ZVAER(JL,1,nb)*(mSatom/mH2SO4mol) &112 !compute budg_sed_part as sum over bins in kg(S)/m2/s 113 budg_sed_part(JL)=budg_sed_part(JL)+ZRHO*ZAERONWM1(JL,nb)*ZVAER(JL,1,nb)*(mSatom/mH2SO4mol) & 114 114 & *dens_aer_dry*4./3.*RPI*(mdw(nb)/2.)**3 115 115 ENDDO -
LMDZ5/trunk/libf/phylmd/StratAer/aerophys.F90
r2690 r2752 6 6 REAL,PARAMETER :: dens_aer_dry=1848.682308 ! dry aerosol particle mass density at T_0=293K[kg/m3] 7 7 REAL,PARAMETER :: dens_aer_ref=1483.905336 ! aerosol particle mass density with 75% H2SO4 at T_0=293K[kg/m3] 8 REAL,PARAMETER :: mdwmin=0.002e-6 ! dry diameter of smallest aerosol particles [m] 8 ! REAL,PARAMETER :: mdwmin=0.002e-6 ! dry diameter of smallest aerosol particles [m] 9 REAL,PARAMETER :: mdwmin=0.2e-6 ! dry diameter of smallest aerosol particles [m] !--testing 9 10 REAL,PARAMETER :: V_rat=2.0 ! volume ratio of neighboring size bins 10 11 REAL,PARAMETER :: mfrac_H2SO4=0.75 ! default mass fraction of H2SO4 in the aerosol -
LMDZ5/trunk/libf/phylmd/StratAer/interp_sulf_input.F90
r2704 r2752 8 8 USE mod_phys_lmdz_mpi_data, ONLY : is_mpi_root 9 9 USE mod_phys_lmdz_omp_data, ONLY : is_omp_root 10 USE phys_local_var_mod, ONLY : OCS_backgr_tend, SO2_backgr_tend10 USE phys_local_var_mod, ONLY : budg_3D_backgr_ocs, budg_3D_backgr_so2 11 11 USE phys_local_var_mod, ONLY : OCS_lifetime, SO2_lifetime 12 12 USE mod_phys_lmdz_para … … 34 34 REAL OCS_tmp, SO2_tmp 35 35 INTEGER, SAVE :: mth_pre 36 !$OMP THREADPRIVATE(mth_pre) 36 37 37 38 ! Champs reconstitues … … 244 245 tr_seri(i,k,id_SO2_strat)=SO2_clim(i,k) 245 246 ENDIF 246 OCS_backgr_tend(i,k)=tr_seri(i,k,id_OCS_strat)-OCS_tmp247 SO2_backgr_tend(i,k)=tr_seri(i,k,id_SO2_strat)-SO2_tmp247 budg_3D_backgr_ocs(i,k)=tr_seri(i,k,id_OCS_strat)-OCS_tmp 248 budg_3D_backgr_so2(i,k)=tr_seri(i,k,id_SO2_strat)-SO2_tmp 248 249 ENDDO 249 250 ENDDO … … 252 253 DO i=1, klon 253 254 DO k=1, klev 254 SO2_backgr_tend(i,k)=SO2_backgr_tend(i,k)*mSatom/mSO2mol*(paprs(i,k)-paprs(i,k+1))/RG/pdtphys255 OCS_backgr_tend(i,k)=OCS_backgr_tend(i,k)*mSatom/mOCSmol*(paprs(i,k)-paprs(i,k+1))/RG/pdtphys255 budg_3D_backgr_ocs(i,k)=budg_3D_backgr_ocs(i,k)*mSatom/mOCSmol*(paprs(i,k)-paprs(i,k+1))/RG/pdtphys 256 budg_3D_backgr_so2(i,k)=budg_3D_backgr_so2(i,k)*mSatom/mSO2mol*(paprs(i,k)-paprs(i,k+1))/RG/pdtphys 256 257 ENDDO 257 258 ENDDO -
LMDZ5/trunk/libf/phylmd/StratAer/micphy_tstep.F90
r2695 r2752 4 4 USE aerophys 5 5 USE infotrac 6 USE phys_local_var_mod, ONLY: mdw, sulf_nucl, sulf_cond_evap, R2SO4, DENSO4, f_r_wet6 USE phys_local_var_mod, ONLY: mdw, budg_3D_nucl, budg_3D_cond_evap, R2SO4, DENSO4, f_r_wet 7 7 USE nucleation_tstep_mod 8 8 USE cond_evap_tstep_mod … … 68 68 IF (is_strato(ilon,ilev)) THEN 69 69 ! initialize sulfur fluxes 70 sulf_nucl(ilon,ilev)=0.071 sulf_cond_evap(ilon,ilev)=0.070 budg_3D_nucl(ilon,ilev)=0.0 71 budg_3D_cond_evap(ilon,ilev)=0.0 72 72 H2SO4_init=tr_seri(ilon,ilev,id_H2SO4_strat) 73 73 ! adaptive timestep for nucleation and condensation … … 109 109 CALL nucleation_part(nucl_rate,ntot,x,dt,Vbin,tr_seri(ilon,ilev,:)) 110 110 ! compute fluxes as diagnostic in [kg(S)/m2/layer/s] (now - for evap and + for cond) 111 sulf_cond_evap(ilon,ilev)=sulf_cond_evap(ilon,ilev)+mSatom/mH2SO4mol &111 budg_3D_cond_evap(ilon,ilev)=budg_3D_cond_evap(ilon,ilev)+mSatom/mH2SO4mol & 112 112 & *cond_evap_rate*(paprs(ilon,ilev)-paprs(ilon,ilev+1))/RG*dt/pdtphys 113 sulf_nucl(ilon,ilev)=sulf_nucl(ilon,ilev)+mSatom/mH2SO4mol &113 budg_3D_nucl(ilon,ilev)=budg_3D_nucl(ilon,ilev)+mSatom/mH2SO4mol & 114 114 & *nucl_rate*(paprs(ilon,ilev)-paprs(ilon,ilev+1))/RG*dt/pdtphys 115 115 ! update time step … … 139 139 CALL cond_evap_part(pdtphys,FL,ASO4,f_r_wet(ilon,ilev),RRSI,Vbin,tr_seri(ilon,ilev,:)) 140 140 ! compute fluxes as diagnostic in [kg(S)/m2/layer/s] (now - for evap and + for cond) 141 sulf_cond_evap(ilon,ilev)=sulf_cond_evap(ilon,ilev)+mSatom/mH2SO4mol &141 budg_3D_cond_evap(ilon,ilev)=budg_3D_cond_evap(ilon,ilev)+mSatom/mH2SO4mol & 142 142 & *evap_rate*(paprs(ilon,ilev)-paprs(ilon,ilev+1))/RG 143 143 ENDIF -
LMDZ5/trunk/libf/phylmd/StratAer/ocs_to_so2.F90
r2695 r2752 1 SUBROUTINE ocs_to_so2(pdtphys,tr_seri,t_seri,pplay,paprs, sh,is_strato)1 SUBROUTINE ocs_to_so2(pdtphys,tr_seri,t_seri,pplay,paprs,is_strato) 2 2 3 3 USE dimphy, ONLY : klon,klev … … 5 5 USE infotrac 6 6 USE YOMCST, ONLY : RG 7 USE phys_local_var_mod, ONLY : OCS_lifetime, ocs_convert7 USE phys_local_var_mod, ONLY : OCS_lifetime, budg_3D_ocs_to_so2, budg_ocs_to_so2 8 8 9 9 IMPLICIT NONE … … 16 16 REAL,DIMENSION(klon,klev),INTENT(IN) :: pplay ! pression pour le mileu de chaque couche (en Pa) 17 17 REAL,DIMENSION(klon,klev+1),INTENT(IN) :: paprs ! pression pour chaque inter-couche (en Pa) 18 REAL,DIMENSION(klon,klev),INTENT(IN) :: sh ! humidite specifique19 18 LOGICAL,DIMENSION(klon,klev),INTENT(IN) :: is_strato 20 19 … … 23 22 24 23 !--convert OCS to SO2 25 ocs_convert(:,:)=0.0 24 budg_3D_ocs_to_so2(:,:)=0.0 25 budg_ocs_to_so2(:)=0.0 26 26 27 DO ilon=1, klon 27 28 DO ilev=1, klev … … 29 30 IF (is_strato(ilon,ilev)) THEN 30 31 IF (OCS_lifetime(ilon,ilev).GT.0.0) THEN 31 ocs_convert(ilon,ilev)=tr_seri(ilon,ilev,id_OCS_strat)*(1.0-exp(-pdtphys/OCS_lifetime(ilon,ilev)))32 budg_3D_ocs_to_so2(ilon,ilev)=tr_seri(ilon,ilev,id_OCS_strat)*(1.0-exp(-pdtphys/OCS_lifetime(ilon,ilev))) 32 33 ENDIF 33 tr_seri(ilon,ilev,id_OCS_strat)=tr_seri(ilon,ilev,id_OCS_strat) - ocs_convert(ilon,ilev) 34 tr_seri(ilon,ilev,id_SO2_strat)=tr_seri(ilon,ilev,id_SO2_strat) + mSO2mol/mOCSmol*ocs_convert(ilon,ilev) 35 !convert ocs_convert from kg(OCS)/kgA to kg(S)/m2/layer/s for saving as diagnostic 36 ocs_convert(ilon,ilev)=ocs_convert(ilon,ilev)*mSatom/mOCSmol*(paprs(ilon,ilev)-paprs(ilon,ilev+1))/RG/pdtphys 34 tr_seri(ilon,ilev,id_OCS_strat)=tr_seri(ilon,ilev,id_OCS_strat) - budg_3D_ocs_to_so2(ilon,ilev) 35 tr_seri(ilon,ilev,id_SO2_strat)=tr_seri(ilon,ilev,id_SO2_strat) + mSO2mol/mOCSmol*budg_3D_ocs_to_so2(ilon,ilev) 36 !convert budget from kg(OCS)/kgA to kg(S)/m2/layer/s for saving as diagnostic 37 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 38 budg_ocs_to_so2(ilon)=budg_ocs_to_so2(ilon)+budg_3D_ocs_to_so2(ilon,ilev) 37 39 ENDIF 38 40 ENDDO -
LMDZ5/trunk/libf/phylmd/StratAer/so2_to_h2so4.F90
r2695 r2752 1 SUBROUTINE SO2_TO_H2SO4(pdtphys,tr_seri,t_seri,pplay,paprs, sh,is_strato)1 SUBROUTINE SO2_TO_H2SO4(pdtphys,tr_seri,t_seri,pplay,paprs,is_strato) 2 2 3 3 USE dimphy, ONLY : klon,klev … … 5 5 USE infotrac 6 6 USE YOMCST, ONLY : RG 7 USE phys_local_var_mod, ONLY : SO2_lifetime, sulf_convert7 USE phys_local_var_mod, ONLY : SO2_lifetime, budg_3D_so2_to_h2so4, budg_so2_to_h2so4 8 8 9 9 IMPLICIT NONE … … 17 17 REAL,DIMENSION(klon,klev),INTENT(IN) :: pplay ! pression pour le mileu de chaque couche (en Pa) 18 18 REAL,DIMENSION(klon,klev+1),INTENT(IN) :: paprs ! pression pour chaque inter-couche (en Pa) 19 REAL,DIMENSION(klon,klev),INTENT(IN) :: sh ! humidite specifique20 19 LOGICAL,DIMENSION(klon,klev),INTENT(IN) :: is_strato ! stratospheric flag 21 20 … … 24 23 25 24 !--convert SO2 to H2SO4 26 sulf_convert(:,:)=0.0 25 budg_3D_so2_to_h2so4(:,:)=0.0 26 budg_so2_to_h2so4(:)=0.0 27 27 28 DO ilon=1, klon 28 29 DO ilev=1, klev … … 30 31 IF (is_strato(ilon,ilev)) THEN 31 32 IF (SO2_lifetime(ilon,ilev).GT.0.0) THEN 32 sulf_convert(ilon,ilev)=tr_seri(ilon,ilev,id_SO2_strat)*(1.0-exp(-pdtphys/SO2_lifetime(ilon,ilev)))33 budg_3D_so2_to_h2so4(ilon,ilev)=tr_seri(ilon,ilev,id_SO2_strat)*(1.0-exp(-pdtphys/SO2_lifetime(ilon,ilev))) 33 34 ENDIF 34 tr_seri(ilon,ilev,id_SO2_strat)=tr_seri(ilon,ilev,id_SO2_strat) - sulf_convert(ilon,ilev) 35 tr_seri(ilon,ilev,id_H2SO4_strat)=tr_seri(ilon,ilev,id_H2SO4_strat) + mH2SO4mol/mSO2mol*sulf_convert(ilon,ilev) 36 !convert sulf_convert from kg(SO2)/kgA to kg(S)/m2/layer/s for saving as diagnostic 37 sulf_convert(ilon,ilev)=sulf_convert(ilon,ilev)*mSatom/mSO2mol*(paprs(ilon,ilev)-paprs(ilon,ilev+1))/RG/pdtphys 35 tr_seri(ilon,ilev,id_SO2_strat)=tr_seri(ilon,ilev,id_SO2_strat) - budg_3D_so2_to_h2so4(ilon,ilev) 36 tr_seri(ilon,ilev,id_H2SO4_strat)=tr_seri(ilon,ilev,id_H2SO4_strat) + mH2SO4mol/mSO2mol*budg_3D_so2_to_h2so4(ilon,ilev) 37 !convert budget from kg(SO2)/kgA to kg(S)/m2/layer/s for saving as diagnostic 38 budg_3D_so2_to_h2so4(ilon,ilev)=budg_3D_so2_to_h2so4(ilon,ilev)*mSatom/mSO2mol*(paprs(ilon,ilev)-paprs(ilon,ilev+1))/RG/pdtphys 39 budg_so2_to_h2so4(ilon)=budg_so2_to_h2so4(ilon)+budg_3D_so2_to_h2so4(ilon,ilev) 38 40 ENDIF 39 41 ENDDO -
LMDZ5/trunk/libf/phylmd/StratAer/traccoag_mod.F90
r2704 r2752 8 8 SUBROUTINE traccoag(pdtphys, gmtime, debutphy, julien, & 9 9 presnivs, xlat, xlon, pphis, pphi, & 10 t_seri, pplay, paprs, sh, rh , & 11 tr_seri) 12 13 USE phys_local_var_mod, ONLY: mdw, sulf_convert, sulf_nucl, sulf_cond_evap, & 14 & sfluxaer, ocs_convert, R2SO4, DENSO4, f_r_wet, SO2_backgr_tend, OCS_backgr_tend, & 15 & OCS_lifetime, SO2_lifetime, surf_PM25_sulf 10 t_seri, pplay, paprs, sh, rh, tr_seri) 11 12 USE phys_local_var_mod, ONLY: mdw, R2SO4, DENSO4, f_r_wet, surf_PM25_sulf, & 13 & budg_emi_ocs, budg_emi_so2, budg_emi_h2so4, budg_emi_part 16 14 17 15 USE dimphy … … 71 69 REAL,PARAMETER :: altemiss_sai=17.e3 ! emission altitude in m 72 70 REAL,PARAMETER :: sigma_alt_sai=1.e3 ! standard deviation of emission altitude in m 73 REAL,PARAMETER :: xlat_sai=0.0 71 REAL,PARAMETER :: xlat_sai=0.01 ! latitude of SAI in degree 74 72 REAL,PARAMETER :: xlon_sai=120.35 ! longitude of SAI in degree 75 73 … … 90 88 REAL :: zrho ! Density of air [kg/m3] 91 89 REAL :: zdz ! thickness of atm. model layer in m 90 REAL,DIMENSION(klev) :: zdm ! mass of atm. model layer in kg 92 91 REAL,DIMENSION(klon,klev) :: dens_aer ! density of aerosol particles [kg/m3 aerosol] with default H2SO4 mass fraction 93 92 REAL :: dlat, dlon ! d latitude and d longitude of grid in degree 93 REAL :: emission ! emission 94 94 95 95 IF (is_mpi_root) THEN … … 141 141 DO ilon=1, klon 142 142 DO ilev=1, klev 143 m_air_gridbox(ilon,ilev)=(paprs(ilon,ilev)-paprs(ilon,ilev+1)) / RG *cell_area(ilon)144 ENDDO 145 ENDDO 146 147 IF (debutphy) THEN148 CALL gather(tr_seri, tr_seri_glo)149 IF (MAXVAL(tr_seri_glo).LT.1.e-30) THEN143 m_air_gridbox(ilon,ilev)=(paprs(ilon,ilev)-paprs(ilon,ilev+1))/RG*cell_area(ilon) 144 ENDDO 145 ENDDO 146 147 ! IF (debutphy) THEN 148 ! CALL gather(tr_seri, tr_seri_glo) 149 ! IF (MAXVAL(tr_seri_glo).LT.1.e-30) THEN 150 150 !--initialising tracer concentrations to zero 151 DO it=1, nbtr 152 tr_seri(:,:,it)=0.0 153 ENDDO 154 ENDIF 155 ENDIF 151 ! DO it=1, nbtr 152 ! tr_seri(:,:,it)=0.0 153 ! ENDDO 154 ! ENDIF 155 ! ENDIF 156 157 !--initialise emission diagnostics 158 budg_emi_ocs(:)=0.0 159 budg_emi_so2(:)=0.0 160 budg_emi_h2so4(:)=0.0 161 budg_emi_part(:)=0.0 156 162 157 163 !--sulfur emission, depending on chosen scenario (flag_sulf_emit) … … 170 176 IF ( xlat(i).GE.xlat_vol-dlat .AND. xlat(i).LT.xlat_vol+dlat .AND. & 171 177 xlon(i).GE.xlon_vol-dlon .AND. xlon(i).LT.xlon_vol+dlon ) THEN 178 ! 179 PRINT *,'coordinates of volcanic injection point=',xlat(i), xlon(i), day_cur, mth_cur, year_cur 172 180 ! compute altLMDz 173 181 altLMDz(:)=0.0 174 182 DO k=1, klev 175 zrho=pplay(i,k)/t_seri(i,k)/RD !air density in kg/m3 176 zdz=(paprs(i,k)-paprs(i,k+1))/zrho/RG !thickness of layer in m 177 altLMDz(k+1)=altLMDz(k)+zdz 183 zrho=pplay(i,k)/t_seri(i,k)/RD !air density in kg/m3 184 zdm(k)=(paprs(i,k)-paprs(i,k+1))/RG !mass of layer in kg 185 zdz=zdm(k)/zrho !thickness of layer in m 186 altLMDz(k+1)=altLMDz(k)+zdz !altitude of interface 178 187 ENDDO 179 188 !compute distribution of emission to vertical model layers (based on Gaussian peak in altitude) … … 194 203 !vertically distributed emission 195 204 DO k=1, klev 196 tr_seri(i,k,id_SO2_strat)=tr_seri(i,k,id_SO2_strat)+ & 197 & m_aer_emiss_vol*(mSO2mol/mSatom)/m_air_gridbox(i,k)*f_lay_emiss(k) & 198 & /(1.*86400./pdtphys) ! stretch emission over one day of Pinatubo eruption 205 ! stretch emission over one day of Pinatubo eruption 206 emission=m_aer_emiss_vol*(mSO2mol/mSatom)/m_air_gridbox(i,k)*f_lay_emiss(k)/1./86400. 207 tr_seri(i,k,id_SO2_strat)=tr_seri(i,k,id_SO2_strat)+emission*pdtphys 208 budg_emi_so2(i)=budg_emi_so2(i)+emission*zdm(k)*mSatom/mSO2mol 199 209 ENDDO 200 210 ENDIF ! emission grid cell … … 211 221 IF ( xlat(i).GE.xlat_sai-dlat .AND. xlat(i).LT.xlat_sai+dlat .AND. & 212 222 & xlon(i).GE.xlon_sai-dlon .AND. xlon(i).LT.xlon_sai+dlon ) THEN 223 ! 224 PRINT *,'coordinates of SAI point=',xlat(i), xlon(i), day_cur, mth_cur, year_cur 213 225 ! compute altLMDz 214 226 altLMDz(:)=0.0 215 227 DO k=1, klev 216 zrho=pplay(i,k)/t_seri(i,k)/RD !air density in kg/m3 217 zdz=(paprs(i,k)-paprs(i,k+1))/zrho/RG !thickness of layer in m 218 altLMDz(k+1)=altLMDz(k)+zdz 228 zrho=pplay(i,k)/t_seri(i,k)/RD !air density in kg/m3 229 zdm(k)=(paprs(i,k)-paprs(i,k+1))/RG !mass of layer in kg 230 zdz=zdm(k)/zrho !thickness of layer in m 231 altLMDz(k+1)=altLMDz(k)+zdz !altitude of interface 219 232 ENDDO 220 233 !compute distribution of emission to vertical model layers (based on Gaussian peak in altitude) … … 235 248 !vertically distributed emission 236 249 DO k=1, klev 237 tr_seri(i,k,id_SO2_strat)=tr_seri(i,k,id_SO2_strat)+ & 238 & m_aer_emiss_sai*(mSO2mol/mSatom)/m_air_gridbox(i,k)*f_lay_emiss(k) & 239 & /(360.*86400./pdtphys) ! stretch emission over whole year (360d) 240 ! & /(60.*86400./pdtphys) ! stretch emission over 2 months (seasonal emission) 241 ! & /7. ! distribute equally over 7 emission grid points 250 ! stretch emission over whole year (360d) 251 emission=m_aer_emiss_sai*(mSO2mol/mSatom)/m_air_gridbox(i,k)*f_lay_emiss(k)/360./86400. 252 tr_seri(i,k,id_SO2_strat)=tr_seri(i,k,id_SO2_strat)+emission*pdtphys 253 budg_emi_so2(i)=budg_emi_so2(i)+emission*zdm(k)*mSatom/mSO2mol 242 254 ENDDO 243 255 ! !emission as monodisperse particles with 0.1um dry radius (BIN21) 244 256 ! !vertically distributed emission 245 257 ! DO k=1, klev 246 ! tr_seri(i,k,id_BIN01_strat+20)=tr_seri(i,k,id_BIN01_strat+20)+ &247 ! & m_aer_emiss*(mH2SO4mol/mSatom)/m_part_dry(21)/m_air_gridbox(i,k)*f_lay_emiss(k) &248 ! & /(360.*86400./pdtphys) & ! stretch emission over whole year (360d)249 ! & /7. ! distribute equally over 7 emission grid points258 ! ! stretch emission over whole year (360d) 259 ! emission=m_aer_emiss*(mH2SO4mol/mSatom)/m_part_dry(21)/m_air_gridbox(i,k)*f_lay_emiss(k)/360./86400 260 ! tr_seri(i,k,id_BIN01_strat+20)=tr_seri(i,k,id_BIN01_strat+20)+emission*pdtphys 261 ! budg_emi_part(i)=budg_emi_part(i)+emission*zdm(k)*mSatom/mH2SO4mol 250 262 ! ENDDO 251 263 ENDIF ! emission grid cell … … 259 271 260 272 !--convert OCS to SO2 in the stratosphere 261 CALL ocs_to_so2(pdtphys,tr_seri,t_seri,pplay,paprs, sh,is_strato)273 CALL ocs_to_so2(pdtphys,tr_seri,t_seri,pplay,paprs,is_strato) 262 274 263 275 !--convert SO2 to H2SO4 264 CALL so2_to_h2so4(pdtphys,tr_seri,t_seri,pplay,paprs, sh,is_strato)276 CALL so2_to_h2so4(pdtphys,tr_seri,t_seri,pplay,paprs,is_strato) 265 277 266 278 !--common routine for nucleation and condensation/evaporation with adaptive timestep … … 282 294 surf_PM25_sulf(i)=surf_PM25_sulf(i)+tr_seri(i,1,it+nbtr_sulgas) & 283 295 & *132./98.*dens_aer_dry*4./3.*RPI*(mdw(it)/2.)**3 & 284 & *pplay(i,1)/t_seri(i,1)/RD*1 e9296 & *pplay(i,1)/t_seri(i,1)/RD*1.e9 285 297 ENDIF 286 298 ENDDO
Note: See TracChangeset
for help on using the changeset viewer.