/[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 205 by guez, Tue Jun 21 15:16:03 2016 UTC
# Line 4  module concvl_m Line 4  module concvl_m
4    
5  contains  contains
6    
7    SUBROUTINE concvl(dtime, paprs, play, t, q, u, v, sig1, w01, d_t, d_q, d_u, &    SUBROUTINE concvl(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 comconst, only: dtphys
17      use cv_driver_m, only: cv_driver      use cv_driver_m, only: cv_driver
18      USE dimphy, ONLY: klev, klon      USE dimphy, ONLY: klev, klon
19      USE fcttre, ONLY: foeew      USE fcttre, ONLY: foeew
20      USE suphec_m, ONLY: retv, rtt      USE suphec_m, ONLY: retv, rtt
21      USE yoethf_m, ONLY: r2es      USE yoethf_m, ONLY: r2es
22    
     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 42  contains Line 40  contains
40      ! saturated downdraft mass flux (kg / m2 / s)      ! saturated downdraft mass flux (kg / m2 / s)
41    
42      real, intent(out):: dnwd0(klon, klev)      real, intent(out):: dnwd0(klon, klev)
43      ! unsaturated downdraft mass flux (kg / m2 / s)      ! unsaturated downdraft mass flux, in kg m-2 s-1
44    
45      REAL ma(klon, klev)      REAL ma(klon, klev)
46      real cape(klon) ! output (J / kg)      real cape(klon) ! output (J / kg)
47      INTEGER iflag(klon)      INTEGER, intent(out):: 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(out):: da(:, :) ! (klon, klev)
51        REAL, intent(out):: phi(:, :, :) ! (klon, klev, klev)
52    
53        REAL, intent(out):: mp(:, :) ! (klon, klev) Mass flux of the
54        ! unsaturated downdraft, defined positive downward, in kg m-2
55        ! s-1. M_p in Emanuel (1991 928).
56    
57      ! Local:      ! Local:
58      REAL zx_qs, cor      REAL zx_qs, cor
59      INTEGER i, k      INTEGER i, k
60      REAL qs(klon, klev)      REAL qs(klon, klev)
     REAL, save:: cbmf(klon)  
     INTEGER:: ifrst = 0  
61    
62      !-----------------------------------------------------------------      !-----------------------------------------------------------------
63    
     snow_con = 0.  
   
     IF (ifrst == 0) THEN  
        ifrst = 1  
        cbmf = 0.  
     END IF  
   
64      DO k = 1, klev      DO k = 1, klev
65         DO i = 1, klon         DO i = 1, klon
66            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 70  contains
70      END DO      END DO
71    
72      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, &
73           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, ma, upwd, &
74           ma, upwd, dnwd, dnwd0, qcondc, wd, cape, da, phi, mp)           dnwd, qcondc, cape, da, phi, mp)
75        dnwd0 = - mp
76      rain = rain / 86400.      rain = rain / 86400.
77      d_t = dtime * d_t      d_t = dtphys * d_t
78      d_q = dtime * d_q      d_q = dtphys * d_q
79      d_u = dtime * d_u      d_u = dtphys * d_u
80      d_v = dtime * d_v      d_v = dtphys * d_v
81    
82    END SUBROUTINE concvl    END SUBROUTINE concvl
83    

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

  ViewVC Help
Powered by ViewVC 1.1.21