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

Diff of /trunk/phylmd/pbl_surface.f

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

revision 237 by guez, Thu Nov 9 13:26:00 2017 UTC revision 242 by guez, Mon Nov 13 12:12:41 2017 UTC
# Line 106  contains Line 106  contains
106      ! dflux_q derive du flux latent      ! dflux_q derive du flux latent
107      ! IM "slab" ocean      ! IM "slab" ocean
108    
109      REAL, intent(out):: ycoefh(:, :) ! (klon, klev)      REAL, intent(out):: ycoefh(:, 2:) ! (klon, 2:klev)
110      ! Pour pouvoir extraire les coefficients d'\'echange, le champ      ! Pour pouvoir extraire les coefficients d'\'echange, le champ
111      ! "ycoefh" a \'et\'e cr\'e\'e. Nous avons moyenn\'e les valeurs de      ! "ycoefh" a \'et\'e cr\'e\'e. Nous avons moyenn\'e les valeurs de
112      ! ce champ sur les quatre sous-surfaces du mod\`ele.      ! ce champ sur les quatre sous-surfaces du mod\`ele.
# Line 169  contains Line 169  contains
169      REAL yu(klon, klev), yv(klon, klev)      REAL yu(klon, klev), yv(klon, klev)
170      REAL yt(klon, klev), yq(klon, klev)      REAL yt(klon, klev), yq(klon, klev)
171      REAL ypaprs(klon, klev + 1), ypplay(klon, klev), ydelp(klon, klev)      REAL ypaprs(klon, klev + 1), ypplay(klon, klev), ydelp(klon, klev)
172      REAL ycoefm0(klon, klev), ycoefh0(klon, klev)      REAL ycoefm0(klon, 2:klev), ycoefh0(klon, 2:klev)
173      REAL yzlay(klon, klev), zlev(klon, klev + 1), yteta(klon, klev)      REAL yzlay(klon, klev), zlev(klon, klev + 1), yteta(klon, klev)
174      REAL ykmm(klon, klev + 1), ykmn(klon, klev + 1)      REAL ykmm(klon, klev + 1), ykmn(klon, klev + 1)
     REAL ykmq(klon, klev + 1)  
175      REAL yq2(klon, klev + 1)      REAL yq2(klon, klev + 1)
176      REAL delp(klon, klev)      REAL delp(klon, klev)
177      INTEGER i, k, nsrf      INTEGER i, k, nsrf
# Line 317  contains Line 316  contains
316                 coefh(:knon, :), ycdragm(:knon), ycdragh(:knon))                 coefh(:knon, :), ycdragm(:knon), ycdragh(:knon))
317    
318            IF (iflag_pbl == 1) THEN            IF (iflag_pbl == 1) THEN
319               CALL coefkz2(nsrf, knon, ypaprs, ypplay, yt, ycoefm0(:knon, 2:), &               CALL coefkz2(nsrf, knon, ypaprs, ypplay, yt, ycoefm0(:knon, :), &
320                    ycoefh0(:knon, 2:))                    ycoefh0(:knon, :))
321               ycoefm0(:knon, 1) = 0.               coefm(:knon, :) = max(coefm(:knon, :), ycoefm0(:knon, :))
322               ycoefh0(:knon, 1) = 0.               coefh(:knon, :) = max(coefh(:knon, :), ycoefh0(:knon, :))
323               coefm(:knon, :) = max(coefm(:knon, :), ycoefm0(:knon, 2:))               ycdragm(:knon) = max(ycdragm(:knon), 0.)
324               coefh(:knon, :) = max(coefh(:knon, :), ycoefh0(:knon, 2:))               ycdragh(:knon) = max(ycdragh(:knon), 0.)
              ycdragm(:knon) = max(ycdragm(:knon), ycoefm0(:knon, 1))  
              ycdragh(:knon) = max(ycdragh(:knon), ycoefh0(:knon, 1))  
325            END IF            END IF
326    
327            ! on met un seuil pour ycdragm et ycdragh            ! on met un seuil pour ycdragm et ycdragh
# Line 336  contains Line 333  contains
333            IF (ok_kzmin) THEN            IF (ok_kzmin) THEN
334               ! Calcul d'une diffusion minimale pour les conditions tres stables               ! Calcul d'une diffusion minimale pour les conditions tres stables
335               CALL coefkzmin(knon, ypaprs, ypplay, yu, yv, yt, yq, &               CALL coefkzmin(knon, ypaprs, ypplay, yu, yv, yt, yq, &
336                    ycdragm(:knon), ycoefm0(:knon, 2:), ycoefh0(:knon, 2:))                    ycdragm(:knon), ycoefh0(:knon, :))
337               coefm(:knon, :) = max(coefm(:knon, :), ycoefm0(:knon, 2:))               ycoefm0(:knon, :) = ycoefh0(:knon, :)
338               coefh(:knon, :) = max(coefh(:knon, :), ycoefh0(:knon, 2:))               coefm(:knon, :) = max(coefm(:knon, :), ycoefm0(:knon, :))
339               ycdragm(:knon) = max(ycdragm(:knon), ycoefm0(:knon, 1))               coefh(:knon, :) = max(coefh(:knon, :), ycoefh0(:knon, :))
              ycdragh(:knon) = max(ycdragh(:knon), ycoefh0(:knon, 1))  
340            END IF            END IF
341    
342            IF (iflag_pbl >= 6) THEN            IF (iflag_pbl >= 6) THEN
# Line 379  contains Line 375  contains
375    
376               ustar(:knon) = ustarhb(yu(:knon, 1), yv(:knon, 1), ycdragm(:knon))               ustar(:knon) = ustarhb(yu(:knon, 1), yv(:knon, 1), ycdragm(:knon))
377               CALL yamada4(dtime, rg, zlev(:knon, :), yzlay(:knon, :), &               CALL yamada4(dtime, rg, zlev(:knon, :), yzlay(:knon, :), &
378                    yu(:knon, :), yv(:knon, :), yteta(:knon, :), &                    yu(:knon, :), yv(:knon, :), yteta(:knon, :), yq2(:knon, :), &
379                    ycdragm(:knon), yq2(:knon, :), ykmm(:knon, :), &                    ykmm(:knon, :), ykmn(:knon, :), ustar(:knon))
380                    ykmn(:knon, :), ykmq(:knon, :), ustar(:knon))               coefm(:knon, :) = ykmm(:knon, 2:klev)
381               coefm(:knon, 2:) = ykmm(:knon, 2:klev)               coefh(:knon, :) = ykmn(:knon, 2:klev)
              coefh(:knon, 2:) = ykmn(:knon, 2:klev)  
382            END IF            END IF
383    
384            CALL clvent(dtime, yu(:knon, 1), yv(:knon, 1), coefm(:knon, :), &            CALL clvent(dtime, yu(:knon, 1), yv(:knon, 1), coefm(:knon, :), &
# Line 495  contains Line 490  contains
490                  d_v(i, k) = d_v(i, k) + y_d_v(j, k)                  d_v(i, k) = d_v(i, k) + y_d_v(j, k)
491               END DO               END DO
492            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  
493    
494            DO j = 1, knon            ycoefh(ni(:knon), :) = ycoefh(ni(:knon), :) + coefh(:knon, :)
              i = ni(j)  
              ycoefh(i, 1) = ycoefh(i, 1) + ycdragh(j)  
           END DO  
495    
496            ! diagnostic t, q a 2m et u, v a 10m            ! diagnostic t, q a 2m et u, v a 10m
497    

Legend:
Removed from v.237  
changed lines
  Added in v.242

  ViewVC Help
Powered by ViewVC 1.1.21