Changeset 4898


Ignore:
Timestamp:
Apr 11, 2024, 5:50:38 PM (4 weeks ago)
Author:
evignon
Message:

nettoyage poprecip + changements de valeur par defaut du seuil
pour l'autoconversion solide dans poprecip
Lea, Audran, Etienne

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

Legend:

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

    r4895 r4898  
    140140  !$OMP THREADPRIVATE(ok_poprecip)
    141141
    142   REAL, SAVE, PROTECTED :: cld_lc_lsc_snow               ! snow autoconversion coefficient, stratiform rain
     142  REAL, SAVE, PROTECTED :: cld_lc_lsc_snow=2.e-5            ! snow autoconversion coefficient, stratiform. default from  Chaboureau and PInty 2006
    143143  !$OMP THREADPRIVATE(cld_lc_lsc_snow)
    144144
    145   REAL, SAVE, PROTECTED :: cld_lc_con_snow                ! snow autoconversion coefficient, convective rain
     145  REAL, SAVE, PROTECTED :: cld_lc_con_snow=2.e-5            ! snow autoconversion coefficient, convective
    146146  !$OMP THREADPRIVATE(cld_lc_con_snow)
    147147
     
    166166  REAL, SAVE, PROTECTED :: rho_ice=920.                    ! A COMMENTER TODO [kg/m3]
    167167  !$OMP THREADPRIVATE(rho_ice)
    168 
    169   REAL, SAVE, PROTECTED :: rho_snow                        ! A COMMENTER TODO [kg/m3]
    170   !$OMP THREADPRIVATE(rho_snow)
    171168
    172169  REAL, SAVE, PROTECTED :: r_rain=500.E-6                   ! A COMMENTER TODO [m]
     
    279276    CALL getin_p('cld_lc_lsc',cld_lc_lsc)
    280277    CALL getin_p('cld_lc_con',cld_lc_con)
    281     cld_lc_lsc_snow=cld_lc_lsc
    282     cld_lc_con_snow=cld_lc_con
    283278    CALL getin_p('cld_lc_lsc_snow',cld_lc_lsc_snow)
    284279    CALL getin_p('cld_lc_con_snow',cld_lc_con_snow)
     
    393388
    394389
    395     !--Initialisations of constants depending on other constants
    396     !--rho_snow formula from r_snow (Brandes et al. 2007 - JAMC)
    397     rho_snow = 1.e3 * 0.178 * (r_snow * 2. * 1000.)**(-0.922)
    398 
    399 
    400390    !AA Temporary initialisation
    401391    a_tr_sca(1) = -0.5
  • LMDZ6/trunk/libf/phylmd/lmdz_lscp_poprecip.F90

    r4895 r4898  
    6363!--Integer for interating over klon
    6464INTEGER :: i
    65 !--dhum_to_dflux: coef to convert a specific quantity to a flux
     65!--dhum_to_dflux: coef to convert a specific quantity variation to a flux variation
    6666REAL, DIMENSION(klon) :: dhum_to_dflux
    6767!--
     
    139139    !--dprecip/dz = -beta*(1-qvap/qsat)*(precip**expo_eva)
    140140    !--formula from Sundqvist 1988, Klemp & Wilhemson 1978
    141     !--Explicit formulation
    142     !draineva = - precipfracclr(i) * coef_eva * (1. - qvap(i) / qsatl(i)) * dz(i) &
    143     !         * ( rainclr(i) / MAX(thresh_precip_frac, precipfracclr(i)) ) ** expo_eva &
    144     !draineva = MAX( - rainclr(i), draineva)
    145141    !--Exact explicit formulation (rainclr is resolved exactly, qvap explicitly)
    146142    !--which does not need a barrier on rainclr, because included in the formula
     
    149145             + ( rainclr(i) / MAX(thresh_precip_frac, precipfracclr(i)) )**( 1. - expo_eva ) &
    150146               ) )**( 1. / ( 1. - expo_eva ) ) - rainclr(i)
     147    ! TODO veut on vraiment mettre qvap ici, qui est en fait qtot dans la maille ?
    151148             
    152149    !--Evaporation is limited by 0
     
    156153    !--Sublimation of the solid precipitation coming from above
    157154    !--(same formula as for liquid precip)
    158     !--Explicit formulation
    159     !dsnowsub = - precipfracclr(i) * coef_sub * (1. - qvap(i) / qsatl(i)) * dz(i) &
    160     !         * ( snowclr(i) / MAX(thresh_precip_frac, precipfracclr(i)) ) ** expo_sub &
    161     !dsnowsub = MAX( - snowclr(i), dsnowsub)
    162155    !--Exact explicit formulation (snowclr is resolved exactly, qvap explicitly)
    163156    !--which does not need a barrier on snowclr, because included in the formula
     
    166159             + ( snowclr(i) / MAX(thresh_precip_frac, precipfracclr(i)) )**( 1. - expo_sub ) &
    167160             ) )**( 1. / ( 1. - expo_sub ) ) - snowclr(i)
     161    ! TODO veut on vraiment mettre qvap ici, qui est en fait qtot dans la maille ?
    168162
    169163    !--Sublimation is limited by 0
     
    178172    !--It is expressed as a max flux dprecip_evasub_max
    179173   
     174    ! TODO veut on vraiment mettre qvap ici, qui est en fait qtot dans la maille ?
    180175    dprecip_evasub_max = MIN(0., ( qvap(i) - qsat(i) ) * precipfracclr(i)) &
    181176                     * dhum_to_dflux(i)
     
    261256                          cld_lc_lsc, cld_tau_lsc, cld_expo_lsc, rain_int_min, &
    262257                          thresh_precip_frac, gamma_col, gamma_agg, gamma_rim, &
    263                           rho_rain, rho_snow, r_rain, r_snow, rho_ice, r_ice,  &
     258                          rho_rain, r_rain, r_snow, rho_ice, r_ice,            &
    264259                          tau_auto_snow_min, tau_auto_snow_max,                &
    265260                          thresh_precip_frac, eps,                             &
     
    319314
    320315INTEGER :: i
     316!--dhum_to_dflux: coef to convert a specific quantity variation to a flux variation
    321317REAL, DIMENSION(klon) :: dhum_to_dflux
    322 REAL, DIMENSION(klon) :: qtot !--includes vap, liq, ice and precip
     318REAL, DIMENSION(klon) :: qtot                             !--includes vap, liq, ice and precip
    323319
    324320!--Partition of the fluxes
     
    333329REAL :: coef_col, coef_agg, coef_rim, coef_tmp, qrain_tmp
    334330REAL :: Eff_rain_liq, Eff_snow_ice, Eff_snow_liq
     331REAL :: rho_snow
    335332REAL :: dqlcol           !--loss of liquid cloud content due to collection by rain [kg/kg/s]
    336333REAL :: dqiagg           !--loss of ice cloud content due to collection by aggregation [kg/kg/s]
     
    384381  dqlrim  = 0.
    385382
    386   !--dhum_to_dflux: coef to convert a delta in specific quantity to a flux
    387383  !-- dhum_to_dflux = rho * dz/dt = 1 / g * dP/dt
    388384  dhum_to_dflux(i) = ( paprsdn(i) - paprsup(i) ) / RG / dtime
     
    492488
    493489  !--If the cloud is big enough, the precipitation processes activate
     490  ! TODO met on seuil_neb ici ?
    494491  IF ( cldfra(i) .GE. seuil_neb ) THEN
    495492
     
    518515    coef_col = gamma_col * 3. / 4. / rho_rain / r_rain * Eff_rain_liq
    519516    IF ( raincld(i) .GT. 0. ) THEN
    520       !-- ATTENTION Double implicit version
    521       !-- BEWARE the formule below is FALSE (because raincld is a flux, not a delta flux)
    522       !qrain_tmp = raincld(i) / dhum_to_dflux(i)
    523       !coef_tmp = coef_col * dtime * ( qrain_tmp / precipfraccld(i) + qliq(i) / eff_cldfra )
    524       !dqlcol = qliq(i) * ( 1. / ( 1. + 0.5 * ( coef_tmp - 1. + SQRT( &
    525       !    ( 1. - coef_tmp )**2. + 4. * coef_col * dtime * qrain_tmp / precipfraccld(i) ) &
    526       !                   ) ) - 1. )
    527       !--Barriers so that the processes do not consume more liquid/ice than
    528       !--available.
    529       !dqlcol = MAX( - qliq(i), dqlcol )
    530517      !--Exact explicit version, which does not need a barrier because of
    531518      !--the exponential decrease
     
    544531    !--it s a product of a collection efficiency and a sticking efficiency
    545532    Eff_snow_ice = 0.05 * EXP( 0.1 * ( temp(i) - RTT ) )
     533    !--rho_snow formula follows Brandes et al. 2007 (JAMC)
     534    rho_snow = 1.e3 * 0.178 * ( r_snow * 2. * 1000. )**(-0.922)
    546535    coef_agg = gamma_agg * 3. / 4. / rho_snow / r_snow * Eff_snow_ice
    547536    IF ( snowcld(i) .GT. 0. ) THEN
    548       !-- ATTENTION Double implicit version?
    549       !--Barriers so that the processes do not consume more liquid/ice than
    550       !--available.
    551       !dqiagg = MAX( - qice(i), dqiagg )
    552537      !--Exact explicit version, which does not need a barrier because of
    553538      !--the exponential decrease
     
    612597
    613598
    614     !--Barriers so that we don t create more rain/snow
     599    !--Barriers so that we don't create more rain/snow
    615600    !--than there is liquid/ice
    616601    dqlauto = MAX( - qliq(i), dqlauto )
     
    632617    !---------------------------------------------------------
    633618    !--Process which converts liquid droplets in suspension into
    634     !--snow (graupel in fact) because of the collision between
     619    !--snow because of the collision between
    635620    !--those and falling snowflakes.
    636621    !--The formula comes from Muench and Lohmann 2020
     
    640625    !--assuming a cloud droplet diameter of 20 microns.
    641626    Eff_snow_liq = 0.2
     627    !--rho_snow formula follows Brandes et al. 2007 (JAMC)
     628    rho_snow = 1.e3 * 0.178 * ( r_snow * 2. * 1000. )**(-0.922)
    642629    coef_rim = gamma_rim * 3. / 4. / rho_snow / r_snow * Eff_snow_liq
    643630    IF ( snowcld(i) .GT. 0. ) THEN
    644       !-- ATTENTION Double implicit version?
    645       !--Barriers so that the processes do not consume more liquid than
    646       !--available.
    647       !dqlrim = MAX( - qliq(i), dqlrim )
    648631      !--Exact version, which does not need a barrier because of
    649632      !--the exponential decrease
     
    682665  !--NB.: this process needs a temperature adjustment
    683666
    684   !--dqsmelt_max: maximum snow melting so that temperature
    685   !--             stays higher than 273 K [kg/kg]
    686   !--capa_snowflake: capacitance of a snowflake, equal to
    687   !--                the radius if the snowflake is a sphere [m]
    688   !--temp_wetbulb: wet-bulb temperature [K]
    689   !--snow_fallspeed: snow fall velocity (in clear/cloudy sky) [m/s]
    690   !--air_thermal_conduct: thermal conductivity of the air [J/m/K/s]
    691   !--gamma_melt: melting tuning parameter [-]
    692   !--nb_snowflake: number of snowflakes (in clear/cloudy air) [-]
     667  !--dqsmelt_max         : maximum snow melting so that temperature
     668  !--                      stays higher than 273 K [kg/kg]
     669  !--capa_snowflake      : capacitance of a snowflake, equal to
     670  !--                      the radius if the snowflake is a sphere [m]
     671  !--temp_wetbulb        : wet-bulb temperature [K]
     672  !--snow_fallspeed      : snow fall velocity (in clear/cloudy sky) [m/s]
     673  !--air_thermal_conduct : thermal conductivity of the air [J/m/K/s]
     674  !--gamma_melt          : tuning parameter for melting [-]
     675  !--nb_snowflake        : number of snowflakes (in clear/cloudy air) [-]
    693676
    694677  IF ( ( snowclr(i) + snowcld(i) ) .GT. 0. ) THEN
     
    705688    ! ATTENTION POUR L'INSTANT C'EST UN WBULB SELON FORMULE ECMWF
    706689    ! ATTENTION EST-CE QVAP ?????
     690    ! TODO veut on vraiment mettre qvap ici, on pourrait vouloir qvap dans le nuage / clr sky ?
     691    ! (a mettre dans les deux IF)
    707692    temp_wetbulb = temp(i) - ( qsat(i) - qvap(i) ) &
    708693                 * ( 1329.31 + 0.0074615 * ( pplay(i) - 0.85e5 ) &
    709694                 - 40.637 * ( temp(i) - 275. ) )
    710     air_thermal_conduct=(5.69+0.017*(temp(i)-RTT))*1.e-3*4.184                ! thermal conductivity of the air, SI
    711 
     695   
     696    !--Thermal conductivity of the air, empirical formula from Beard and Pruppacher (1971)
     697    air_thermal_conduct = ( 5.69 + 0.017 * ( temp(i) - RTT ) ) * 1.e-3 * 4.184   
     698
     699    !--rho_snow formula follows Brandes et al. 2007 (JAMC)
     700    rho_snow = 1.e3 * 0.178 * ( r_snow * 2. * 1000. )**(-0.922)
    712701
    713702    !--In clear air
     
    779768  !--Process through which rain freezes into snow.
    780769  !-- We parameterize it as a 2 step process:
    781   !-- first: freezing following collision with ice crystals
    782   !-- second: immersion freezing following (inspired by Bigg 1953)
    783   !-- the latter is parameterized as an exponential decrease of the rain
    784   !-- water content with a homemade formulya
     770  !--first: freezing following collision with ice crystals
     771  !--second: immersion freezing following (inspired by Bigg 1953)
     772  !--the latter is parameterized as an exponential decrease of the rain
     773  !--water content with a homemade formulya
    785774  !--This is based on a caracteritic time of freezing, which
    786775  !--exponentially depends on temperature so that it is
     
    788777  !--0 for RTT (=273.15 K).
    789778  !--NB.: this process needs a temperature adjustment
    790   !--dqrfreez_max: maximum rain freezing so that temperature
     779  !--dqrfreez_max : maximum rain freezing so that temperature
    791780  !--              stays lower than 273 K [kg/kg]
    792   !--tau_freez: caracteristic time of freezing [s]
    793   !--gamma_freez: tuning parameter [s-1]
    794   !--alpha_freez: tuning parameter for the shape of the exponential curve [-]
    795   !--temp_nowater: temperature below which no liquid water exists [K] (about -40 degC)
     781  !--tau_freez    : caracteristic time of freezing [s]
     782  !--gamma_freez  : tuning parameter [s-1]
     783  !--alpha_freez  : tuning parameter for the shape of the exponential curve [-]
     784  !--temp_nowater : temperature below which no liquid water exists [K] (about -40 degC)
    796785
    797786  IF ( ( rainclr(i) + raincld(i) ) .GT. 0. ) THEN
    798787
    799       
     788 
    800789    !--1st step: freezing following collision with ice crystals
    801790    !--Sub-process of freezing which quantifies the collision between
     
    804793    !--the ice crystal (which acted as an ice nucleating particle).
    805794    !--The formula is adapted from the riming formula.
    806     !-- it works only in the cloudy part
     795    !--it works only in the cloudy part
    807796
    808797    dqifreez = 0.
     
    818807                         * ( 1. + RVTMP2 * qtot(i) ))
    819808 
    820       !--Sub-process of freezing which quantifies the collision between
    821       !--ice crystals in suspension and falling rain droplets.
    822       !--The rain droplets freeze, becoming graupel, and carrying
    823       !--the ice crystal (which acted as an ice nucleating particle).
    824       !--The formula is adapted from the riming formula.
    825809
    826810      !--The collision efficiency is assumed unity
     
    832816
    833817      !--We add the part of rain water that freezes, limited by a temperature barrier
    834       !--this quantity is calculated assuming that the number of drop that freeze correspond to the number
     818      !--This quantity is calculated assuming that the number of drop that freeze correspond to the number
    835819      !--of crystals collected (and assuming uniform distributions of ice crystals and rain drops)
    836820      !--The ice specific humidity that collide with rain is dqi = dNi 4/3 PI rho_ice r_ice**3
     
    882866    ENDIF
    883867
    884     !--temperature barrie step 2
     868    !--temperature barrier step 2
    885869    !--It is activated if the total is LOWER than the max
    886870    !--because everything is negative
Note: See TracChangeset for help on using the changeset viewer.