5 |
contains |
contains |
6 |
|
|
7 |
SUBROUTINE cv_driver(t1, q1, qs1, u1, v1, p1, ph1, iflag1, ft1, fq1, fu1, & |
SUBROUTINE cv_driver(t1, q1, qs1, u1, v1, p1, ph1, iflag1, ft1, fq1, fu1, & |
8 |
fv1, precip1, VPrecip1, sig1, w01, icb1, inb1, Ma1, upwd1, dnwd1, & |
fv1, rain, VPrecip1, sig1, w01, icb1, inb1, Ma1, upwd1, dnwd1, & |
9 |
qcondc1, cape1, da1, phi1, mp1) |
qcondc1, cape1, da1, phi1, mp1) |
10 |
|
|
11 |
! From LMDZ4/libf/phylmd/cv_driver.F, version 1.3, 2005/04/15 12:36:17 |
! From LMDZ4/libf/phylmd/cv_driver.F, version 1.3, 2005/04/15 12:36:17 |
76 |
real, intent(out):: fu1(klon, klev), fv1(klon, klev) |
real, intent(out):: fu1(klon, klev), fv1(klon, klev) |
77 |
! forcing (tendency) of zonal and meridional velocity (m/s^2) |
! forcing (tendency) of zonal and meridional velocity (m/s^2) |
78 |
|
|
79 |
real, intent(out):: precip1(klon) ! convective precipitation rate (mm/day) |
real, intent(out):: rain(klon) ! convective precipitation rate (mm/day) |
80 |
|
|
81 |
real, intent(out):: VPrecip1(klon, klev + 1) |
real, intent(out):: VPrecip1(klon, klev + 1) |
82 |
! vertical profile of convective precipitation (kg/m2/s) |
! vertical profile of convective precipitation (kg/m2/s) |
142 |
! Compressed fields: |
! Compressed fields: |
143 |
integer, allocatable:: idcum(:), iflag(:) ! (ncum) |
integer, allocatable:: idcum(:), iflag(:) ! (ncum) |
144 |
integer, allocatable:: icb(:) ! (ncum) |
integer, allocatable:: icb(:) ! (ncum) |
145 |
integer nent(klon, klev) |
integer, allocatable:: nent(:, :) ! (ncum, 2:nl - 1) |
146 |
integer icbs(klon) |
integer icbs(klon) |
147 |
|
|
148 |
integer, allocatable:: inb(:) ! (ncum) |
integer, allocatable:: inb(:) ! (ncum) |
186 |
real tps(klon, klev) |
real tps(klon, klev) |
187 |
real precip(klon) |
real precip(klon) |
188 |
real VPrecip(klon, klev + 1) |
real VPrecip(klon, klev + 1) |
189 |
real qcondc(klon, klev) ! cld |
real qcondc(klon, klev) ! cloud |
190 |
|
|
191 |
!------------------------------------------------------------------- |
!------------------------------------------------------------------- |
192 |
|
|
218 |
end do |
end do |
219 |
end do |
end do |
220 |
|
|
221 |
precip1 = 0. |
rain = 0. |
222 |
cape1 = 0. |
cape1 = 0. |
223 |
VPrecip1(:, klev + 1) = 0. |
VPrecip1(:, klev + 1) = 0. |
224 |
|
|
242 |
allocate(idcum(ncum), plcl(ncum), inb(ncum)) |
allocate(idcum(ncum), plcl(ncum), inb(ncum)) |
243 |
allocate(b(ncum, nl - 1), evap(ncum, nl), icb(ncum), iflag(ncum)) |
allocate(b(ncum, nl - 1), evap(ncum, nl), icb(ncum), iflag(ncum)) |
244 |
allocate(th(ncum, nl), lv(ncum, nl), cpn(ncum, nl), mp(ncum, nl)) |
allocate(th(ncum, nl), lv(ncum, nl), cpn(ncum, nl), mp(ncum, nl)) |
245 |
|
allocate(nent(ncum, 2:nl - 1)) |
246 |
idcum = pack((/(i, i = 1, klon)/), iflag1 == 0) |
idcum = pack((/(i, i = 1, klon)/), iflag1 == 0) |
247 |
CALL cv30_compress(idcum, iflag1, icb1, icbs1, plcl1, tnk1, qnk1, & |
CALL cv30_compress(idcum, iflag1, icb1, icbs1, plcl1, tnk1, qnk1, & |
248 |
gznk1, pbase1, buoybase1, t1, q1, qs1, u1, v1, gz1, th1, h1, lv1, & |
gznk1, pbase1, buoybase1, t1, q1, qs1, u1, v1, gz1, th1, h1, lv1, & |
252 |
CALL cv30_undilute2(icb, icbs(:ncum), tnk, qnk, gznk, t, qs, gz, p, h, & |
CALL cv30_undilute2(icb, icbs(:ncum), tnk, qnk, gznk, t, qs, gz, p, h, & |
253 |
tv, lv, pbase(:ncum), buoybase(:ncum), plcl, inb, tp, tvp, & |
tv, lv, pbase(:ncum), buoybase(:ncum), plcl, inb, tp, tvp, & |
254 |
clw, hp, ep, buoy) |
clw, hp, ep, buoy) |
255 |
CALL cv30_closure(icb, inb, pbase, p, ph(:ncum, :), tv, buoy, & |
CALL cv30_closure(icb, inb, pbase, p, ph(:ncum, :), tv, buoy, sig, w0, & |
256 |
sig, w0, cape, m) |
cape, m) |
257 |
CALL cv30_mixing(icb, inb, t, q, qs, u, v, h, lv, & |
CALL cv30_mixing(icb, inb, t, q, qs, u, v, h, lv, hp, ep, clw, m, sig, & |
258 |
hp, ep, clw, m, sig, ment, qent, uent, vent, nent, sij, elij, & |
ment, qent, uent, vent, nent, sij, elij, ments, qents) |
|
ments, qents) |
|
259 |
CALL cv30_unsat(icb, inb, t(:ncum, :nl), q(:ncum, :nl), & |
CALL cv30_unsat(icb, inb, t(:ncum, :nl), q(:ncum, :nl), & |
260 |
qs(:ncum, :nl), gz, u(:ncum, :nl), v(:ncum, :nl), p, & |
qs(:ncum, :nl), gz, u(:ncum, :nl), v(:ncum, :nl), p, & |
261 |
ph(:ncum, :), th(:ncum, :nl - 1), tv, lv, cpn, ep(:ncum, :), & |
ph(:ncum, :), th(:ncum, :nl - 1), tv, lv, cpn, ep(:ncum, :), & |
270 |
CALL cv30_tracer(klon, ncum, klev, ment, sij, da, phi) |
CALL cv30_tracer(klon, ncum, klev, ment, sij, da, phi) |
271 |
CALL cv30_uncompress(idcum, iflag, precip, VPrecip, sig, w0, ft, fq, & |
CALL cv30_uncompress(idcum, iflag, precip, VPrecip, sig, w0, ft, fq, & |
272 |
fu, fv, inb, Ma, upwd, dnwd, qcondc, cape, da, phi, mp, iflag1, & |
fu, fv, inb, Ma, upwd, dnwd, qcondc, cape, da, phi, mp, iflag1, & |
273 |
precip1, VPrecip1, sig1, w01, ft1, fq1, fu1, fv1, inb1, Ma1, & |
rain, VPrecip1, sig1, w01, ft1, fq1, fu1, fv1, inb1, Ma1, & |
274 |
upwd1, dnwd1, qcondc1, cape1, da1, phi1, mp1) |
upwd1, dnwd1, qcondc1, cape1, da1, phi1, mp1) |
275 |
ENDIF |
ENDIF |
276 |
|
|