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

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

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

trunk/dyn3d/tourpot.f90 revision 78 by guez, Wed Feb 5 17:51:07 2014 UTC trunk/dyn3d/tourpot.f revision 107 by guez, Thu Sep 11 15:09:15 2014 UTC
# Line 8  contains Line 8  contains
8    
9      ! From LMDZ4/libf/dyn3d/tourpot.F, version 1.1.1.1 2004/05/19 12:53:06      ! From LMDZ4/libf/dyn3d/tourpot.F, version 1.1.1.1 2004/05/19 12:53:06
10    
11      ! Auteur : P. Le Van      ! Author: P. Le Van
12      ! Objet : calcul du tourbillon potentiel      ! Objet : calcul du tourbillon potentiel
13    
14        USE comgeom, ONLY: fext_2d
15      USE dimens_m, ONLY: iim, jjm, llm      USE dimens_m, ONLY: iim, jjm, llm
     USE paramet_m, ONLY: iip1, ip1jm, ip1jmp1  
     USE comgeom, ONLY: fext  
16      use filtreg_m, only: filtreg      use filtreg_m, only: filtreg
17    
18      REAL, intent(in):: vcov(ip1jm, llm), ucov(ip1jmp1, llm)      REAL, intent(in):: vcov(:, :, :) ! (iim + 1, jjm, llm)
19      REAL, intent(in):: massebxy(ip1jm, llm)      REAL, intent(in):: ucov(:, :, :) ! (iim + 1, jjm + 1, llm)
20        REAL, intent(in):: massebxy(:, :, :) ! (iim + 1, jjm, llm) mass of grid cell
21    
22      real, intent(out):: vorpot(ip1jm, llm)      real, intent(out):: vorpot(:, :, :) ! (iim + 1, jjm, llm)
23      ! = (Filtre(d(vcov)/dx - d(ucov)/dy) + fext) / massebxy      ! = (Filtre(d(vcov)/dx - d(ucov)/dy) + fext) / massebxy
24    
25      ! Local:      ! Local:
26      REAL rot(ip1jm, llm)  
27      INTEGER l, ij      REAL rot(iim + 1, jjm, llm)
28        ! relative vorticity multiplied by cell area, in m2 s-1
29    
30        INTEGER l, i, j
31    
32      !---------------------------------------------------------------      !---------------------------------------------------------------
33    
34      ! Calcul du rotationnel du vent puis filtrage      ! Calcul du rotationnel du vent puis filtrage
35    
36      DO l = 1, llm      forall (i = 1: iim, j = 1: jjm) rot(i, j, :) &
37         DO ij = 1, ip1jm - 1           = vcov(i + 1, j, :) - vcov(i, j, :) + ucov(i, j + 1, :) - ucov(i, j, :)
38            rot(ij, l) = vcov(ij + 1, l) - vcov(ij, l) + ucov(ij + iip1, l) &      rot(iim + 1, :, :) = rot(1, :, :)
39                 - ucov(ij, l)  
40         end DO      CALL filtreg(rot, direct = .true., intensive = .true.)
41    
42         ! correction pour rot(iip1, j, l)      forall (l = 1: llm) vorpot(:iim, :, l) &
43         ! rot(iip1, j, l) = rot(1, j, l)           = (rot(:iim, :, l) + fext_2d(:iim, :)) / massebxy(:iim, :, l)
44         DO ij = iip1, ip1jm, iip1      vorpot(iim + 1, :, :)= vorpot(1, :, :)
           rot(ij, l) = rot(ij - iim, l)  
        end DO  
     end DO  
   
     CALL filtreg(rot, jjm, llm, 2, 1, .FALSE.)  
   
     DO l = 1, llm  
        DO ij = 1, ip1jm - 1  
           vorpot(ij, l) = (rot(ij, l) + fext(ij)) / massebxy(ij, l)  
        end DO  
   
        ! correction pour vorpot(iip1, j, l)  
        ! vorpot(iip1, j, l)= vorpot(1, j, l)  
        DO ij = iip1, ip1jm, iip1  
           vorpot(ij, l) = vorpot(ij - iim, l)  
        end DO  
     end DO  
45    
46    END SUBROUTINE tourpot    END SUBROUTINE tourpot
47    

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

  ViewVC Help
Powered by ViewVC 1.1.21