/[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

revision 55 by guez, Mon Dec 12 13:25:01 2011 UTC revision 60 by guez, Mon Jan 30 14:37:26 2012 UTC
# Line 4  module gradiv2_m Line 4  module gradiv2_m
4    
5  contains  contains
6    
7    SUBROUTINE gradiv2(klevel, xcov, ycov, ld, gdx, gdy, cdivu)    SUBROUTINE gradiv2(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 du gradient de la divergence du vecteur v.
12    
13      USE dimens_m, ONLY : llm      USE dimens_m, ONLY : iim, jjm, llm
14      USE paramet_m, ONLY : ip1jm, ip1jmp1, jjp1      use divergf_m, only: divergf
15      USE comgeom, ONLY : cuvscvgam1, cvuscugam1, unsair_gam1, unsapolnga1, &      USE comgeom, ONLY : cuvscvgam1, cvuscugam1, unsair_gam1, unsapolnga1, &
16           unsapolsga1           unsapolsga1
17      USE filtreg_m, ONLY : filtreg      USE filtreg_m, ONLY : filtreg
18        use grad_m, only: grad
19        use nr_util, only: assert_eq, assert
20    
21      INTEGER, intent(in):: klevel      ! Composantes covariantes de v :
22        REAL, intent(in):: xcov(:, :, :) ! (iim + 1, jjm + 1, klevel)
23      ! composantes covariantes de v:      REAL, intent(in):: ycov(:, :, :) ! (iim + 1, jjm, klevel)
     REAL, intent(in):: xcov(ip1jmp1,klevel), ycov(ip1jm,klevel)  
24    
25      integer, intent(in):: ld      integer, intent(in):: ld
26      REAL, intent(out):: gdx(ip1jmp1,klevel), gdy(ip1jm,klevel)      REAL, intent(out):: gdx(:, :, :) ! (iim + 1, jjm + 1, klevel)
27        REAL, intent(out):: gdy(:, :, :) ! (iim + 1, jjm, klevel)
28      real, intent(in):: cdivu      real, intent(in):: cdivu
29    
30      ! Variables locales :      ! Variables locales :
31      REAL div(ip1jmp1,llm)      REAL nugrads, div(iim + 1, jjm + 1, llm)
32      REAL nugrads      INTEGER iter, klevel
     INTEGER l,ij,iter  
33    
34      !--------------------------------------------------------------      !--------------------------------------------------------------
35    
36      gdx = xcov      call assert((/size(xcov, 1), size(ycov, 1), size(gdx, 1), size(gdy, 1)/) &
37      gdy = ycov           == iim + 1, "gradiv2 iim")
38        call assert((/size(xcov, 2) - 1, size(ycov, 2), size(gdx, 2) - 1, &
39             size(gdy, 2)/) == jjm, "gradiv2 iim")
40        klevel = assert_eq(size(xcov, 3), size(ycov, 3), size(gdx, 3), &
41             size(gdy, 3), "gradiv2 klevel")
42    
43      CALL divergf(klevel, gdx, gdy, div)      CALL divergf(klevel, xcov, ycov, div)
44    
45      IF(ld.GT.1) THEN      IF (ld > 1) THEN
46         CALL laplacien (klevel, div, div)         CALL laplacien(klevel, div, div)
47    
48         ! Iteration de l'operateur laplacien_gam         ! ItĂ©ration de l'opĂ©rateur laplacien_gam
49         DO iter = 1, ld -2         DO iter = 1, ld -2
50            CALL laplacien_gam (klevel,cuvscvgam1,cvuscugam1,unsair_gam1, &            CALL laplacien_gam(klevel, cuvscvgam1, cvuscugam1, unsair_gam1, &
51                 unsapolnga1, unsapolsga1, div, div)                 unsapolnga1, unsapolsga1, div, div)
52         ENDDO         END DO
53      ENDIF      ENDIF
54    
55      CALL filtreg(div, jjp1, klevel, 2, 1, .TRUE., 1)      CALL filtreg(div, jjm + 1, klevel, 2, 1, .TRUE., 1)
56      CALL grad (klevel, div, gdx, gdy)      CALL grad(klevel, div, gdx, gdy)
57      nugrads = (-1.)**ld * cdivu      nugrads = (-1.)**ld * cdivu
58    
59      DO l = 1, klevel      gdx = gdx * nugrads
60         DO ij = 1, ip1jmp1      gdy = gdy * nugrads
           gdx(ij,l) = gdx(ij,l) * nugrads  
        ENDDO  
        DO ij = 1, ip1jm  
           gdy(ij,l) = gdy(ij,l) * nugrads  
        ENDDO  
     ENDDO  
61    
62    END SUBROUTINE gradiv2    END SUBROUTINE gradiv2
63    

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

  ViewVC Help
Powered by ViewVC 1.1.21