--- trunk/phylmd/Interface_surf/coef_diff_turb.f 2018/07/24 16:27:12 288 +++ trunk/phylmd/Interface_surf/coef_diff_turb.f 2018/09/06 14:25:07 303 @@ -4,8 +4,8 @@ contains - subroutine coef_diff_turb(dtime, nsrf, ni, paprs, pplay, u, v, q, t, ts, & - cdragm, zgeop, coefm, coefh, q2) + subroutine coef_diff_turb(nsrf, ni, paprs, pplay, u, v, q, t, ts, cdragm, & + zgeop, coefm, coefh, q2) ! Computes coefficients for turbulent diffusion in the atmosphere. @@ -21,7 +21,6 @@ use ustarhb_m, only: ustarhb use yamada4_m, only: yamada4 - REAL, INTENT(IN):: dtime ! interval du temps (secondes) INTEGER, INTENT(IN):: nsrf INTEGER, INTENT(IN):: ni(:) ! (knon) REAL, INTENT(IN):: paprs(:, :) ! (knon, klev + 1) @@ -48,21 +47,6 @@ size(v, 1), size(q, 1), size(t, 1), size(ts), size(cdragm), & size(zgeop, 1), size(coefm, 1), size(coefh, 1), size(q2, 1)], & "coef_diff_turb knon") - - CALL coefkz(nsrf, paprs, pplay, ts, u, v, t, q, zgeop, coefm, coefh) - - IF (iflag_pbl == 1) THEN - CALL coefkz2(nsrf, paprs, pplay, t, coefm0, coefh0) - coefm = max(coefm, coefm0) - coefh = max(coefh, coefh0) - END IF - - IF (ok_kzmin) THEN - ! Calcul d'une diffusion minimale pour les conditions tres stables - CALL coefkzmin(paprs, pplay, u, v, t, q, cdragm, coefh0) - coefm = max(coefm, coefh0) - coefh = max(coefh, coefh0) - END IF IF (iflag_pbl >= 6) THEN ! Mellor et Yamada adapt\'e \`a Mars, Richard Fournier et @@ -79,11 +63,26 @@ * (paprs(:, 1) / pplay(:, k))**rkappa * (1. + 0.61 * q(:, k)) zlev(:, 1) = 0. - zlev(:, klev + 1) = 2. * zlay(:, klev) - zlay(:, klev - 1) forall (k = 2:klev) zlev(:, k) = 0.5 * (zlay(:, k) + zlay(:, k-1)) + zlev(:, klev + 1) = 2. * zlay(:, klev) - zlev(:, klev) - CALL yamada4(dtime, zlev, zlay, u, v, teta, q2, coefm, coefh, & + CALL yamada4(zlev, zlay, u, v, teta, q2, coefm, coefh, & ustarhb(u(:, 1), v(:, 1), cdragm)) + else + CALL coefkz(nsrf, paprs, pplay, ts, u, v, t, q, zgeop, coefm, coefh) + + IF (iflag_pbl == 1) THEN + CALL coefkz2(nsrf, paprs, pplay, t, coefm0, coefh0) + coefm = max(coefm, coefm0) + coefh = max(coefh, coefh0) + END IF + + IF (ok_kzmin) THEN + ! Calcul d'une diffusion minimale pour les conditions tres stables + CALL coefkzmin(paprs, pplay, u, v, t, q, cdragm, coefh0) + coefm = max(coefm, coefh0) + coefh = max(coefh, coefh0) + END IF END IF end subroutine coef_diff_turb