- Timestamp:
- Sep 20, 2024, 12:32:04 PM (5 days ago)
- Location:
- LMDZ6/branches/cirrus
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
LMDZ6/branches/cirrus
- Property svn:mergeinfo changed
-
LMDZ6/branches/cirrus/libf/phylmd/StratAer/traccoag_mod.F90
r4769 r5202 9 9 presnivs, xlat, xlon, pphis, pphi, & 10 10 t_seri, pplay, paprs, sh, rh, tr_seri) 11 11 12 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 14 13 & budg_emi_ocs, budg_emi_so2, budg_emi_h2so4, budg_emi_part, & 14 & R2SO4B, DENSO4B, f_r_wetB, sulfmmr, SAD_sulfate, sulfmmr_mode, nd_mode, reff_sulfate 15 15 16 USE dimphy 16 17 USE infotrac_phy, ONLY : nbtr_bin, nbtr_sulgas, nbtr, id_SO2_strat … … 56 57 REAL :: m_aer_emiss_vol_daily ! daily injection mass emission 57 58 REAL :: m_aer ! aerosol mass 58 INTEGER :: it, k, i, ilon, ilev, itime, i_int, ieru59 INTEGER :: it, k, i, j, ilon, ilev, itime, i_int, ieru 59 60 LOGICAL,DIMENSION(klon,klev) :: is_strato ! true = above tropopause, false = below 60 61 REAL,DIMENSION(klon,klev) :: m_air_gridbox ! mass of air in every grid box [kg] … … 82 83 INTEGER :: injdur_sai ! injection duration for SAI case [days] 83 84 INTEGER :: yr, is_bissext 85 REAL :: samoment2, samoment3! 2nd and 3rd order moments of size distribution 84 86 85 87 IF (is_mpi_root .AND. flag_verbose_strataer) THEN … … 88 90 ENDIF 89 91 92 ! radius [m] 90 93 DO it=1, nbtr_bin 91 94 r_bin(it)=mdw(it)/2. … … 117 120 118 121 IF(flag_new_strat_compo) THEN 119 IF(debutphy) WRITE(lunout,*) 'traccoag: USE STRAT COMPO from Tabazadeh 1994', flag_new_strat_compo 120 ! STRACOMP (H2O, P, t_seri -> aerosol composition (R2SO4)) : binary routine (from reprobus) 121 ! H2SO4 mass fraction in aerosol (%) from Tabazadeh et al. (1994). 122 CALL stracomp_bin(sh,t_seri,pplay) 123 124 ! aerosol density (gr/cm3) - from Tabazadeh 125 CALL denh2sa_taba(t_seri) 122 IF(debutphy) WRITE(lunout,*) 'traccoag: COMPO/DENSITY (Tabazadeh 97) + H2O kelvin effect', flag_new_strat_compo 123 ! STRACOMP (H2O, P, t_seri, R -> R2SO4 + Kelvin effect) : Taba97, Socol, etc... 124 CALL stracomp_kelvin(sh,t_seri,pplay) 126 125 ELSE 127 IF(debutphy) WRITE(lunout,*) 'traccoag: USE STRATCOMPO from Bekki 2D model', flag_new_strat_compo126 IF(debutphy) WRITE(lunout,*) 'traccoag: COMPO from Bekki 2D model', flag_new_strat_compo 128 127 ! STRACOMP (H2O, P, t_seri -> aerosol composition (R2SO4)) 129 128 ! H2SO4 mass fraction in aerosol (%) … … 132 131 ! aerosol density (gr/cm3) 133 132 CALL denh2sa(t_seri) 133 134 ! compute factor for converting dry to wet radius (for every grid box) 135 f_r_wet(:,:) = (dens_aer_dry/(DENSO4(:,:)*1000.)/(R2SO4(:,:)/100.))**(1./3.) 134 136 ENDIF 135 137 136 ! compute factor for converting dry to wet radius (for every grid box)137 f_r_wet(:,:) = (dens_aer_dry/(DENSO4(:,:)*1000.)/(R2SO4(:,:)/100.))**(1./3.)138 139 138 !--calculate mass of air in every grid box 140 139 DO ilon=1, klon … … 348 347 ENDDO 349 348 349 !--compute 350 ! sulfmmr: Sulfate aerosol concentration (dry mixing ratio) (condensed H2SO4 mmr) 351 ! SAD_sulfate: SAD all aerosols (cm2/cm3) (must be WET) 352 ! sulfmmr_mode: sulfate(=H2SO4 if dry) MMR in different modes (ambiguous but based on sulfmmr, it mus be DRY(?) mmr) 353 ! nd_mode: DRY(?) particle concentration in different modes (part/m3) 354 sulfmmr(:,:)=0.0 355 SAD_sulfate(:,:)=0.0 356 sulfmmr_mode(:,:,:)=0.0 357 nd_mode(:,:,:)=0.0 358 reff_sulfate(:,:)=0.0 359 360 DO i=1,klon 361 DO j=1,klev 362 samoment2=0.0 363 samoment3=0.0 364 DO it=1, nbtr_bin 365 !surf_PM25_sulf(i)=surf_PM25_sulf(i)+tr_seri(i,1,it+nbtr_sulgas)*m_part(i,1,it) & 366 !assume that particles consist of ammonium sulfate at the surface (132g/mol) 367 !and are dry at T = 20 deg. C and 50 perc. humidity 368 369 ! sulfmmr_mode: sulfate(=H2SO4 if dry) MMR in different modes (based on sulfmmr, it must be DRY mmr) 370 ! equivalent to condensed H2SO4 mmr= H2SO4 kg / kgA in bin it 371 sulfmmr_mode(i,j,it) = tr_seri(i,j,it+nbtr_sulgas) & ! [DRY part/kgA in bin it] 372 & *(4./3.)*RPI*(mdw(it)/2.)**3. & ! [mdw: dry diameter in m] 373 & *dens_aer_dry ! [dry aerosol mass density in kg/m3] 374 375 ! sulfmmr: Sulfate aerosol concentration (dry mass mixing ratio) 376 ! equivalent to total condensed H2SO4 mmr (H2SO4 kg / kgA 377 sulfmmr(i,j) = sulfmmr(i,j) + sulfmmr_mode(i,j,it) 378 379 ! nd_mode: particle concentration in different modes (DRY part/m3) 380 nd_mode(i,j,it) = tr_seri(i,j,it+nbtr_sulgas) & ! [DRY part/kgA in bin it] 381 & *pplay(i,j)/t_seri(i,j)/RD ! [air mass concentration in kg air /m3A] 382 383 IF(flag_new_strat_compo) THEN 384 ! SAD_sulfate: SAD WET sulfate aerosols (cm2/cm3) 385 SAD_sulfate(i,j) = SAD_sulfate(i,j) + nd_mode(i,j,it) & ! [DRY part/m3A (in bin it)] 386 & *4.*RPI*( mdw(it)*f_r_wetB(i,j,it)/2. )**2. & ! [WET SA of part it in m2] 387 & *1.e-2 ! conversion from m2/m3 to cm2/cm3A 388 ! samoment2 : 2nd order moment of WET sulfate aerosols (m2/m3) 389 samoment2 = samoment2 + nd_mode(i,j,it) & ! [DRY part/m3A (in bin it)] 390 & *( mdw(it)*f_r_wetB(i,j,it)/2. )**2. ! [WET SA of part it in m2] 391 ! samoment3 : 3nd order moment of WET sulfate aerosols (cm2/cm3) 392 samoment3 = samoment3 + nd_mode(i,j,it) & ! [DRY part/m3A (in bin it)] 393 & *( mdw(it)*f_r_wetB(i,j,it)/2. )**3. ! [WET SA of part it in m2] 394 ELSE 395 ! SAD_sulfate: SAD WET sulfate aerosols (cm2/cm3) 396 SAD_sulfate(i,j) = SAD_sulfate(i,j) + nd_mode(i,j,it) & ! [DRY part/m3A (in bin it)] 397 & *4.*RPI*( mdw(it)*f_r_wet(i,j)/2. )**2. & ! [WET SA of part it in m2] 398 & *1.e-2 ! conversion from m2/m3 to cm2/cm3A 399 ! samoment2 : 2nd order moment of WET sulfate aerosols (m2/m3) 400 samoment2 = samoment2 + nd_mode(i,j,it) & ! [DRY part/m3A (in bin it)] 401 & *( mdw(it)*f_r_wet(i,j)/2. )**2. ! [WET SA of part it in m2] 402 ! samoment3 : 3nd order moment of WET sulfate aerosols (cm2/cm3) 403 samoment3 = samoment3 + nd_mode(i,j,it) & ! [DRY part/m3A (in bin it)] 404 & *( mdw(it)*f_r_wet(i,j)/2. )**3. ! [WET SA of part it in m2] 405 ENDIF 406 ENDDO 407 ! reff_sulfate: effective radius of WET sulfate aerosols (cm) 408 reff_sulfate(i,j) = (samoment3 / samoment2) & 409 & *1.e2 ! conversion from m to cm 410 ENDDO 411 ENDDO 412 350 413 END SUBROUTINE traccoag 351 414
Note: See TracChangeset
for help on using the changeset viewer.