4 |
|
|
5 |
contains |
contains |
6 |
|
|
7 |
SUBROUTINE cv30_compress(iflag1, icb1, icbs1, plcl1, tnk1, qnk1, gznk1, & |
SUBROUTINE cv30_compress(idcum, iflag1, icb1, icbs1, plcl1, tnk1, qnk1, & |
8 |
pbase1, buoybase1, t1, q1, qs1, u1, v1, gz1, th1, h1, lv1, cpn1, p1, & |
gznk1, pbase1, buoybase1, t1, q1, qs1, u1, v1, gz1, th1, h1, lv1, & |
9 |
ph1, tv1, tp1, tvp1, clw1, sig1, w01, icb, icbs, plcl, tnk, qnk, gznk, & |
cpn1, p1, ph1, tv1, tp1, tvp1, clw1, sig1, w01, icb, icbs, plcl, tnk, & |
10 |
pbase, buoybase, t, q, qs, u, v, gz, th, h, lv, cpn, p, ph, tv, tp, & |
qnk, gznk, pbase, buoybase, t, q, qs, u, v, gz, th, h, lv, cpn, p, ph, & |
11 |
tvp, clw, sig, w0) |
tv, tp, tvp, clw, sig, w0) |
12 |
|
|
13 |
! Compress the fields (vectorization over convective gridpoints). |
! Compress the fields (vectorization over convective gridpoints). |
14 |
|
|
17 |
use nr_util, only: assert |
use nr_util, only: assert |
18 |
|
|
19 |
! inputs: |
! inputs: |
20 |
|
integer, intent(in):: idcum(:) ! (ncum) |
21 |
integer, intent(in):: iflag1(:), icb1(:), icbs1(:) ! (klon) |
integer, intent(in):: iflag1(:), icb1(:), icbs1(:) ! (klon) |
22 |
real, intent(in):: plcl1(klon), tnk1(klon), qnk1(klon), gznk1(klon) |
real, intent(in):: plcl1(klon), tnk1(klon), qnk1(klon), gznk1(klon) |
23 |
real pbase1(klon), buoybase1(klon) |
real pbase1(klon), buoybase1(klon) |
24 |
real, intent(in):: t1(klon, klev) |
real, intent(in):: t1(klon, klev) ! temperature (K) |
25 |
real, intent(in):: q1(klon, klev), qs1(klon, klev) |
real, intent(in):: q1(klon, klev), qs1(klon, klev) |
26 |
real, intent(in):: u1(klon, klev), v1(klon, klev) |
real, intent(in):: u1(klon, klev), v1(klon, klev) |
27 |
real gz1(klon, klev), h1(klon, klev), lv1(klon, klev), cpn1(klon, klev) |
real gz1(klon, klev), h1(klon, klev) |
28 |
|
|
29 |
|
real, intent(in):: lv1(:, :) ! (klon, nl) |
30 |
|
! specific latent heat of vaporization of water, in J kg-1 |
31 |
|
|
32 |
|
real, intent(in):: cpn1(:, :) ! (klon, nl) |
33 |
|
! specific heat capacity at constant pressure of humid air, in J K-1 kg-1 |
34 |
|
|
35 |
real, intent(in):: p1(klon, klev), ph1(klon, klev + 1) |
real, intent(in):: p1(klon, klev), ph1(klon, klev + 1) |
36 |
real, intent(in):: tv1(klon, klev), tp1(klon, klev) |
real, intent(in):: tv1(klon, klev), tp1(klon, klev) |
37 |
real tvp1(klon, klev), clw1(klon, klev) |
real tvp1(klon, klev), clw1(klon, klev) |
38 |
real th1(klon, klev) |
real, intent(in):: th1(:, :) ! (klon, nl) potential temperature, in K |
39 |
real sig1(klon, klev), w01(klon, klev) |
real sig1(klon, klev), w01(klon, klev) |
40 |
|
|
41 |
! outputs: |
! outputs: |
44 |
real, intent(out):: plcl(:) ! (ncum) |
real, intent(out):: plcl(:) ! (ncum) |
45 |
real tnk(:), qnk(:), gznk(:) ! (klon) |
real tnk(:), qnk(:), gznk(:) ! (klon) |
46 |
real pbase(klon), buoybase(klon) |
real pbase(klon), buoybase(klon) |
47 |
real t(klon, klev), q(klon, klev), qs(klon, klev) |
real t(klon, klev) ! temperature (K) |
48 |
|
real q(klon, klev), qs(klon, klev) |
49 |
real u(klon, klev), v(klon, klev) |
real u(klon, klev), v(klon, klev) |
50 |
real gz(klon, klev), h(klon, klev), lv(klon, klev), cpn(klon, klev) |
real gz(klon, klev), h(klon, klev) |
51 |
|
|
52 |
|
real, intent(out):: lv(:, :) ! (ncum, nl) |
53 |
|
! specific latent heat of vaporization of water, in J kg-1 |
54 |
|
|
55 |
|
real cpn(:, :) ! (ncum, nl) |
56 |
|
! specific heat capacity at constant pressure of humid air, in J K-1 kg-1 |
57 |
|
|
58 |
real p(klon, klev) |
real p(klon, klev) |
59 |
real ph(:, :) ! (klon, klev + 1) |
real ph(:, :) ! (klon, klev + 1) |
60 |
real tv(klon, klev), tp(klon, klev) |
real tv(klon, klev), tp(klon, klev) |
61 |
real tvp(klon, klev), clw(klon, klev) |
real tvp(klon, klev), clw(klon, klev) |
62 |
real th(klon, klev) |
real, intent(out):: th(:, :) ! (ncum, nl) potential temperature, in K |
63 |
real sig(klon, klev), w0(klon, klev) |
real sig(klon, klev), w0(klon, klev) |
64 |
|
|
65 |
! Local: |
! Local: |
83 |
v(nn, k) = v1(i, k) |
v(nn, k) = v1(i, k) |
84 |
gz(nn, k) = gz1(i, k) |
gz(nn, k) = gz1(i, k) |
85 |
h(nn, k) = h1(i, k) |
h(nn, k) = h1(i, k) |
|
lv(nn, k) = lv1(i, k) |
|
|
cpn(nn, k) = cpn1(i, k) |
|
86 |
p(nn, k) = p1(i, k) |
p(nn, k) = p1(i, k) |
87 |
ph(nn, k) = ph1(i, k) |
ph(nn, k) = ph1(i, k) |
88 |
tv(nn, k) = tv1(i, k) |
tv(nn, k) = tv1(i, k) |
89 |
tp(nn, k) = tp1(i, k) |
tp(nn, k) = tp1(i, k) |
90 |
tvp(nn, k) = tvp1(i, k) |
tvp(nn, k) = tvp1(i, k) |
91 |
clw(nn, k) = clw1(i, k) |
clw(nn, k) = clw1(i, k) |
|
th(nn, k) = th1(i, k) |
|
92 |
endif |
endif |
93 |
end do |
end do |
94 |
end do |
end do |
95 |
|
|
96 |
|
th = th1(idcum, :) |
97 |
|
lv = lv1(idcum, :) |
98 |
|
cpn = cpn1(idcum, :) |
99 |
|
|
100 |
nn = 0 |
nn = 0 |
101 |
|
|
102 |
do i = 1, klon |
do i = 1, klon |