Changeset 4420


Ignore:
Timestamp:
Feb 6, 2023, 8:50:16 PM (22 months ago)
Author:
evignon
Message:

mise sous flag du bug d'autoconversion dans lscp

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

Legend:

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

    r4412 r4420  
    3838  !$OMP THREADPRIVATE(ok_radocond_snow)
    3939
     40  LOGICAL, SAVE :: ok_debug_autoconversion=.true.   ! removes a bug in the autoconversion process
     41  !$OMP THREADPRIVATE(ok_debug_autoconversion)
     42
    4043
    4144CONTAINS
     
    5659    CALL getin_p('rain_int_min',rain_int_min)
    5760    CALL getin_p('iflag_mpc_bl',iflag_mpc_bl)
    58     CALL getin_p('ok_radocond_snow',ok_radocond_snow)         
     61    CALL getin_p('ok_radocond_snow',ok_radocond_snow)
     62    CALL getin_p('ok_debug_autoconversion',ok_debug_autoconversion)   
    5963    WRITE(lunout,*) 'lscp, ninter:', ninter
    6064    WRITE(lunout,*) 'lscp, iflag_evap_prec:', iflag_evap_prec
     
    6367    WRITE(lunout,*) 'lscp, iflag_mpc_bl:', iflag_mpc_bl
    6468    WRITE(lunout,*) 'lscp, ok_radocond_snow:', ok_radocond_snow
    65    
     69    WRITE(lunout,*) 'lscp, ok_debug_autoconversion:', ok_debug_autoconversion
     70
    6671    ! check for precipitation sub-time steps
    6772    IF (ABS(dtime/REAL(ninter)-360.0).GT.0.001) THEN
  • LMDZ6/trunk/libf/phylmd/lscp_mod.F90

    r4412 r4420  
    9393
    9494USE lscp_ini_mod, ONLY : seuil_neb, ninter, iflag_evap_prec, t_coup, DDT0, ztfondue, rain_int_min
    95 USE lscp_ini_mod, ONLY : iflag_mpc_bl, ok_radocond_snow, a_tr_sca
     95USE lscp_ini_mod, ONLY : iflag_mpc_bl, ok_radocond_snow, a_tr_sca, ok_debug_autoconversion
    9696
    9797
     
    962962                    zrain= 0.0
    963963                ELSE
     964
     965                    IF (ok_debug_autoconversion) THEN ! if condition to be removed after test phase
     966
    964967                    ! water quantity to remove: zchau (Sundqvist, 1978)
    965968                    ! same thing for the ice: zfroi (Zender & Kiehl, 1997)
     
    980983                    ! reduces the in-cloud water).
    981984
    982 
    983985                    IF ((iflag_cloudth_vert.GE.3).AND.(iflag_rain_incloud_vol.EQ.1)) THEN
    984986                        zchau = zct   *dtime/REAL(ninter) * zoliql(i) &
     
    988990                        *(1.0-EXP(-(zoliql(i)/zneb(i)/zcl)**2))        ! dqliq/dt=-qliq/tau*(1-exp(-qcin/clw)**2)
    989991                    ENDIF
     992
     993                    ELSE ! with old bug in autoconversion
     994
     995                    ! water quantity to remove: zchau (Sundqvist, 1978)
     996                    ! same thing for the ice: zfroi (Zender & Kiehl, 1997)
     997                    IF (ptconv(i,k)) THEN ! if convective point
     998                        zcl=cld_lc_con
     999                        zct=1./cld_tau_con
     1000                        zfroi = dtime/REAL(ninter)/zdz(i)*zoliq(i)*velo(i,k)*zfice(i)
     1001                    ELSE
     1002                        zcl=cld_lc_lsc
     1003                        zct=1./cld_tau_lsc
     1004                        zfroi = dtime/REAL(ninter)/zdz(i)*zoliq(i) &   ! dqice/dt=1/rho*d(rho*wice*qice)/dz
     1005                            *velo(i,k) * zfice(i)
     1006                    ENDIF
     1007
     1008                    ! if vertical heterogeneity is taken into account, we use
     1009                    ! the "true" volume fraction instead of a modified
     1010                    ! surface fraction (which is larger and artificially
     1011                    ! reduces the in-cloud water).
     1012
     1013
     1014                    IF ((iflag_cloudth_vert.GE.3).AND.(iflag_rain_incloud_vol.EQ.1)) THEN
     1015                        zchau = zct   *dtime/REAL(ninter) * zoliq(i) &
     1016                        *(1.0-EXP(-(zoliq(i)/ctot_vol(i,k)/zcl)**2)) *(1.-zfice(i))
     1017                    ELSE
     1018                        zchau = zct   *dtime/REAL(ninter) * zoliq(i) &
     1019                        *(1.0-EXP(-(zoliq(i)/zneb(i)/zcl)**2)) *(1.-zfice(i)) ! dqliq/dt=-qliq/tau*(1-exp(-qcin/clw)**2)
     1020                    ENDIF
     1021
     1022                    ENDIF ! ok_debug_autoconversion
    9901023
    9911024                    zrain   = MIN(MAX(zchau,0.0),zoliql(i))
Note: See TracChangeset for help on using the changeset viewer.