106 |
! dflux_q derive du flux latent |
! dflux_q derive du flux latent |
107 |
! IM "slab" ocean |
! IM "slab" ocean |
108 |
|
|
109 |
REAL, intent(out):: ycoefh(:, :) ! (klon, klev) |
REAL, intent(out):: ycoefh(:, 2:) ! (klon, 2:klev) |
110 |
! Pour pouvoir extraire les coefficients d'\'echange, le champ |
! Pour pouvoir extraire les coefficients d'\'echange, le champ |
111 |
! "ycoefh" a \'et\'e cr\'e\'e. Nous avons moyenn\'e les valeurs de |
! "ycoefh" a \'et\'e cr\'e\'e. Nous avons moyenn\'e les valeurs de |
112 |
! ce champ sur les quatre sous-surfaces du mod\`ele. |
! ce champ sur les quatre sous-surfaces du mod\`ele. |
169 |
REAL yu(klon, klev), yv(klon, klev) |
REAL yu(klon, klev), yv(klon, klev) |
170 |
REAL yt(klon, klev), yq(klon, klev) |
REAL yt(klon, klev), yq(klon, klev) |
171 |
REAL ypaprs(klon, klev + 1), ypplay(klon, klev), ydelp(klon, klev) |
REAL ypaprs(klon, klev + 1), ypplay(klon, klev), ydelp(klon, klev) |
172 |
REAL ycoefm0(klon, klev), ycoefh0(klon, klev) |
REAL ycoefm0(klon, 2:klev), ycoefh0(klon, 2:klev) |
173 |
REAL yzlay(klon, klev), zlev(klon, klev + 1), yteta(klon, klev) |
REAL yzlay(klon, klev), zlev(klon, klev + 1), yteta(klon, klev) |
174 |
REAL ykmm(klon, klev + 1), ykmn(klon, klev + 1) |
REAL ykmm(klon, klev + 1), ykmn(klon, klev + 1) |
175 |
REAL yq2(klon, klev + 1) |
REAL yq2(klon, klev + 1) |
310 |
END DO |
END DO |
311 |
END DO |
END DO |
312 |
|
|
|
! calculer Cdrag et les coefficients d'echange |
|
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, :), ycdragm(:knon), ycdragh(:knon)) |
coefh(:knon, :), ycdragm(:knon), ycdragh(:knon)) |
316 |
|
|
317 |
IF (iflag_pbl == 1) THEN |
IF (iflag_pbl == 1) THEN |
318 |
CALL coefkz2(nsrf, knon, ypaprs, ypplay, yt, ycoefm0(:knon, 2:), & |
CALL coefkz2(nsrf, knon, ypaprs, ypplay, yt, ycoefm0(:knon, :), & |
319 |
ycoefh0(:knon, 2:)) |
ycoefh0(:knon, :)) |
320 |
ycoefm0(:knon, 1) = 0. |
coefm(:knon, :) = max(coefm(:knon, :), ycoefm0(:knon, :)) |
321 |
ycoefh0(:knon, 1) = 0. |
coefh(:knon, :) = max(coefh(:knon, :), ycoefh0(:knon, :)) |
|
coefm(:knon, :) = max(coefm(:knon, :), ycoefm0(:knon, 2:)) |
|
|
coefh(:knon, :) = max(coefh(:knon, :), ycoefh0(:knon, 2:)) |
|
322 |
ycdragm(:knon) = max(ycdragm(:knon), 0.) |
ycdragm(:knon) = max(ycdragm(:knon), 0.) |
323 |
ycdragh(:knon) = max(ycdragh(:knon), 0.) |
ycdragh(:knon) = max(ycdragh(:knon), 0.) |
324 |
END IF |
END IF |
332 |
IF (ok_kzmin) THEN |
IF (ok_kzmin) THEN |
333 |
! Calcul d'une diffusion minimale pour les conditions tres stables |
! Calcul d'une diffusion minimale pour les conditions tres stables |
334 |
CALL coefkzmin(knon, ypaprs, ypplay, yu, yv, yt, yq, & |
CALL coefkzmin(knon, ypaprs, ypplay, yu, yv, yt, yq, & |
335 |
ycdragm(:knon), ycoefh0(:knon, 2:)) |
ycdragm(:knon), ycoefh0(:knon, :)) |
336 |
ycoefm0(:knon, 2:) = ycoefh0(:knon, 2:) |
ycoefm0(:knon, :) = ycoefh0(:knon, :) |
337 |
coefm(:knon, :) = max(coefm(:knon, :), ycoefm0(:knon, 2:)) |
coefm(:knon, :) = max(coefm(:knon, :), ycoefm0(:knon, :)) |
338 |
coefh(:knon, :) = max(coefh(:knon, :), ycoefh0(:knon, 2:)) |
coefh(:knon, :) = max(coefh(:knon, :), ycoefh0(:knon, :)) |
339 |
END IF |
END IF |
340 |
|
|
341 |
IF (iflag_pbl >= 6) THEN |
IF (iflag_pbl >= 6) THEN |
415 |
y_dflux_q(j) = y_dflux_q(j) * ypct(j) |
y_dflux_q(j) = y_dflux_q(j) * ypct(j) |
416 |
END DO |
END DO |
417 |
|
|
|
DO k = 2, klev |
|
|
DO j = 1, knon |
|
|
i = ni(j) |
|
|
coefh(j, k) = coefh(j, k) * ypct(j) |
|
|
coefm(j, k) = coefm(j, k) * ypct(j) |
|
|
END DO |
|
|
END DO |
|
|
DO j = 1, knon |
|
|
i = ni(j) |
|
|
ycdragh(j) = ycdragh(j) * ypct(j) |
|
|
ycdragm(j) = ycdragm(j) * ypct(j) |
|
|
END DO |
|
418 |
DO k = 1, klev |
DO k = 1, klev |
419 |
DO j = 1, knon |
DO j = 1, knon |
420 |
i = ni(j) |
i = ni(j) |
451 |
agesno(i, nsrf) = yagesno(j) |
agesno(i, nsrf) = yagesno(j) |
452 |
fqcalving(i, nsrf) = y_fqcalving(j) |
fqcalving(i, nsrf) = y_fqcalving(j) |
453 |
ffonte(i, nsrf) = y_ffonte(j) |
ffonte(i, nsrf) = y_ffonte(j) |
454 |
cdragh(i) = cdragh(i) + ycdragh(j) |
cdragh(i) = cdragh(i) + ycdragh(j) * ypct(j) |
455 |
cdragm(i) = cdragm(i) + ycdragm(j) |
cdragm(i) = cdragm(i) + ycdragm(j) * ypct(j) |
456 |
dflux_t(i) = dflux_t(i) + y_dflux_t(j) |
dflux_t(i) = dflux_t(i) + y_dflux_t(j) |
457 |
dflux_q(i) = dflux_q(i) + y_dflux_q(j) |
dflux_q(i) = dflux_q(i) + y_dflux_q(j) |
458 |
END DO |
END DO |
477 |
d_v(i, k) = d_v(i, k) + y_d_v(j, k) |
d_v(i, k) = d_v(i, k) + y_d_v(j, k) |
478 |
END DO |
END DO |
479 |
END DO |
END DO |
|
|
|
|
DO j = 1, knon |
|
|
i = ni(j) |
|
|
DO k = 2, klev |
|
|
ycoefh(i, k) = ycoefh(i, k) + coefh(j, k) |
|
|
END DO |
|
|
END DO |
|
480 |
|
|
481 |
DO j = 1, knon |
forall (k = 2:klev) ycoefh(ni(:knon), k) & |
482 |
i = ni(j) |
= ycoefh(ni(:knon), k) + coefh(:knon, k) * ypct(:knon) |
|
ycoefh(i, 1) = ycoefh(i, 1) + ycdragh(j) |
|
|
END DO |
|
483 |
|
|
484 |
! diagnostic t, q a 2m et u, v a 10m |
! diagnostic t, q a 2m et u, v a 10m |
485 |
|
|