--- trunk/Sources/phylmd/hbtm.f 2016/03/22 16:31:39 188 +++ trunk/Sources/phylmd/hbtm.f 2018/01/22 15:02:56 252 @@ -4,8 +4,8 @@ contains - SUBROUTINE HBTM(knon, paprs, pplay, t2m, q2m, ustar, flux_t, flux_q, u, v, & - t, q, pblh, cape, EauLiq, ctei, pblT, therm, trmb1, trmb2, trmb3, plcl) + SUBROUTINE HBTM(paprs, pplay, t2m, q2m, ustar, flux_t, flux_q, u, v, t, q, & + pblh, cape, EauLiq, ctei, pblT, therm, plcl) ! D'apr\'es Holstag et Boville et Troen et Mahrt ! JAS 47 BLM @@ -35,9 +35,6 @@ ! Arguments: - ! nombre de points a calculer - INTEGER, intent(in):: knon - ! pression a inter-couche (Pa) REAL, intent(in):: paprs(klon, klev+1) ! pression au milieu de couche (Pa) @@ -45,13 +42,12 @@ REAL, intent(in):: t2m(klon) ! temperature a 2 m ! q a 2 et 10m REAL, intent(in):: q2m(klon) - REAL, intent(in):: ustar(klon) - ! Flux - REAL, intent(in):: flux_t(klon, klev), flux_q(klon, klev) - ! vitesse U (m/s) - REAL, intent(in):: u(klon, klev) - ! vitesse V (m/s) - REAL, intent(in):: v(klon, klev) + REAL, intent(in):: ustar(:) ! (knon) + REAL, intent(in):: flux_t(:), flux_q(:) ! (knon) flux à la surface + + REAL, intent(in):: u(klon, klev) ! vitesse U (m/s) + REAL, intent(in):: v(klon, klev) ! vitesse V (m/s) + ! temperature (K) REAL, intent(in):: t(klon, klev) ! vapeur d'eau (kg/kg) @@ -67,11 +63,11 @@ REAL pblT(klon) ! thermal virtual temperature excess REAL therm(klon) - REAL trmb1(klon), trmb2(klon), trmb3(klon) REAL plcl(klon) ! Local: - + + INTEGER knon ! nombre de points a calculer INTEGER isommet ! limite max sommet pbl PARAMETER (isommet=klev) @@ -150,6 +146,8 @@ !----------------------------------------------------------------- + knon = size(pblh) + ! initialisations q_star = 0 t_star = 0 @@ -187,8 +185,8 @@ zxt = t2m(i) ! convention >0 vers le bas ds lmdz - khfs(i) = - flux_t(i, 1)*zxt*Rd / (RCPD*paprs(i, 1)) - kqfs(i) = - flux_q(i, 1)*zxt*Rd / paprs(i, 1) + khfs(i) = - flux_t(i)*zxt*Rd / (RCPD*paprs(i, 1)) + kqfs(i) = - flux_q(i)*zxt*Rd / paprs(i, 1) ! verifier que khfs et kqfs sont bien de la forme w'l' heatv(i) = khfs(i) + 0.608*zxt*kqfs(i) ! a comparer aussi aux sorties de clqh : flux_T/RoCp et flux_q/RoLv @@ -207,9 +205,6 @@ plcl(i) = 6000. ! Lambda = -u*^3 / (alpha.g.kvon. obklen(i) = -t(i, 1)*ustar(i)**3/(RG*vk*heatv(i)) - trmb1(i) = 0. - trmb2(i) = 0. - trmb3(i) = 0. ENDDO ! PBL height calculation: Search for level of pbl. Scan upward