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

Contents of /trunk/phylmd/concvl.f

Parent Directory Parent Directory | Revision Log Revision Log


Revision 97 - (show annotations)
Fri Apr 25 14:58:31 2014 UTC (10 years ago) by guez
File size: 3842 byte(s)
Module pressure_var is now only used in gcm. Created local variables
pls and p3d in etat0, added argument p3d to regr_pr_o3.

In leapfrog, moved computation of p3d and exner function immediately
after integrd, for clarity (does not change the execution).

Removed unused arguments: ntra, tra1 and tra of cv3_compress; ntra,
tra and traent of cv3_mixing; ntra, ftra, ftra1 of cv3_uncompress;
ntra, tra, trap of cv3_unsat; ntra, tra, trap, traent, ftra of
cv3_yield; tra, tvp, pbase, bbase, dtvpdt1, dtvpdq1, dplcldt,
dplcldr, ntra of concvl; ndp1, ntra, tra1 of cv_driver

Removed argument d_tra and computation of d_tra in concvl. Removed
argument ftra1 and computation of ftra1 in cv_driver. ftra1 was just
set to 0 in cv_driver, associated to d_tra in concvl, and set again to
zero in concvl.

1 module concvl_m
2
3 IMPLICIT NONE
4
5 contains
6
7 SUBROUTINE concvl(dtime, paprs, play, t, q, u, v, sig1, w01, d_t, d_q, d_u, &
8 d_v, rain, snow, kbas, ktop, upwd, dnwd, dnwd0, ma, cape, iflag, &
9 qcondc, wd, pmflxr, pmflxs, 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/08/18
14 ! Objet : schéma de convection d'Emanuel (1991), interface
15 ! (driver commun aux versions 3 et 4)
16
17 use clesphys2, only: iflag_con
18 use cv_driver_m, only: cv_driver
19 USE dimens_m, ONLY: nqmx
20 USE dimphy, ONLY: klev, klon
21 USE fcttre, ONLY: foeew
22 USE suphec_m, ONLY: retv, rtt
23 USE yoethf_m, ONLY: r2es
24
25 REAL, INTENT (IN):: dtime ! pas d'integration (s)
26 REAL, INTENT (IN):: paprs(klon, klev+1)
27 REAL, INTENT (IN):: play(klon, klev)
28 REAL, intent(in):: t(klon, klev)
29 real q(klon, klev) ! input vapeur d'eau (en kg/kg)
30 real, INTENT (IN):: u(klon, klev), v(klon, klev)
31 REAL, intent(inout):: sig1(klon, klev), w01(klon, klev)
32
33 REAL d_t(klon, klev), d_q(klon, klev), d_u(klon, klev), d_v(klon, &
34 klev)
35 ! d_q-----output-R-increment de la vapeur d'eau
36
37 REAL rain(klon), snow(klon)
38 ! rain----output-R-la pluie (mm/s)
39 ! snow----output-R-la neige (mm/s)
40
41 INTEGER kbas(klon), ktop(klon)
42
43 REAL, intent(out):: upwd(klon, klev)
44 ! saturated updraft mass flux (kg/m**2/s)
45
46 real, intent(out):: dnwd(klon, klev)
47 ! saturated downdraft mass flux (kg/m**2/s)
48
49 real, intent(out):: dnwd0(klon, klev)
50 ! unsaturated downdraft mass flux (kg/m**2/s)
51
52 REAL ma(klon, klev), cape(klon)
53 ! Cape----output-R-CAPE (J/kg)
54
55 INTEGER iflag(klon)
56 REAL qcondc(klon, klev)
57 REAL wd(klon)
58 REAL pmflxr(klon, klev+1), pmflxs(klon, klev+1)
59 REAL da(klon, klev), phi(klon, klev, klev), mp(klon, klev)
60
61 ! Local:
62
63 REAL em_ph(klon, klev+1), em_p(klon, klev)
64 REAL zx_t, zdelta, zx_qs, zcor
65 INTEGER i, k
66 REAL qs(klon, klev)
67 REAL, save:: cbmf(klon)
68 INTEGER:: ifrst = 0
69
70 !-----------------------------------------------------------------
71
72 snow = 0
73
74 IF (ifrst==0) THEN
75 ifrst = 1
76 DO i = 1, klon
77 cbmf(i) = 0.
78 END DO
79 END IF
80
81 DO k = 1, klev + 1
82 DO i = 1, klon
83 em_ph(i, k) = paprs(i, k)/100.0
84 pmflxs(i, k) = 0.
85 END DO
86 END DO
87
88 DO k = 1, klev
89 DO i = 1, klon
90 em_p(i, k) = play(i, k)/100.0
91 END DO
92 END DO
93
94
95 IF (iflag_con==4) THEN
96 DO k = 1, klev
97 DO i = 1, klon
98 zx_t = t(i, k)
99 zdelta = max(0., sign(1., rtt-zx_t))
100 zx_qs = min(0.5, r2es*foeew(zx_t, zdelta)/em_p(i, k)/100.0)
101 zcor = 1./(1.-retv*zx_qs)
102 qs(i, k) = zx_qs*zcor
103 END DO
104 END DO
105 ELSE
106 ! iflag_con=3 (modif de puristes qui fait la diffce pour la
107 ! convergence numerique)
108 DO k = 1, klev
109 DO i = 1, klon
110 zx_t = t(i, k)
111 zdelta = max(0., sign(1., rtt-zx_t))
112 zx_qs = r2es*foeew(zx_t, zdelta)/em_p(i, k)/100.0
113 zx_qs = min(0.5, zx_qs)
114 zcor = 1./(1.-retv*zx_qs)
115 zx_qs = zx_qs*zcor
116 qs(i, k) = zx_qs
117 END DO
118 END DO
119 END IF
120
121 CALL cv_driver(klon, klev, t, q, qs, u, v, em_p, em_ph, iflag, d_t, d_q, &
122 d_u, d_v, rain, pmflxr, cbmf, sig1, w01, kbas, ktop, dtime, ma, &
123 upwd, dnwd, dnwd0, qcondc, wd, cape, da, phi, mp)
124
125 DO i = 1, klon
126 rain(i) = rain(i)/86400.
127 END DO
128
129 DO k = 1, klev
130 DO i = 1, klon
131 d_t(i, k) = dtime*d_t(i, k)
132 d_q(i, k) = dtime*d_q(i, k)
133 d_u(i, k) = dtime*d_u(i, k)
134 d_v(i, k) = dtime*d_v(i, k)
135 END DO
136 END DO
137
138 END SUBROUTINE concvl
139
140 end module concvl_m

  ViewVC Help
Powered by ViewVC 1.1.21