Changeset 4823


Ignore:
Timestamp:
Feb 15, 2024, 9:58:39 PM (3 months ago)
Author:
evignon
Message:

correction des seuils du melting et freezing dans lmdz_lscp_poprecip

File:
1 edited

Legend:

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

    r4819 r4823  
    691691                   * capa_snowflake / RLMLT * coef_ventil &
    692692                   * MAX(0., temp_wetbulb - RTT) * dtime
    693     ENDIF
     693      dqsclrmelt = MAX( dqsclrmelt , -snowclr(i) / hum_to_flux(i))
     694      ELSE
     695      dqsclrmelt = 0.
     696   ENDIF
    694697
    695698    !--In cloudy air
     
    704707                   * capa_snowflake / RLMLT * coef_ventil &
    705708                   * MAX(0., temp_wetbulb - RTT) * dtime
     709      dqscldmelt = MAX( dqscldmelt , -snowcld(i) / hum_to_flux(i))
     710    ELSE
     711      dqscldmelt = 0.
    706712    ENDIF
    707713   
     
    765771    tau_freez = 1. / ( gamma_freez &
    766772              * EXP( - alpha_freez * ( temp(i) - temp_nowater ) / ( RTT - temp_nowater ) ) )
    767     !--Exact solution of dqrain/dt = -qrain/tau_freez
    768     dqrtotfreez = raincld(i) / hum_to_flux(i) * ( EXP( - dtime / tau_freez ) - 1. )
    769 
    770     !--Barrier
    771     !--It is a MAX because everything is negative
    772     dqrtotfreez = MAX(dqrtotfreez, dqrfreez_max)
    773 
    774     !--The partition between clear and cloudy air
    775     !--is proportionnal to the rain fluxes in clear / cloudy air
    776     dqrclrfreez = dqrtotfreez * rainclr(i) / ( rainclr(i) + raincld(i) )
    777     dqrcldfreez = dqrtotfreez - dqrclrfreez
     773
     774    !--In clear air
     775    IF ( rainclr(i) .GT. 0. ) THEN
     776       !--Exact solution of dqrain/dt = -qrain/tau_freez
     777       dqrclrfreez = rainclr(i) / hum_to_flux(i) * ( EXP( - dtime / tau_freez ) - 1. )
     778       dqrclrfreez = MAX(dqrclrfreez, -rainclr(i) / hum_to_flux(i))
     779    ELSE
     780       dqrclrfreez = 0.
     781    ENDIF
     782
     783    !--In cloudy air
     784    IF ( raincld(i) .GT. 0. ) THEN
     785       !--Exact solution of dqrain/dt = -qrain/tau_freez
     786       dqrcldfreez = raincld(i) / hum_to_flux(i) * ( EXP( - dtime / tau_freez ) - 1. )
     787       dqrcldfreez = MAX(dqrcldfreez, -raincld(i) / hum_to_flux(i))
     788    ELSE
     789       dqrcldfreez = 0.
     790    ENDIF
     791
     792    !--Barriers
     793    !--It is activated if the total is LOWER than the max
     794    !--because everything is negative
     795    dqrtotfreez = dqrclrfreez + dqrcldfreez
     796    IF ( dqrtotfreez .LT. dqrfreez_max ) THEN
     797      !--We redistribute the max freezed rain keeping
     798      !--the clear/cloud partition of the freezing rain
     799      dqrclrfreez = dqrfreez_max * dqrclrfreez / dqrtotfreez
     800      dqrcldfreez = dqrfreez_max * dqrcldfreez / dqrtotfreez
     801      dqrtotfreez = dqrfreez_max
     802    ENDIF
     803
    778804
    779805    !--Add tendencies
Note: See TracChangeset for help on using the changeset viewer.