/[lmdze]/trunk/phylmd/Interface_surf/yamada4.f
ViewVC logotype

Diff of /trunk/phylmd/Interface_surf/yamada4.f

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

trunk/Sources/phylmd/yamada4.f revision 238 by guez, Thu Nov 9 14:11:39 2017 UTC trunk/phylmd/yamada4.f revision 254 by guez, Mon Feb 5 10:39:38 2018 UTC
# Line 8  module yamada4_m Line 8  module yamada4_m
8    
9  contains  contains
10    
11    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)
12    
13      ! From LMDZ4/libf/phylmd/yamada4.F, version 1.1 2004/06/22 11:45:36      ! From LMDZ4/libf/phylmd/yamada4.F, version 1.1 2004/06/22 11:45:36
14    
15      USE conf_phys_m, ONLY: iflag_pbl      USE conf_phys_m, ONLY: iflag_pbl
16      USE dimphy, ONLY: klev      USE dimphy, ONLY: klev
17      use nr_util, only: assert, assert_eq      use nr_util, only: assert, assert_eq
18        USE suphec_m, ONLY: rg
19    
20      REAL, intent(in):: dt ! pas de temps      REAL, intent(in):: dt ! pas de temps
     real, intent(in):: g  
21    
22      REAL zlev(:, :) ! (knon, klev + 1)      REAL zlev(:, :) ! (knon, klev + 1)
23      ! altitude \`a chaque niveau (interface inf\'erieure de la couche de      ! altitude \`a chaque niveau (interface inf\'erieure de la couche de
# Line 39  contains Line 39  contains
39      ! En entr\'ee : la valeur au d\'ebut du pas de temps ; en sortie : la      ! En entr\'ee : la valeur au d\'ebut du pas de temps ; en sortie : la
40      ! valeur \`a la fin du pas de temps.      ! valeur \`a la fin du pas de temps.
41    
42      REAL km(:, :) ! (knon, klev + 1)      REAL, intent(out):: km(:, 2:) ! (knon, 2:klev)
43      ! diffusivit\'e turbulente de quantit\'e de mouvement (au bas de      ! diffusivit\'e turbulente de quantit\'e de mouvement (au bas de
44      ! chaque couche) (en sortie : la valeur \`a la fin du pas de temps)      ! chaque couche) (en sortie : la valeur \`a la fin du pas de temps)
45    
46      REAL kn(:, :) ! (knon, klev + 1)      REAL, intent(out):: kn(:, 2:) ! (knon, 2:klev)
47      ! diffusivit\'e turbulente des scalaires (au bas de chaque couche)      ! diffusivit\'e turbulente des scalaires (au bas de chaque couche)
48      ! (en sortie : la valeur \`a la fin du pas de temps)      ! (en sortie : la valeur \`a la fin du pas de temps)
49    
# Line 85  contains Line 85  contains
85           size(teta, 1), size(ustar), size(q2, 1), size(km, 1), size(kn, 1)], &           size(teta, 1), size(ustar), size(q2, 1), size(km, 1), size(kn, 1)], &
86           "yamada4 knon")           "yamada4 knon")
87      call assert(klev == [size(zlev, 2) - 1, size(zlay, 2), size(u, 2), &      call assert(klev == [size(zlev, 2) - 1, size(zlay, 2), size(u, 2), &
88           size(v, 2), size(teta, 2), size(q2, 2) - 1, size(km, 2) - 1, &           size(v, 2), size(teta, 2), size(q2, 2) - 1, size(km, 2) + 1, &
89           size(kn, 2) - 1], "yamada4 klev")           size(kn, 2) + 1], "yamada4 klev")
90    
91      ipas = ipas + 1      ipas = ipas + 1
92    
# Line 122  contains Line 122  contains
122            m2(ig, k) = ((u(ig, k)-u(ig, k-1))**2 + (v(ig, k)-v(ig, k-1))**2) &            m2(ig, k) = ((u(ig, k)-u(ig, k-1))**2 + (v(ig, k)-v(ig, k-1))**2) &
123                 /(dz(ig, k)*dz(ig, k))                 /(dz(ig, k)*dz(ig, k))
124            dtetadz(ig, k) = (teta(ig, k)-teta(ig, k-1))/dz(ig, k)            dtetadz(ig, k) = (teta(ig, k)-teta(ig, k-1))/dz(ig, k)
125            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))
126            ri = n2(ig, k)/max(m2(ig, k), 1.e-10)            ri = n2(ig, k)/max(m2(ig, k), 1.e-10)
127            if (ri.lt.ric) then            if (ri.lt.ric) then
128               rif(ig, k) = frif(ri)               rif(ig, k) = frif(ri)

Legend:
Removed from v.238  
changed lines
  Added in v.254

  ViewVC Help
Powered by ViewVC 1.1.21