! $Id: transp.f90 5274 2024-10-25 13:41:23Z abarral $ SUBROUTINE transp(paprs, tsol, t, q, ql, qs, u, v, geom, & utran_e, vtran_e, utran_q, vtran_q, utran_w, vtran_w) USE dimphy USE yomcst_mod_h, ONLY: RPI, RCLUM, RHPLA, RKBOL, RNAVO & , RDAY, REA, REPSM, RSIYEA, RSIDAY, ROMEGA & , R_ecc, R_peri, R_incl & , RA, RG, R1SA & , RSIGMA & , R, RMD, RMV, RD, RV, RCPD & , RMO3, RMCO2, RMC, RMCH4, RMN2O, RMCFC11, RMCFC12 & , RCPV, RCVD, RCVV, RKAPPA, RETV, eps_w & , RCW, RCS & , RLVTT, RLSTT, RLMLT, RTT, RATM & , RESTT, RALPW, RBETW, RGAMW, RALPS, RBETS, RGAMS & , RALPD, RBETD, RGAMD IMPLICIT NONE ! ====================================================================== ! Auteur(s): Z.X.Li (LMD/CNRS) ! Date: le 25 avril 1994 ! Objet: Calculer le transport de l'energie et de la vapeur d'eau ! ====================================================================== !--inputs REAL, INTENT(IN) :: paprs(klon, klev+1), tsol(klon), geom(klon, klev) REAL, INTENT(IN) :: t(klon, klev), q(klon, klev), ql(klon, klev), qs(klon, klev) REAL, INTENT(IN) :: u(klon, klev), v(klon, klev) !--outputs REAL, INTENT(OUT) :: utran_e(klon), vtran_e(klon) !--lateral flux of dry static energy (J m-1 s-1) REAL, INTENT(OUT) :: utran_q(klon), vtran_q(klon) !--lateral flux of water vapour (kg m-1 s-1) REAL, INTENT(OUT) :: utran_w(klon), vtran_w(klon) !--lateral flux of total water (kg m-1 s-1) !--local variables INTEGER i, l REAL e, dm ! ------------------------------------------------------------------ !--initialisations utran_e(:) = 0.0 utran_q(:) = 0.0 vtran_e(:) = 0.0 vtran_q(:) = 0.0 utran_w(:) = 0.0 vtran_w(:) = 0.0 !--vertical integration of diagnostics DO l = 1, klev DO i = 1, klon dm= (paprs(i,l)-paprs(i,l+1))/RG !--mass of layer kg m-2 !--moist static energy ! e = rcpd*t(i, l) + rlvtt*q(i, l) + geom(i, l) !--dry static energy e = rcpd*t(i, l) + geom(i, l) utran_e(i) = utran_e(i) + u(i, l)*e*dm vtran_e(i) = vtran_e(i) + v(i, l)*e*dm !--water vapour utran_q(i) = utran_q(i) + u(i, l)*q(i,l)*dm vtran_q(i) = vtran_q(i) + v(i, l)*q(i,l)*dm !--total water utran_w(i) = utran_w(i) + u(i, l)*(q(i,l)+ql(i,l)+qs(i,l))*dm vtran_w(i) = vtran_w(i) + v(i, l)*(q(i,l)+ql(i,l)+qs(i,l))*dm ENDDO ENDDO RETURN END SUBROUTINE transp