45 |
|
|
46 |
real, intent(out):: mp(:, :) |
real, intent(out):: mp(:, :) |
47 |
! (ncum, nl) Mass flux of the unsaturated downdraft, defined |
! (ncum, nl) Mass flux of the unsaturated downdraft, defined |
48 |
! positive downward, in kg m-2 s-1. M_p in Emanuel (1991 928). |
! positive downward, in kg m-2 s-1. M_p in Emanuel (1991 928). |
49 |
|
|
50 |
real, intent(out):: qp(:, :), up(:, :), vp(:, :) ! (ncum, nl) |
real, intent(out):: qp(:, :), up(:, :), vp(:, :) ! (ncum, nl) |
51 |
real, intent(out):: wt(:, :) ! (ncum, nl) |
real, intent(out):: wt(:, :) ! (ncum, nl) |
70 |
real, parameter:: tinv = 1. / 3. |
real, parameter:: tinv = 1. / 3. |
71 |
real delti |
real delti |
72 |
real afac, afac1, afac2, bfac |
real afac, afac1, afac2, bfac |
73 |
real pr1, sigt, b6, c6, revap, tevap, delth |
real pr1, sigt, b6, c6, revap, tevap |
74 |
real xf, tf, fac2, ur, sru, fac, d, af, bf |
real xf, tf, fac2, ur, sru, fac, d, af, bf |
75 |
real ampmax |
real ampmax |
76 |
real lvcp(size(icb), nl) ! (ncum, nl) L_v / C_p, in K |
real lvcp(size(icb), nl) ! (ncum, nl) L_v / C_p, in K |
187 |
|
|
188 |
test_above_surface: if (i /= 1) then |
test_above_surface: if (i /= 1) then |
189 |
tevap = max(0., evap(il, i)) |
tevap = max(0., evap(il, i)) |
|
delth = max(0.001, (th(il, i) - th(il, i - 1))) |
|
190 |
mp(il, i) = 100. * ginv * lvcp(il, i) * sigd * tevap & |
mp(il, i) = 100. * ginv * lvcp(il, i) * sigd * tevap & |
191 |
* (p(il, i - 1) - p(il, i)) / delth |
* (p(il, i - 1) - p(il, i)) & |
192 |
|
/ max(0.001, th(il, i) - th(il, i - 1)) |
193 |
|
|
194 |
! If hydrostatic assumption fails, solve cubic |
! If hydrostatic assumption fails, solve cubic |
195 |
! difference equation for downdraft theta and mass |
! difference equation for downdraft theta and mass |