Changeset 4998
- Timestamp:
- Jun 27, 2024, 11:56:50 AM (6 months ago)
- Location:
- LMDZ6/trunk/libf/phylmd
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
LMDZ6/trunk/libf/phylmd/StratAer/traccoag_mod.F90
r4950 r4998 12 12 USE phys_local_var_mod, ONLY: mdw, R2SO4, DENSO4, f_r_wet, surf_PM25_sulf, & 13 13 & budg_emi_ocs, budg_emi_so2, budg_emi_h2so4, budg_emi_part, & 14 & R2SO4B, DENSO4B, f_r_wetB 14 & R2SO4B, DENSO4B, f_r_wetB, sulfmmr, SAD_sulfate, sulfmmr_mode, nd_mode 15 15 16 16 USE dimphy … … 57 57 REAL :: m_aer_emiss_vol_daily ! daily injection mass emission 58 58 REAL :: m_aer ! aerosol mass 59 INTEGER :: it, k, i, ilon, ilev, itime, i_int, ieru59 INTEGER :: it, k, i, j, ilon, ilev, itime, i_int, ieru 60 60 LOGICAL,DIMENSION(klon,klev) :: is_strato ! true = above tropopause, false = below 61 61 REAL,DIMENSION(klon,klev) :: m_air_gridbox ! mass of air in every grid box [kg] … … 346 346 ENDDO 347 347 348 !--compute 349 ! sulfmmr: Sulfate aerosol concentration (dry mixing ratio) (condensed H2SO4 mmr) 350 ! SAD_sulfate: SAD all aerosols (cm2/cm3) (must be WET) 351 ! sulfmmr_mode: sulfate(=H2SO4 if dry) MMR in different modes (ambiguous but based on sulfmmr, it mus be DRY(?) mmr) 352 ! nd_mode: DRY(?) particle concentration in different modes (part/m3) 353 sulfmmr(:,:)=0.0 354 SAD_sulfate(:,:)=0.0 355 sulfmmr_mode(:,:,:)=0.0 356 nd_mode(:,:,:)=0.0 357 358 DO i=1,klon 359 DO j=1,klev 360 DO it=1, nbtr_bin 361 !surf_PM25_sulf(i)=surf_PM25_sulf(i)+tr_seri(i,1,it+nbtr_sulgas)*m_part(i,1,it) & 362 !assume that particles consist of ammonium sulfate at the surface (132g/mol) 363 !and are dry at T = 20 deg. C and 50 perc. humidity 364 365 ! sulfmmr_mode: sulfate(=H2SO4 if dry) MMR in different modes (based on sulfmmr, it must be DRY mmr) 366 ! equivalent to condensed H2SO4 mmr= H2SO4 kg / kgA in bin it 367 sulfmmr_mode(i,j,it) = tr_seri(i,j,it+nbtr_sulgas) & ! [DRY part/kgA in bin it] 368 & *(4./3.)*RPI*(mdw(it)/2.)**3. & ! [mdw: dry diameter in m] 369 & *dens_aer_dry ! [dry aerosol mass density in kg/m3] 370 371 ! sulfmmr: Sulfate aerosol concentration (dry mass mixing ratio) 372 ! equivalent to total condensed H2SO4 mmr (H2SO4 kg / kgA 373 sulfmmr(i,j) = sulfmmr(i,j) + sulfmmr_mode(i,j,it) 374 375 ! nd_mode: particle concentration in different modes (DRY part/m3) 376 nd_mode(i,j,it) = tr_seri(i,j,it+nbtr_sulgas) & ! [DRY part/kgA in bin it] 377 & *pplay(i,j)/t_seri(i,j)/RD ! [air mass concentration in kg air /m3A] 378 379 IF(flag_new_strat_compo) THEN 380 ! SAD_sulfate: SAD WET sulfate aerosols (cm2/cm3) 381 SAD_sulfate(i,j) = SAD_sulfate(i,j) + nd_mode(i,j,it) & ! [DRY part/m3A (in bin it)] 382 & *4.*RPI*( mdw(it)*f_r_wetB(i,j,it)/2. )**2. & ! [WET SA of part it in m2] 383 & *1.e-2 ! conversion from m2/m3 to cm2/cm3A 384 ELSE 385 ! SAD_sulfate: SAD WET sulfate aerosols (cm2/cm3) 386 SAD_sulfate(i,j) = SAD_sulfate(i,j) + nd_mode(i,j,it) & ! [DRY part/m3A (in bin it)] 387 & *4.*RPI*( mdw(it)*f_r_wet(i,j)/2. )**2. & ! [WET SA of part it in m2] 388 & *1.e-2 ! conversion from m2/m3 to cm2/cm3A 389 ENDIF 390 ENDDO 391 ENDDO 392 ENDDO 393 348 394 END SUBROUTINE traccoag 349 395 -
LMDZ6/trunk/libf/phylmd/phys_local_var_mod.F90
r4973 r4998 614 614 REAL, ALLOCATABLE, SAVE, DIMENSION(:,:) :: vsed_aer 615 615 !$OMP THREADPRIVATE(vsed_aer) 616 ! Sulfate aerosol concentration (dry mixing ratio) (condensed H2SO4 mmr) 617 REAL, ALLOCATABLE, SAVE, DIMENSION(:,:) :: sulfmmr 618 !$OMP THREADPRIVATE(sulfmmr) 619 ! SAD all aerosols (cm2/cm3) 620 REAL, ALLOCATABLE, SAVE, DIMENSION(:,:) :: SAD_sulfate 621 !$OMP THREADPRIVATE(SAD_sulfate) 622 ! sulfate MMR in different modes (based on sulfmmr, it must be dry mmr) 623 REAL, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: sulfmmr_mode 624 !$OMP THREADPRIVATE(sulfmmr_mode) 625 ! particle concentration in different modes (part/m3) 626 REAL, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: nd_mode 627 !$OMP THREADPRIVATE(nd_mode) 616 628 ! 617 629 !---3D budget variables … … 1018 1030 ALLOCATE (surf_PM25_sulf(klon)) 1019 1031 ALLOCATE (vsed_aer(klon,klev)) 1032 ALLOCATE (sulfmmr(klon,klev)) 1033 ALLOCATE (SAD_sulfate(klon,klev)) 1034 ALLOCATE (sulfmmr_mode(klon,klev,nbtr_bin)) 1035 ALLOCATE (nd_mode(klon,klev,nbtr_bin)) 1020 1036 #endif 1021 1037 … … 1311 1327 DEALLOCATE (surf_PM25_sulf) 1312 1328 DEALLOCATE (vsed_aer) 1329 DEALLOCATE (sulfmmr) 1330 DEALLOCATE (SAD_sulfate) 1331 DEALLOCATE (sulfmmr_mode) 1332 DEALLOCATE (nd_mode) 1313 1333 DEALLOCATE (budg_3D_ocs_to_so2) 1314 1334 DEALLOCATE (budg_3D_so2_to_h2so4) -
LMDZ6/trunk/libf/phylmd/phys_output_ctrlout_mod.F90
r4887 r4998 1444 1444 TYPE(ctrl_out), SAVE :: o_tau_strat_1020 = ctrl_out((/ 11, 11, 11, 11, 11, 11, 11, 11, 11, 1/), & 1445 1445 'OD1020_strat_only', 'Stratospheric Aerosol Optical depth at 1020 nm ', '1', (/ ('', i=1, 10) /)) 1446 TYPE(ctrl_out), SAVE :: o_SAD_sulfate = ctrl_out((/ 11, 11, 11, 11, 11, 11, 11, 11, 11, 1/), & 1447 'SAD_sulfate', 'SAD WET sulfate aerosols', 'cm2/cm3', (/ ('', i=1, 10) /)) 1448 TYPE(ctrl_out), SAVE :: o_sulfmmr = ctrl_out((/ 11, 11, 11, 11, 11, 11, 11, 11, 11, 1/), & 1449 'sulfMMR', 'Sulfate aerosol concentration (dry mass mixing ratio)', 'kg(H2SO4)/kg(air)', (/ ('', i=1, 10) /)) 1450 TYPE(ctrl_out), SAVE, ALLOCATABLE :: o_nd_mode(:) 1451 TYPE(ctrl_out), SAVE, ALLOCATABLE :: o_sulfmmr_mode(:) 1446 1452 !--chemistry 1447 1453 TYPE(ctrl_out), SAVE :: o_R2SO4 = ctrl_out((/ 11, 11, 11, 11, 11, 11, 11, 11, 11, 1/), & -
LMDZ6/trunk/libf/phylmd/phys_output_mod.F90
r4619 r4998 49 49 ! ug Pour les sorties XIOS 50 50 USE wxios 51 51 #ifdef CPP_StratAer 52 USE infotrac_phy, ONLY: nbtr_bin 53 #endif 54 52 55 IMPLICIT NONE 53 56 include "clesphys.h" … … 93 96 CHARACTER(LEN=4), DIMENSION(nlevSTD) :: clevSTD 94 97 REAL, DIMENSION(nlevSTD) :: rlevSTD 95 INTEGER :: nsrf, k, iq, iff, i, j, ilev, itr, i xt, iiso, izone98 INTEGER :: nsrf, k, iq, iff, i, j, ilev, itr, itrb, ixt, iiso, izone 96 99 INTEGER :: naero 97 100 LOGICAL :: ok_veget … … 158 161 ALLOCATE(o_dtr_sscav(nqtot),o_dtr_sat(nqtot),o_dtr_uscav(nqtot)) 159 162 ALLOCATE(o_dtr_dry(nqtot),o_dtr_vdf(nqtot)) 160 163 #ifdef CPP_StratAer 164 ALLOCATE(o_nd_mode(nbtr_bin),o_sulfmmr_mode(nbtr_bin)) 165 #endif 166 161 167 levmax = [klev, klev, klev, klev, klev, klev, nlevSTD, nlevSTD, nlevSTD, klev] 162 168 … … 467 473 ENDIF ! clef_files 468 474 469 itr = 0 475 itr = 0; itrb = 0 470 476 DO iq = 1, nqtot 471 477 IF(.NOT.(tracers(iq)%isAdvected .AND. tracers(iq)%isInPhysics)) CYCLE … … 503 509 lnam = 'Cumulated tracer '//TRIM(tracers(iq)%longName) 504 510 tnam = 'cum'//TRIM(tracers(iq)%name); o_trac_cum(itr) = ctrl_out(flag, tnam, lnam, "-", [('',i=1,nfiles)]) 505 ENDDO 511 512 #ifdef CPP_StratAer 513 if(tracers(iq)%name(1:3)=='BIN') then 514 itrb = itrb + 1 515 flag = [11, 11, 11, 11, 11, 11, 11, 11, 11, 1] 516 lnam = 'Dry particle concentration in '//TRIM(tracers(iq)%longName) 517 tnam = TRIM(tracers(iq)%name)//'_nd_mode'; o_nd_mode (itrb) = ctrl_out(flag, tnam, lnam, "part/m3", [('',i=1,nfiles)]) 518 lnam = 'Sulfate MMR in '//TRIM(tracers(iq)%longName) 519 tnam = TRIM(tracers(iq)%name)//'_sulfmmr_mode';o_sulfmmr_mode (itrb) = ctrl_out(flag, tnam, lnam, "kg(H2SO4)/kg(air)", [('',i=1,nfiles)]) 520 endif 521 #endif 522 ENDDO 506 523 507 524 ENDDO ! iff -
LMDZ6/trunk/libf/phylmd/phys_output_write_mod.F90
r4984 r4998 244 244 245 245 #ifdef CPP_StratAer 246 USE infotrac_phy, ONLY: nbtr_bin 246 247 USE phys_output_ctrlout_mod, ONLY: & 247 248 o_budg_3D_nucl, o_budg_3D_cond_evap, o_budg_3D_ocs_to_so2, o_budg_3D_so2_to_h2so4, & … … 255 256 o_budg_ocs_to_so2, o_budg_so2_to_h2so4, o_budg_h2so4_to_part, & 256 257 o_surf_PM25_sulf, o_ext_strat_550, o_tau_strat_550, & 257 o_vsed_aer, o_tau_strat_1020, o_ext_strat_1020, o_f_r_wet 258 o_vsed_aer, o_tau_strat_1020, o_ext_strat_1020, o_f_r_wet, & 259 o_SAD_sulfate, o_sulfmmr, o_nd_mode, o_sulfmmr_mode 258 260 #endif 259 261 … … 410 412 budg_ocs_to_so2, budg_so2_to_h2so4, budg_h2so4_to_part, & 411 413 surf_PM25_sulf, tau_strat_550, tausum_strat, & 412 vsed_aer, tau_strat_1020, f_r_wet 414 vsed_aer, tau_strat_1020, f_r_wet, & 415 SAD_sulfate, sulfmmr, nd_mode, sulfmmr_mode 413 416 #endif 414 417 … … 1798 1801 CALL histwrite_phy(o_tau_strat_550, tausum_strat(:,1)) 1799 1802 CALL histwrite_phy(o_tau_strat_1020, tausum_strat(:,2)) 1803 CALL histwrite_phy(o_SAD_sulfate, SAD_sulfate) 1804 CALL histwrite_phy(o_sulfmmr, sulfmmr) 1805 ! All BINs fields 1806 DO itr = 1, nbtr_bin 1807 CALL histwrite_phy(o_nd_mode(itr), nd_mode(:,:,itr)) 1808 CALL histwrite_phy(o_sulfmmr_mode(itr), sulfmmr_mode(:,:,itr)) 1809 ENDDO !--itr 1800 1810 ENDIF 1801 1811 #endif
Note: See TracChangeset
for help on using the changeset viewer.