--- trunk/Sources/phylmd/yamada4.f 2017/11/09 14:11:39 238 +++ trunk/phylmd/Interface_surf/yamada4.f 2018/07/24 15:22:48 286 @@ -8,16 +8,16 @@ contains - SUBROUTINE yamada4(dt, g, zlev, zlay, u, v, teta, q2, km, kn, ustar) + SUBROUTINE yamada4(dt, zlev, zlay, u, v, teta, q2, km, kn, ustar) ! From LMDZ4/libf/phylmd/yamada4.F, version 1.1 2004/06/22 11:45:36 USE conf_phys_m, ONLY: iflag_pbl USE dimphy, ONLY: klev use nr_util, only: assert, assert_eq + USE suphec_m, ONLY: rg REAL, intent(in):: dt ! pas de temps - real, intent(in):: g REAL zlev(:, :) ! (knon, klev + 1) ! altitude \`a chaque niveau (interface inf\'erieure de la couche de @@ -39,11 +39,11 @@ ! En entr\'ee : la valeur au d\'ebut du pas de temps ; en sortie : la ! valeur \`a la fin du pas de temps. - REAL km(:, :) ! (knon, klev + 1) + REAL, intent(out):: km(:, 2:) ! (knon, 2:klev) ! diffusivit\'e turbulente de quantit\'e de mouvement (au bas de ! chaque couche) (en sortie : la valeur \`a la fin du pas de temps) - REAL kn(:, :) ! (knon, klev + 1) + REAL, intent(out):: kn(:, 2:) ! (knon, 2:klev) ! diffusivit\'e turbulente des scalaires (au bas de chaque couche) ! (en sortie : la valeur \`a la fin du pas de temps) @@ -85,8 +85,8 @@ size(teta, 1), size(ustar), size(q2, 1), size(km, 1), size(kn, 1)], & "yamada4 knon") call assert(klev == [size(zlev, 2) - 1, size(zlay, 2), size(u, 2), & - size(v, 2), size(teta, 2), size(q2, 2) - 1, size(km, 2) - 1, & - size(kn, 2) - 1], "yamada4 klev") + size(v, 2), size(teta, 2), size(q2, 2) - 1, size(km, 2) + 1, & + size(kn, 2) + 1], "yamada4 klev") ipas = ipas + 1 @@ -122,7 +122,7 @@ m2(ig, k) = ((u(ig, k)-u(ig, k-1))**2 + (v(ig, k)-v(ig, k-1))**2) & /(dz(ig, k)*dz(ig, k)) dtetadz(ig, k) = (teta(ig, k)-teta(ig, k-1))/dz(ig, k) - n2(ig, k) = g*2.*dtetadz(ig, k)/(teta(ig, k-1) + teta(ig, k)) + n2(ig, k) = rg*2.*dtetadz(ig, k)/(teta(ig, k-1) + teta(ig, k)) ri = n2(ig, k)/max(m2(ig, k), 1.e-10) if (ri.lt.ric) then rif(ig, k) = frif(ri)