--- trunk/libf/phylmd/transp_lay.f 2008/02/27 13:16:39 3 +++ trunk/Sources/phylmd/transp_lay.f 2017/02/27 15:44:55 213 @@ -1,50 +1,55 @@ - SUBROUTINE transp_lay (paprs,tsol, - e t, q, u, v, geom, - s vtran_e, vtran_q, utran_e, utran_q) -c - use dimens_m - use dimphy - use YOMCST - IMPLICIT none -c====================================================================== -c Auteur(s): Z.X.Li (LMD/CNRS) -c Date: le 25 avril 1994 -c Objet: Calculer le transport de l'energie et de la vapeur d'eau -c====================================================================== -c -c - REAL, intent(in):: paprs(klon,klev+1) - real tsol(klon) - REAL t(klon,klev), q(klon,klev), u(klon,klev), v(klon,klev) - REAL utran_e(klon,klev), utran_q(klon,klev) - REAL vtran_e(klon,klev), vtran_q(klon,klev) -c - INTEGER i, l -c ------------------------------------------------------------------ - REAL geom(klon,klev), esh -c ------------------------------------------------------------------ - DO l = 1, klev - DO i = 1, klon - utran_e(i,l) = 0.0 - utran_q(i,l) = 0.0 - vtran_e(i,l) = 0.0 - vtran_q(i,l) = 0.0 - ENDDO - ENDDO -c - DO l = 1, klev - DO i = 1, klon - esh = RCPD*t(i,l) + RLVTT*q(i,l) + geom(i,l) - utran_e(i,l)=utran_e(i,l)+ u(i,l)*esh* - . (paprs(i,l)-paprs(i,l+1))/RG - utran_q(i,l)=utran_q(i,l)+ u(i,l)*q(i,l) - . *(paprs(i,l)-paprs(i,l+1))/RG - vtran_e(i,l)=vtran_e(i,l)+ v(i,l)*esh* - . (paprs(i,l)-paprs(i,l+1))/RG - vtran_q(i,l)=vtran_q(i,l)+ v(i,l)*q(i,l) - . *(paprs(i,l)-paprs(i,l+1))/RG - ENDDO - ENDDO -c - RETURN - END +module transp_lay_m + + IMPLICIT NONE + +contains + + SUBROUTINE transp_lay(paprs, t, q, u, v, geom, vtran_e, vtran_q, utran_e, & + utran_q) + + ! Author: Z. X. Li (LMD/CNRS) + ! Date: April, 25th 1994 + ! Objet : calculer le transport de l'\'energie et de la vapeur d'eau + + USE dimphy, only: klon, klev + USE suphec_m, only: rcpd, rg, rlvtt + + REAL, INTENT(IN):: paprs(klon, klev+1) + REAL, INTENT(IN):: t(klon, klev) + REAL, INTENT(IN):: q(klon, klev), u(klon, klev), v(klon, klev) + REAL, INTENT(IN):: geom(klon, klev) + REAL, INTENT(out):: vtran_e(klon, klev), vtran_q(klon, klev) + REAL, INTENT(out):: utran_e(klon, klev), utran_q(klon, klev) + + ! Local: + INTEGER i, l + real esh + + !------------------------------------------------------------------ + + DO l = 1, klev + DO i = 1, klon + utran_e(i, l) = 0. + utran_q(i, l) = 0. + vtran_e(i, l) = 0. + vtran_q(i, l) = 0. + END DO + END DO + + DO l = 1, klev + DO i = 1, klon + esh = rcpd * t(i, l) + rlvtt * q(i, l) + geom(i, l) + utran_e(i, l) = utran_e(i, l) + u(i, l) * esh & + * (paprs(i, l) - paprs(i, l+1)) / rg + utran_q(i, l) = utran_q(i, l) + u(i, l) * q(i, l) & + * (paprs(i, l) - paprs(i, l+1)) / rg + vtran_e(i, l) = vtran_e(i, l) + v(i, l) * esh & + * (paprs(i, l) - paprs(i, l+1)) / rg + vtran_q(i, l) = vtran_q(i, l) + v(i, l) * q(i, l) & + * (paprs(i, l) - paprs(i, l+1)) / rg + END DO + END DO + + END SUBROUTINE transp_lay + +end module transp_lay_m