Changeset 5170 for LMDZ6/trunk/libf


Ignore:
Timestamp:
Aug 31, 2024, 8:28:14 PM (3 months ago)
Author:
evignon
Message:

petites correction dans la nouvelle routine de partitionnement de phase
des nuages de Lea Raillard

File:
1 edited

Legend:

Unmodified
Added
Removed
  • LMDZ6/trunk/libf/phylmd/lmdz_lscp_tools.F90

    r5007 r5170  
    243243!+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    244244  ! Compute the liquid, ice and vapour content (+ice fraction) based
    245   ! on turbulence (see Fields 2014, Furtado 2016)
     245  ! on turbulence (see Fields 2014, Furtado 2016, Raillard 2025)
     246  ! L.Raillard (30/08/24)
    246247!+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    247248
     
    375376           
    376377           ! Enough TKE   
    377            ELSE   
     378           ELSE 
     379              print*,"MOUCHOIRACTIVE"
    378380              !---------------------------------------------------------
    379381              !--               ICE SUPERSATURATION PDF   
     
    403405              IF ( qiceini_incl .GT. eps ) THEN
    404406                nb_crystals = 1.e3 * 5.94e-5 * ( RTT - temp(i) )**3.33 * naero5**(0.0264*(RTT-temp(i))+0.0033)
    405                 lambda_PSD  = ( (RPI*rho_ice*nb_crystals*24.) / (6.*(qiceini_incl + gamma_snwretro * qsnowcld_incl)) ) ** (1./3.)
     407                lambda_PSD  = ( (RPI*rho_ice*nb_crystals) / (rho_air*(qiceini_incl + gamma_snwretro * qsnowcld_incl)) ) ** (1./3.)
    406408                N0_PSD      = nb_crystals * lambda_PSD
    407                 moment1_PSD = N0_PSD/2./lambda_PSD**2
     409                moment1_PSD = N0_PSD/lambda_PSD**2
    408410              ELSE
    409411                moment1_PSD = 0.
     
    456458              mean_pdf   = sursat_env * 1./tau_mixingenv / ( invtau_phaserelax + 1./tau_mixingenv )
    457459              cldfraliq(i) = 0.5 * (1. - erf( ( sursat_iceliq - mean_pdf) / (SQRT(2.* sigma2_pdf) ) ) )
    458               !IF (cldfraliq(i) .GT. liqfra_max) THEN
    459               !    cldfraliq(i) = liqfra_max
    460               !ENDIF
     460              IF (cldfraliq(i) .GT. liqfra_max) THEN
     461                  cldfraliq(i) = liqfra_max
     462              ENDIF
    461463             
    462464              qliq_incl = qsati(i) * SQRT(sigma2_pdf) / SQRT(2.*RPI) * EXP( -1.*(sursat_iceliq - mean_pdf)**2. / (2.*sigma2_pdf) )  &
     
    464466             
    465467              sigma2_icefracturb(i)= sigma2_pdf
    466               mean_icefracturb(i)  = mean_pdf     
    467               !------------ ICE AMOUNT AND WATER CONSERVATION  ------------
     468              mean_icefracturb(i)  = mean_pdf
     469     
     470              !------------ SPECIFIC VAPOR CONTENT AND WATER CONSERVATION  ------------
    468471
    469472              IF ( (qliq_incl .LE. eps) .OR. (cldfraliq(i) .LE. eps) ) THEN
     
    471474                  cldfraliq(i) = 0.
    472475              END IF
    473              
    474               !--Choice for in-cloud vapor :
    475               !--1.Weighted mean between qvap in MPC parts and in ice-only parts
    476               !--2.Always at ice saturation
     476               
     477              !--Specific humidity is the max between qsati and the weighted mean between
     478              !--qv in MPC patches and qv in ice-only parts. We assume that MPC parts are
     479              !--always at qsatl and ice-only parts slightly subsaturated (qsati*sursat_iceext+1)
     480              !--The whole cloud can therefore be supersaturated but never subsaturated.
     481
    477482              qvap_incl = MAX(qsati(i), ( 1. - cldfraliq(i) ) * (sursat_iceext + 1.) * qsati(i) + cldfraliq(i) * qsatl(i) )
    478                
     483
     484
    479485              IF ( qvap_incl  .GE. qtot_incl(i) ) THEN
    480486                 qvap_incl = qsati(i)
Note: See TracChangeset for help on using the changeset viewer.