/[lmdze]/trunk/dyn3d/Dissipation/gradiv2.f
ViewVC logotype

Contents of /trunk/dyn3d/Dissipation/gradiv2.f

Parent Directory Parent Directory | Revision Log Revision Log


Revision 55 - (show annotations)
Mon Dec 12 13:25:01 2011 UTC (12 years, 5 months ago) by guez
Original Path: trunk/libf/dyn3d/Dissipation/gradiv2.f90
File size: 1586 byte(s)
-- In procedure "bilan_dyn", replaced average of "zvq" by integral of
"zvq", following a comment of Francis Codron :

Le calcul actuel donne des unités peu pratiques : transports de
chaleur en K m / s par exemple. C'est bien pour les sorties à 2
dimensions, latitude et pression, car alors le transport ne dépend pas
de l'espacement des niveaux, mieux pour comparer ou tracer en latitude
et pression. Par contre, quand on somme sur la verticale, on
préfèrerait avoir des transports d'énergie en watts, ou au moins an K
kg / s (à multiplier par "Cp" ou "L"). On doit pouvoir recalculer le
transport intégré à partir des fichiers de sortie, mais c'est embêtant
(calcul de "cv").

-- Gathered files in directory Dissipation.

1 module gradiv2_m
2
3 IMPLICIT NONE
4
5 contains
6
7 SUBROUTINE gradiv2(klevel, xcov, ycov, ld, gdx, gdy, cdivu)
8
9 ! From LMDZ4/libf/dyn3d/gradiv2.F, version 1.1.1.1 2004/05/19 12:53:07
10 ! P. Le Van
11 ! Calcul de grad div du vecteur v.
12
13 USE dimens_m, ONLY : llm
14 USE paramet_m, ONLY : ip1jm, ip1jmp1, jjp1
15 USE comgeom, ONLY : cuvscvgam1, cvuscugam1, unsair_gam1, unsapolnga1, &
16 unsapolsga1
17 USE filtreg_m, ONLY : filtreg
18
19 INTEGER, intent(in):: klevel
20
21 ! composantes covariantes de v:
22 REAL, intent(in):: xcov(ip1jmp1,klevel), ycov(ip1jm,klevel)
23
24 integer, intent(in):: ld
25 REAL, intent(out):: gdx(ip1jmp1,klevel), gdy(ip1jm,klevel)
26 real, intent(in):: cdivu
27
28 ! Variables locales :
29 REAL div(ip1jmp1,llm)
30 REAL nugrads
31 INTEGER l,ij,iter
32
33 !--------------------------------------------------------------
34
35 gdx = xcov
36 gdy = ycov
37
38 CALL divergf(klevel, gdx, gdy, div)
39
40 IF(ld.GT.1) THEN
41 CALL laplacien (klevel, div, div)
42
43 ! Iteration de l'operateur laplacien_gam
44 DO iter = 1, ld -2
45 CALL laplacien_gam (klevel,cuvscvgam1,cvuscugam1,unsair_gam1, &
46 unsapolnga1, unsapolsga1, div, div)
47 ENDDO
48 ENDIF
49
50 CALL filtreg(div, jjp1, klevel, 2, 1, .TRUE., 1)
51 CALL grad (klevel, div, gdx, gdy)
52 nugrads = (-1.)**ld * cdivu
53
54 DO l = 1, klevel
55 DO ij = 1, ip1jmp1
56 gdx(ij,l) = gdx(ij,l) * nugrads
57 ENDDO
58 DO ij = 1, ip1jm
59 gdy(ij,l) = gdy(ij,l) * nugrads
60 ENDDO
61 ENDDO
62
63 END SUBROUTINE gradiv2
64
65 end module gradiv2_m

  ViewVC Help
Powered by ViewVC 1.1.21