--- trunk/Sources/phylmd/clmain.f 2017/11/09 14:11:39 238 +++ trunk/Sources/phylmd/clmain.f 2017/11/13 12:12:41 242 @@ -106,7 +106,7 @@ ! dflux_q derive du flux latent ! IM "slab" ocean - REAL, intent(out):: ycoefh(:, :) ! (klon, klev) + REAL, intent(out):: ycoefh(:, 2:) ! (klon, 2:klev) ! Pour pouvoir extraire les coefficients d'\'echange, le champ ! "ycoefh" a \'et\'e cr\'e\'e. Nous avons moyenn\'e les valeurs de ! ce champ sur les quatre sous-surfaces du mod\`ele. @@ -169,7 +169,7 @@ REAL yu(klon, klev), yv(klon, klev) REAL yt(klon, klev), yq(klon, klev) REAL ypaprs(klon, klev + 1), ypplay(klon, klev), ydelp(klon, klev) - REAL ycoefm0(klon, klev), ycoefh0(klon, klev) + REAL ycoefm0(klon, 2:klev), ycoefh0(klon, 2:klev) REAL yzlay(klon, klev), zlev(klon, klev + 1), yteta(klon, klev) REAL ykmm(klon, klev + 1), ykmn(klon, klev + 1) REAL yq2(klon, klev + 1) @@ -316,12 +316,10 @@ coefh(:knon, :), ycdragm(:knon), ycdragh(:knon)) IF (iflag_pbl == 1) THEN - CALL coefkz2(nsrf, knon, ypaprs, ypplay, yt, ycoefm0(:knon, 2:), & - ycoefh0(:knon, 2:)) - ycoefm0(:knon, 1) = 0. - ycoefh0(:knon, 1) = 0. - coefm(:knon, :) = max(coefm(:knon, :), ycoefm0(:knon, 2:)) - coefh(:knon, :) = max(coefh(:knon, :), ycoefh0(:knon, 2:)) + CALL coefkz2(nsrf, knon, ypaprs, ypplay, yt, ycoefm0(:knon, :), & + ycoefh0(:knon, :)) + coefm(:knon, :) = max(coefm(:knon, :), ycoefm0(:knon, :)) + coefh(:knon, :) = max(coefh(:knon, :), ycoefh0(:knon, :)) ycdragm(:knon) = max(ycdragm(:knon), 0.) ycdragh(:knon) = max(ycdragh(:knon), 0.) END IF @@ -335,11 +333,10 @@ IF (ok_kzmin) THEN ! Calcul d'une diffusion minimale pour les conditions tres stables CALL coefkzmin(knon, ypaprs, ypplay, yu, yv, yt, yq, & - ycdragm(:knon), ycoefm0(:knon, 2:), ycoefh0(:knon, 2:)) - coefm(:knon, :) = max(coefm(:knon, :), ycoefm0(:knon, 2:)) - coefh(:knon, :) = max(coefh(:knon, :), ycoefh0(:knon, 2:)) - ycdragm(:knon) = max(ycdragm(:knon), ycoefm0(:knon, 1)) - ycdragh(:knon) = max(ycdragh(:knon), ycoefh0(:knon, 1)) + ycdragm(:knon), ycoefh0(:knon, :)) + ycoefm0(:knon, :) = ycoefh0(:knon, :) + coefm(:knon, :) = max(coefm(:knon, :), ycoefm0(:knon, :)) + coefh(:knon, :) = max(coefh(:knon, :), ycoefh0(:knon, :)) END IF IF (iflag_pbl >= 6) THEN @@ -493,18 +490,8 @@ d_v(i, k) = d_v(i, k) + y_d_v(j, k) 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 - DO j = 1, knon - i = ni(j) - ycoefh(i, 1) = ycoefh(i, 1) + ycdragh(j) - END DO + ycoefh(ni(:knon), :) = ycoefh(ni(:knon), :) + coefh(:knon, :) ! diagnostic t, q a 2m et u, v a 10m