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

Diff of /trunk/phylmd/concvl.f

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

revision 180 by guez, Tue Mar 15 17:07:47 2016 UTC revision 189 by guez, Tue Mar 29 15:20:23 2016 UTC
# Line 5  module concvl_m Line 5  module concvl_m
5  contains  contains
6    
7    SUBROUTINE concvl(dtime, paprs, play, t, q, u, v, sig1, w01, d_t, d_q, d_u, &    SUBROUTINE concvl(dtime, paprs, play, t, q, u, v, sig1, w01, d_t, d_q, d_u, &
8         d_v, rain, snow_con, kbas, itop_con, upwd, dnwd, dnwd0, ma, cape, &         d_v, rain, kbas, itop_con, upwd, dnwd, dnwd0, ma, cape, iflag, qcondc, &
9         iflag, qcondc, wd, pmflxr, da, phi, mp)         pmflxr, da, phi, mp)
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 August 18      ! Date: 1993 August 18
14      ! Objet : schéma de convection d'Emanuel (1991), interface      ! Objet : schéma de convection d'Emanuel (1991), interface
     ! (driver commun aux versions 3 et 4)  
15    
16      use cv_driver_m, only: cv_driver      use cv_driver_m, only: cv_driver
17      USE dimphy, ONLY: klev, klon      USE dimphy, ONLY: klev, klon
# Line 23  contains Line 22  contains
22      REAL, INTENT (IN):: dtime ! pas d'integration (s)      REAL, INTENT (IN):: dtime ! pas d'integration (s)
23      REAL, INTENT (IN):: paprs(klon, klev + 1)      REAL, INTENT (IN):: paprs(klon, klev + 1)
24      REAL, INTENT (IN):: play(klon, klev)      REAL, INTENT (IN):: play(klon, klev)
25      REAL, intent(in):: t(klon, klev)      REAL, intent(in):: t(klon, klev) ! temperature (K)
26      real, intent(in):: q(klon, klev) ! vapeur d'eau (en kg / kg)      real, intent(in):: q(klon, klev) ! fraction massique de vapeur d'eau
27      real, INTENT (IN):: u(klon, klev), v(klon, klev)      real, INTENT (IN):: u(klon, klev), v(klon, klev)
28      REAL, intent(inout):: sig1(klon, klev), w01(klon, klev)      REAL, intent(inout):: sig1(klon, klev), w01(klon, klev)
29      REAL, intent(out):: d_t(klon, klev)      REAL, intent(out):: d_t(klon, klev)
30      REAL, intent(out):: d_q(klon, klev) ! increment de la vapeur d'eau      REAL, intent(out):: d_q(klon, klev) ! increment de la vapeur d'eau
31      REAL, intent(out):: d_u(klon, klev), d_v(klon, klev)      REAL, intent(out):: d_u(klon, klev), d_v(klon, klev)
32      REAL, intent(out):: rain(klon) ! pluie (mm / s)      REAL, intent(out):: rain(klon) ! pluie (mm / s)
     REAL, intent(out):: snow_con(klon) ! neige (mm / s)  
33      INTEGER, intent(out):: kbas(klon)      INTEGER, intent(out):: kbas(klon)
34      integer itop_con(klon)      integer, intent(inout):: itop_con(klon)
35    
36      REAL, intent(out):: upwd(klon, klev)      REAL, intent(out):: upwd(klon, klev)
37      ! saturated updraft mass flux (kg / m2 / s)      ! saturated updraft mass flux (kg / m2 / s)
# Line 48  contains Line 46  contains
46      real cape(klon) ! output (J / kg)      real cape(klon) ! output (J / kg)
47      INTEGER iflag(klon)      INTEGER iflag(klon)
48      REAL qcondc(klon, klev)      REAL qcondc(klon, klev)
     REAL wd(klon)  
49      REAL pmflxr(klon, klev + 1)      REAL pmflxr(klon, klev + 1)
50      REAL, intent(inout):: da(klon, klev), phi(klon, klev, klev), mp(klon, klev)      REAL, intent(inout):: da(klon, klev), phi(klon, klev, klev), mp(klon, klev)
51    
# Line 56  contains Line 53  contains
53      REAL zx_qs, cor      REAL zx_qs, cor
54      INTEGER i, k      INTEGER i, k
55      REAL qs(klon, klev)      REAL qs(klon, klev)
     REAL, save:: cbmf(klon)  
     INTEGER:: ifrst = 0  
56    
57      !-----------------------------------------------------------------      !-----------------------------------------------------------------
58    
     snow_con = 0.  
   
     IF (ifrst == 0) THEN  
        ifrst = 1  
        cbmf = 0.  
     END IF  
   
59      DO k = 1, klev      DO k = 1, klev
60         DO i = 1, klon         DO i = 1, klon
61            zx_qs = min(0.5, r2es * foeew(t(i, k), rtt >= t(i, k)) / play(i, k))            zx_qs = min(0.5, r2es * foeew(t(i, k), rtt >= t(i, k)) / play(i, k))
# Line 77  contains Line 65  contains
65      END DO      END DO
66    
67      CALL cv_driver(t, q, qs, u, v, play / 100., paprs / 100., iflag, d_t, &      CALL cv_driver(t, q, qs, u, v, play / 100., paprs / 100., iflag, d_t, &
68           d_q, d_u, d_v, rain, pmflxr, cbmf, sig1, w01, kbas, itop_con, dtime, &           d_q, d_u, d_v, rain, pmflxr, sig1, w01, kbas, itop_con, dtime, ma, &
69           ma, upwd, dnwd, dnwd0, qcondc, wd, cape, da, phi, mp)           upwd, dnwd, dnwd0, qcondc, cape, da, phi, mp)
   
70      rain = rain / 86400.      rain = rain / 86400.
71      d_t = dtime * d_t      d_t = dtime * d_t
72      d_q = dtime * d_q      d_q = dtime * d_q

Legend:
Removed from v.180  
changed lines
  Added in v.189

  ViewVC Help
Powered by ViewVC 1.1.21