Changeset 4998 for LMDZ6/trunk


Ignore:
Timestamp:
Jun 27, 2024, 11:56:50 AM (3 months ago)
Author:
lebasn
Message:

StratAer?: new diags (sulfate SAD and MMR)

Location:
LMDZ6/trunk/libf/phylmd
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • LMDZ6/trunk/libf/phylmd/StratAer/traccoag_mod.F90

    r4950 r4998  
    1212    USE phys_local_var_mod, ONLY: mdw, R2SO4, DENSO4, f_r_wet, surf_PM25_sulf, &
    1313        & 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
    1515   
    1616    USE dimphy
     
    5757    REAL                                   :: m_aer_emiss_vol_daily ! daily injection mass emission
    5858    REAL                                   :: m_aer               ! aerosol mass
    59     INTEGER                                :: it, k, i, ilon, ilev, itime, i_int, ieru
     59    INTEGER                                :: it, k, i, j, ilon, ilev, itime, i_int, ieru
    6060    LOGICAL,DIMENSION(klon,klev)           :: is_strato           ! true = above tropopause, false = below
    6161    REAL,DIMENSION(klon,klev)              :: m_air_gridbox       ! mass of air in every grid box [kg]
     
    346346    ENDDO
    347347   
     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     
    348394  END SUBROUTINE traccoag
    349395
  • LMDZ6/trunk/libf/phylmd/phys_local_var_mod.F90

    r4973 r4998  
    614614      REAL, ALLOCATABLE, SAVE, DIMENSION(:,:) :: vsed_aer
    615615!$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)
    616628!
    617629!---3D budget variables
     
    10181030      ALLOCATE (surf_PM25_sulf(klon))
    10191031      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))
    10201036#endif
    10211037
     
    13111327      DEALLOCATE (surf_PM25_sulf)
    13121328      DEALLOCATE (vsed_aer)
     1329      DEALLOCATE (sulfmmr)
     1330      DEALLOCATE (SAD_sulfate)
     1331      DEALLOCATE (sulfmmr_mode)
     1332      DEALLOCATE (nd_mode)
    13131333      DEALLOCATE (budg_3D_ocs_to_so2)
    13141334      DEALLOCATE (budg_3D_so2_to_h2so4)
  • LMDZ6/trunk/libf/phylmd/phys_output_ctrlout_mod.F90

    r4887 r4998  
    14441444  TYPE(ctrl_out), SAVE :: o_tau_strat_1020 = ctrl_out((/ 11, 11, 11, 11, 11, 11, 11, 11, 11, 1/), &
    14451445    '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(:)
    14461452!--chemistry
    14471453  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  
    4949    ! ug Pour les sorties XIOS
    5050    USE wxios
    51 
     51#ifdef CPP_StratAer
     52   USE infotrac_phy, ONLY: nbtr_bin
     53#endif
     54   
    5255    IMPLICIT NONE
    5356    include "clesphys.h"
     
    9396    CHARACTER(LEN=4), DIMENSION(nlevSTD)  :: clevSTD
    9497    REAL, DIMENSION(nlevSTD)              :: rlevSTD
    95     INTEGER                               :: nsrf, k, iq, iff, i, j, ilev, itr, ixt, iiso, izone
     98    INTEGER                               :: nsrf, k, iq, iff, i, j, ilev, itr, itrb, ixt, iiso, izone
    9699    INTEGER                               :: naero
    97100    LOGICAL                               :: ok_veget
     
    158161    ALLOCATE(o_dtr_sscav(nqtot),o_dtr_sat(nqtot),o_dtr_uscav(nqtot))
    159162    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   
    161167    levmax = [klev, klev, klev, klev, klev, klev, nlevSTD, nlevSTD, nlevSTD, klev]
    162168
     
    467473     ENDIF ! clef_files
    468474
    469           itr = 0
     475          itr = 0; itrb = 0
    470476          DO iq = 1, nqtot
    471477            IF(.NOT.(tracers(iq)%isAdvected .AND. tracers(iq)%isInPhysics)) CYCLE
     
    503509            lnam = 'Cumulated tracer '//TRIM(tracers(iq)%longName)
    504510            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
    506523
    507524   ENDDO !  iff
  • LMDZ6/trunk/libf/phylmd/phys_output_write_mod.F90

    r4984 r4998  
    244244
    245245#ifdef CPP_StratAer
     246    USE infotrac_phy, ONLY: nbtr_bin
    246247    USE phys_output_ctrlout_mod, ONLY:  &
    247248         o_budg_3D_nucl, o_budg_3D_cond_evap, o_budg_3D_ocs_to_so2, o_budg_3D_so2_to_h2so4, &
     
    255256         o_budg_ocs_to_so2, o_budg_so2_to_h2so4, o_budg_h2so4_to_part, &
    256257         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
    258260#endif
    259261
     
    410412         budg_ocs_to_so2, budg_so2_to_h2so4, budg_h2so4_to_part, &
    411413         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
    413416#endif
    414417
     
    17981801          CALL histwrite_phy(o_tau_strat_550, tausum_strat(:,1))
    17991802          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
    18001810       ENDIF
    18011811#endif
Note: See TracChangeset for help on using the changeset viewer.