36 |
USE suphec_m, ONLY: rd, rg, rkappa |
USE suphec_m, ONLY: rd, rg, rkappa |
37 |
use time_phylmdz, only: itap |
use time_phylmdz, only: itap |
38 |
use ustarhb_m, only: ustarhb |
use ustarhb_m, only: ustarhb |
|
use vdif_kcay_m, only: vdif_kcay |
|
39 |
use yamada4_m, only: yamada4 |
use yamada4_m, only: yamada4 |
40 |
|
|
41 |
REAL, INTENT(IN):: dtime ! interval du temps (secondes) |
REAL, INTENT(IN):: dtime ! interval du temps (secondes) |
167 |
REAL yu(klon, klev), yv(klon, klev) |
REAL yu(klon, klev), yv(klon, klev) |
168 |
REAL yt(klon, klev), yq(klon, klev) |
REAL yt(klon, klev), yq(klon, klev) |
169 |
REAL ypaprs(klon, klev + 1), ypplay(klon, klev), ydelp(klon, klev) |
REAL ypaprs(klon, klev + 1), ypplay(klon, klev), ydelp(klon, klev) |
|
|
|
170 |
REAL ycoefm0(klon, klev), ycoefh0(klon, klev) |
REAL ycoefm0(klon, klev), ycoefh0(klon, klev) |
|
|
|
171 |
REAL yzlay(klon, klev), zlev(klon, klev + 1), yteta(klon, klev) |
REAL yzlay(klon, klev), zlev(klon, klev + 1), yteta(klon, klev) |
172 |
REAL ykmm(klon, klev + 1), ykmn(klon, klev + 1) |
REAL ykmm(klon, klev + 1), ykmn(klon, klev + 1) |
173 |
REAL ykmq(klon, klev + 1) |
REAL ykmq(klon, klev + 1) |
174 |
REAL yq2(klon, klev + 1) |
REAL yq2(klon, klev + 1) |
|
REAL q2diag(klon, klev + 1) |
|
|
|
|
175 |
REAL delp(klon, klev) |
REAL delp(klon, klev) |
176 |
INTEGER i, k, nsrf |
INTEGER i, k, nsrf |
|
|
|
177 |
INTEGER ni(klon), knon, j |
INTEGER ni(klon), knon, j |
178 |
|
|
179 |
REAL pctsrf_pot(klon, nbsrf) |
REAL pctsrf_pot(klon, nbsrf) |
313 |
CALL coefkz(nsrf, ypaprs, ypplay, ksta, ksta_ter, yts(:knon), & |
CALL coefkz(nsrf, ypaprs, ypplay, ksta, ksta_ter, yts(:knon), & |
314 |
yrugos, yu, yv, yt, yq, yqsurf(:knon), coefm(:knon, :), & |
yrugos, yu, yv, yt, yq, yqsurf(:knon), coefm(:knon, :), & |
315 |
coefh(:knon, :)) |
coefh(:knon, :)) |
316 |
|
|
317 |
IF (iflag_pbl == 1) THEN |
IF (iflag_pbl == 1) THEN |
318 |
CALL coefkz2(nsrf, knon, ypaprs, ypplay, yt, ycoefm0, ycoefh0) |
CALL coefkz2(nsrf, knon, ypaprs, ypplay, yt, ycoefm0, ycoefh0) |
319 |
coefm(:knon, :) = max(coefm(:knon, :), ycoefm0(:knon, :)) |
coefm(:knon, :) = max(coefm(:knon, :), ycoefm0(:knon, :)) |
334 |
coefh(:knon, :) = max(coefh(:knon, :), ycoefh0(:knon, :)) |
coefh(:knon, :) = max(coefh(:knon, :), ycoefh0(:knon, :)) |
335 |
END IF |
END IF |
336 |
|
|
337 |
IF (iflag_pbl >= 3) THEN |
IF (iflag_pbl >= 6) THEN |
338 |
! Mellor et Yamada adapt\'e \`a Mars, Richard Fournier et |
! Mellor et Yamada adapt\'e \`a Mars, Richard Fournier et |
339 |
! Fr\'ed\'eric Hourdin |
! Fr\'ed\'eric Hourdin |
340 |
yzlay(:knon, 1) = rd * yt(:knon, 1) / (0.5 * (ypaprs(:knon, 1) & |
yzlay(:knon, 1) = rd * yt(:knon, 1) / (0.5 * (ypaprs(:knon, 1) & |
341 |
+ ypplay(:knon, 1))) & |
+ ypplay(:knon, 1))) & |
342 |
* (ypaprs(:knon, 1) - ypplay(:knon, 1)) / rg |
* (ypaprs(:knon, 1) - ypplay(:knon, 1)) / rg |
343 |
|
|
344 |
DO k = 2, klev |
DO k = 2, klev |
345 |
yzlay(:knon, k) = yzlay(:knon, k-1) & |
yzlay(:knon, k) = yzlay(:knon, k-1) & |
346 |
+ rd * 0.5 * (yt(1:knon, k-1) + yt(1:knon, k)) & |
+ rd * 0.5 * (yt(1:knon, k-1) + yt(1:knon, k)) & |
372 |
|
|
373 |
! iflag_pbl peut \^etre utilis\'e comme longueur de m\'elange |
! iflag_pbl peut \^etre utilis\'e comme longueur de m\'elange |
374 |
|
|
375 |
IF (iflag_pbl >= 11) THEN |
CALL yamada4(dtime, rg, zlev(:knon, :), yzlay(:knon, :), & |
376 |
CALL vdif_kcay(knon, dtime, rg, zlev, yzlay, yu, yv, yteta, & |
yu(:knon, :), yv(:knon, :), yteta(:knon, :), & |
377 |
coefm(:knon, 1), yq2, q2diag, ykmm, ykmn, ustar(:knon), & |
coefm(:knon, 1), yq2(:knon, :), ykmm(:knon, :), & |
378 |
iflag_pbl) |
ykmn(:knon, :), ykmq(:knon, :), ustar(:knon), iflag_pbl) |
|
ELSE |
|
|
CALL yamada4(dtime, rg, zlev(:knon, :), yzlay(:knon, :), & |
|
|
yu(:knon, :), yv(:knon, :), yteta(:knon, :), & |
|
|
coefm(:knon, 1), yq2(:knon, :), ykmm(:knon, :), & |
|
|
ykmn(:knon, :), ykmq(:knon, :), ustar(:knon), iflag_pbl) |
|
|
END IF |
|
379 |
|
|
380 |
coefm(:knon, 2:) = ykmm(:knon, 2:klev) |
coefm(:knon, 2:) = ykmm(:knon, 2:klev) |
381 |
coefh(:knon, 2:) = ykmn(:knon, 2:klev) |
coefh(:knon, 2:) = ykmn(:knon, 2:klev) |