Changeset 6075 for LMDZ6


Ignore:
Timestamp:
Feb 12, 2026, 10:54:21 PM (2 weeks ago)
Author:
evignon
Message:

petits changements pour pouvoir prescrire la concentration en nombre de gouttelettes et cristaux

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

Legend:

Unmodified
Added
Removed
  • LMDZ6/trunk/libf/phylmd/conf_phys_m.f90

    r6070 r6075  
    24902490
    24912491    ! flag_aerosol need to be different to zero if ok_cdnc is activated
    2492     IF (ok_cdnc .AND. flag_aerosol .EQ. 0) THEN
    2493        CALL abort_physic('conf_phys', 'flag_aerosol cannot be to zero if ok_cdnc is activated ', 1)
    2494     ENDIF
     2492    !IF (ok_cdnc .AND. flag_aerosol .EQ. 0) THEN
     2493    !   CALL abort_physic('conf_phys', 'flag_aerosol cannot be to zero if ok_cdnc is activated ', 1)
     2494    !ENDIF
    24952495
    24962496    ! ok_cdnc must be set to y if ok_aie is activated
  • LMDZ6/trunk/libf/phylmd/lmdz_lscp_ini.f90

    r6028 r6075  
    244244   REAL, SAVE, PROTECTED :: capa_crystal = 1.                  ! Crystal capacitance (shape factor) for lscp_icefrac_turb [-]
    245245   !$OMP THREADPRIVATE(capa_crystal)
     246
     247   LOGICAL, SAVE, PROTECTED :: fix_icnc = .FALSE.             ! fix ice crystal number concentration for cloud phase determination 
     248   !$OMP THREADPRIVATE(fix_icnc)
     249
     250   REAL, SAVE, PROTECTED :: icnc0 = 10.                       ! prescribed ice crystal number concentration for cloud phase determination  [L-1]
     251   !$OMP THREADPRIVATE(icnc0)
    246252
    247253   REAL, SAVE, PROTECTED :: naero5 = 0.5                       ! Number concentration of aerosol larger than 0.5 microns [scm-3]
     
    494500      CALL getin_p('dist_liq', dist_liq)
    495501      CALL getin_p('tresh_cl', tresh_cl)
     502      CALL getin_p('fix_icnc', fix_icnc)
     503      CALL getin_p('icnc0', icnc0)
    496504      CALL getin_p('capa_crystal', capa_crystal)
    497505      CALL getin_p('naero5', naero5)
     
    611619      WRITE (lunout, *) 'lscp_ini, capa_crystal', capa_crystal
    612620      WRITE (lunout, *) 'lscp_ini, naero5', naero5
     621      WRITE (lunout, *) 'lscp_ini, fix_icnc', fix_icnc
     622      WRITE (lunout, *) 'lscp_ini, icnc0', icnc0
    613623      WRITE (lunout, *) 'lscp_ini, gamma_snwretro', gamma_snwretro
    614624      WRITE (lunout, *) 'lscp_ini, gamma_mixth', gamma_mixth
  • LMDZ6/trunk/libf/phylmd/lmdz_lscp_phase.f90

    r6024 r6075  
    163163      USE lmdz_lscp_ini, ONLY: seuil_neb, temp_nowater
    164164      USE lmdz_lscp_ini, ONLY: naero5, gamma_snwretro, gamma_taud, capa_crystal, rho_ice
    165       USE lmdz_lscp_ini, ONLY: eps, snow_fallspeed
     165      USE lmdz_lscp_ini, ONLY: eps, snow_fallspeed, fix_icnc, icnc0
    166166      USE lmdz_lscp_tools, ONLY: calc_qsat_ecmwf
    167167
     
    317317                  !--We assume an exponential ice PSD whose parameters
    318318                  !--are computed following Morrison&Gettelman 2008
    319                   !--Ice number density is assumed equals to INP density
     319                  !--Ice number density is assumed equals to a constant value
     320                  !--if fix_icnc = True
     321                  !--or to the INP density
    320322                  !--which is for naero5>0 a function of temperature (DeMott 2010)
    321323                  !--bi and B0 are microphysical function characterizing
     
    329331                  !--the Southern Ocean and the Antarctic
    330332
    331                   IF (naero5 .LE. 0) THEN
    332                      IF (temp(i) .GT. tempvig1) THEN
    333                         nb_crystals = 1.e3*10**(-0.14*(temp(i) - tempvig1) - 2.88)
    334                      ELSE IF (temp(i) .GT. tempvig2) THEN
    335                         nb_crystals = 1.e3*10**(-0.31*(temp(i) - tempvig1) - 2.88)
     333                  IF (fix_icnc) THEN
     334                 
     335                     nb_crystals = icnc0 * 1000.! from L-1 to m-3
     336                     
     337                  ELSE
     338
     339                     IF (naero5 .LE. 0) THEN
     340                        IF (temp(i) .GT. tempvig1) THEN
     341                           nb_crystals = 1.e3*10**(-0.14*(temp(i) - tempvig1) - 2.88)
     342                        ELSE IF (temp(i) .GT. tempvig2) THEN
     343                           nb_crystals = 1.e3*10**(-0.31*(temp(i) - tempvig1) - 2.88)
     344                        ELSE
     345                           nb_crystals = 1.e3*10**(0.)
     346                        END IF
    336347                     ELSE
    337                         nb_crystals = 1.e3*10**(0.)
    338                      END IF
    339                   ELSE
    340                      nb_crystals = 1.e3*5.94e-5*(RTT - temp(i))**3.33*naero5**(0.0264*(RTT - temp(i)) + 0.0033)
    341                   END IF
     348                        nb_crystals = 1.e3*5.94e-5*(RTT - temp(i))**3.33*naero5**(0.0264*(RTT - temp(i)) + 0.0033)
     349                     END IF
     350                 
     351                  ENDIF
     352
    342353                  lambda_PSD = ((RPI*rho_ice*nb_crystals)/(rho_air*MAX(qiceini_incl, eps)))**(1./3.)
    343354                  N0_PSD = nb_crystals*lambda_PSD
Note: See TracChangeset for help on using the changeset viewer.