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

Diff of /trunk/phylmd/yamada4.f

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

revision 229 by guez, Mon Nov 6 17:20:45 2017 UTC revision 238 by guez, Thu Nov 9 14:11:39 2017 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, cd, q2, km, kn, kq, ustar)    SUBROUTINE yamada4(dt, g, 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    
# Line 34  contains Line 34  contains
34      ! temp\'erature potentielle au centre de chaque couche (en entr\'ee :      ! temp\'erature potentielle au centre de chaque couche (en entr\'ee :
35      ! la valeur au d\'ebut du pas de temps)      ! la valeur au d\'ebut du pas de temps)
36    
     REAL, intent(in):: cd(:) ! (knon) cdrag, valeur au d\'ebut du pas de temps  
   
37      REAL, intent(inout):: q2(:, :) ! (knon, klev + 1)      REAL, intent(inout):: q2(:, :) ! (knon, klev + 1)
38      ! $q^2$ au bas de chaque couche      ! $q^2$ au bas de chaque couche
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
# Line 49  contains Line 47  contains
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    
     REAL kq(:, :) ! (knon, klev + 1)  
50      real, intent(in):: ustar(:) ! (knon)      real, intent(in):: ustar(:) ! (knon)
51    
52      ! Local:      ! Local:
53      integer knon      integer knon
54      real kmin, qmin      real kmin, qmin
55      real pblhmin(size(cd)), coriol(size(cd)) ! (knon)      real pblhmin(size(ustar)), coriol(size(ustar)) ! (knon)
56      real qpre      real qpre
57      REAL unsdz(size(zlay, 1), size(zlay, 2)) ! (knon, klev)      REAL unsdz(size(zlay, 1), size(zlay, 2)) ! (knon, klev)
58      REAL unsdzdec(size(zlev, 1), size(zlev, 2)) ! (knon, klev + 1)      REAL unsdzdec(size(zlev, 1), size(zlev, 2)) ! (knon, klev + 1)
# Line 75  contains Line 72  contains
72      real zq      real zq
73      real dtetadz(size(zlev, 1), size(zlev, 2)) ! (knon, klev + 1)      real dtetadz(size(zlev, 1), size(zlev, 2)) ! (knon, klev + 1)
74      real l(size(zlev, 1), size(zlev, 2)) ! (knon, klev + 1)      real l(size(zlev, 1), size(zlev, 2)) ! (knon, klev + 1)
75      real l0(size(cd)) ! (knon)      real l0(size(ustar)) ! (knon)
76      real sq(size(cd)), sqz(size(cd)) ! (knon)      real sq(size(ustar)), sqz(size(ustar)) ! (knon)
77      real zz(size(zlev, 1), size(zlev, 2)) ! (knon, klev + 1)      real zz(size(zlev, 1), size(zlev, 2)) ! (knon, klev + 1)
78      integer iter      integer iter
79      real:: ric = 0.195, rifc = 0.191, b1 = 16.6      real:: ric = 0.195, rifc = 0.191, b1 = 16.6
# Line 85  contains Line 82  contains
82    
83      call assert(any(iflag_pbl == [6, 8, 9]), "yamada4 iflag_pbl")      call assert(any(iflag_pbl == [6, 8, 9]), "yamada4 iflag_pbl")
84      knon = assert_eq([size(zlev, 1), size(zlay, 1), size(u, 1), size(v, 1), &      knon = assert_eq([size(zlev, 1), size(zlay, 1), size(u, 1), size(v, 1), &
85           size(teta, 1), size(cd), size(q2, 1), size(km, 1), size(kn, 1), &           size(teta, 1), size(ustar), size(q2, 1), size(km, 1), size(kn, 1)], &
86           size(kq, 1)], "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, size(kq, 2) - 1], "yamada4 klev")           size(kn, 2) - 1], "yamada4 klev")
90    
91      ipas = ipas + 1      ipas = ipas + 1
92    
# Line 251  contains Line 248  contains
248            zq = sqrt(q2(ig, k))            zq = sqrt(q2(ig, k))
249            km(ig, k) = l(ig, k)*zq*sm(ig, k)            km(ig, k) = l(ig, k)*zq*sm(ig, k)
250            kn(ig, k) = km(ig, k)*alpha(ig, k)            kn(ig, k) = km(ig, k)*alpha(ig, k)
           kq(ig, k) = l(ig, k)*zq*0.2  
251         enddo         enddo
252      enddo      enddo
253    
# Line 277  contains Line 273  contains
273            if (kn(ig, k).lt.kmin.or.km(ig, k).lt.kmin) then            if (kn(ig, k).lt.kmin.or.km(ig, k).lt.kmin) then
274               kn(ig, k) = kmin               kn(ig, k) = kmin
275               km(ig, k) = kmin               km(ig, k) = kmin
              kq(ig, k) = kmin  
276               ! la longueur de melange est suposee etre l = kap z               ! la longueur de melange est suposee etre l = kap z
277               ! K = l q Sm d'ou q2 = (K/l Sm)**2               ! K = l q Sm d'ou q2 = (K/l Sm)**2
278               q2(ig, k) = (qmin/sm(ig, k))**2               q2(ig, k) = (qmin/sm(ig, k))**2

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

  ViewVC Help
Powered by ViewVC 1.1.21