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

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

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

trunk/libf/dyn3d/gradiv2.f90 revision 54 by guez, Tue Dec 6 15:07:04 2011 UTC trunk/libf/dyn3d/Dissipation/gradiv2.f90 revision 55 by guez, Mon Dec 12 13:25:01 2011 UTC
# Line 7  contains Line 7  contains
7    SUBROUTINE gradiv2(klevel, xcov, ycov, ld, gdx, gdy, cdivu)    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      ! From LMDZ4/libf/dyn3d/gradiv2.F, version 1.1.1.1 2004/05/19 12:53:07
   
10      ! P. Le Van      ! P. Le Van
11      ! calcul de grad div du vecteur v      ! Calcul de grad div du vecteur v.
12      ! xcov et ycov etant les composantes covariantes de v  
13      ! xcont, ycont et ld sont des arguments d'entree pour le sous-programme      USE dimens_m, ONLY : llm
14      ! gdx et gdy sont des arguments de sortie pour le sous-programme      USE paramet_m, ONLY : ip1jm, ip1jmp1, jjp1
15        USE comgeom, ONLY : cuvscvgam1, cvuscugam1, unsair_gam1, unsapolnga1, &
16      use dimens_m           unsapolsga1
17      use paramet_m      USE filtreg_m, ONLY : filtreg
     use comgeom  
     use filtreg_m, only: filtreg  
18    
19      ! variables en arguments      INTEGER, intent(in):: klevel
20    
21        ! composantes covariantes de v:
22        REAL, intent(in):: xcov(ip1jmp1,klevel), ycov(ip1jm,klevel)
23    
     INTEGER klevel  
     REAL xcov( ip1jmp1,klevel), ycov( ip1jm,klevel)  
24      integer, intent(in):: ld      integer, intent(in):: ld
25      REAL gdx( ip1jmp1,klevel), gdy( ip1jm,klevel)      REAL, intent(out):: gdx(ip1jmp1,klevel), gdy(ip1jm,klevel)
26      real, intent(in):: cdivu      real, intent(in):: cdivu
27    
28      ! variables locales      ! Variables locales :
   
29      REAL div(ip1jmp1,llm)      REAL div(ip1jmp1,llm)
30      REAL nugrads      REAL nugrads
31      INTEGER l,ij,iter      INTEGER l,ij,iter
32    
33      !--------------------------------------------------------------      !--------------------------------------------------------------
34    
35      CALL SCOPY( ip1jmp1 * klevel, xcov, 1, gdx, 1)      gdx = xcov
36      CALL SCOPY( ip1jm * klevel, ycov, 1, gdy, 1)      gdy = ycov
37    
38      CALL divergf( klevel, gdx, gdy, div)      CALL divergf(klevel, gdx, gdy, div)
39    
40      IF( ld.GT.1) THEN      IF(ld.GT.1) THEN
41         CALL laplacien ( klevel, div, div)         CALL laplacien (klevel, div, div)
42    
43         ! Iteration de l'operateur laplacien_gam         ! Iteration de l'operateur laplacien_gam
44         DO iter = 1, ld -2         DO iter = 1, ld -2
45            CALL laplacien_gam ( klevel,cuvscvgam1,cvuscugam1,unsair_gam1, &            CALL laplacien_gam (klevel,cuvscvgam1,cvuscugam1,unsair_gam1, &
46                 unsapolnga1, unsapolsga1, div, div)                 unsapolnga1, unsapolsga1, div, div)
47         ENDDO         ENDDO
48      ENDIF      ENDIF
49    
50      CALL filtreg( div, jjp1, klevel, 2, 1, .TRUE., 1)      CALL filtreg(div, jjp1, klevel, 2, 1, .TRUE., 1)
51      CALL grad ( klevel, div, gdx, gdy)      CALL grad (klevel, div, gdx, gdy)
52      nugrads = (-1.)**ld * cdivu      nugrads = (-1.)**ld * cdivu
53    
54      DO l = 1, klevel      DO l = 1, klevel
55         DO ij = 1, ip1jmp1         DO ij = 1, ip1jmp1
56            gdx( ij,l) = gdx( ij,l) * nugrads            gdx(ij,l) = gdx(ij,l) * nugrads
57         ENDDO         ENDDO
58         DO ij = 1, ip1jm         DO ij = 1, ip1jm
59            gdy( ij,l) = gdy( ij,l) * nugrads            gdy(ij,l) = gdy(ij,l) * nugrads
60         ENDDO         ENDDO
61      ENDDO      ENDDO
62    

Legend:
Removed from v.54  
changed lines
  Added in v.55

  ViewVC Help
Powered by ViewVC 1.1.21