--- trunk/dyn3d/massdair.f90 2014/02/05 17:51:07 78 +++ trunk/dyn3d/massdair.f 2018/03/20 09:35:59 265 @@ -9,27 +9,24 @@ ! From LMDZ4/libf/dyn3d/massdair.F, version 1.1.1.1 2004/05/19 12:53:07 ! Calcule la masse d'air dans chaque maille. - ! Auteurs : P. Le Van, F. Hourdin + ! Authors: P. Le Van, F. Hourdin - USE comgeom, ONLY: airesurg - USE dimens_m, ONLY: iim, llm - USE paramet_m, ONLY: iip1, ip1jmp1, llmp1 + USE comgeom, ONLY: airesurg_2d + USE dimensions, ONLY: iim, jjm, llm - REAL, intent(in):: p(ip1jmp1, llmp1) ! aux interfaces des llm couches - real, intent(out):: masse(ip1jmp1, llm) + REAL, intent(in):: p(iim + 1, jjm + 1, llm + 1) + ! aux interfaces des llm couches - ! Variables locales - INTEGER l, ij + real, intent(out):: masse(iim + 1, jjm + 1, llm) - !---------------------------------------------------------- + ! Local: + INTEGER l - DO l = 1, llm - masse(:, l) = airesurg * (p(:, l) - p(:, l + 1)) + !---------------------------------------------------------- - DO ij = 1, ip1jmp1, iip1 - masse(ij + iim, l) = masse(ij, l) - ENDDO - end DO + forall (l = 1: llm) masse(:iim, :, l) = airesurg_2d(:iim, :) & + * (p(:iim, :, l) - p(:iim, :, l + 1)) + masse(iim + 1, :, :) = masse(1, :, :) END SUBROUTINE massdair