--- trunk/libf/dyn3d/convmas.f 2008/02/27 13:16:39 3 +++ trunk/dyn3d/convmas.f 2014/03/26 17:18:58 91 @@ -1,63 +1,45 @@ -! -! $Header: /home/cvsroot/LMDZ4/libf/dyn3d/convmas.F,v 1.1.1.1 2004/05/19 12:53:07 lmdzadmin Exp $ -! - SUBROUTINE convmas (pbaru, pbarv, convm ) -c - use dimens_m - use paramet_m - use comvert - use logic - IMPLICIT NONE - -c======================================================================= -c -c Auteurs: P. Le Van , F. Hourdin . -c ------- -c -c Objet: -c ------ -c -c ******************************************************************** -c .... calcul de la convergence du flux de masse aux niveaux p ... -c ******************************************************************** -c -c -c pbaru et pbarv sont des arguments d'entree pour le s-pg .... -c ..... convm est un argument de sortie pour le s-pg .... -c -c le calcul se fait de haut en bas, -c la convergence de masse au niveau p(llm+1) est egale a 0. et -c n'est pas stockee dans le tableau convm . -c -c -c======================================================================= -c -c Declarations: -c ------------- - - - REAL pbaru( ip1jmp1,llm ),pbarv( ip1jm,llm ),convm( ip1jmp1,llm ) - INTEGER l,ij - - -c----------------------------------------------------------------------- -c .... calcul de - (d(pbaru)/dx + d(pbarv)/dy ) ...... - - CALL convflu( pbaru, pbarv, llm, convm ) - -c----------------------------------------------------------------------- -c filtrage: -c --------- - - CALL filtreg( convm, jjp1, llm, 2, 2, .true., 1 ) - -c integration de la convergence de masse de haut en bas ...... - - DO l = llmm1, 1, -1 - DO ij = 1, ip1jmp1 - convm(ij,l) = convm(ij,l) + convm(ij,l+1) - ENDDO - ENDDO -c - RETURN - END +module convmas_m + + IMPLICIT NONE + +contains + + SUBROUTINE convmas(pbaru, pbarv, convm) + + ! From LMDZ4/libf/dyn3d/convmas.F, version 1.1.1.1, 2004/05/19 12:53:07 + + USE dimens_m, ONLY: llm + USE paramet_m, ONLY: ip1jm, ip1jmp1, jjp1, llmm1 + USE filtreg_m, ONLY: filtreg + + ! Authors: P. Le Van, F. Hourdin + ! Objet: calcul de la convergence du flux de masse aux niveaux p + + ! Le calcul se fait de haut en bas, la convergence de masse au + ! niveau p(llm+1) est égale à 0 et n'est pas stockée dans le + ! tableau convm. + + REAL, INTENT(IN):: pbaru(ip1jmp1, llm), pbarv(ip1jm, llm) + REAL, INTENT(OUT):: convm(ip1jmp1, llm) + + ! Local: + INTEGER l, ij + + !----------------------------------------------------------------------- + + ! Calcul de - (d(pbaru)/dx + d(pbarv)/dy) : + CALL convflu(pbaru, pbarv, llm, convm) + + ! Filtrage : + CALL filtreg(convm, jjp1, llm, 2, 2, .TRUE.) + + ! Intégration de la convergence de masse de haut en bas : + DO l = llmm1, 1, -1 + DO ij = 1, ip1jmp1 + convm(ij, l) = convm(ij, l) + convm(ij, l+1) + END DO + END DO + + END SUBROUTINE convmas + +end module convmas_m