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

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

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

trunk/phylmd/concvl.f revision 97 by guez, Fri Apr 25 14:58:31 2014 UTC trunk/Sources/phylmd/concvl.f revision 178 by guez, Fri Mar 11 18:47:26 2016 UTC
# Line 10  contains Line 10  contains
10    
11      ! From phylmd/concvl.F, version 1.3 2005/04/15 12:36:17      ! From phylmd/concvl.F, version 1.3 2005/04/15 12:36:17
12      ! Author: Z. X. Li (LMD/CNRS)      ! Author: Z. X. Li (LMD/CNRS)
13      ! Date: 1993/08/18      ! Date: 1993 August 18
14      ! Objet : schéma de convection d'Emanuel (1991), interface      ! Objet : schéma de convection d'Emanuel (1991), interface
15      ! (driver commun aux versions 3 et 4)      ! (driver commun aux versions 3 et 4)
16    
17      use clesphys2, only: iflag_con      use clesphys2, only: iflag_con
18      use cv_driver_m, only: cv_driver      use cv_driver_m, only: cv_driver
     USE dimens_m, ONLY: nqmx  
19      USE dimphy, ONLY: klev, klon      USE dimphy, ONLY: klev, klon
20      USE fcttre, ONLY: foeew      USE fcttre, ONLY: foeew
21      USE suphec_m, ONLY: retv, rtt      USE suphec_m, ONLY: retv, rtt
# Line 26  contains Line 25  contains
25      REAL, INTENT (IN):: paprs(klon, klev+1)      REAL, INTENT (IN):: paprs(klon, klev+1)
26      REAL, INTENT (IN):: play(klon, klev)      REAL, INTENT (IN):: play(klon, klev)
27      REAL, intent(in):: t(klon, klev)      REAL, intent(in):: t(klon, klev)
28      real q(klon, klev) ! input vapeur d'eau (en kg/kg)      real, intent(in):: q(klon, klev) ! vapeur d'eau (en kg/kg)
29      real, INTENT (IN):: u(klon, klev), v(klon, klev)      real, INTENT (IN):: u(klon, klev), v(klon, klev)
30      REAL, intent(inout):: sig1(klon, klev), w01(klon, klev)      REAL, intent(inout):: sig1(klon, klev), w01(klon, klev)
31        REAL, intent(out):: d_t(klon, klev)
32      REAL d_t(klon, klev), d_q(klon, klev), d_u(klon, klev), d_v(klon, &      REAL, intent(out):: d_q(klon, klev) ! increment de la vapeur d'eau
33           klev)      REAL, intent(out):: d_u(klon, klev), d_v(klon, klev)
34      ! d_q-----output-R-increment de la vapeur d'eau      REAL, intent(out):: rain(klon) ! pluie (mm/s)
35        REAL, intent(out):: snow(klon) ! neige (mm/s)
     REAL rain(klon), snow(klon)  
     ! rain----output-R-la pluie (mm/s)  
     ! snow----output-R-la neige (mm/s)  
   
36      INTEGER kbas(klon), ktop(klon)      INTEGER kbas(klon), ktop(klon)
37    
38      REAL, intent(out):: upwd(klon, klev)      REAL, intent(out):: upwd(klon, klev)
# Line 56  contains Line 51  contains
51      REAL qcondc(klon, klev)      REAL qcondc(klon, klev)
52      REAL wd(klon)      REAL wd(klon)
53      REAL pmflxr(klon, klev+1), pmflxs(klon, klev+1)      REAL pmflxr(klon, klev+1), pmflxs(klon, klev+1)
54      REAL da(klon, klev), phi(klon, klev, klev), mp(klon, klev)      REAL, intent(inout):: da(klon, klev), phi(klon, klev, klev), mp(klon, klev)
55    
56      ! Local:      ! Local:
57    
58      REAL em_ph(klon, klev+1), em_p(klon, klev)      REAL em_ph(klon, klev+1), em_p(klon, klev)
59      REAL zx_t, zdelta, zx_qs, zcor      REAL zx_t, zx_qs, zcor
60      INTEGER i, k      INTEGER i, k
61      REAL qs(klon, klev)      REAL qs(klon, klev)
62      REAL, save:: cbmf(klon)      REAL, save:: cbmf(klon)
# Line 96  contains Line 91  contains
91         DO k = 1, klev         DO k = 1, klev
92            DO i = 1, klon            DO i = 1, klon
93               zx_t = t(i, k)               zx_t = t(i, k)
94               zdelta = max(0., sign(1., rtt-zx_t))               zx_qs = min(0.5, r2es*foeew(zx_t, rtt >= zx_t)/em_p(i, k)/100.0)
              zx_qs = min(0.5, r2es*foeew(zx_t, zdelta)/em_p(i, k)/100.0)  
95               zcor = 1./(1.-retv*zx_qs)               zcor = 1./(1.-retv*zx_qs)
96               qs(i, k) = zx_qs*zcor               qs(i, k) = zx_qs*zcor
97            END DO            END DO
98         END DO         END DO
99      ELSE      ELSE
100         ! iflag_con=3 (modif de puristes qui fait la diffce pour la         ! iflag_con=3 (modification de puristes qui fait la
101         ! convergence numerique)         ! diff\'erence pour la convergence numerique)
102         DO k = 1, klev         DO k = 1, klev
103            DO i = 1, klon            DO i = 1, klon
104               zx_t = t(i, k)               zx_t = t(i, k)
105               zdelta = max(0., sign(1., rtt-zx_t))               zx_qs = r2es*foeew(zx_t, rtt >= zx_t)/em_p(i, k)/100.0
              zx_qs = r2es*foeew(zx_t, zdelta)/em_p(i, k)/100.0  
106               zx_qs = min(0.5, zx_qs)               zx_qs = min(0.5, zx_qs)
107               zcor = 1./(1.-retv*zx_qs)               zcor = 1./(1.-retv*zx_qs)
108               zx_qs = zx_qs*zcor               zx_qs = zx_qs*zcor
# Line 118  contains Line 111  contains
111         END DO         END DO
112      END IF      END IF
113    
114      CALL cv_driver(klon, klev, t, q, qs, u, v, em_p, em_ph, iflag, d_t, d_q, &      CALL cv_driver(t, q, qs, u, v, em_p, em_ph, iflag, d_t, d_q, d_u, d_v, &
115           d_u, d_v, rain, pmflxr, cbmf, sig1, w01, kbas, ktop, dtime, ma, &           rain, pmflxr, cbmf, sig1, w01, kbas, ktop, dtime, ma, upwd, dnwd, &
116           upwd, dnwd, dnwd0, qcondc, wd, cape, da, phi, mp)           dnwd0, qcondc, wd, cape, da, phi, mp)
117    
118      DO i = 1, klon      DO i = 1, klon
119         rain(i) = rain(i)/86400.         rain(i) = rain(i)/86400.

Legend:
Removed from v.97  
changed lines
  Added in v.178

  ViewVC Help
Powered by ViewVC 1.1.21