/[lmdze]/trunk/Sources/dyn3d/rotatf.f
ViewVC logotype

Diff of /trunk/Sources/dyn3d/rotatf.f

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

trunk/libf/dyn3d/rotatf.f revision 65 by guez, Thu Sep 20 09:57:03 2012 UTC trunk/dyn3d/rotatf.f revision 107 by guez, Thu Sep 11 15:09:15 2014 UTC
# Line 1  Line 1 
1  !  module rotatf_m
2  ! $Header: /home/cvsroot/LMDZ4/libf/dyn3d/rotatf.F,v 1.1.1.1 2004/05/19 12:53:05 lmdzadmin Exp $  
3  !    IMPLICIT NONE
4        SUBROUTINE rotatf (klevel, x, y, rot )  
5  c  contains
6  c     Auteur : P.Le Van  
7  c**************************************************************    SUBROUTINE rotatf(klevel, x, y, rot)
8  c.  calcule le rotationnel  
9  c     a tous les niveaux d'1 vecteur de comp. x et y ..      ! From LMDZ4/libf/dyn3d/rotatf.F, version 1.1.1.1 2004/05/19 12:53:05
10  c       x  et  y etant des composantes  covariantes  ...  
11  c********************************************************************      ! Author: P.Le Van
12  c   klevel, x  et y   sont des arguments d'entree pour le s-prog  
13  c        rot          est  un argument  de sortie pour le s-prog      ! Calcule le rotationnel à tous les niveaux d'un vecteur de
14  c      ! composantes covariantes x et y.
15        use dimens_m  
16        use paramet_m      USE dimens_m
17        use comgeom      USE paramet_m
18        use filtreg_m, only: filtreg      USE comgeom
19        IMPLICIT NONE      USE filtreg_m, ONLY: filtreg
20  c  
21  c  
22  c   .....  variables en arguments  ......      ! .....  variables en arguments  ......
23  c  
24        INTEGER, intent(in):: klevel      INTEGER, INTENT (IN) :: klevel
25        REAL rot( ip1jm,klevel )      ! klevel, x  et y   sont des arguments d'entree pour le s-prog
26        REAL, intent(in):: x( ip1jmp1,klevel ), y( ip1jm,klevel )      ! rot          est  un argument  de sortie pour le s-prog
27  c  
28  c  ...   variables  locales  ...      REAL rot(iim + 1, jjm, klevel)
29  c      REAL, INTENT (IN) :: x(iim + 1, jjm + 1, klevel), y(iim + 1, jjm, klevel)
30        INTEGER  l, ij  
31  c      ! ...   variables  locales  ...
32  c  
33        DO  10 l = 1,klevel      INTEGER l, i, j
34  c  
35          DO   ij = 1, ip1jm - 1  
36           rot( ij,l )  =    y( ij+1 , l )  -  y( ij,l )   +      DO l = 1, klevel
37       *                   x(ij +iip1, l )  -  x( ij,l )           forall (i = 1:iim, j = 1:jjm) rot(i, j, l) = y(i + 1, j, l) &
38          ENDDO              - y(i, j, l) + x(i, j + 1, l) - x(i, j, l)
39  c         rot(iim + 1, :, l) = rot(1, :, l)
40  c    .... correction pour rot( iip1,j,l)  ....      END DO
41  c    ....   rot(iip1,j,l)= rot(1,j,l) ...  
42  CDIR$ IVDEP      CALL filtreg(rot, direct = .true., intensive = .false.)
43          DO  ij = iip1, ip1jm, iip1  
44           rot( ij,l ) = rot( ij -iim,l )      DO l = 1, klevel
45          ENDDO         rot(:, :, l) = rot(:, :, l)*unsairez_2d
46  c      END DO
47    10  CONTINUE  
48      END SUBROUTINE rotatf
49          CALL filtreg( rot, jjm, klevel, 2, 2, .FALSE.)  
50          end module rotatf_m
         DO l = 1, klevel  
           DO ij = 1, ip1jm  
            rot(ij,l) = rot(ij,l) * unsairez(ij)  
           ENDDO  
         ENDDO  
 c  
 c  
       RETURN  
       END  

Legend:
Removed from v.65  
changed lines
  Added in v.107

  ViewVC Help
Powered by ViewVC 1.1.21