4 |
|
|
5 |
contains |
contains |
6 |
|
|
7 |
SUBROUTINE cv30_mixing(icb, nk, inb, t, rr, rs, u, v, h, lv, hp, ep, clw, & |
SUBROUTINE cv30_mixing(icb, inb, t, rr, rs, u, v, h, lv, hp, ep, clw, m, & |
8 |
m, sig, ment, qent, uent, vent, nent, sij, elij, ments, qents) |
sig, ment, qent, uent, vent, nent, sij, elij, ments, qents) |
9 |
|
|
10 |
! MIXING |
! MIXING |
11 |
|
|
14 |
! - vectorisation de la partie normalisation des flux (do 789) |
! - vectorisation de la partie normalisation des flux (do 789) |
15 |
|
|
16 |
use cv30_param_m, only: minorig, nl |
use cv30_param_m, only: minorig, nl |
|
use cv_thermo_m, only: cpd, cpv, rrv |
|
17 |
USE dimphy, ONLY: klev, klon |
USE dimphy, ONLY: klev, klon |
18 |
|
use suphec_m, only: rcpd, rcpv, rv |
19 |
|
|
20 |
! inputs: |
! inputs: |
21 |
integer, intent(in):: icb(:), nk(:), inb(:) ! (ncum) |
integer, intent(in):: icb(:), inb(:) ! (ncum) |
22 |
real t(klon, klev), rr(klon, klev), rs(klon, klev) |
real, intent(in):: t(klon, klev), rr(klon, klev), rs(klon, klev) |
23 |
real u(klon, klev), v(klon, klev) |
real u(klon, klev), v(klon, klev) |
24 |
real h(klon, klev), lv(klon, klev), hp(klon, klev) |
real, intent(in):: h(klon, klev) |
25 |
|
real, intent(in):: lv(:, :) ! (klon, klev) |
26 |
|
real, intent(in):: hp(klon, klev) |
27 |
real ep(klon, klev), clw(klon, klev) |
real ep(klon, klev), clw(klon, klev) |
28 |
real m(klon, klev) ! input of convect3 |
real m(klon, klev) ! input of convect3 |
29 |
real sig(klon, klev) |
real sig(klon, klev) |
86 |
(j >= (icb(il) - 1)).and.(j <= inb(il)))then |
(j >= (icb(il) - 1)).and.(j <= inb(il)))then |
87 |
|
|
88 |
rti = rr(il, 1) - ep(il, i) * clw(il, i) |
rti = rr(il, 1) - ep(il, i) * clw(il, i) |
89 |
bf2 = 1. + lv(il, j) * lv(il, j) * rs(il, j) / (rrv & |
bf2 = 1. + lv(il, j) * lv(il, j) * rs(il, j) / (rv & |
90 |
* t(il, j) * t(il, j) * cpd) |
* t(il, j) * t(il, j) * rcpd) |
91 |
anum = h(il, j) - hp(il, i) + (cpv - cpd) * t(il, j) * (rti & |
anum = h(il, j) - hp(il, i) + (rcpv - rcpd) * t(il, j) * (rti & |
92 |
- rr(il, j)) |
- rr(il, j)) |
93 |
denom = h(il, i) - hp(il, i) + (cpd - cpv) * (rr(il, i) & |
denom = h(il, i) - hp(il, i) + (rcpd - rcpv) * (rr(il, i) & |
94 |
- rti) * t(il, j) |
- rti) * t(il, j) |
95 |
dei = denom |
dei = denom |
96 |
if(abs(dei) < 0.01)dei = 0.01 |
if(abs(dei) < 0.01)dei = 0.01 |
115 |
qent(il, i, j) = sij(il, i, j) * rr(il, i) + (1. & |
qent(il, i, j) = sij(il, i, j) * rr(il, i) + (1. & |
116 |
- sij(il, i, j)) * rti |
- sij(il, i, j)) * rti |
117 |
uent(il, i, j) = sij(il, i, j) * u(il, i) + (1. & |
uent(il, i, j) = sij(il, i, j) * u(il, i) + (1. & |
118 |
- sij(il, i, j)) * u(il, nk(il)) |
- sij(il, i, j)) * u(il, minorig) |
119 |
vent(il, i, j) = sij(il, i, j) * v(il, i) + (1. & |
vent(il, i, j) = sij(il, i, j) * v(il, i) + (1. & |
120 |
- sij(il, i, j)) * v(il, nk(il)) |
- sij(il, i, j)) * v(il, minorig) |
121 |
elij(il, i, j) = altem |
elij(il, i, j) = altem |
122 |
elij(il, i, j) = amax1(0.0, elij(il, i, j)) |
elij(il, i, j) = amax1(0.0, elij(il, i, j)) |
123 |
ment(il, i, j) = m(il, i) / (1. - sij(il, i, j)) |
ment(il, i, j) = m(il, i) / (1. - sij(il, i, j)) |
135 |
do il = 1, ncum |
do il = 1, ncum |
136 |
if ((i >= icb(il)).and.(i <= inb(il)).and.(nent(il, i) == 0)) then |
if ((i >= icb(il)).and.(i <= inb(il)).and.(nent(il, i) == 0)) then |
137 |
ment(il, i, i) = m(il, i) |
ment(il, i, i) = m(il, i) |
138 |
qent(il, i, i) = rr(il, nk(il)) - ep(il, i) * clw(il, i) |
qent(il, i, i) = rr(il, minorig) - ep(il, i) * clw(il, i) |
139 |
uent(il, i, i) = u(il, nk(il)) |
uent(il, i, i) = u(il, minorig) |
140 |
vent(il, i, i) = v(il, nk(il)) |
vent(il, i, i) = v(il, minorig) |
141 |
elij(il, i, i) = clw(il, i) |
elij(il, i, i) = clw(il, i) |
142 |
sij(il, i, i) = 0.0 |
sij(il, i, i) = 0.0 |
143 |
end if |
end if |
167 |
lwork(il) = (nent(il, i) /= 0) |
lwork(il) = (nent(il, i) /= 0) |
168 |
qp = rr(il, 1) - ep(il, i) * clw(il, i) |
qp = rr(il, 1) - ep(il, i) * clw(il, i) |
169 |
anum = h(il, i) - hp(il, i) - lv(il, i) * (qp - rs(il, i)) & |
anum = h(il, i) - hp(il, i) - lv(il, i) * (qp - rs(il, i)) & |
170 |
+ (cpv - cpd) * t(il, i) * (qp - rr(il, i)) |
+ (rcpv - rcpd) * t(il, i) * (qp - rr(il, i)) |
171 |
denom = h(il, i) - hp(il, i) + lv(il, i) * (rr(il, i) - qp) & |
denom = h(il, i) - hp(il, i) + lv(il, i) * (rr(il, i) - qp) & |
172 |
+ (cpd - cpv) * t(il, i) * (rr(il, i) - qp) |
+ (rcpd - rcpv) * t(il, i) * (rr(il, i) - qp) |
173 |
if(abs(denom) < 0.01)denom = 0.01 |
if(abs(denom) < 0.01)denom = 0.01 |
174 |
scrit(il) = anum / denom |
scrit(il) = anum / denom |
175 |
alt = qp - rs(il, i) + scrit(il) * (rr(il, i) - qp) |
alt = qp - rs(il, i) + scrit(il) * (rr(il, i) - qp) |
282 |
nent(il, i) = 0 |
nent(il, i) = 0 |
283 |
ment(il, i, i) = m(il, i) |
ment(il, i, i) = m(il, i) |
284 |
qent(il, i, i) = rr(il, 1) - ep(il, i) * clw(il, i) |
qent(il, i, i) = rr(il, 1) - ep(il, i) * clw(il, i) |
285 |
uent(il, i, i) = u(il, nk(il)) |
uent(il, i, i) = u(il, minorig) |
286 |
vent(il, i, i) = v(il, nk(il)) |
vent(il, i, i) = v(il, minorig) |
287 |
elij(il, i, i) = clw(il, i) |
elij(il, i, i) = clw(il, i) |
288 |
sij(il, i, i) = 0.0 |
sij(il, i, i) = 0.0 |
289 |
endif |
endif |