/[lmdze]/trunk/libf/dyn3d/Dissipation/gradiv2.f90
ViewVC logotype

Diff of /trunk/libf/dyn3d/Dissipation/gradiv2.f90

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

trunk/libf/dyn3d/gradiv2.f revision 26 by guez, Tue Mar 9 15:27:15 2010 UTC trunk/libf/dyn3d/Dissipation/gradiv2.f90 revision 56 by guez, Tue Jan 10 19:02:02 2012 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 ....      ! P. Le Van
11  c      ! Calcul de grad div du vecteur v.
12  c     xcov et ycov etant les composant.covariantes de v  
13  c   **********************************************************      USE dimens_m, ONLY : llm
14  c     xcont , ycont et ld  sont des arguments  d'entree pour le s-prog      USE paramet_m, ONLY : ip1jm, ip1jmp1, jjp1
15  c      gdx   et  gdy       sont des arguments de sortie pour le s-prog      USE comgeom, ONLY : cuvscvgam1, cvuscugam1, unsair_gam1, unsapolnga1, &
16  c           unsapolsga1
17  c      USE filtreg_m, ONLY : filtreg
18        use dimens_m  
19        use paramet_m      INTEGER, intent(in):: klevel
20        use comgeom  
21              use inidissip_m      ! composantes covariantes de v:
22        IMPLICIT NONE      REAL, intent(in):: xcov(ip1jmp1, klevel), ycov(ip1jm, klevel)
23  c  
24  c      integer, intent(in):: ld
25  c     ........    variables en arguments      ........      REAL, intent(out):: gdx(ip1jmp1, klevel), gdy(ip1jm, klevel)
26        real, intent(in):: cdivu
27        INTEGER klevel  
28        REAL  xcov( ip1jmp1,klevel ), ycov( ip1jm,klevel )      ! Variables locales :
29        REAL   gdx( ip1jmp1,klevel ),  gdy( ip1jm,klevel )      REAL div(ip1jmp1, llm)
30  c      REAL nugrads
31  c     ........       variables locales       .........      INTEGER iter
32  c  
33        REAL div(ip1jmp1,llm)      !--------------------------------------------------------------
34        REAL signe, nugrads  
35        INTEGER l,ij,iter      gdx = xcov
36        integer, intent(in):: ld      gdy = ycov
37          
38  c    ........................................................      CALL divergf(klevel, gdx, gdy, div)
39  c  
40  c      IF (ld > 1) THEN
41        CALL SCOPY( ip1jmp1 * klevel, xcov, 1, gdx, 1 )         CALL laplacien(klevel, div, div)
42        CALL SCOPY(   ip1jm * klevel, ycov, 1, gdy, 1 )  
43  c         ! ItĂ©ration de l'opĂ©rateur laplacien_gam
44  c         DO iter = 1, ld -2
45        signe   = (-1.)**ld            CALL laplacien_gam(klevel, cuvscvgam1, cvuscugam1, unsair_gam1, &
46        nugrads = signe * cdivu                 unsapolnga1, unsapolsga1, div, div)
47  c         END DO
48        ENDIF
49    
50        CALL    divergf( klevel, gdx,   gdy , div )      CALL filtreg(div, jjp1, klevel, 2, 1, .TRUE., 1)
51        CALL grad(klevel, div, gdx, gdy)
52        IF( ld.GT.1 )   THEN      nugrads = (-1.)**ld * cdivu
53    
54          CALL laplacien ( klevel, div,  div     )      gdx = gdx * nugrads
55        gdy = gdy * nugrads
56  c    ......  Iteration de l'operateur laplacien_gam   .......  
57      END SUBROUTINE gradiv2
58          DO iter = 1, ld -2  
59           CALL laplacien_gam ( klevel,cuvscvgam1,cvuscugam1,unsair_gam1,  end module gradiv2_m
      *                       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  
        ENDDO  
 c  
        RETURN  
        END  

Legend:
Removed from v.26  
changed lines
  Added in v.56

  ViewVC Help
Powered by ViewVC 1.1.21