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

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

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

trunk/libf/dyn3d/nxgraro2.f revision 54 by guez, Tue Dec 6 15:07:04 2011 UTC trunk/dyn3d/Dissipation/nxgraro2.f revision 266 by guez, Thu Apr 19 17:54:55 2018 UTC
# Line 1  Line 1 
1  !  module nxgraro2_m
2  ! $Header: /home/cvsroot/LMDZ4/libf/dyn3d/nxgraro2.F,v 1.1.1.1 2004/05/19 12:53:06 lmdzadmin Exp $  
3  !    IMPLICIT NONE
4         SUBROUTINE nxgraro2 (klevel,xcov, ycov, lr, grx, gry, crot )  
5  c  contains
6  c      P.Le Van .  
7  c   ***********************************************************    SUBROUTINE nxgraro2(xcov, ycov, lr, grx, gry, crot)
8  c                                 lr  
9  c      calcul de  ( nxgrad (rot) )   du vect. v  ....      ! From LMDZ4/libf/dyn3d/nxgraro2.F, version 1.1.1.1, 2004/05/19 12:53:06
10  c  
11  c       xcov et ycov  etant les compos. covariantes de  v      ! P. Le Van
12  c   ***********************************************************      ! Calcul de nxgrad(rot) du vecteur (xcov, ycov).
13  c     xcov , ycov et lr  sont des arguments  d'entree pour le s-prog  
14  c      grx   et  gry     sont des arguments de sortie pour le s-prog      USE filtreg_v_m, ONLY: filtreg_v
15  c      use nr_util, only: assert, assert_eq
16  c      use nxgrad_m, only: nxgrad
17        use dimens_m      use rotatf_m, only: rotatf
18        use paramet_m  
19        use filtreg_m, only: filtreg      ! Composantes covariantes :
20        IMPLICIT NONE      REAL, intent(in):: xcov(:, :, :) ! (iim + 1, jjm + 1, klevel)
21  c      REAL, intent(in):: ycov(:, :, :) ! (iim + 1, jjm, klevel)
22  c  
23  c    ......  variables en arguments  .......      integer, intent(in):: lr
24  c      REAL, intent(out):: grx(:, :, :) ! (iim + 1, jjm + 1, klevel)
25        INTEGER klevel      REAL, intent(out):: gry(:, :, :) ! (iim + 1, jjm, klevel)
26        REAL xcov( ip1jmp1,klevel ), ycov( ip1jm,klevel )      real, intent(in):: crot
27        REAL  grx( ip1jmp1,klevel ),  gry( ip1jm,klevel )  
28        real, intent(in):: crot      ! Local:
29  c      INTEGER klevel, iter
30  c    ......   variables locales     ........      REAL rot(size(ycov, 1), size(ycov, 2), size(ycov, 3)) , nugradrs
31  c  
32        REAL rot(ip1jm,llm) , signe, nugradrs      !----------------------------------------------------------
33        INTEGER l,ij,iter  
34        integer, intent(in):: lr      call assert(size(xcov, 1) == [size(ycov, 1), size(grx, 1), size(gry, 1)], &
35  c    ........................................................           "nxgraro2 iim")
36  c      call assert(size(xcov, 2) - 1 == [size(ycov, 2), size(grx, 2) - 1, &
37  c           size(gry, 2)], "nxgraro2 jjm")
38  c      klevel = assert_eq(size(xcov, 3), size(ycov, 3), size(grx, 3), &
39        signe    = (-1.)**lr           size(gry, 3), "nxgraro2 klevel")
40        nugradrs = signe * crot  
41  c      grx = xcov
42        CALL SCOPY ( ip1jmp1* klevel, xcov, 1, grx, 1 )      gry = ycov
43        CALL SCOPY (  ip1jm * klevel, ycov, 1, gry, 1 )  
44  c      CALL rotatf(klevel, grx, gry, rot)
45        CALL     rotatf     ( klevel, grx, gry, rot )      CALL laplacien_rot(klevel, rot, rot, grx, gry)
46  c  
47        CALL laplacien_rot ( klevel, rot, rot,grx,gry      )      ! ItĂ©ration de l'opĂ©rateur laplacien_rotgam
48        DO iter = 1, lr - 2
49  c         CALL laplacien_rotgam(klevel, rot, rot)
50  c    .....   Iteration de l'operateur laplacien_rotgam  .....      ENDDO
51  c  
52        DO  iter = 1, lr -2      CALL filtreg_v(rot, intensive = .true.)
53          CALL laplacien_rotgam ( klevel, rot, rot )      CALL nxgrad(klevel, rot, grx, gry)
54        ENDDO  
55  c      nugradrs = (-1.)**lr * crot
56  c      grx = grx * nugradrs
57        CALL filtreg( rot, jjm, klevel, 2,1, .FALSE.,1)      gry = gry * nugradrs
58        CALL nxgrad ( klevel, rot, grx, gry )  
59  c    END SUBROUTINE nxgraro2
60        DO    l = 1, klevel  
61           DO  ij = 1, ip1jm  end module nxgraro2_m
           gry( ij,l ) = gry( ij,l ) * nugradrs  
          ENDDO  
          DO  ij = 1, ip1jmp1  
           grx( ij,l ) = grx( ij,l ) * nugradrs  
          ENDDO  
       ENDDO  
 c  
       RETURN  
       END  

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

  ViewVC Help
Powered by ViewVC 1.1.21