Changeset 3400


Ignore:
Timestamp:
Oct 1, 2018, 1:33:32 PM (6 years ago)
Author:
Laurent Fairhead
Message:

Due to a difficult to correct bug, near surface fields can take abnormal values in very specific circumstances.
While waiting to find a correction, these modifications will force the values of these fields within reasonable bounds.
To get back to the previous behaviour of the model, use iflag_bug_t2m_ipslcm61 = 1 (it is 0 by default)

Location:
LMDZ6/branches/IPSLCM6.0.15/libf/phylmd
Files:
1 added
3 edited

Legend:

Unmodified
Added
Removed
  • LMDZ6/branches/IPSLCM6.0.15/libf/phylmd/phys_local_var_mod.F90

    r3318 r3400  
    376376      REAL,ALLOCATABLE,SAVE,DIMENSION(:) :: wbeff, convoccur, zmax_th, zq2m, zt2m
    377377!$OMP THREADPRIVATE(wbeff, convoccur, zmax_th, zq2m, zt2m)
     378     REAL,ALLOCATABLE,SAVE,DIMENSION(:) :: zq2m_cor, zt2m_cor, zu10m_cor, zv10m_cor                                           
     379!$OMP THREADPRIVATE(zq2m_cor, zt2m_cor, zu10m_cor, zv10m_cor)
    378380      REAL,ALLOCATABLE,SAVE,DIMENSION(:) :: zt2m_min_mon, zt2m_max_mon
    379381!$OMP THREADPRIVATE(zt2m_min_mon, zt2m_max_mon)
     
    741743      ALLOCATE(wbeff(klon), convoccur(klon), zmax_th(klon))
    742744      ALLOCATE(zq2m(klon), zt2m(klon), weak_inversion(klon))
     745      ALLOCATE(zq2m_cor(klon), zt2m_cor(klon), zu10m_cor(klon), zv10m_cor(klon))
    743746      ALLOCATE(zt2m_min_mon(klon), zt2m_max_mon(klon))
    744747      ALLOCATE(t2m_min_mon(klon), t2m_max_mon(klon))
     
    10351038      DEALLOCATE(wbeff, convoccur, zmax_th)
    10361039      DEALLOCATE(zq2m, zt2m, weak_inversion)
     1040      DEALLOCATE(zq2m_cor, zt2m_cor, zu10m_cor, zv10m_cor)
    10371041      DEALLOCATE(zt2m_min_mon, zt2m_max_mon)
    10381042      DEALLOCATE(t2m_min_mon, t2m_max_mon)
  • LMDZ6/branches/IPSLCM6.0.15/libf/phylmd/phys_output_write_mod.F90

    r3399 r3400  
    244244
    245245    USE phys_local_var_mod, ONLY: zxfluxlat, slp, ptstar, pt0, zxtsol, zt2m, &
     246         zt2m_cor,zq2m_cor,zu10m_cor,zv10m_cor, &
    246247         t2m_min_mon, t2m_max_mon, evap, &
    247248         l_mixmin,l_mix, &
     
    653654       CALL histwrite_phy(o_slp, slp)
    654655       CALL histwrite_phy(o_tsol, zxtsol)
    655        CALL histwrite_phy(o_t2m, zt2m)
    656        CALL histwrite_phy(o_t2m_min, zt2m)
    657        CALL histwrite_phy(o_t2m_max, zt2m)
     656       CALL histwrite_phy(o_t2m, zt2m_cor)
     657       CALL histwrite_phy(o_t2m_min, zt2m_cor)
     658       CALL histwrite_phy(o_t2m_max, zt2m_cor)
    658659       CALL histwrite_phy(o_t2m_max_mon, t2m_max_mon)
    659660       CALL histwrite_phy(o_t2m_min_mon, t2m_min_mon)
     
    661662       IF (vars_defined) THEN
    662663          DO i=1, klon
    663              zx_tmp_fi2d(i)=SQRT(zu10m(i)*zu10m(i)+zv10m(i)*zv10m(i))
     664             zx_tmp_fi2d(i)=SQRT(zu10m_cor(i)*zu10m_cor(i)+zv10m_cor(i)*zv10m_cor(i))
    664665          ENDDO
    665666       ENDIF
     
    668669       IF (vars_defined) THEN
    669670          DO i=1, klon
    670              zx_tmp_fi2d(i)=SQRT(zu10m(i)*zu10m(i)+zv10m(i)*zv10m(i))
     671             zx_tmp_fi2d(i)=SQRT(zu10m_cor(i)*zu10m_cor(i)+zv10m_cor(i)*zv10m_cor(i))
    671672          ENDDO
    672673       ENDIF
     
    681682       ENDIF
    682683       CALL histwrite_phy(o_sicf, zx_tmp_fi2d)
    683        CALL histwrite_phy(o_q2m, zq2m)
     684       CALL histwrite_phy(o_q2m, zq2m_cor)
    684685       CALL histwrite_phy(o_ustar, zustar)
    685        CALL histwrite_phy(o_u10m, zu10m)
    686        CALL histwrite_phy(o_v10m, zv10m)
     686       CALL histwrite_phy(o_u10m, zu10m_cor)
     687       CALL histwrite_phy(o_v10m, zv10m_cor)
    687688
    688689       IF (vars_defined) THEN
  • LMDZ6/branches/IPSLCM6.0.15/libf/phylmd/physiq_mod.F90

    r3352 r3400  
    119119       zustar, zu10m, zv10m, rh2m, qsat2m, &
    120120       zq2m, zt2m, weak_inversion, &
     121       zq2m_cor,zt2m_cor,zu10m_cor,zv10m_cor, & ! pour corriger d'un bug
    121122       zt2m_min_mon, zt2m_max_mon,   &         ! pour calcul_divers.h
    122123       t2m_min_mon, t2m_max_mon,  &            ! pour calcul_divers.h
     
    593594                                                        ! gust-front in the grid cell.
    594595    !$OMP THREADPRIVATE(iflag_alp_wk_cond)
     596    INTEGER,  SAVE               :: iflag_bug_t2m_ipslcm61=0 !
     597    !$OMP THREADPRIVATE(iflag_bug_t2m_ipslcm61)
     598
    595599    REAL t_w(klon,klev),q_w(klon,klev) ! temperature and moisture profiles in the wake region
    596600    REAL t_x(klon,klev),q_x(klon,klev) ! temperature and moisture profiles in the off-wake region
     
    12721276       tau_gl=86400.*tau_gl
    12731277       print*,'debut physiq_mod tau_gl=',tau_gl
     1278       iflag_bug_t2m_ipslcm61 = 0
     1279       CALL getin_p('iflag_bug_t2m_ipslcm61', iflag_bug_t2m_ipslcm61)
    12741280       CALL getin_p('iflag_alp_wk_cond', iflag_alp_wk_cond)
    12751281       CALL getin_p('random_notrig_max',random_notrig_max)
     
    23442350!>jyg
    23452351       ENDIF
     2352        if ( iflag_bug_t2m_ipslcm61 == 0 ) THEN
     2353          CALL borne_var_surf( klon,nbsrf,                     &
     2354            t_seri(:,1),q_seri(:,1),u_seri(:,1),v_seri(:,1),    &
     2355            ftsol,pctsrf,                                       &
     2356            t2m, q2m, u10m, v10m,                               &
     2357            zt2m_cor, zq2m_cor, zu10m_cor, zv10m_cor)
     2358        ELSE
     2359          zt2m_cor(:)=zt2m(:)
     2360          zq2m_cor(:)=zq2m(:)
     2361          zu10m_cor(:)=zu10m(:)
     2362          zv10m_cor(:)=zv10m(:)
     2363        ENDIF
    23462364
    23472365
Note: See TracChangeset for help on using the changeset viewer.