1 |
|
module convmas_m |
2 |
|
|
|
! $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) |
|
|
|
|
|
USE dimens_m |
|
|
USE paramet_m |
|
|
USE disvert_m |
|
|
USE conf_gcm_m |
|
|
USE filtreg_m, ONLY: filtreg |
|
3 |
IMPLICIT NONE |
IMPLICIT NONE |
4 |
|
|
5 |
! ======================================================================= |
contains |
|
|
|
|
! Auteurs: P. Le Van , F. Hourdin . |
|
|
! ------- |
|
|
|
|
|
! Objet: |
|
|
! ------ |
|
|
|
|
|
! ******************************************************************** |
|
|
! .... calcul de la convergence du flux de masse aux niveaux p ... |
|
|
! ******************************************************************** |
|
6 |
|
|
7 |
|
SUBROUTINE convmas(pbaru, pbarv, convm) |
8 |
|
|
9 |
! pbaru et pbarv sont des arguments d'entree pour le s-pg .... |
! From LMDZ4/libf/dyn3d/convmas.F, version 1.1.1.1, 2004/05/19 12:53:07 |
|
! ..... convm est un argument de sortie pour le s-pg .... |
|
10 |
|
|
11 |
! le calcul se fait de haut en bas, |
USE dimens_m, ONLY: iim, jjm, llm |
12 |
! la convergence de masse au niveau p(llm+1) est egale a 0. et |
USE paramet_m, ONLY: ip1jm, ip1jmp1, jjp1, llmm1 |
13 |
! n'est pas stockee dans le tableau convm . |
USE filtreg_scal_m, ONLY: filtreg_scal |
14 |
|
|
15 |
|
! Authors: P. Le Van, F. Hourdin |
16 |
|
! Objet: calcul de la convergence du flux de masse aux niveaux p |
17 |
|
|
18 |
! ======================================================================= |
! Le calcul se fait de haut en bas, la convergence de masse au |
19 |
|
! niveau p(llm+1) est égale à 0 et n'est pas stockée dans le |
20 |
|
! tableau convm. |
21 |
|
|
22 |
! Declarations: |
REAL, INTENT(IN):: pbaru(ip1jmp1, llm), pbarv(ip1jm, llm) |
23 |
! ------------- |
REAL, INTENT(OUT):: convm(iim + 1, jjm + 1, llm) |
24 |
|
|
25 |
|
! Local: |
26 |
|
INTEGER l |
27 |
|
|
28 |
REAL, INTENT (IN) :: pbaru(ip1jmp1, llm), pbarv(ip1jm, llm) |
!----------------------------------------------------------------------- |
|
REAL, INTENT (OUT) :: convm(ip1jmp1, llm) |
|
|
INTEGER l, ij |
|
29 |
|
|
30 |
|
! Calcul de - (d(pbaru)/dx + d(pbarv)/dy) : |
31 |
|
CALL convflu(pbaru, pbarv, llm, convm) |
32 |
|
|
33 |
! ----------------------------------------------------------------------- |
! Filtrage : |
34 |
! .... calcul de - (d(pbaru)/dx + d(pbarv)/dy ) ...... |
CALL filtreg_scal(convm, direct = .true., intensive = .false.) |
35 |
|
|
36 |
CALL convflu(pbaru, pbarv, llm, convm) |
! Intégration de la convergence de masse de haut en bas : |
37 |
|
DO l = llmm1, 1, -1 |
38 |
! ----------------------------------------------------------------------- |
convm(:, :, l) = convm(:, :, l) + convm(:, :, l+1) |
|
! filtrage: |
|
|
! --------- |
|
|
|
|
|
CALL filtreg(convm, jjp1, llm, 2, 2, .TRUE.) |
|
|
|
|
|
! 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) |
|
39 |
END DO |
END DO |
|
END DO |
|
40 |
|
|
41 |
RETURN |
END SUBROUTINE convmas |
42 |
END SUBROUTINE convmas |
|
43 |
|
end module convmas_m |