--- trunk/Sources/dyn3d/vitvert.f 2015/04/29 15:47:56 134 +++ trunk/dyn3d/vitvert.f 2018/03/20 09:35:59 265 @@ -4,33 +4,32 @@ contains - SUBROUTINE vitvert(convm, w) + pure function vitvert(convm) ! From libf/dyn3d/vitvert.F, version 1.1.1.1, 2004/05/19 12:53:05 ! Authors: P. Le Van, F. Hourdin - ! Objet : calcul de la vitesse verticale aux niveaux sigma + ! Purpose: Compute vertical speed at sigma levels. - ! La vitesse verticale est orientée de haut en bas. Au sol, au - ! niveau sigma(1), w(i, j, 1) = 0. Au sommet, au niveau - ! sigma(llm+1), la vitesse verticale est aussi égale à 0 et n'est - ! pas stockée dans le tableau w. - - USE dimens_m, ONLY : llm + ! Vertical speed is oriented from bottom to top. At ground-level + ! sigma(1): vitvert(i, j, 1) = 0. At top-level sigma(llm + 1), vertical + ! speed is 0 too and is not stored in vitvert. + + USE dimensions, ONLY : llm USE disvert_m, ONLY : bp - USE paramet_m, ONLY : ip1jmp1 - real, intent(in):: convm(ip1jmp1, llm) - REAL, intent(out):: w(ip1jmp1, llm) + real, intent(in):: convm(:, :, :) ! (iim + 1, jjm + 1, llm) + REAL vitvert(size(convm, 1), size(convm, 2), size(convm, 3)) ! Local: INTEGER l !------------------------------------------------------ - forall (l = 2: llm) w(:, l) = convm(:, l) - bp(l) * convm(:, 1) - w(:, 1) = 0. + forall (l = 2: llm) & + vitvert(:, :, l) = convm(:, :, l) - bp(l) * convm(:, :, 1) + vitvert(:, :, 1) = 0. - END SUBROUTINE vitvert + END function vitvert end module vitvert_m