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

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

Parent Directory Parent Directory | Revision Log Revision Log


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

  ViewVC Help
Powered by ViewVC 1.1.21