/[lmdze]/trunk/Sources/phylmd/clmain.f
ViewVC logotype

Diff of /trunk/Sources/phylmd/clmain.f

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

revision 239 by guez, Fri Nov 10 15:16:48 2017 UTC revision 243 by guez, Tue Nov 14 14:38:36 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)
175      REAL yq2(klon, klev + 1)      REAL yq2(klon, klev + 1)
# Line 310  contains Line 310  contains
310               END DO               END DO
311            END DO            END DO
312    
           ! calculer Cdrag et les coefficients d'echange  
313            CALL coefkz(nsrf, ypaprs, ypplay, ksta, ksta_ter, yts(:knon), &            CALL coefkz(nsrf, ypaprs, ypplay, ksta, ksta_ter, yts(:knon), &
314                 yrugos, yu, yv, yt, yq, yqsurf(:knon), coefm(:knon, :), &                 yrugos, yu, yv, yt, yq, yqsurf(:knon), coefm(:knon, :), &
315                 coefh(:knon, :), ycdragm(:knon), ycdragh(:knon))                 coefh(:knon, :), ycdragm(:knon), ycdragh(:knon))
316    
317            IF (iflag_pbl == 1) THEN            IF (iflag_pbl == 1) THEN
318               CALL coefkz2(nsrf, knon, ypaprs, ypplay, yt, ycoefm0(:knon, 2:), &               CALL coefkz2(nsrf, knon, ypaprs, ypplay, yt, ycoefm0(:knon, :), &
319                    ycoefh0(:knon, 2:))                    ycoefh0(:knon, :))
320               ycoefm0(:knon, 1) = 0.               coefm(:knon, :) = max(coefm(:knon, :), ycoefm0(:knon, :))
321               ycoefh0(:knon, 1) = 0.               coefh(:knon, :) = max(coefh(:knon, :), ycoefh0(:knon, :))
              coefm(:knon, :) = max(coefm(:knon, :), ycoefm0(:knon, 2:))  
              coefh(:knon, :) = max(coefh(:knon, :), ycoefh0(:knon, 2:))  
322               ycdragm(:knon) = max(ycdragm(:knon), 0.)               ycdragm(:knon) = max(ycdragm(:knon), 0.)
323               ycdragh(:knon) = max(ycdragh(:knon), 0.)               ycdragh(:knon) = max(ycdragh(:knon), 0.)
324            END IF            END IF
# Line 335  contains Line 332  contains
332            IF (ok_kzmin) THEN            IF (ok_kzmin) THEN
333               ! Calcul d'une diffusion minimale pour les conditions tres stables               ! Calcul d'une diffusion minimale pour les conditions tres stables
334               CALL coefkzmin(knon, ypaprs, ypplay, yu, yv, yt, yq, &               CALL coefkzmin(knon, ypaprs, ypplay, yu, yv, yt, yq, &
335                    ycdragm(:knon), ycoefh0(:knon, 2:))                    ycdragm(:knon), ycoefh0(:knon, :))
336               ycoefm0(:knon, 2:) = ycoefh0(:knon, 2:)               ycoefm0(:knon, :) = ycoefh0(:knon, :)
337               coefm(:knon, :) = max(coefm(:knon, :), ycoefm0(:knon, 2:))               coefm(:knon, :) = max(coefm(:knon, :), ycoefm0(:knon, :))
338               coefh(:knon, :) = max(coefh(:knon, :), ycoefh0(:knon, 2:))               coefh(:knon, :) = max(coefh(:knon, :), ycoefh0(:knon, :))
339            END IF            END IF
340    
341            IF (iflag_pbl >= 6) THEN            IF (iflag_pbl >= 6) THEN
# Line 418  contains Line 415  contains
415               y_dflux_q(j) = y_dflux_q(j) * ypct(j)               y_dflux_q(j) = y_dflux_q(j) * ypct(j)
416            END DO            END DO
417    
           DO k = 2, klev  
              DO j = 1, knon  
                 i = ni(j)  
                 coefh(j, k) = coefh(j, k) * ypct(j)  
                 coefm(j, k) = coefm(j, k) * ypct(j)  
              END DO  
           END DO  
           DO j = 1, knon  
              i = ni(j)  
              ycdragh(j) = ycdragh(j) * ypct(j)  
              ycdragm(j) = ycdragm(j) * ypct(j)  
           END DO  
418            DO k = 1, klev            DO k = 1, klev
419               DO j = 1, knon               DO j = 1, knon
420                  i = ni(j)                  i = ni(j)
# Line 466  contains Line 451  contains
451               agesno(i, nsrf) = yagesno(j)               agesno(i, nsrf) = yagesno(j)
452               fqcalving(i, nsrf) = y_fqcalving(j)               fqcalving(i, nsrf) = y_fqcalving(j)
453               ffonte(i, nsrf) = y_ffonte(j)               ffonte(i, nsrf) = y_ffonte(j)
454               cdragh(i) = cdragh(i) + ycdragh(j)               cdragh(i) = cdragh(i) + ycdragh(j) * ypct(j)
455               cdragm(i) = cdragm(i) + ycdragm(j)               cdragm(i) = cdragm(i) + ycdragm(j) * ypct(j)
456               dflux_t(i) = dflux_t(i) + y_dflux_t(j)               dflux_t(i) = dflux_t(i) + y_dflux_t(j)
457               dflux_q(i) = dflux_q(i) + y_dflux_q(j)               dflux_q(i) = dflux_q(i) + y_dflux_q(j)
458            END DO            END DO
# Line 492  contains Line 477  contains
477                  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)
478               END DO               END DO
479            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  
480    
481            DO j = 1, knon            forall (k = 2:klev) ycoefh(ni(:knon), k) &
482               i = ni(j)                 = ycoefh(ni(:knon), k) + coefh(:knon, k) * ypct(:knon)
              ycoefh(i, 1) = ycoefh(i, 1) + ycdragh(j)  
           END DO  
483    
484            ! diagnostic t, q a 2m et u, v a 10m            ! diagnostic t, q a 2m et u, v a 10m
485    

Legend:
Removed from v.239  
changed lines
  Added in v.243

  ViewVC Help
Powered by ViewVC 1.1.21