4 |
|
|
5 |
contains |
contains |
6 |
|
|
7 |
subroutine coef_diff_turb(dtime, nsrf, ni, paprs, pplay, u, v, q, t, ts, & |
subroutine coef_diff_turb(nsrf, ni, paprs, pplay, u, v, q, t, ts, cdragm, & |
8 |
cdragm, zgeop, coefm, coefh, q2) |
zgeop, coefm, coefh, q2) |
9 |
|
|
10 |
! Computes coefficients for turbulent diffusion in the atmosphere. |
! Computes coefficients for turbulent diffusion in the atmosphere. |
11 |
|
|
21 |
use ustarhb_m, only: ustarhb |
use ustarhb_m, only: ustarhb |
22 |
use yamada4_m, only: yamada4 |
use yamada4_m, only: yamada4 |
23 |
|
|
|
REAL, INTENT(IN):: dtime ! interval du temps (secondes) |
|
24 |
INTEGER, INTENT(IN):: nsrf |
INTEGER, INTENT(IN):: nsrf |
25 |
INTEGER, INTENT(IN):: ni(:) ! (knon) |
INTEGER, INTENT(IN):: ni(:) ! (knon) |
26 |
REAL, INTENT(IN):: paprs(:, :) ! (knon, klev + 1) |
REAL, INTENT(IN):: paprs(:, :) ! (knon, klev + 1) |
63 |
* (paprs(:, 1) / pplay(:, k))**rkappa * (1. + 0.61 * q(:, k)) |
* (paprs(:, 1) / pplay(:, k))**rkappa * (1. + 0.61 * q(:, k)) |
64 |
|
|
65 |
zlev(:, 1) = 0. |
zlev(:, 1) = 0. |
|
zlev(:, klev + 1) = 2. * zlay(:, klev) - zlay(:, klev - 1) |
|
66 |
forall (k = 2:klev) zlev(:, k) = 0.5 * (zlay(:, k) + zlay(:, k-1)) |
forall (k = 2:klev) zlev(:, k) = 0.5 * (zlay(:, k) + zlay(:, k-1)) |
67 |
|
zlev(:, klev + 1) = 2. * zlay(:, klev) - zlev(:, klev) |
68 |
|
|
69 |
CALL yamada4(dtime, zlev, zlay, u, v, teta, q2, coefm, coefh, & |
CALL yamada4(zlev, zlay, u, v, teta, q2, coefm, coefh, & |
70 |
ustarhb(u(:, 1), v(:, 1), cdragm)) |
ustarhb(u(:, 1), v(:, 1), cdragm)) |
71 |
else |
else |
72 |
CALL coefkz(nsrf, paprs, pplay, ts, u, v, t, q, zgeop, coefm, coefh) |
CALL coefkz(nsrf, paprs, pplay, ts, u, v, t, q, zgeop, coefm, coefh) |