--- trunk/libf/phylmd/hbtm.f90 2010/12/21 15:45:48 37 +++ trunk/Sources/phylmd/hbtm.f 2015/04/29 15:47:56 134 @@ -8,13 +8,7 @@ flux_q, u, v, t, q, pblh, cape, EauLiq, ctei, pblT, therm, trmb1, & trmb2, trmb3, plcl) - use dimens_m - use dimphy - use YOMCST - use yoethf - use fcttre - - ! D'apres Holstag & Boville et Troen & Mahrt + ! D'après Holstag et Boville et Troen et Mahrt ! JAS 47 BLM ! Algorithme thèse Anne Mathieu ! Critère d'entraînement Peter Duynkerke (JAS 50) @@ -35,6 +29,11 @@ ! mais on garde la possibilité de changer si besoin est (jusqu'à présent ! la forme de HB avec le 1er niveau modele etait conservee) + USE dimphy, ONLY: klev, klon + USE suphec_m, ONLY: rcpd, rd, retv, rg, rkappa, rlvtt, rtt, rv + USE yoethf_m, ONLY: r2es, rvtmp2 + USE fcttre, ONLY: foeew + REAL RLvCp, REPS ! Arguments: @@ -199,7 +198,7 @@ REAL zm(klon) ! current level height + one level up REAL zp(klon) - REAL zcor, zdelta, zcvm5 + REAL zcor, zcvm5 REAL fac, pblmin, zmzp, term @@ -447,7 +446,7 @@ ! Main level loop to compute the diffusivities and ! counter-gradient terms: - DO k = 2, isommet + loop_level: DO k = 2, isommet ! Find levels within boundary layer: DO i = 1, knon unslev(i) = .FALSE. @@ -517,12 +516,11 @@ ! For all layers, compute integral info and CTEI DO i = 1, knon - if (check(i).or.omegafl(i)) then - if (.not.Zsat(i)) then + if (check(i) .or. omegafl(i)) then + if (.not. Zsat(i)) then T2 = T2m(i) * s(i, k) ! thermodyn functions - zdelta=MAX(0., SIGN(1., RTT - T2)) - qqsat= r2es * FOEEW(T2, zdelta) / pplay(i, k) + qqsat= r2es * FOEEW(T2, RTT >= T2) / pplay(i, k) qqsat=MIN(0.5, qqsat) zcor=1./(1.-retv*qqsat) qqsat=qqsat*zcor @@ -543,7 +541,7 @@ ! cette ligne a deja ete faite normalement ? endif ENDDO - end DO + end DO loop_level END SUBROUTINE HBTM