--- trunk/Sources/dyn3d/vitvert.f 2018/01/08 14:12:02 251 +++ trunk/Sources/dyn3d/vitvert.f 2018/01/22 15:02:56 252 @@ -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 - - ! 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. + ! Purpose: Compute vertical speed at sigma levels. + ! 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 dimens_m, 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