/[lmdze]/trunk/libf/dyn3d/geopot.f90
ViewVC logotype

Diff of /trunk/libf/dyn3d/geopot.f90

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

revision 32 by guez, Tue Apr 6 17:52:58 2010 UTC revision 43 by guez, Fri Apr 8 12:43:31 2011 UTC
# Line 1  Line 1 
1  SUBROUTINE geopot(ngrid,teta,pk,pks,phis,phi)  module geopot_m
2    
3    ! From libf/dyn3d/geopot.F, version 1.1.1.1 2004/05/19    IMPLICIT NONE
   ! Author: P. Le Van  
   ! Objet : calcul du géopotentiel aux milieux des couches  
   ! L'integration se fait de bas en haut.  
4    
5    USE dimens_m  contains
   USE paramet_m  
6    
7    IMPLICIT NONE    SUBROUTINE geopot(ngrid, teta, pk, pks, phis, phi)
8    
9        ! From libf/dyn3d/geopot.F, version 1.1.1.1 2004/05/19
10        ! Author: P. Le Van
11        ! Objet : calcul du géopotentiel aux milieux des couches
12        ! L'intégration se fait de bas en haut.
13    
14        USE dimens_m
15        USE paramet_m
16    
17        INTEGER, INTENT (IN):: ngrid
18        REAL, INTENT (IN):: teta(ngrid, llm), pks(ngrid)
19        REAL, INTENT (IN) :: phis(ngrid)
20        REAL, INTENT (IN) :: pk(ngrid, llm)
21        REAL, INTENT (out)::  phi(ngrid, llm)
22    
23        ! Local:
24        INTEGER l
25    
26        ! -----------------------------------------------------------------------
27    
28        ! Calcul de phi au niveau 1 près du sol :
29        phi(:, 1) = phis + teta(:, 1) * (pks - pk(:, 1))
30    
31        ! Calcul de phi aux niveaux supérieurs :
32        DO l = 2, llm
33           phi(:, l) = phi(:, l-1) + 0.5 * (teta(:, l) + teta(:, l-1)) &
34                * (pk(:, l-1) - pk(:, l))
35        END DO
36    
37    ! Arguments:    END SUBROUTINE geopot
   INTEGER, INTENT (IN):: ngrid  
   REAL, INTENT (IN):: teta(ngrid,llm), pks(ngrid)  
   REAL, INTENT (IN) :: phis(ngrid)  
   REAL, INTENT (IN) :: pk(ngrid,llm)  
   REAL, INTENT (out)::  phi(ngrid,llm)  
   
   ! Local:  
   INTEGER l, ij  
   
   ! -----------------------------------------------------------------------  
   
   ! calcul de phi au niveau 1 pres du sol  
   DO  ij = 1, ngrid  
      phi(ij,1) = phis(ij) + teta(ij,1)*(pks(ij)-pk(ij,1))  
   end DO  
   
   ! calcul de phi aux niveaux superieurs  
   DO l = 2, llm  
      DO ij = 1, ngrid  
         phi(ij,l) = phi(ij,l-1) + 0.5 * (teta(ij,l) + teta(ij,l-1)) &  
              * (pk(ij,l-1) - pk(ij,l))  
      END DO  
   END DO  
38    
39  END SUBROUTINE geopot  end module geopot_m

Legend:
Removed from v.32  
changed lines
  Added in v.43

  ViewVC Help
Powered by ViewVC 1.1.21