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 |
|
|
12 |
use nr_util, only: assert |
use nr_util, only: assert |
13 |
|
|
14 |
USE clesphys, ONLY: ok_kzmin |
USE clesphys, ONLY: ok_kzmin |
15 |
|
use comconst, only: dtphys |
16 |
use coefkz_m, only: coefkz |
use coefkz_m, only: coefkz |
17 |
use coefkzmin_m, only: coefkzmin |
use coefkzmin_m, only: coefkzmin |
18 |
use coefkz2_m, only: coefkz2 |
use coefkz2_m, only: coefkz2 |
22 |
use ustarhb_m, only: ustarhb |
use ustarhb_m, only: ustarhb |
23 |
use yamada4_m, only: yamada4 |
use yamada4_m, only: yamada4 |
24 |
|
|
|
REAL, INTENT(IN):: dtime ! interval du temps (secondes) |
|
25 |
INTEGER, INTENT(IN):: nsrf |
INTEGER, INTENT(IN):: nsrf |
26 |
INTEGER, INTENT(IN):: ni(:) ! (knon) |
INTEGER, INTENT(IN):: ni(:) ! (knon) |
27 |
REAL, INTENT(IN):: paprs(:, :) ! (knon, klev + 1) |
REAL, INTENT(IN):: paprs(:, :) ! (knon, klev + 1) |
67 |
zlev(:, klev + 1) = 2. * zlay(:, klev) - zlay(:, klev - 1) |
zlev(:, klev + 1) = 2. * zlay(:, klev) - zlay(:, klev - 1) |
68 |
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)) |
69 |
|
|
70 |
CALL yamada4(dtime, zlev, zlay, u, v, teta, q2, coefm, coefh, & |
CALL yamada4(dtphys, zlev, zlay, u, v, teta, q2, coefm, coefh, & |
71 |
ustarhb(u(:, 1), v(:, 1), cdragm)) |
ustarhb(u(:, 1), v(:, 1), cdragm)) |
72 |
else |
else |
73 |
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) |