--- trunk/dyn3d/sortvarc.f 2018/02/05 10:39:38 254 +++ trunk/dyn3d/sortvarc.f 2018/03/06 13:39:57 255 @@ -6,10 +6,10 @@ contains - SUBROUTINE sortvarc(ucov, teta, ps, masse, pk, phis, vorpot, phi, & - bern, dp, resetvarc) + SUBROUTINE sortvarc(ucov, teta, ps, masse, pk, phis, vorpot, phi, bern, dp, & + resetvarc) - ! From dyn3d/sortvarc.F, version 1.1.1.1 2004/05/19 12:53:07 + ! From dyn3d/sortvarc.F, version 1.1.1.1, 2004/05/19 12:53:07 ! Author: P. Le Van ! Objet : sortie des variables de contr\^ole @@ -20,7 +20,7 @@ USE ener, ONLY: ang0, etot0, ptot0, stot0, ztot0 use filtreg_scal_m, only: filtreg_scal use massbarxy_m, only: massbarxy - USE paramet_m, ONLY: iip1, ip1jm, jjp1 + USE paramet_m, ONLY: jjp1 REAL, INTENT(IN):: ucov(iim + 1, jjm + 1, llm) REAL, INTENT(IN):: teta(iim + 1, jjm + 1, llm) @@ -28,20 +28,19 @@ REAL, INTENT(IN):: masse(iim + 1, jjm + 1, llm) REAL, INTENT(IN):: pk(iim + 1, jjm + 1, llm) REAL, INTENT(IN):: phis(iim + 1, jjm + 1) - REAL, INTENT(IN):: vorpot(ip1jm, llm) + REAL, INTENT(IN):: vorpot(:, :, :) ! (iim + 1, jjm, llm) REAL, intent(in):: phi(iim + 1, jjm + 1, llm) real, intent(in):: bern(iim + 1, jjm + 1, llm) REAL, intent(in):: dp(iim + 1, jjm + 1) logical, intent(in):: resetvarc ! Local: - REAL vor(ip1jm), bernf(iim + 1, jjm + 1, llm), ztotl(llm) + REAL vor(iim + 1, jjm), bernf(iim + 1, jjm + 1, llm), ztotl(llm) REAL etotl(llm), stotl(llm), rmsvl(llm), angl(llm), ge(iim + 1, jjm + 1) REAL cosphi(2:jjm) REAL radsg, radomeg - REAL massebxy(ip1jm, llm) - INTEGER j, l, ij - REAL ssum + REAL massebxy(iim + 1, jjm, llm) + INTEGER j, l !----------------------------------------------------------------------- @@ -50,34 +49,32 @@ CALL massbarxy(masse, massebxy) ! Calcul de rmsdpdt - ge = dp*dp + ge = dp * dp rmsdpdt = sum(ge) - sum(ge(1, :)) - rmsdpdt = daysec*1.E-2*sqrt(rmsdpdt / (iim * jjp1)) + rmsdpdt = daysec * 1.E-2 * sqrt(rmsdpdt / (iim * jjp1)) bernf = bern CALL filtreg_scal(bernf, direct = .false., intensive = .false.) ! Calcul du moment angulaire radsg = rad/g - radomeg = rad*omeg + radomeg = rad * omeg cosphi = cos(rlatu(2:jjm)) ! Calcul de l'energie, de l'enstrophie, de l'entropie et de rmsv DO l = 1, llm - DO ij = 1, ip1jm - vor(ij) = vorpot(ij, l)*vorpot(ij, l)*massebxy(ij, l) - END DO - ztotl(l) = (ssum(ip1jm, vor, 1)-ssum(jjm, vor, iip1)) + vor = vorpot(:, :, l)**2 * massebxy(:, :, l) + ztotl(l) = sum(vor) - sum(vor(1, :)) ge = masse(:, :, l) * (phis + teta(:, :, l) * pk(:, :, l) & + bernf(:, :, l) - phi(:, :, l)) etotl(l) = sum(ge) - sum(ge(1, :)) - ge = masse(:, :, l)*teta(:, :, l) + ge = masse(:, :, l) * teta(:, :, l) stotl(l) = sum(ge) - sum(ge(1, :)) ge = masse(:, :, l) * max(bernf(:, :, l) - phi(:, :, l), 0.) - rmsvl(l) = 2.*(sum(ge)-sum(ge(1, :))) + rmsvl(l) = 2. * (sum(ge) - sum(ge(1, :))) forall (j = 2:jjm) ge(:, j) = (ucov(:, j, l) / cu_2d(:, j) & + radomeg * cosphi(j)) * masse(:, j, l) * cosphi(j)