Ignore:
Timestamp:
Jul 28, 2025, 6:44:28 PM (4 months ago)
Author:
aborella
Message:

Major modifs to treatment of contrails (from 2 classes to 2 moments) + diagnostics. Increased numerical efficiency

File:
1 edited

Legend:

Unmodified
Added
Removed
  • LMDZ6/branches/contrails/libf/phylmd/lmdz_lscp_ini.f90

    r5779 r5790  
    232232  !$OMP THREADPRIVATE(ok_plane_contrail)
    233233
    234   LOGICAL, SAVE, PROTECTED :: ok_precip_lincontrails=.TRUE.  ! if True, linear contrails can be autoconverted to snow
    235   !$OMP THREADPRIVATE(ok_precip_lincontrails)
    236 
    237   LOGICAL, SAVE, PROTECTED :: ok_precip_circontrails=.FALSE. ! if True, cirrus contrails can be autoconverted to snow
    238   !$OMP THREADPRIVATE(ok_precip_circontrails)
    239 
    240   REAL, SAVE, PROTECTED :: aspect_ratio_lincontrails=.1      ! [-] aspect ratio of linear contrails
    241   !$OMP THREADPRIVATE(aspect_ratio_lincontrails)
    242 
    243   REAL, SAVE, PROTECTED :: coef_mixing_lincontrails          ! [-] tuning coefficient for the linear contrails mixing process
    244   !$OMP THREADPRIVATE(coef_mixing_lincontrails)
    245  
    246   REAL, SAVE, PROTECTED :: coef_shear_lincontrails           ! [-] additional coefficient for the linear contrails shearing process (subprocess of the contrails mixing process)
    247   !$OMP THREADPRIVATE(coef_shear_lincontrails)
    248  
    249   REAL, SAVE, PROTECTED :: chi_mixing_lincontrails=3.        ! [-] factor for increasing the chance that moist air is surrounding linear contrails
    250   !$OMP THREADPRIVATE(chi_mixing_lincontrails)
     234  REAL, SAVE, PROTECTED :: aspect_ratio_contrails            ! [-] aspect ratio of contrails
     235  !$OMP THREADPRIVATE(aspect_ratio_contrails)
     236
     237  REAL, SAVE, PROTECTED :: coef_mixing_contrails             ! [-] tuning coefficient for the contrails mixing process
     238  !$OMP THREADPRIVATE(coef_mixing_contrails)
     239 
     240  REAL, SAVE, PROTECTED :: coef_shear_contrails              ! [-] additional coefficient for the contrails shearing process (subprocess of the contrails mixing process)
     241  !$OMP THREADPRIVATE(coef_shear_contrails)
     242 
     243  REAL, SAVE, PROTECTED :: chi_mixing_contrails              ! [-] factor for increasing the chance that moist air is surrounding contrails
     244  !$OMP THREADPRIVATE(chi_mixing_contrails)
     245
     246  REAL, SAVE, PROTECTED :: Nice_init_contrails=100.          ! [#/cm3] initial ice crystals concentration in contrails
     247  !$OMP THREADPRIVATE(Nice_init_contrails)
     248
     249  REAL, SAVE, PROTECTED :: N_Brunt_Vaisala_aviation=0.01     ! [s-1] average Brunt Vaisala frequency, for contrail formation
     250  !$OMP THREADPRIVATE(N_Brunt_Vaisala_aviation)
     251
     252  REAL, SAVE, PROTECTED :: circ_0_loss                       ! [m/s] circulation for contrail formation, will be set automatically
     253  !$OMP THREADPRIVATE(circ_0_loss)
     254
     255  REAL, SAVE, PROTECTED :: plume_area_loss                   ! [m2] plume area for contrail formation, will be set automatically
     256  !$OMP THREADPRIVATE(plume_area_loss)
     257
     258  REAL, SAVE, PROTECTED :: nice_init_ref_loss                ! [#/m3] reference ice crystals concentration for contrail formation, will be set automatically
     259  !$OMP THREADPRIVATE(nice_init_ref_loss)
     260
     261  REAL, SAVE, PROTECTED :: Naer_amb=600.                     ! [#/cm3] ambiant background aerosol number concentration, for contrail formation
     262  !$OMP THREADPRIVATE(Naer_amb)
     263
     264  REAL, SAVE, PROTECTED :: raer_amb_mean=15.                 ! [nm] average radius of the background aerosols, for contrail formation
     265  !$OMP THREADPRIVATE(raer_amb_mean)
     266
     267  REAL, SAVE, PROTECTED :: raer_amb_std=2.2                  ! [?] standard deviation of the radius of the background aerosols, for contrail formation
     268  !$OMP THREADPRIVATE(raer_amb_std)
     269
     270  REAL, SAVE, PROTECTED :: r_soot_mean=15.                   ! [nm] average radius of the background aerosols, for contrail formation
     271  !$OMP THREADPRIVATE(r_soot_mean)
     272
     273  REAL, SAVE, PROTECTED :: r_soot_std=1.6                    ! [?] standard deviation of the radius of the background aerosols, for contrail formation
     274  !$OMP THREADPRIVATE(r_soot_std)
     275
     276  REAL, SAVE, PROTECTED :: air_to_fuel_ratio_engine=70.      ! [-] air to fuel ratio engine, for contrail formation
     277  !$OMP THREADPRIVATE(air_to_fuel_ratio_engine)
     278
     279  REAL, SAVE, PROTECTED :: wingspan=60.                      ! [m] average aircraft wingspan, for contrail formation
     280  !$OMP THREADPRIVATE(wingspan)
     281
     282  REAL, SAVE, PROTECTED :: EI_soot_aviation=1.5e15           ! [#/kg] emission index of soot number for a given fuel type
     283  !$OMP THREADPRIVATE(EI_soot_aviation)
    251284
    252285  REAL, SAVE, PROTECTED :: EI_H2O_aviation=1.25              ! [kgH2O/kg] emission index of water vapor for a given fuel type
     
    273306  REAL, SAVE, PROTECTED :: fallice_cirrus_contrails=1.       ! [m/s] Ice fallspeed velocity in cirrus contrails
    274307  !$OMP THREADPRIVATE(fallice_cirrus_contrails)
     308
     309  REAL, SAVE, PROTECTED :: eff2vol_radius_contrails=0.7      ! [-]
     310  !$OMP THREADPRIVATE(eff2vol_radius_contrails)
    275311
    276312  REAL, SAVE, PROTECTED :: aviation_coef=1.                  ! [-] scaling factor for aviation emissions and flown distance
     
    568604    CALL getin_p('chi_mixing',chi_mixing)
    569605    ! for aviation
    570     CALL getin_p('ok_precip_lincontrails',ok_precip_lincontrails)
    571     CALL getin_p('ok_precip_circontrails',ok_precip_circontrails)
    572     CALL getin_p('aspect_ratio_lincontrails',aspect_ratio_lincontrails)
    573     coef_mixing_lincontrails=coef_mixing_lscp
    574     CALL getin_p('coef_mixing_lincontrails',coef_mixing_lincontrails)
    575     coef_shear_lincontrails=coef_shear_lscp
    576     CALL getin_p('coef_shear_lincontrails',coef_shear_lincontrails)
    577     CALL getin_p('chi_mixing_lincontrails',chi_mixing_lincontrails)
     606    aspect_ratio_contrails=aspect_ratio_cirrus
     607    CALL getin_p('aspect_ratio_contrails',aspect_ratio_contrails)
     608    coef_mixing_contrails=coef_mixing_lscp
     609    CALL getin_p('coef_mixing_contrails',coef_mixing_contrails)
     610    coef_shear_contrails=coef_shear_lscp
     611    CALL getin_p('coef_shear_contrails',coef_shear_contrails)
     612    chi_mixing_contrails=chi_mixing
     613    CALL getin_p('chi_mixing_contrails',chi_mixing_contrails)
     614    CALL getin_p('Nice_init_contrails',Nice_init_contrails)
    578615    CALL getin_p('EI_H2O_aviation',EI_H2O_aviation)
     616    CALL getin_p('EI_soot_aviation',EI_soot_aviation)
     617    CALL getin_p('air_to_fuel_ratio_engine',air_to_fuel_ratio_engine)
     618    CALL getin_p('wingspan',wingspan)
     619    CALL getin_p('Naer_amb',Naer_amb)
     620    CALL getin_p('raer_amb_mean',raer_amb_mean)
     621    CALL getin_p('raer_amb_std',raer_amb_std)
     622    CALL getin_p('r_soot_mean',r_soot_mean)
     623    CALL getin_p('r_soot_std',r_soot_std)
     624    CALL getin_p('N_Brunt_Vaisala_aviation',N_Brunt_Vaisala_aviation)
    579625    CALL getin_p('qheat_fuel_aviation',qheat_fuel_aviation)
    580626    CALL getin_p('prop_efficiency_aviation',prop_efficiency_aviation)
     
    584630    CALL getin_p('fallice_linear_contrails',fallice_linear_contrails)
    585631    CALL getin_p('fallice_cirrus_contrails',fallice_cirrus_contrails)
     632    CALL getin_p('eff2vol_radius_contrails',eff2vol_radius_contrails)
    586633    CALL getin_p('aviation_coef',aviation_coef)
    587634    ! for cloudth routines
     
    689736    WRITE(lunout,*) 'lscp_ini, chi_mixing:', chi_mixing
    690737    ! for aviation
    691     WRITE(lunout,*) 'lscp_ini, ok_precip_lincontrails:', ok_precip_lincontrails
    692     WRITE(lunout,*) 'lscp_ini, ok_precip_circontrails:', ok_precip_circontrails
    693     WRITE(lunout,*) 'lscp_ini, aspect_ratio_lincontrails:', aspect_ratio_lincontrails
    694     WRITE(lunout,*) 'lscp_ini, coef_mixing_lincontrails:', coef_mixing_lincontrails
    695     WRITE(lunout,*) 'lscp_ini, coef_shear_lincontrails:', coef_shear_lincontrails
    696     WRITE(lunout,*) 'lscp_ini, chi_mixing_lincontrails:', chi_mixing_lincontrails
     738    WRITE(lunout,*) 'lscp_ini, aspect_ratio_contrails:', aspect_ratio_contrails
     739    WRITE(lunout,*) 'lscp_ini, coef_mixing_contrails:', coef_mixing_contrails
     740    WRITE(lunout,*) 'lscp_ini, coef_shear_contrails:', coef_shear_contrails
     741    WRITE(lunout,*) 'lscp_ini, chi_mixing_contrails:', chi_mixing_contrails
     742    WRITE(lunout,*) 'lscp_ini, Nice_init_contrails:', Nice_init_contrails
    697743    WRITE(lunout,*) 'lscp_ini, EI_H2O_aviation:', EI_H2O_aviation
     744    WRITE(lunout,*) 'lscp_ini, EI_soot_aviation:', EI_soot_aviation
     745    WRITE(lunout,*) 'lscp_ini, air_to_fuel_ratio_engine:', air_to_fuel_ratio_engine
     746    WRITE(lunout,*) 'lscp_ini, wingspan:', wingspan
     747    WRITE(lunout,*) 'lscp_ini, Naer_amb:', Naer_amb
     748    WRITE(lunout,*) 'lscp_ini, raer_amb_mean:', raer_amb_mean
     749    WRITE(lunout,*) 'lscp_ini, raer_amb_std:', raer_amb_std
     750    WRITE(lunout,*) 'lscp_ini, r_soot_mean:', r_soot_mean
     751    WRITE(lunout,*) 'lscp_ini, r_soot_std:', r_soot_std
     752    WRITE(lunout,*) 'lscp_ini, N_Brunt_Vaisala_aviation:', N_Brunt_Vaisala_aviation
    698753    WRITE(lunout,*) 'lscp_ini, qheat_fuel_aviation:', qheat_fuel_aviation
    699754    WRITE(lunout,*) 'lscp_ini, prop_efficiency_aviation:', prop_efficiency_aviation
     
    703758    WRITE(lunout,*) 'lscp_ini, fallice_linear_contrails:', fallice_linear_contrails
    704759    WRITE(lunout,*) 'lscp_ini, fallice_cirrus_contrails:', fallice_cirrus_contrails
     760    WRITE(lunout,*) 'lscp_ini, eff2vol_radius_contrails:', eff2vol_radius_contrails
    705761    WRITE(lunout,*) 'lscp_ini, aviation_coef:', aviation_coef
    706762    ! for cloudth routines
     
    765821                      / nu_iwc_pdf_lscp**(1./3.)
    766822
     823    IF ( ok_plane_contrail ) THEN
     824      !--Calculated here to lighten calculations
     825      !--See Unterstrasser (2016), Lottermoser and Unterstrasser (2025), and lmdz_aviation routine
     826      ! U16, Eq. A16 and LU25, section A2
     827      plume_area_loss = 2. * RPI * (1.5 + 0.314 * wingspan)**2
     828      ! initial circulation [m/s], U16, Eq. A5
     829      circ_0_loss = 10. * wingspan - 70.
     830      ! reference ice crystals number concentration [#/m3], LU25, section A1
     831      nice_init_ref_loss = 3.38e12 / (2. * RPI * (1.5 + 0.314 * 60.3)**2)
     832    ENDIF
     833
    767834    !AA Temporary initialisation
    768835    a_tr_sca(1) = -0.5
Note: See TracChangeset for help on using the changeset viewer.