/[lmdze]/trunk/Sources/phylmd/clvent.f
ViewVC logotype

Diff of /trunk/Sources/phylmd/clvent.f

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

trunk/libf/phylmd/clvent.f90 revision 62 by guez, Thu Jul 26 14:37:37 2012 UTC trunk/Sources/phylmd/clvent.f revision 206 by guez, Tue Aug 30 12:52:46 2016 UTC
# Line 7  contains Line 7  contains
7    SUBROUTINE clvent(knon, dtime, u1lay, v1lay, coef, t, ven, paprs, pplay, &    SUBROUTINE clvent(knon, dtime, u1lay, v1lay, coef, t, ven, paprs, pplay, &
8         delp, d_ven, flux_v)         delp, d_ven, flux_v)
9    
10      ! Author: Z. X. Li (LMD/CNRS) date: 1993/08/18      ! Author: Z. X. Li (LMD/CNRS)
11        ! Date: 1993/08/18
12      ! Objet : diffusion verticale de la vitesse      ! Objet : diffusion verticale de la vitesse
13    
14      USE dimphy, ONLY: klev, klon      USE dimphy, ONLY: klev, klon
15      USE suphec_m, ONLY: rd, rg      USE suphec_m, ONLY: rd, rg
16    
17      ! Arguments:      INTEGER knon
18      ! dtime----input-R- intervalle du temps (en second)      REAL, intent(in):: dtime ! intervalle de temps (en s)
19    
20        REAL u1lay(klon), v1lay(klon)
21      ! u1lay----input-R- vent u de la premiere couche (m/s)      ! u1lay----input-R- vent u de la premiere couche (m/s)
22      ! v1lay----input-R- vent v de la premiere couche (m/s)      ! v1lay----input-R- vent v de la premiere couche (m/s)
23      ! coef-----input-R- le coefficient d'echange (m**2/s) multiplie par  
24      !                   le cisaillement du vent (dV/dz); la premiere      REAL, intent(in):: coef(:, :) ! (knon, klev)
25      !                   valeur indique la valeur de Cdrag (sans unite)      ! Coefficient d'echange (m**2/s) multiplié par le cisaillement du
26        ! vent (dV/dz). La première valeur indique la valeur de Cdrag (sans
27        ! unité).
28    
29        REAL t(klon, klev), ven(klon, klev)
30      ! t--------input-R- temperature (K)      ! t--------input-R- temperature (K)
31      ! ven------input-R- vitesse horizontale (m/s)      ! ven------input-R- vitesse horizontale (m/s)
32        REAL paprs(klon, klev+1), pplay(klon, klev), delp(klon, klev)
33      ! paprs----input-R- pression a inter-couche (Pa)      ! paprs----input-R- pression a inter-couche (Pa)
34      ! pplay----input-R- pression au milieu de couche (Pa)      ! pplay----input-R- pression au milieu de couche (Pa)
35      ! delp-----input-R- epaisseur de couche (Pa)      ! delp-----input-R- epaisseur de couche (Pa)
36        REAL d_ven(klon, klev)
37      ! d_ven----output-R- le changement de "ven"      ! d_ven----output-R- le changement de "ven"
     ! flux_v---output-R- (diagnostic) flux du vent: (kg m/s)/(m**2 s)  
38    
39      INTEGER knon      REAL, intent(out):: flux_v(:) ! (knon)
40      REAL, intent(in):: dtime      ! (diagnostic) flux du vent à la surface, en (kg m/s)/(m**2 s)
41      REAL u1lay(klon), v1lay(klon)      ! flux_v est le flux de moment angulaire (positif vers bas)
     REAL coef(klon, klev)  
     REAL t(klon, klev), ven(klon, klev)  
     REAL paprs(klon, klev+1), pplay(klon, klev), delp(klon, klev)  
     REAL d_ven(klon, klev)  
     REAL flux_v(klon, klev)  
42    
43        ! Local:
44      INTEGER i, k      INTEGER i, k
45      REAL zx_cv(klon, 2:klev)      REAL zx_cv(klon, 2:klev)
46      REAL zx_dv(klon, 2:klev)      REAL zx_dv(klon, 2:klev)
# Line 57  contains Line 60  contains
60      DO i = 1, knon      DO i = 1, knon
61         zx_alf1(i) = 1.0         zx_alf1(i) = 1.0
62         zx_alf2(i) = 1.0 - zx_alf1(i)         zx_alf2(i) = 1.0 - zx_alf1(i)
63         zx_coef(i, 1) = coef(i, 1) &         zx_coef(i, 1) = coef(i, 1) * (1. + SQRT(u1lay(i)**2 + v1lay(i)**2)) &
64              * (1.0+SQRT(u1lay(i)**2+v1lay(i)**2)) &              * pplay(i, 1) / (RD * t(i, 1))
65              * pplay(i, 1)/(RD*t(i, 1))         zx_coef(i, 1) = zx_coef(i, 1) * dtime * RG
        zx_coef(i, 1) = zx_coef(i, 1) * dtime*RG  
66      ENDDO      ENDDO
67    
68      DO k = 2, klev      DO k = 2, klev
69         DO i = 1, knon         DO i = 1, knon
70            zx_coef(i, k) = coef(i, k)*RG/(pplay(i, k-1)-pplay(i, k)) &            zx_coef(i, k) = coef(i, k) * RG / (pplay(i, k-1) - pplay(i, k)) &
71                 *(paprs(i, k)*2/(t(i, k)+t(i, k-1))/RD)**2                 * (paprs(i, k) * 2 / (t(i, k) + t(i, k - 1)) / RD)**2
72            zx_coef(i, k) = zx_coef(i, k) * dtime*RG            zx_coef(i, k) = zx_coef(i, k) * dtime * RG
73         ENDDO         ENDDO
74      ENDDO      ENDDO
75    
# Line 98  contains Line 100  contains
100         ENDDO         ENDDO
101      ENDDO      ENDDO
102    
     ! flux_v est le flux de moment angulaire (positif vers bas) dont  
     ! l'unite est: (kg m/s)/(m**2 s)  
103      DO i = 1, knon      DO i = 1, knon
104         flux_v(i, 1) = zx_coef(i, 1)/(RG*dtime) &         flux_v(i) = zx_coef(i, 1)/(RG*dtime) &
105              *(local_ven(i, 1)*zx_alf1(i) &              *(local_ven(i, 1)*zx_alf1(i) &
106              +local_ven(i, 2)*zx_alf2(i))              +local_ven(i, 2)*zx_alf2(i))
107      ENDDO      ENDDO
     DO k = 2, klev  
        DO i = 1, knon  
           flux_v(i, k) = zx_coef(i, k)/(RG*dtime) &  
                * (local_ven(i, k)-local_ven(i, k-1))  
        ENDDO  
     ENDDO  
108    
109      DO k = 1, klev      DO k = 1, klev
110         DO i = 1, knon         DO i = 1, knon

Legend:
Removed from v.62  
changed lines
  Added in v.206

  ViewVC Help
Powered by ViewVC 1.1.21