Ignore:
Timestamp:
May 31, 2017, 12:25:08 AM (8 years ago)
Author:
fhourdin
Message:

Correction d'une erreur sur le calcul de T2m diagnostic.
On passait deux fois la rugozité pour la quantité de mouvement
z0m,z0m au lieu de z0m,z0h.
L'ancienne version peut être réactivée avec
iflag_pbl_surface_t2m_bug=1
Par défaut on met iflag_pbl_surface_t2m_bug=0 qui ne devrait faire
perdre la convergence numérique qu'avec des versions récentes d'Orchidee
différenciant les deux z0.

File:
1 edited

Legend:

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

    r2884 r2896  
    3737  !$OMP THREADPRIVATE(ftsoil)
    3838
     39  integer, save :: iflag_pbl_surface_t2m_bug
     40  !$OMP THREADPRIVATE(iflag_pbl_surface_t2m_bug)
     41
    3942CONTAINS
    4043!
     
    131134       CALL abort_physic(modname,abort_message,1)
    132135    ENDIF
     136
     137    iflag_pbl_surface_t2m_bug=0
     138    CALL getin_p('iflag_pbl_surface_t2m_bug',iflag_pbl_surface_t2m_bug)
    133139
    134140  END SUBROUTINE pbl_surface_init
     
    516522    REAL, DIMENSION(klon)              :: psfce, patm
    517523    REAL, DIMENSION(klon)              :: qairsol, zgeo1, speed, zri1, pref !speed, zri1, pref, added by Fuxing WANG, 04/03/2015
    518     REAL, DIMENSION(klon)              :: rugo1
     524    REAL, DIMENSION(klon)              :: yz0h_oupas
    519525    REAL, DIMENSION(klon)              :: yfluxsens
    520526    REAL, DIMENSION(klon)              :: AcoefH, AcoefQ, BcoefH, BcoefQ
     
    24832489!!!
    24842490       DO j=1, knon
    2485           i = ni(j)
    2486           rugo1(j) = yz0m(j)
    2487           IF(nsrf.EQ.is_oce) THEN
    2488              rugo1(j) = z0m(i,nsrf)
    2489           ENDIF
     2491!         i = ni(j)
     2492!         yz0h_oupas(j) = yz0m(j)
     2493!         IF(nsrf.EQ.is_oce) THEN
     2494!            yz0h_oupas(j) = z0m(i,nsrf)
     2495!         ENDIF
    24902496          psfce(j)=ypaprs(j,1)
    24912497          patm(j)=ypplay(j,1)
    24922498       END DO
     2499
     2500       IF (iflag_pbl_surface_t2m_bug==1) THEN
     2501          yz0h_oupas(1:knon)=yz0m(1:knon)
     2502       ELSE
     2503          yz0h_oupas(1:knon)=yz0h(1:knon)
     2504       ENDIF
    24932505       
    24942506!      print*,'Dans pbl OK42A'
     
    24962508!      print*, tair1,yt(:,1),y_d_t(:,1)
    24972509
    2498 ! Calculate the temperature et relative humidity at 2m and the wind at 10m
     2510! Calculate the temperatureflag_pbl_surface_t2m_bugiflag_pbl_surface_t2m_bug et relative humidity at 2m and the wind at 10m
    24992511!!! jyg le 07/02/2012
    25002512       IF (iflag_split .eq.0) THEN
    25012513        CALL stdlevvar(klon, knon, nsrf, zxli, &
    25022514            uzon, vmer, tair1, qair1, zgeo1, &
    2503             tairsol, qairsol, rugo1, rugo1, psfce, patm, &
     2515            tairsol, qairsol, yz0m, yz0h_oupas, psfce, patm, &
    25042516            yt2m, yq2m, yt10m, yq10m, yu10m, yustar)
    25052517       ELSE  !(iflag_split .eq.0)
    25062518        CALL stdlevvar(klon, knon, nsrf, zxli, &
    25072519            uzon_x, vmer_x, tair1_x, qair1_x, zgeo1_x, &
    2508             tairsol_x, qairsol, rugo1, rugo1, psfce, patm, &
     2520            tairsol_x, qairsol, yz0m, yz0h_oupas, psfce, patm, &
    25092521            yt2m_x, yq2m_x, yt10m_x, yq10m_x, yu10m_x, yustar_x)
    25102522        CALL stdlevvar(klon, knon, nsrf, zxli, &
    25112523            uzon_w, vmer_w, tair1_w, qair1_w, zgeo1_w, &
    2512             tairsol_w, qairsol, rugo1, rugo1, psfce, patm, &
     2524            tairsol_w, qairsol, yz0m, yz0h_oupas, psfce, patm, &
    25132525            yt2m_w, yq2m_w, yt10m_w, yq10m_w, yu10m_w, yustar_w)
    25142526!!!
Note: See TracChangeset for help on using the changeset viewer.