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

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

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

trunk/libf/dyn3d/gradiv2.f revision 27 by guez, Thu Mar 25 14:29:07 2010 UTC trunk/libf/dyn3d/gradiv2.f90 revision 54 by guez, Tue Dec 6 15:07:04 2011 UTC
# Line 1  Line 1 
1  !  module gradiv2_m
2  ! $Header: /home/cvsroot/LMDZ4/libf/dyn3d/gradiv2.F,v 1.1.1.1 2004/05/19 12:53:07 lmdzadmin Exp $  
3  !    IMPLICIT NONE
4        SUBROUTINE gradiv2(klevel, xcov, ycov, ld, gdx, gdy )  
5  c  contains
6  c     P. Le Van  
7  c    SUBROUTINE gradiv2(klevel, xcov, ycov, ld, gdx, gdy, cdivu)
8  c   **********************************************************  
9  c                                ld      ! From LMDZ4/libf/dyn3d/gradiv2.F, version 1.1.1.1 2004/05/19 12:53:07
10  c       calcul  de  (grad (div) )   du vect. v ....  
11  c      ! P. Le Van
12  c     xcov et ycov etant les composant.covariantes de v      ! calcul de grad div du vecteur v
13  c   **********************************************************      ! xcov et ycov etant les composantes covariantes de v
14  c     xcont , ycont et ld  sont des arguments  d'entree pour le s-prog      ! xcont, ycont et ld sont des arguments d'entree pour le sous-programme
15  c      gdx   et  gdy       sont des arguments de sortie pour le s-prog      ! gdx et gdy sont des arguments de sortie pour le sous-programme
16  c  
17  c      use dimens_m
18        use dimens_m      use paramet_m
19        use paramet_m      use comgeom
20        use comgeom      use filtreg_m, only: filtreg
21              use inidissip_m  
22        use filtreg_m, only: filtreg      ! variables en arguments
23        IMPLICIT NONE  
24  c      INTEGER klevel
25  c      REAL xcov( ip1jmp1,klevel), ycov( ip1jm,klevel)
26  c     ........    variables en arguments      ........      integer, intent(in):: ld
27        REAL gdx( ip1jmp1,klevel), gdy( ip1jm,klevel)
28        INTEGER klevel      real, intent(in):: cdivu
29        REAL  xcov( ip1jmp1,klevel ), ycov( ip1jm,klevel )  
30        REAL   gdx( ip1jmp1,klevel ),  gdy( ip1jm,klevel )      ! variables locales
31  c  
32  c     ........       variables locales       .........      REAL div(ip1jmp1,llm)
33  c      REAL nugrads
34        REAL div(ip1jmp1,llm)      INTEGER l,ij,iter
35        REAL signe, nugrads  
36        INTEGER l,ij,iter      !--------------------------------------------------------------
37        integer, intent(in):: ld  
38              CALL SCOPY( ip1jmp1 * klevel, xcov, 1, gdx, 1)
39  c    ........................................................      CALL SCOPY( ip1jm * klevel, ycov, 1, gdy, 1)
40  c  
41  c      CALL divergf( klevel, gdx, gdy, div)
42        CALL SCOPY( ip1jmp1 * klevel, xcov, 1, gdx, 1 )  
43        CALL SCOPY(   ip1jm * klevel, ycov, 1, gdy, 1 )      IF( ld.GT.1) THEN
44  c         CALL laplacien ( klevel, div, div)
45  c  
46        signe   = (-1.)**ld         ! Iteration de l'operateur laplacien_gam
47        nugrads = signe * cdivu         DO iter = 1, ld -2
48  c            CALL laplacien_gam ( klevel,cuvscvgam1,cvuscugam1,unsair_gam1, &
49                   unsapolnga1, unsapolsga1, div, div)
   
       CALL    divergf( klevel, gdx,   gdy , div )  
   
       IF( ld.GT.1 )   THEN  
   
         CALL laplacien ( klevel, div,  div     )  
   
 c    ......  Iteration de l'operateur laplacien_gam   .......  
   
         DO iter = 1, ld -2  
          CALL laplacien_gam ( klevel,cuvscvgam1,cvuscugam1,unsair_gam1,  
      *                       unsapolnga1, unsapolsga1,  div, div       )  
         ENDDO  
   
       ENDIF  
   
   
        CALL filtreg( div   , jjp1, klevel, 2, 1, .TRUE., 1 )  
        CALL  grad  ( klevel,  div,   gdx,  gdy             )  
   
 c  
        DO   l = 1, klevel  
          DO  ij = 1, ip1jmp1  
           gdx( ij,l ) = gdx( ij,l ) * nugrads  
          ENDDO  
          DO  ij = 1, ip1jm  
           gdy( ij,l ) = gdy( ij,l ) * nugrads  
          ENDDO  
50         ENDDO         ENDDO
51  c      ENDIF
52         RETURN  
53         END      CALL filtreg( div, jjp1, klevel, 2, 1, .TRUE., 1)
54        CALL grad ( klevel, div, gdx, gdy)
55        nugrads = (-1.)**ld * cdivu
56    
57        DO l = 1, klevel
58           DO ij = 1, ip1jmp1
59              gdx( ij,l) = gdx( ij,l) * nugrads
60           ENDDO
61           DO ij = 1, ip1jm
62              gdy( ij,l) = gdy( ij,l) * nugrads
63           ENDDO
64        ENDDO
65    
66      END SUBROUTINE gradiv2
67    
68    end module gradiv2_m

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

  ViewVC Help
Powered by ViewVC 1.1.21