--- trunk/dyn3d/vitvert.f90 2013/11/15 18:45:49 76 +++ trunk/dyn3d/vitvert.f 2018/02/05 10:39:38 254 @@ -1,30 +1,35 @@ -SUBROUTINE vitvert(convm , w) +module vitvert_m - ! From libf/dyn3d/vitvert.F, version 1.1.1.1 2004/05/19 12:53:05 - ! Authors: P. Le Van , F. Hourdin + IMPLICIT NONE - ! Objet : calcul de la vitesse verticale aux niveaux sigma +contains - ! La vitesse verticale est orientee de haut en bas . - ! au sol, au niveau sigma(1), w(i, j, 1) = 0. - ! au sommet, au niveau sigma(llm+1) , la vit.verticale est aussi - ! egale a 0. et n'est pas stockee dans le tableau w . + pure function vitvert(convm) - USE dimens_m, ONLY : llm - USE paramet_m, ONLY : ip1jmp1 - USE disvert_m, ONLY : bp + ! From libf/dyn3d/vitvert.F, version 1.1.1.1, 2004/05/19 12:53:05 + ! Authors: P. Le Van, F. Hourdin - IMPLICIT NONE + ! 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 + + real, intent(in):: convm(:, :, :) ! (iim + 1, jjm + 1, llm) + REAL vitvert(size(convm, 1), size(convm, 2), size(convm, 3)) - real, intent(in):: convm(ip1jmp1, llm) - REAL, intent(out):: w(ip1jmp1, llm) + ! Local: + INTEGER l - ! Local: - INTEGER l + !------------------------------------------------------ - !------------------------------------------------------ + forall (l = 2: llm) & + vitvert(:, :, l) = convm(:, :, l) - bp(l) * convm(:, :, 1) + vitvert(:, :, 1) = 0. - forall (l = 2: llm) w(:, l) = convm(:, l) - bp(l) * convm(:, 1) - w(:, 1) = 0. + END function vitvert -END SUBROUTINE vitvert +end module vitvert_m