--- trunk/libf/phylmd/clvent.f90 2012/07/26 14:37:37 62 +++ trunk/phylmd/clvent.f 2014/03/05 14:57:53 82 @@ -7,37 +7,39 @@ SUBROUTINE clvent(knon, dtime, u1lay, v1lay, coef, t, ven, paprs, pplay, & delp, d_ven, flux_v) - ! Author: Z. X. Li (LMD/CNRS) date: 1993/08/18 + ! Author: Z. X. Li (LMD/CNRS) + ! Date: 1993/08/18 ! Objet : diffusion verticale de la vitesse USE dimphy, ONLY: klev, klon USE suphec_m, ONLY: rd, rg - ! Arguments: + INTEGER knon + REAL, intent(in):: dtime ! dtime----input-R- intervalle du temps (en second) + + REAL u1lay(klon), v1lay(klon) ! u1lay----input-R- vent u de la premiere couche (m/s) ! v1lay----input-R- vent v de la premiere couche (m/s) - ! coef-----input-R- le coefficient d'echange (m**2/s) multiplie par - ! le cisaillement du vent (dV/dz); la premiere - ! valeur indique la valeur de Cdrag (sans unite) + + REAL, intent(in):: coef(:, :) ! (knon, klev) + ! Coefficient d'echange (m**2/s) multiplié par le cisaillement du + ! vent (dV/dz). La première valeur indique la valeur de Cdrag (sans + ! unité). + + REAL t(klon, klev), ven(klon, klev) ! t--------input-R- temperature (K) ! ven------input-R- vitesse horizontale (m/s) + REAL paprs(klon, klev+1), pplay(klon, klev), delp(klon, klev) ! paprs----input-R- pression a inter-couche (Pa) ! pplay----input-R- pression au milieu de couche (Pa) ! delp-----input-R- epaisseur de couche (Pa) - - ! d_ven----output-R- le changement de "ven" - ! flux_v---output-R- (diagnostic) flux du vent: (kg m/s)/(m**2 s) - - INTEGER knon - REAL, intent(in):: dtime - REAL u1lay(klon), v1lay(klon) - REAL coef(klon, klev) - REAL t(klon, klev), ven(klon, klev) - REAL paprs(klon, klev+1), pplay(klon, klev), delp(klon, klev) REAL d_ven(klon, klev) + ! d_ven----output-R- le changement de "ven" REAL flux_v(klon, klev) + ! flux_v---output-R- (diagnostic) flux du vent: (kg m/s)/(m**2 s) + ! Local: INTEGER i, k REAL zx_cv(klon, 2:klev) REAL zx_dv(klon, 2:klev) @@ -57,17 +59,16 @@ DO i = 1, knon zx_alf1(i) = 1.0 zx_alf2(i) = 1.0 - zx_alf1(i) - zx_coef(i, 1) = coef(i, 1) & - * (1.0+SQRT(u1lay(i)**2+v1lay(i)**2)) & - * pplay(i, 1)/(RD*t(i, 1)) - zx_coef(i, 1) = zx_coef(i, 1) * dtime*RG + zx_coef(i, 1) = coef(i, 1) * (1. + SQRT(u1lay(i)**2 + v1lay(i)**2)) & + * pplay(i, 1) / (RD * t(i, 1)) + zx_coef(i, 1) = zx_coef(i, 1) * dtime * RG ENDDO DO k = 2, klev DO i = 1, knon - zx_coef(i, k) = coef(i, k)*RG/(pplay(i, k-1)-pplay(i, k)) & - *(paprs(i, k)*2/(t(i, k)+t(i, k-1))/RD)**2 - zx_coef(i, k) = zx_coef(i, k) * dtime*RG + zx_coef(i, k) = coef(i, k) * RG / (pplay(i, k-1) - pplay(i, k)) & + * (paprs(i, k) * 2 / (t(i, k) + t(i, k - 1)) / RD)**2 + zx_coef(i, k) = zx_coef(i, k) * dtime * RG ENDDO ENDDO