--- trunk/Sources/phylmd/coefkz2.f 2018/01/05 18:18:53 250 +++ trunk/Sources/phylmd/coefkz2.f 2018/01/08 14:12:02 251 @@ -4,37 +4,33 @@ contains - SUBROUTINE coefkz2(nsrf, knon, paprs, pplay, t, pcfm, pcfh) + SUBROUTINE coefkz2(nsrf, paprs, pplay, t, pcfm, pcfh) - ! J'introduit un peu de diffusion sauf dans les endroits - ! ou une forte inversion est presente - ! On peut dire qu'il represente la convection peu profonde - - use dimens_m - use indicesol - use dimphy - use conf_gcm_m - use SUPHEC_M - - ! Arguments: - ! nsrf-----input-I- indicateur de la nature du sol - ! knon-----input-I- nombre de points a traiter - ! paprs----input-R- pression a chaque intercouche (en Pa) - ! pplay----input-R- pression au milieu de chaque couche (en Pa) - ! t--------input-R- temperature (K) - - ! pcfm-----output-R- coefficients a calculer (vitesse) - ! pcfh-----output-R- coefficients a calculer (chaleur et humidite) - - ! Arguments: - - INTEGER knon - integer, intent(in):: nsrf - REAL, intent(in):: paprs(klon, klev+1), pplay(klon, klev) - REAL, intent(in):: t(klon, klev) + ! J'introduit un peu de diffusion sauf dans les endroits o\`u une + ! forte inversion est pr\'esente. On peut dire que la diffusion + ! repr\'esente la convection peu profonde. - REAL, intent(out):: pcfm(:, 2:), pcfh(:, 2:) ! (knon, 2:klev) + use indicesol, only: is_oce + use dimphy, only: klev + use SUPHEC_M, only: RCPD, rd + integer, intent(in):: nsrf ! indicateur de la nature du sol + + REAL, intent(in):: paprs(:, :) ! (knon, klev+1) + ! pression a chaque intercouche (en Pa) + + REAL, intent(in):: pplay(:, :) ! (knon, klev) + ! pression au milieu de chaque couche (en Pa) + + REAL, intent(in):: t(:, :) ! (knon, klev) temperature (K) + + REAL, intent(out):: pcfm(:, 2:) ! (knon, 2:klev) coefficient vitesse + + REAL, intent(out):: pcfh(:, 2:) ! (knon, 2:klev) + ! coefficient chaleur et humidite) + + ! Local: + ! Quelques constantes et options: REAL prandtl @@ -46,14 +42,17 @@ REAL seuil ! au-dela l'inversion est consideree trop faible PARAMETER (seuil=-0.02) - ! Variables locales: - - INTEGER i, k, invb(knon) - REAL zl2(knon) - REAL zdthmin(knon), zdthdp + INTEGER knon ! nombre de points a traiter + INTEGER i, k + INTEGER invb(size(paprs, 1)) ! (knon) + REAL zl2(size(paprs, 1)) ! (knon) + REAL zdthmin(size(paprs, 1)) ! (knon) + real zdthdp !---------------------------------------------------------- + knon = size(paprs, 1) + ! Initialiser les sorties DO k = 2, klev DO i = 1, knon