--- trunk/phylmd/Interface_surf/coef_diff_turb.f 2018/07/24 16:27:12 288 +++ trunk/phylmd/Interface_surf/coef_diff_turb.f 2018/07/26 16:45:51 298 @@ -4,14 +4,15 @@ 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. use nr_util, only: assert USE clesphys, ONLY: ok_kzmin + use comconst, only: dtphys use coefkz_m, only: coefkz use coefkzmin_m, only: coefkzmin use coefkz2_m, only: coefkz2 @@ -21,7 +22,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 +48,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 @@ -82,8 +67,23 @@ zlev(:, klev + 1) = 2. * zlay(:, klev) - zlay(:, klev - 1) forall (k = 2:klev) zlev(:, k) = 0.5 * (zlay(:, k) + zlay(:, k-1)) - CALL yamada4(dtime, zlev, zlay, u, v, teta, q2, coefm, coefh, & + CALL yamada4(dtphys, 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