/[lmdze]/trunk/Sources/phylmd/Orography/drag_noro.f
ViewVC logotype

Diff of /trunk/Sources/phylmd/Orography/drag_noro.f

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

revision 246 by guez, Thu Jun 18 13:49:26 2015 UTC revision 247 by guez, Fri Jan 5 14:45:45 2018 UTC
# Line 4  module drag_noro_m Line 4  module drag_noro_m
4    
5  contains  contains
6    
7    SUBROUTINE drag_noro(nlon, nlev, dtime, paprs, pplay, pmea, pstd, psig, &    SUBROUTINE drag_noro(dtime, paprs, pplay, pmea, pstd, psig, pgam, pthe, &
8         pgam, pthe, ppic, pval, ktest, t, u, v, pulow, pvlow, pustr, pvstr, &         ppic, pval, ktest, t, u, v, pulow, pvlow, pustr, pvstr, d_t, d_u, d_v)
        d_t, d_u, d_v)  
9    
10      ! From LMDZ4/libf/phylmd/orografi.F, version 1.4 2005/12/01 11:27:29      ! From LMDZ4/libf/phylmd/orografi.F, version 1.4 2005/12/01 11:27:29
11    
12      USE dimphy, ONLY : klev, klon      ! Author: F. Lott (LMD/CNRS). Date: 1995/02/01.
13      USE suphec_m, ONLY : rd, rg      ! Objet : frottement de la montagne, interface.
14    
15      ! Auteur(s): F.Lott (LMD/CNRS) date: 19950201      USE dimphy, ONLY: klev, klon
16      ! Objet: Frottement de la montagne Interface      use orodrag_m, only: orodrag
17      !======================================================================      USE suphec_m, ONLY: rd, rg
18      ! Arguments:  
19      ! dtime---input-R- pas d'integration (s)      REAL, INTENT (IN):: dtime ! pas d'int\'egration (s)
20      ! paprs---input-R-pression pour chaque inter-couche (en Pa)      REAL, INTENT (IN):: paprs(klon, klev+1) ! pression pour chaque
21      ! pplay---input-R-pression pour le mileu de chaque couche (en Pa)                                               ! inter-couche (en Pa)
22      ! t-------input-R-temperature (K)      REAL, INTENT (IN):: pplay(klon, klev) ! pression pour le mileu de
23      ! u-------input-R-vitesse horizontale (m/s)                                             ! chaque couche (en Pa)
24      ! v-------input-R-vitesse horizontale (m/s)      REAL pmea(klon)
25        REAL, INTENT (IN):: pstd(klon), psig(klon)
26      ! d_t-----output-R-increment de la temperature      REAL pgam(klon), pthe(klon)
27      ! d_u-----output-R-increment de la vitesse u      REAL ppic(klon), pval(klon)
28      ! d_v-----output-R-increment de la vitesse v      integer ktest(klon)
29      !======================================================================      REAL, INTENT (IN):: t(klon, klev) ! temperature (K)
30        real, INTENT (IN):: u(klon, klev), v(klon, klev) ! vitesse horizontale (m/s)
31      ! ARGUMENTS      REAL, intent(out):: pulow(klon), pvlow(klon), pustr(klon), pvstr(klon)
32        REAL, intent(out):: d_t(klon, klev) ! increment de la temperature
     INTEGER nlon, nlev  
     REAL, INTENT (IN) :: dtime  
     REAL, INTENT (IN) :: paprs(klon, klev+1)  
     REAL, INTENT (IN) :: pplay(klon, klev)  
     REAL pmea(nlon)  
     REAL, INTENT (IN):: pstd(nlon), psig(nlon)  
     REAL pgam(nlon), pthe(nlon)  
     REAL ppic(nlon), pval(nlon)  
     REAL pulow(nlon), pvlow(nlon), pustr(nlon), pvstr(nlon)  
     REAL, INTENT (IN):: t(nlon, nlev)  
     real, INTENT (IN):: u(nlon, nlev), v(nlon, nlev)  
     REAL d_t(nlon, nlev), d_u(nlon, nlev), d_v(nlon, nlev)  
33    
34      INTEGER i, k, ktest(nlon)      REAL, intent(out):: d_u(klon, klev), d_v(klon, klev) ! increment
35        ! de la vitesse
     ! Variables locales:  
36    
37        ! Local:
38        INTEGER i, k
39      REAL zgeom(klon, klev)      REAL zgeom(klon, klev)
40      REAL pdtdt(klon, klev), pdudt(klon, klev), pdvdt(klon, klev)      REAL pdtdt(klon, klev), pdudt(klon, klev), pdvdt(klon, klev)
41      REAL pt(klon, klev), pu(klon, klev), pv(klon, klev)      REAL pt(klon, klev), pu(klon, klev), pv(klon, klev)
42      REAL papmf(klon, klev), papmh(klon, klev+1)      REAL papmf(klon, klev), papmh(klon, klev+1)
43    
44      ! initialiser les variables de sortie (pour securite)      !--------------------------------------------------------------------
45    
46        ! Initialiser les variables de sortie (pour securite)
47    
48      DO i = 1, klon      DO i = 1, klon
49         pulow(i) = 0.0         pulow(i) = 0.0
# Line 72  contains Line 62  contains
62         END DO         END DO
63      END DO      END DO
64    
65      ! preparer les variables d'entree (attention: l'ordre des niveaux      ! Preparer les variables d'entree (attention: l'ordre des niveaux
66      ! verticaux augmente du haut vers le bas)      ! verticaux augmente du haut vers le bas)
67    
68      DO k = 1, klev      DO k = 1, klev
# Line 98  contains Line 88  contains
88         END DO         END DO
89      END DO      END DO
90    
91      ! appeler la routine principale      ! Appeler la routine principale
92    
93      CALL orodrag(klon, klev, ktest, dtime, papmh, papmf, zgeom, &      CALL orodrag(klon, klev, ktest, dtime, papmh, papmf, zgeom, pt, pu, pv, &
94           pt, pu, pv, pmea, pstd, psig, pgam, pthe, ppic, pval, pulow, pvlow, &           pmea, pstd, psig, pgam, pthe, ppic, pval, pulow, pvlow, pdudt, &
95           pdudt, pdvdt, pdtdt)           pdvdt, pdtdt)
96    
97      DO k = 1, klev      DO k = 1, klev
98         DO i = 1, klon         DO i = 1, klon
99            d_u(i, klev+1-k) = dtime*pdudt(i, k)            d_u(i, klev+1-k) = dtime*pdudt(i, k)
100            d_v(i, klev+1-k) = dtime*pdvdt(i, k)            d_v(i, klev+1-k) = dtime*pdvdt(i, k)
101            d_t(i, klev+1-k) = dtime*pdtdt(i, k)            d_t(i, klev+1-k) = dtime*pdtdt(i, k)
102            pustr(i) = pustr(i) &            pustr(i) = pustr(i) &
103                 + pdudt(i, k)*(papmh(i, k+1)-papmh(i, k))/rg                 + pdudt(i, k)*(papmh(i, k+1)-papmh(i, k))/rg
104            pvstr(i) = pvstr(i) &            pvstr(i) = pvstr(i) &
105                 + pdvdt(i, k)*(papmh(i, k+1)-papmh(i, k))/rg                 + pdvdt(i, k)*(papmh(i, k+1)-papmh(i, k))/rg
106         END DO         END DO
107      END DO      END DO

Legend:
Removed from v.246  
changed lines
  Added in v.247

  ViewVC Help
Powered by ViewVC 1.1.21