18 |
use cv30_compress_m, only: cv30_compress |
use cv30_compress_m, only: cv30_compress |
19 |
use cv30_feed_m, only: cv30_feed |
use cv30_feed_m, only: cv30_feed |
20 |
use cv30_mixing_m, only: cv30_mixing |
use cv30_mixing_m, only: cv30_mixing |
21 |
use cv30_param_m, only: cv30_param |
use cv30_param_m, only: cv30_param, nl |
22 |
use cv30_prelim_m, only: cv30_prelim |
use cv30_prelim_m, only: cv30_prelim |
23 |
use cv30_tracer_m, only: cv30_tracer |
use cv30_tracer_m, only: cv30_tracer |
24 |
use cv30_uncompress_m, only: cv30_uncompress |
use cv30_uncompress_m, only: cv30_uncompress |
182 |
real sij(klon, klev, klev), elij(klon, klev, klev) |
real sij(klon, klev, klev), elij(klon, klev, klev) |
183 |
real qp(klon, klev), up(klon, klev), vp(klon, klev) |
real qp(klon, klev), up(klon, klev), vp(klon, klev) |
184 |
real wt(klon, klev), water(klon, klev), evap(klon, klev) |
real wt(klon, klev), water(klon, klev), evap(klon, klev) |
185 |
real b(klon, klev), ft(klon, klev), fq(klon, klev) |
real, allocatable:: b(:, :) ! (ncum, nl) |
186 |
|
real ft(klon, klev), fq(klon, klev) |
187 |
real fu(klon, klev), fv(klon, klev) |
real fu(klon, klev), fv(klon, klev) |
188 |
real upwd(klon, klev), dnwd(klon, klev), dnwd0(klon, klev) |
real upwd(klon, klev), dnwd(klon, klev), dnwd0(klon, klev) |
189 |
real Ma(klon, klev), mike(klon, klev), tls(klon, klev) |
real Ma(klon, klev), mike(klon, klev), tls(klon, klev) |
272 |
end do |
end do |
273 |
|
|
274 |
IF (ncum > 0) THEN |
IF (ncum > 0) THEN |
275 |
|
allocate(b(ncum, nl)) |
276 |
|
|
277 |
! COMPRESS THE FIELDS |
! COMPRESS THE FIELDS |
278 |
! (-> vectorization over convective gridpoints) |
! (-> vectorization over convective gridpoints) |
279 |
CALL cv30_compress(klon, klon, ncum, klev, iflag1, nk1, icb1, icbs1, & |
CALL cv30_compress(klon, klon, ncum, klev, iflag1, nk1, icb1, icbs1, & |
297 |
sij, elij, ments, qents) |
sij, elij, ments, qents) |
298 |
|
|
299 |
! Unsaturated (precipitating) downdrafts |
! Unsaturated (precipitating) downdrafts |
300 |
CALL cv30_unsat(ncum, icb(:ncum), inb(:ncum), t, q, qs, gz, u, v, p, & |
CALL cv30_unsat(icb(:ncum), inb(:ncum), t, q, qs, gz, u, v, p, ph, th, & |
301 |
ph, th, tv, lv, cpn, ep, sigp, clw, m, ment, elij, delt, plcl, & |
tv, lv, cpn, ep, sigp, clw, m, ment, elij, delt, plcl, mp, qp, & |
302 |
mp, qp, up, vp, wt, water, evap, b(:ncum, :)) |
up, vp, wt, water, evap, b) |
303 |
|
|
304 |
! Yield (tendencies, precipitation, variables of interface with |
! Yield (tendencies, precipitation, variables of interface with |
305 |
! other processes, etc) |
! other processes, etc) |
306 |
CALL cv30_yield(klon, ncum, klev, klev, icb, inb, delt, t, q, u, v, & |
CALL cv30_yield(icb(:ncum), inb(:ncum), delt, t, q, u, v, gz, p, ph, & |
307 |
gz, p, ph, h, hp, lv, cpn, th, ep, clw, m, tp, mp, qp, up, vp, & |
h, hp, lv, cpn, th, ep, clw, m, tp, mp, qp, up, vp, wt, & |
308 |
wt, water, evap, b, ment, qent, uent, vent, nent, elij, sig, & |
water(:ncum, :nl), evap(:ncum, :nl), b, ment, qent, uent, vent, & |
309 |
tv, tvp, iflag, precip, VPrecip, ft, fq, fu, fv, upwd, dnwd, & |
nent, elij, sig, tv, tvp, iflag, precip, VPrecip, ft, fq, fu, fv, & |
310 |
dnwd0, ma, mike, tls, tps, qcondc, wd)! na->klev |
upwd, dnwd, dnwd0, ma, mike, tls, tps, qcondc, wd) |
311 |
|
|
312 |
! passive tracers |
! passive tracers |
313 |
CALL cv30_tracer(klon, ncum, klev, ment, sij, da, phi) |
CALL cv30_tracer(klon, ncum, klev, ment, sij, da, phi) |