/[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 243 by guez, Tue Nov 14 14:38:36 2017 UTC revision 244 by guez, Tue Nov 14 14:56:42 2017 UTC
# Line 8  contains Line 8  contains
8         cdhmax, ksta, ksta_ter, ok_kzmin, ftsoil, qsol, paprs, pplay, fsnow, &         cdhmax, ksta, ksta_ter, ok_kzmin, ftsoil, qsol, paprs, pplay, fsnow, &
9         qsurf, evap, falbe, fluxlat, rain_fall, snow_f, fsolsw, fsollw, frugs, &         qsurf, evap, falbe, fluxlat, rain_fall, snow_f, fsolsw, fsollw, frugs, &
10         agesno, rugoro, d_t, d_q, d_u, d_v, d_ts, flux_t, flux_q, flux_u, &         agesno, rugoro, d_t, d_q, d_u, d_v, d_ts, flux_t, flux_q, flux_u, &
11         flux_v, cdragh, cdragm, q2, dflux_t, dflux_q, ycoefh, t2m, q2m, &         flux_v, cdragh, cdragm, q2, dflux_t, dflux_q, coefh, t2m, q2m, &
12         u10m_srf, v10m_srf, pblh, capcl, oliqcl, cteicl, pblt, therm, trmb1, &         u10m_srf, v10m_srf, pblh, capcl, oliqcl, cteicl, pblt, therm, trmb1, &
13         trmb2, trmb3, plcl, fqcalving, ffonte, run_off_lic_0)         trmb2, trmb3, plcl, fqcalving, ffonte, run_off_lic_0)
14    
# 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(:, 2:) ! (klon, 2:klev)      REAL, intent(out):: coefh(:, 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      ! "coefh" 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.
113    
114      REAL, INTENT(inout):: t2m(klon, nbsrf), q2m(klon, nbsrf)      REAL, INTENT(inout):: t2m(klon, nbsrf), q2m(klon, nbsrf)
# Line 164  contains Line 164  contains
164      REAL y_flux_t(klon), y_flux_q(klon)      REAL y_flux_t(klon), y_flux_q(klon)
165      REAL y_flux_u(klon), y_flux_v(klon)      REAL y_flux_u(klon), y_flux_v(klon)
166      REAL y_dflux_t(klon), y_dflux_q(klon)      REAL y_dflux_t(klon), y_dflux_q(klon)
167      REAL coefh(klon, 2:klev), coefm(klon, 2:klev)      REAL ycoefh(klon, 2:klev), ycoefm(klon, 2:klev)
168      real ycdragh(klon), ycdragm(klon)      real ycdragh(klon), ycdragm(klon)
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)
# Line 243  contains Line 243  contains
243      d_q = 0.      d_q = 0.
244      d_u = 0.      d_u = 0.
245      d_v = 0.      d_v = 0.
246      ycoefh = 0.      coefh = 0.
247    
248      ! Initialisation des "pourcentages potentiels". On consid\`ere ici qu'on      ! Initialisation des "pourcentages potentiels". On consid\`ere ici qu'on
249      ! peut avoir potentiellement de la glace sur tout le domaine oc\'eanique      ! peut avoir potentiellement de la glace sur tout le domaine oc\'eanique
# Line 311  contains Line 311  contains
311            END DO            END DO
312    
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), ycoefm(:knon, :), &
315                 coefh(:knon, :), ycdragm(:knon), ycdragh(:knon))                 ycoefh(: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, :), &               CALL coefkz2(nsrf, knon, ypaprs, ypplay, yt, ycoefm0(:knon, :), &
319                    ycoefh0(:knon, :))                    ycoefh0(:knon, :))
320               coefm(:knon, :) = max(coefm(:knon, :), ycoefm0(:knon, :))               ycoefm(:knon, :) = max(ycoefm(:knon, :), ycoefm0(:knon, :))
321               coefh(:knon, :) = max(coefh(:knon, :), ycoefh0(:knon, :))               ycoefh(:knon, :) = max(ycoefh(:knon, :), ycoefh0(:knon, :))
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 334  contains Line 334  contains
334               CALL coefkzmin(knon, ypaprs, ypplay, yu, yv, yt, yq, &               CALL coefkzmin(knon, ypaprs, ypplay, yu, yv, yt, yq, &
335                    ycdragm(:knon), ycoefh0(:knon, :))                    ycdragm(:knon), ycoefh0(:knon, :))
336               ycoefm0(:knon, :) = ycoefh0(:knon, :)               ycoefm0(:knon, :) = ycoefh0(:knon, :)
337               coefm(:knon, :) = max(coefm(:knon, :), ycoefm0(:knon, :))               ycoefm(:knon, :) = max(ycoefm(:knon, :), ycoefm0(:knon, :))
338               coefh(:knon, :) = max(coefh(:knon, :), ycoefh0(:knon, :))               ycoefh(:knon, :) = max(ycoefh(:knon, :), ycoefh0(:knon, :))
339            END IF            END IF
340    
341            IF (iflag_pbl >= 6) THEN            IF (iflag_pbl >= 6) THEN
# Line 376  contains Line 376  contains
376               CALL yamada4(dtime, rg, zlev(:knon, :), yzlay(:knon, :), &               CALL yamada4(dtime, rg, zlev(:knon, :), yzlay(:knon, :), &
377                    yu(:knon, :), yv(:knon, :), yteta(:knon, :), yq2(:knon, :), &                    yu(:knon, :), yv(:knon, :), yteta(:knon, :), yq2(:knon, :), &
378                    ykmm(:knon, :), ykmn(:knon, :), ustar(:knon))                    ykmm(:knon, :), ykmn(:knon, :), ustar(:knon))
379               coefm(:knon, :) = ykmm(:knon, 2:klev)               ycoefm(:knon, :) = ykmm(:knon, 2:klev)
380               coefh(:knon, :) = ykmn(:knon, 2:klev)               ycoefh(:knon, :) = ykmn(:knon, 2:klev)
381            END IF            END IF
382    
383            CALL clvent(dtime, yu(:knon, 1), yv(:knon, 1), coefm(:knon, :), &            CALL clvent(dtime, yu(:knon, 1), yv(:knon, 1), ycoefm(:knon, :), &
384                 ycdragm(:knon), yt(:knon, :), yu(:knon, :), ypaprs(:knon, :), &                 ycdragm(:knon), yt(:knon, :), yu(:knon, :), ypaprs(:knon, :), &
385                 ypplay(:knon, :), ydelp(:knon, :), y_d_u(:knon, :), &                 ypplay(:knon, :), ydelp(:knon, :), y_d_u(:knon, :), &
386                 y_flux_u(:knon))                 y_flux_u(:knon))
387            CALL clvent(dtime, yu(:knon, 1), yv(:knon, 1), coefm(:knon, :), &            CALL clvent(dtime, yu(:knon, 1), yv(:knon, 1), ycoefm(:knon, :), &
388                 ycdragm(:knon), yt(:knon, :), yv(:knon, :), ypaprs(:knon, :), &                 ycdragm(:knon), yt(:knon, :), yv(:knon, :), ypaprs(:knon, :), &
389                 ypplay(:knon, :), ydelp(:knon, :), y_d_v(:knon, :), &                 ypplay(:knon, :), ydelp(:knon, :), y_d_v(:knon, :), &
390                 y_flux_v(:knon))                 y_flux_v(:knon))
# Line 392  contains Line 392  contains
392            ! calculer la diffusion de "q" et de "h"            ! calculer la diffusion de "q" et de "h"
393            CALL clqh(dtime, julien, firstcal, nsrf, ni(:knon), &            CALL clqh(dtime, julien, firstcal, nsrf, ni(:knon), &
394                 ytsoil(:knon, :), yqsol(:knon), mu0, yrugos, yrugoro, &                 ytsoil(:knon, :), yqsol(:knon), mu0, yrugos, yrugoro, &
395                 yu(:knon, 1), yv(:knon, 1), coefh(:knon, :), ycdragh(:knon), &                 yu(:knon, 1), yv(:knon, 1), ycoefh(:knon, :), ycdragh(:knon), &
396                 yt, yq, yts(:knon), ypaprs, ypplay, ydelp, yrads(:knon), &                 yt, yq, yts(:knon), ypaprs, ypplay, ydelp, yrads(:knon), &
397                 yalb(:knon), snow(:knon), yqsurf, yrain_f, ysnow_f, &                 yalb(:knon), snow(:knon), yqsurf, yrain_f, ysnow_f, &
398                 yfluxlat(:knon), pctsrf_new_sic, yagesno(:knon), y_d_t, y_d_q, &                 yfluxlat(:knon), pctsrf_new_sic, yagesno(:knon), y_d_t, y_d_q, &
# Line 478  contains Line 478  contains
478               END DO               END DO
479            END DO            END DO
480    
481            forall (k = 2:klev) ycoefh(ni(:knon), k) &            forall (k = 2:klev) coefh(ni(:knon), k) &
482                 = ycoefh(ni(:knon), k) + coefh(:knon, k) * ypct(:knon)                 = coefh(ni(:knon), k) + ycoefh(:knon, k) * ypct(:knon)
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.243  
changed lines
  Added in v.244

  ViewVC Help
Powered by ViewVC 1.1.21