Changeset 2516


Ignore:
Timestamp:
May 19, 2016, 8:58:23 PM (8 years ago)
Author:
fhourdin
Message:

Introduction d'un seuil oliqmax sur l'eau condensée liquide maximum
conservée dans l'atmosphère.
Par défaut, oliqmax=999 et la correction est inactive.
Pour des valeurs plus faibles, l'eau en sus est convertie en
précipitation ajoutée à rain_lsc (plul dans les sorties).

Cette pluie additionelle est également sauvegardée dans rain_num

et sortie dans plun.

Cette modification est une tentative pour résoudre certains plantages

en haute résolution.

Location:
LMDZ5/trunk/libf/phylmd
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • LMDZ5/trunk/libf/phylmd/phys_local_var_mod.F90

    r2499 r2516  
    281281      REAL,ALLOCATABLE,SAVE,DIMENSION(:) :: zxfluxlat, zxtsol, snow_lsc, zxfqfonte
    282282!$OMP THREADPRIVATE(zxfluxlat, zxtsol, snow_lsc, zxfqfonte)
    283       REAL,ALLOCATABLE,SAVE,DIMENSION(:) :: zxqsurf, rain_lsc
    284 !$OMP THREADPRIVATE(zxqsurf, rain_lsc)
     283      REAL,ALLOCATABLE,SAVE,DIMENSION(:) :: zxqsurf, rain_lsc, rain_num
     284!$OMP THREADPRIVATE(zxqsurf, rain_lsc, rain_num)
    285285!
    286286!jyg+nrlmd<
     
    541541      ALLOCATE(zxtsol(klon), snow_lsc(klon), zxfqfonte(klon), zxqsurf(klon))
    542542      ALLOCATE(rain_lsc(klon))
     543      ALLOCATE(rain_num(klon))
    543544!
    544545      ALLOCATE(sens_x(klon), sens_w(klon))
     
    746747      DEALLOCATE(zxtsol, snow_lsc, zxfqfonte, zxqsurf)
    747748      DEALLOCATE(rain_lsc)
     749      DEALLOCATE(rain_num)
    748750!
    749751      DEALLOCATE(sens_x, sens_w)
  • LMDZ5/trunk/libf/phylmd/phys_output_ctrlout_mod.F90

    r2498 r2516  
    154154  TYPE(ctrl_out), SAVE :: o_plul = ctrl_out((/ 1, 1, 1, 10, 10, 10, 11, 11, 11 /), &
    155155    'plul', 'Large-scale Precip.', 'kg/(s*m2)', (/ ('', i=1, 9) /))
     156  TYPE(ctrl_out), SAVE :: o_plun = ctrl_out((/ 1, 1, 1, 10, 10, 10, 11, 11, 11 /), &
     157    'plun', 'Numerical Precip.', 'kg/(s*m2)', (/ ('', i=1, 9) /))
    156158  TYPE(ctrl_out), SAVE :: o_pluc = ctrl_out((/ 1, 1, 1, 10, 5, 10, 11, 11, 11 /), &
    157159    'pluc', 'Convective Precip.', 'kg/(s*m2)', (/ ('', i=1, 9) /))
  • LMDZ5/trunk/libf/phylmd/phys_output_write_mod.F90

    r2499 r2516  
    3636         o_wind10m, o_wind10max, o_gusts, o_sicf, &
    3737         o_psol, o_mass, o_qsurf, o_qsol, &
    38          o_precip, o_ndayrain, o_plul, o_pluc, &
     38         o_precip, o_ndayrain, o_plul, o_pluc, o_plun, &
    3939         o_snow, o_msnow, o_fsnow, o_evap, o_ep,o_epmax_diag, & ! epmax_cape
    4040         o_tops, o_tops0, o_topl, o_topl0, &
     
    195195         t2m_min_mon, t2m_max_mon, evap, &
    196196         zu10m, zv10m, zq2m, zustar, zxqsurf, &
    197          rain_lsc, snow_lsc, bils, sens, fder, &
     197         rain_lsc, rain_num, snow_lsc, bils, sens, fder, &
    198198         zxffonte, zxfqcalving, zxfqfonte, fluxu, &
    199199         fluxv, zxsnow, qsnow, snowhgt, to_ice, &
     
    441441       ENDIF
    442442       CALL histwrite_phy(o_plul, zx_tmp_fi2d)
     443       CALL histwrite_phy(o_plun, rain_num)
    443444
    444445       IF (vars_defined) THEN
  • LMDZ5/trunk/libf/phylmd/physiq_mod.F90

    r2513 r2516  
    432432    REAL d_t_adjwk(klon,klev)                !jyg
    433433    REAL d_q_adjwk(klon,klev)                !jyg
     434
     435    REAL,SAVE :: oliqmax=999.    ! Seuil en kg/kg pour le contenu max
     436    !$OMP THREADPRIVATE(oliqmax) ! en eau liquide dans l'atmosphère.
     437
    434438    LOGICAL,SAVE :: ok_adjwk=.FALSE.
    435439    !$OMP THREADPRIVATE(ok_adjwk)
     
    10501054       CALL getin_p('random_notrig_max',random_notrig_max)
    10511055       CALL getin_p('ok_adjwk',ok_adjwk)
     1056       CALL getin_p('oliqmax',oliqmax)
    10521057    ENDIF
    10531058
     
    28792884    CALL add_phys_tend(du0,dv0,d_t_lsc,d_q_lsc,d_ql_lsc,d_qi_lsc,paprs, &
    28802885         'lsc',abortphy)
    2881     !---------------------------------------------------------------------------
     2886
     2887   !---------------------------------------------------------------------------
     2888   ! Elimination d'eau liquide > oliqmax
     2889   !---------------------------------------------------------------------------
     2890    rain_num(:)=0.
     2891    DO k = 1, klev 
     2892       DO i = 1, klon
     2893          IF (ql_seri(i,k)>oliqmax) THEN
     2894             rain_num(i)=rain_num(i)+(ql_seri(i,k)-oliqmax)*zmasse(i,k)/pdtphys
     2895             ql_seri(i,k)=oliqmax
     2896          ENDIF
     2897       ENDDO
     2898    ENDDO
     2899    rain_lsc(:)=rain_lsc(:)+rain_num(:)
     2900
    28822901    DO k = 1, klev
    28832902       DO i = 1, klon
Note: See TracChangeset for help on using the changeset viewer.