Changeset 5625


Ignore:
Timestamp:
Apr 22, 2025, 6:03:13 PM (2 months ago)
Author:
aborella
Message:

Correction to coupling with deep convection + correction to cloud dissipation

Location:
LMDZ6/branches/contrails/libf/phylmd
Files:
3 edited

Legend:

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

    r5624 r5625  
    12041204      pcf_seri(:,k) = perscontfra(:)
    12051205      qva_seri(:,k) = zqs(:) * contfra(:)
    1206       qia_seri(:,k) = qcont(:) - zqs(:) * contfra(:)
    12071206      DO i = 1, klon
     1207        IF ( zoliqi(i) .GT. 0. ) THEN
     1208          !--The quantity of ice in linear contrails has been reduced by precipitation
     1209          !--with the same factor as the rest of the clouds
     1210          qia_seri(i,k) = ( qcont(i) - zqs(i) * contfra(i) ) / zoliqi(i) * radocond(i,k)
     1211        ELSE
     1212          qia_seri(i,k) = 0.
     1213        ENDIF
    12081214        IF ( ( rneb(i,k) - cfa_seri(i,k) ) .GT. eps ) THEN
     1215          !--The in-cloud quantity of ice in persistent contrail cirrus is the same as
     1216          !--the one from all natural cirrus clouds
    12091217          qice_perscont(i,k) = ( radocond(i,k) - qia_seri(i,k) ) &
    12101218              * perscontfra(i) / ( rneb(i,k) - cfa_seri(i,k) )
     
    12191227      DO i = 1, klon
    12201228
     1229        !--We save the cloud properties that will be advected
    12211230        cf_seri(i,k) = rneb(i,k)
    1222 
     1231        qvc_seri(i,k) = qvc(i)
     1232
     1233        !--Deep convection clouds properties are removed from radiative properties
     1234        !--outputed from lscp (NB. rneb and radocond are only used for the radiative
     1235        !--properties and are NOT prognostics)
     1236        !--We must have iflag_coupl == 5 for this coupling to work
     1237        IF ( ptconv(i,k) .AND. pt_pron_clds(i) ) THEN
     1238          rneb(i,k) = rneb(i,k) - cfcon(i,k)
     1239          radocond(i,k) = radocond(i,k) - qccon(i,k) * cfcon(i,k)
     1240        ENDIF
     1241
     1242        !--If everything was precipitated, the remaining empty cloud is dissipated
     1243        !--and everything is transfered to the subsaturated clear sky region
     1244        !--NB. we do not change rneb, as it is a diagnostic only
    12231245        IF ( zoliq(i) .LE. 0. ) THEN
    1224           !--If everything was precipitated, the remaining empty cloud is dissipated
    1225           !--and everything is transfered to the subsaturated clear sky region
    1226           !--NB. we do not change rneb, as it is a diagnostic only
    12271246          cf_seri(i,k) = 0.
     1247          qvc_seri(i,k) = 0.
    12281248          qvc(i) = 0.
    12291249        ENDIF
    1230 
    1231         qvc_seri(i,k) = qvc(i)
    12321250
    12331251        !--Diagnostics
  • TabularUnified LMDZ6/branches/contrails/libf/phylmd/lmdz_lscp_condensation.f90

    r5623 r5625  
    127127USE lmdz_lscp_ini,   ONLY: beta_pdf_lscp, temp_thresh_pdf_lscp
    128128USE lmdz_lscp_ini,   ONLY: std100_pdf_lscp, k0_pdf_lscp, kappa_pdf_lscp
    129 USE lmdz_lscp_ini,   ONLY: coef_mixing_lscp, coef_shear_lscp, incld_ice_thresh
     129USE lmdz_lscp_ini,   ONLY: coef_mixing_lscp, coef_shear_lscp, cooling_rate_ice_thresh
    130130
    131131USE lmdz_lscp_ini,   ONLY: ok_plane_contrail, aspect_ratio_contrails
     
    244244!
    245245! for dissipation
    246 REAL :: pdf_shape
    247 REAL :: dcf_sub_tmp, dqvc_sub_tmp
     246REAL, DIMENSION(klon) :: temp_diss, qsati_diss
     247REAL :: pdf_shape, qiceincld_min
    248248!
    249249! for condensation
    250 REAL, DIMENSION(klon) :: qsatl, dqsatl
     250REAL, DIMENSION(klon) :: qsatl, dqsat_tmp
    251251REAL, DIMENSION(klon) :: pdf_alpha, pdf_scale, pdf_gamma
    252252REAL :: rhl_clr, pdf_loc
     
    278278
    279279!--Calculation of qsat w.r.t. liquid
    280 CALL calc_qsat_ecmwf(klon, temp, qzero, pplay, RTT, 1, .FALSE., qsatl, dqsatl)
     280CALL calc_qsat_ecmwf(klon, temp, qzero, pplay, RTT, 1, .FALSE., qsatl, dqsat_tmp)
     281!--Calculation of qsat max for dissipation
     282temp_diss(:) = temp(:) + cooling_rate_ice_thresh * dtime
     283CALL calc_qsat_ecmwf(klon, temp_diss, qzero, pplay, RTT, 2, .FALSE., qsati_diss, dqsat_tmp)
    281284
    282285!
     
    530533        ELSE
    531534
    532           !--Cirrus clouds cannot have an in-cloud ice water content lower than
    533           !--incld_ice_thresh times the saturation
    534           IF ( qiceincld .LT. ( incld_ice_thresh * qsat(i) ) ) THEN
    535             dcf_sub_tmp = ( qiceincld / ( incld_ice_thresh * qsat(i) ) - 1. ) * cldfra(i)
    536             dqvc_sub_tmp = qvapincld * dcf_sub_tmp
    537 
    538             cldfra(i) = cldfra(i) + dcf_sub_tmp
    539             qcld(i) = qcld(i) + dqvc_sub_tmp
    540             qvc(i) = qvc(i) + dqvc_sub_tmp
    541             clrfra(i) = MIN(1., clrfra(i) - dcf_sub_tmp)
    542             qclr(i) = qclr(i) - dqvc_sub_tmp
    543           ELSE
    544             dcf_sub_tmp = 0.
    545             dqvc_sub_tmp = 0.
    546           ENDIF
    547 
    548535          IF ( ok_unadjusted_clouds .AND. .NOT. ok_warm_cloud ) THEN
    549536            IF ( qvapincld .GE. qsat(i) ) THEN
     
    574561          !--    DISSIPATION OF THE CLOUD    --
    575562          !------------------------------------
     563          !--Additionally to a minimum in cloud water vapor, we impose a minimum
     564          !--in in-cloud ice water content. It is calculated following
     565          !--Marti and Mauersberger (1993), see also Schiller et al. (2008)
     566          qiceincld_min = qsati_diss(i) - qsat(i)
    576567
    577568          !--If the dissipation process must be activated
    578           IF ( qvapincld_new .GT. qvapincld ) THEN
     569          IF ( ( qvapincld_new + qiceincld_min ) .GT. qvapincld ) THEN
    579570            !--Gamma distribution starting at qvapincld
    580571            pdf_shape = nu_iwc_pdf_lscp / qiceincld
    581             pdf_y = pdf_shape * ( qvapincld_new - qvapincld )
     572            pdf_y = pdf_shape * ( qvapincld_new + qiceincld_min - qvapincld )
    582573            pdf_e1 = GAMMAINC ( nu_iwc_pdf_lscp      , pdf_y )
    583574            pdf_e2 = GAMMAINC ( nu_iwc_pdf_lscp + 1. , pdf_y )
     
    610601            qclr(i) = qclr(i) - dqvc_sub(i) - dqi_sub(i)
    611602          ENDIF ! qvapincld_new .GT. qvapincld
    612 
    613           !--We readd previously calculated dcf_sub_tmp and dqvc_sub_tmp to the diagnostics
    614           dcf_sub(i) = dcf_sub(i) + dcf_sub_tmp
    615           dqvc_sub(i) = dqvc_sub(i) + dqvc_sub_tmp
    616603
    617604
     
    849836          qiceinmix = ( qcld(i) - qvc(i) ) / cldfra(i) / ( 1. + clrfra_mix / cldfra_mix )
    850837          tauinv_depsub = qiceinmix**(1./3.) * kappa_depsub
    851           qvapinmix_lim = qsat(i) - qiceinmix / ( 1. - EXP( - dtime / 2. * tauinv_depsub ) )
     838          qvapinmix_lim = qsat(i) - qiceinmix / ( 1. - EXP( - dtime * tauinv_depsub ) )
    852839          qvapinclr_lim = qvapinmix_lim * ( 1. + cldfra_mix / clrfra_mix ) &
    853840                        - qvc(i) / cldfra(i) * cldfra_mix / clrfra_mix
     
    11261113          IF ( ok_unadjusted_clouds .AND. .NOT. ok_warm_cloud ) THEN
    11271114            tauinv_depsub = qiceincld**(1./3.) * kappa_depsub
    1128             qvapinclr_lim = qsat(i) - qiceincld / ( 1. - EXP( - dtime / 2. * tauinv_depsub ) )
     1115            qvapinclr_lim = qsat(i) - qiceincld / ( 1. - EXP( - dtime * tauinv_depsub ) )
    11291116          ELSE
    11301117            qvapinclr_lim = qsat(i) - qiceincld
  • TabularUnified LMDZ6/branches/contrails/libf/phylmd/lmdz_lscp_ini.f90

    r5615 r5625  
    165165  !$OMP THREADPRIVATE(ffallv_issr)
    166166
    167   REAL, SAVE, PROTECTED :: incld_ice_thresh=1.E-3            ! [-] minimum in-cloud ice water content, relative to saturation
    168   !$OMP THREADPRIVATE(incld_ice_thresh)
     167  REAL, SAVE, PROTECTED :: cooling_rate_ice_thresh=2.e-5     ! [K/s] minimum virtual cooling rate before ice is sublimated
     168  !$OMP THREADPRIVATE(cooling_rate_ice_thresh)
    169169
    170170  REAL, SAVE, PROTECTED :: depo_coef_cirrus=.7               ! [-] deposition coefficient for growth of ice crystals in cirrus clouds
     
    484484    ffallv_issr=ffallv_lsc
    485485    CALL getin_p('ffallv_issr',ffallv_issr)
    486     CALL getin_p('incld_ice_thresh',incld_ice_thresh)
     486    CALL getin_p('cooling_rate_ice_thresh',cooling_rate_ice_thresh)
    487487    CALL getin_p('depo_coef_cirrus',depo_coef_cirrus)
    488488    CALL getin_p('capa_cond_cirrus',capa_cond_cirrus)
     
    583583    WRITE(lunout,*) 'lscp_ini, ok_weibull_warm_clouds:', ok_weibull_warm_clouds
    584584    WRITE(lunout,*) 'lscp_ini, ffallv_issr', ffallv_issr
    585     WRITE(lunout,*) 'lscp_ini, incld_ice_thresh', incld_ice_thresh
     585    WRITE(lunout,*) 'lscp_ini, cooling_rate_ice_thresh', cooling_rate_ice_thresh
    586586    WRITE(lunout,*) 'lscp_ini, depo_coef_cirrus:', depo_coef_cirrus
    587587    WRITE(lunout,*) 'lscp_ini, capa_cond_cirrus:', capa_cond_cirrus
Note: See TracChangeset for help on using the changeset viewer.