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

Annotation of /trunk/phylmd/concvl.f

Parent Directory Parent Directory | Revision Log Revision Log


Revision 195 - (hide annotations)
Wed May 18 17:56:44 2016 UTC (8 years ago) by guez
Original Path: trunk/Sources/phylmd/concvl.f
File size: 2488 byte(s)
In cv30_feed, iflag1 is 0 on entry so we can simplify the test for
iflag1 = 7.

In cv30_feed, for the computation of icb, replaced sequential search
(with a useless end of loop on k) by a call to locate.

In CV30 routines, replaced len, nloc, nd, na by klon or
klev. Philosophy: no more generality than actually necessary.

Converted as many variables as possible to named constants in
cv30_param_m and downgraded pbcrit, ptcrit, dtovsh, dpbase, dttrig,
tau, delta to local objects in procedures. spfac, betad and omtrain
are useless and removed.

Instead of filling the array sigp with the constant spfac in
cv30_undilute2, just made sigp a constant in cv30_unsat.

In cv_driver, define as allocatable variables that are only
used on the range (ncum, nl).

1 guez 47 module concvl_m
2 guez 3
3 guez 47 IMPLICIT NONE
4 guez 3
5 guez 47 contains
6 guez 13
7 guez 195 SUBROUTINE concvl(paprs, play, t, q, u, v, sig1, w01, d_t, d_q, d_u, &
8 guez 183 d_v, rain, kbas, itop_con, upwd, dnwd, dnwd0, ma, cape, iflag, qcondc, &
9 guez 189 pmflxr, da, phi, mp)
10 guez 13
11 guez 180 ! From phylmd/concvl.F, version 1.3, 2005/04/15 12:36:17
12 guez 62 ! Author: Z. X. Li (LMD/CNRS)
13 guez 103 ! Date: 1993 August 18
14 guez 62 ! Objet : schéma de convection d'Emanuel (1991), interface
15 guez 13
16 guez 195 use comconst, only: dtphys
17 guez 52 use cv_driver_m, only: cv_driver
18 guez 69 USE dimphy, ONLY: klev, klon
19     USE fcttre, ONLY: foeew
20     USE suphec_m, ONLY: retv, rtt
21     USE yoethf_m, ONLY: r2es
22 guez 13
23 guez 180 REAL, INTENT (IN):: paprs(klon, klev + 1)
24 guez 72 REAL, INTENT (IN):: play(klon, klev)
25 guez 189 REAL, intent(in):: t(klon, klev) ! temperature (K)
26     real, intent(in):: q(klon, klev) ! fraction massique de vapeur d'eau
27 guez 91 real, INTENT (IN):: u(klon, klev), v(klon, klev)
28 guez 72 REAL, intent(inout):: sig1(klon, klev), w01(klon, klev)
29 guez 103 REAL, intent(out):: d_t(klon, klev)
30     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)
32 guez 180 REAL, intent(out):: rain(klon) ! pluie (mm / s)
33     INTEGER, intent(out):: kbas(klon)
34 guez 183 integer, intent(inout):: itop_con(klon)
35 guez 62
36     REAL, intent(out):: upwd(klon, klev)
37 guez 180 ! saturated updraft mass flux (kg / m2 / s)
38 guez 62
39     real, intent(out):: dnwd(klon, klev)
40 guez 180 ! saturated downdraft mass flux (kg / m2 / s)
41 guez 62
42     real, intent(out):: dnwd0(klon, klev)
43 guez 180 ! unsaturated downdraft mass flux (kg / m2 / s)
44 guez 62
45 guez 180 REAL ma(klon, klev)
46     real cape(klon) ! output (J / kg)
47 guez 195 INTEGER, intent(out):: iflag(klon)
48 guez 47 REAL qcondc(klon, klev)
49 guez 180 REAL pmflxr(klon, klev + 1)
50 guez 99 REAL, intent(inout):: da(klon, klev), phi(klon, klev, klev), mp(klon, klev)
51 guez 13
52 guez 97 ! Local:
53 guez 180 REAL zx_qs, cor
54 guez 97 INTEGER i, k
55 guez 47 REAL qs(klon, klev)
56 guez 13
57 guez 47 !-----------------------------------------------------------------
58 guez 13
59 guez 47 DO k = 1, klev
60     DO i = 1, klon
61 guez 180 zx_qs = min(0.5, r2es * foeew(t(i, k), rtt >= t(i, k)) / play(i, k))
62     cor = 1. / (1. - retv * zx_qs)
63     qs(i, k) = zx_qs * cor
64 guez 47 END DO
65     END DO
66 guez 3
67 guez 180 CALL cv_driver(t, q, qs, u, v, play / 100., paprs / 100., iflag, d_t, &
68 guez 195 d_q, d_u, d_v, rain, pmflxr, sig1, w01, kbas, itop_con, ma, upwd, &
69     dnwd, dnwd0, qcondc, cape, da, phi, mp)
70 guez 180 rain = rain / 86400.
71 guez 195 d_t = dtphys * d_t
72     d_q = dtphys * d_q
73     d_u = dtphys * d_u
74     d_v = dtphys * d_v
75 guez 3
76 guez 47 END SUBROUTINE concvl
77    
78     end module concvl_m

  ViewVC Help
Powered by ViewVC 1.1.21