/[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 154 by guez, Tue Jul 7 17:49:23 2015 UTC revision 178 by guez, Fri Mar 11 18:47:26 2016 UTC
# Line 5  module clmain_m Line 5  module clmain_m
5  contains  contains
6    
7    SUBROUTINE clmain(dtime, itap, pctsrf, pctsrf_new, t, q, u, v, jour, rmu0, &    SUBROUTINE clmain(dtime, itap, pctsrf, pctsrf_new, t, q, u, v, jour, rmu0, &
8         co2_ppm, ts, cdmmax, cdhmax, ksta, ksta_ter, ok_kzmin, ftsoil, qsol, &         ts, cdmmax, cdhmax, ksta, ksta_ter, ok_kzmin, ftsoil, qsol, &
9         paprs, pplay, snow, qsurf, evap, albe, alblw, fluxlat, rain_fall, &         paprs, pplay, snow, qsurf, evap, falbe, fluxlat, rain_fall, snow_f, &
10         snow_f, solsw, sollw, fder, rlat, rugos, debut, agesno, rugoro, d_t, &         solsw, sollw, fder, rlat, rugos, debut, agesno, rugoro, d_t, d_q, d_u, &
11         d_q, d_u, d_v, d_ts, flux_t, flux_q, flux_u, flux_v, cdragh, cdragm, &         d_v, d_ts, flux_t, flux_q, flux_u, flux_v, cdragh, cdragm, q2, &
12         q2, dflux_t, dflux_q, ycoefh, zu1, zv1, t2m, q2m, u10m, v10m, pblh, &         dflux_t, dflux_q, ycoefh, zu1, zv1, t2m, q2m, u10m, v10m, pblh, capcl, &
13         capcl, oliqcl, cteicl, pblt, therm, trmb1, trmb2, trmb3, plcl, &         oliqcl, cteicl, pblt, therm, trmb1, trmb2, trmb3, plcl, fqcalving, &
14         fqcalving, ffonte, run_off_lic_0, flux_o, flux_g, tslab)         ffonte, run_off_lic_0)
15    
16      ! From phylmd/clmain.F, version 1.6, 2005/11/16 14:47:19      ! From phylmd/clmain.F, version 1.6, 2005/11/16 14:47:19
17      ! Author: Z. X. Li (LMD/CNRS), date: 1993/08/18      ! Author: Z. X. Li (LMD/CNRS), date: 1993/08/18
# Line 33  contains Line 33  contains
33      use coefkzmin_m, only: coefkzmin      use coefkzmin_m, only: coefkzmin
34      USE conf_gcm_m, ONLY: prt_level      USE conf_gcm_m, ONLY: prt_level
35      USE conf_phys_m, ONLY: iflag_pbl      USE conf_phys_m, ONLY: iflag_pbl
     USE dimens_m, ONLY: iim, jjm  
36      USE dimphy, ONLY: klev, klon, zmasq      USE dimphy, ONLY: klev, klon, zmasq
37      USE dimsoil, ONLY: nsoilmx      USE dimsoil, ONLY: nsoilmx
38      use hbtm_m, only: hbtm      use hbtm_m, only: hbtm
# Line 56  contains Line 55  contains
55      REAL, INTENT(IN):: u(klon, klev), v(klon, klev) ! vitesse      REAL, INTENT(IN):: u(klon, klev), v(klon, klev) ! vitesse
56      INTEGER, INTENT(IN):: jour ! jour de l'annee en cours      INTEGER, INTENT(IN):: jour ! jour de l'annee en cours
57      REAL, intent(in):: rmu0(klon) ! cosinus de l'angle solaire zenithal          REAL, intent(in):: rmu0(klon) ! cosinus de l'angle solaire zenithal    
     REAL, intent(in):: co2_ppm ! taux CO2 atmosphere  
58      REAL, INTENT(IN):: ts(klon, nbsrf) ! temperature du sol (en Kelvin)      REAL, INTENT(IN):: ts(klon, nbsrf) ! temperature du sol (en Kelvin)
59      REAL, INTENT(IN):: cdmmax, cdhmax ! seuils cdrm, cdrh      REAL, INTENT(IN):: cdmmax, cdhmax ! seuils cdrm, cdrh
60      REAL, INTENT(IN):: ksta, ksta_ter      REAL, INTENT(IN):: ksta, ksta_ter
# Line 73  contains Line 71  contains
71      REAL snow(klon, nbsrf)      REAL snow(klon, nbsrf)
72      REAL qsurf(klon, nbsrf)      REAL qsurf(klon, nbsrf)
73      REAL evap(klon, nbsrf)      REAL evap(klon, nbsrf)
74      REAL albe(klon, nbsrf)      REAL, intent(inout):: falbe(klon, nbsrf)
     REAL alblw(klon, nbsrf)  
75    
76      REAL fluxlat(klon, nbsrf)      REAL fluxlat(klon, nbsrf)
77    
# Line 150  contains Line 147  contains
147      !           hauteur de neige, en kg/m2/s      !           hauteur de neige, en kg/m2/s
148      REAL run_off_lic_0(klon)      REAL run_off_lic_0(klon)
149    
     REAL flux_o(klon), flux_g(klon)  
     !IM "slab" ocean  
     ! flux_g---output-R-  flux glace (pour OCEAN='slab  ')  
     ! flux_o---output-R-  flux ocean (pour OCEAN='slab  ')  
   
     REAL tslab(klon)  
     ! tslab-in/output-R temperature du slab ocean (en Kelvin)  
     ! uniqmnt pour slab  
   
150      ! Local:      ! Local:
151    
     REAL y_flux_o(klon), y_flux_g(klon)  
     real ytslab(klon)  
152      REAL y_fqcalving(klon), y_ffonte(klon)      REAL y_fqcalving(klon), y_ffonte(klon)
153      real y_run_off_lic_0(klon)      real y_run_off_lic_0(klon)
154    
# Line 172  contains Line 158  contains
158    
159      REAL yts(klon), yrugos(klon), ypct(klon), yz0_new(klon)      REAL yts(klon), yrugos(klon), ypct(klon), yz0_new(klon)
160      REAL yalb(klon)      REAL yalb(klon)
     REAL yalblw(klon)  
161      REAL yu1(klon), yv1(klon)      REAL yu1(klon), yv1(klon)
162      ! on rajoute en output yu1 et yv1 qui sont les vents dans      ! on rajoute en output yu1 et yv1 qui sont les vents dans
163      ! la premiere couche      ! la premiere couche
# Line 187  contains Line 172  contains
172      REAL ysnow_f(klon)      REAL ysnow_f(klon)
173      ! solid water mass flux (kg/m2/s), positive down      ! solid water mass flux (kg/m2/s), positive down
174    
     REAL ysollw(klon), ysolsw(klon)  
175      REAL yfder(klon)      REAL yfder(klon)
176      REAL yrugm(klon), yrads(klon), yrugoro(klon)      REAL yrugm(klon), yrads(klon), yrugoro(klon)
177    
# Line 226  contains Line 210  contains
210    
211      REAL yt2m(klon), yq2m(klon), yu10m(klon)      REAL yt2m(klon), yq2m(klon), yu10m(klon)
212      REAL yustar(klon)      REAL yustar(klon)
     ! -- LOOP  
     REAL yu10mx(klon)  
     REAL yu10my(klon)  
     REAL ywindsp(klon)  
     ! -- LOOP  
213    
214      REAL yt10m(klon), yq10m(klon)      REAL yt10m(klon), yq10m(klon)
215      REAL ypblh(klon)      REAL ypblh(klon)
# Line 282  contains Line 261  contains
261      yts = 0.      yts = 0.
262      ysnow = 0.      ysnow = 0.
263      yqsurf = 0.      yqsurf = 0.
     yalb = 0.  
264      yrain_f = 0.      yrain_f = 0.
265      ysnow_f = 0.      ysnow_f = 0.
266      yfder = 0.      yfder = 0.
     ysolsw = 0.  
     ysollw = 0.  
267      yrugos = 0.      yrugos = 0.
268      yu1 = 0.      yu1 = 0.
269      yv1 = 0.      yv1 = 0.
# Line 306  contains Line 282  contains
282      y_dflux_q = 0.      y_dflux_q = 0.
283      ytsoil = 999999.      ytsoil = 999999.
284      yrugoro = 0.      yrugoro = 0.
     yu10mx = 0.  
     yu10my = 0.  
     ywindsp = 0.  
285      d_ts = 0.      d_ts = 0.
286      yfluxlat = 0.      yfluxlat = 0.
287      flux_t = 0.      flux_t = 0.
# Line 349  contains Line 322  contains
322               i = ni(j)               i = ni(j)
323               ypct(j) = pctsrf(i, nsrf)               ypct(j) = pctsrf(i, nsrf)
324               yts(j) = ts(i, nsrf)               yts(j) = ts(i, nsrf)
              ytslab(i) = tslab(i)  
325               ysnow(j) = snow(i, nsrf)               ysnow(j) = snow(i, nsrf)
326               yqsurf(j) = qsurf(i, nsrf)               yqsurf(j) = qsurf(i, nsrf)
327               yalb(j) = albe(i, nsrf)               yalb(j) = falbe(i, nsrf)
328               yrain_f(j) = rain_fall(i)               yrain_f(j) = rain_fall(i)
329               ysnow_f(j) = snow_f(i)               ysnow_f(j) = snow_f(i)
330               yagesno(j) = agesno(i, nsrf)               yagesno(j) = agesno(i, nsrf)
331               yfder(j) = fder(i)               yfder(j) = fder(i)
              ysolsw(j) = solsw(i, nsrf)  
              ysollw(j) = sollw(i, nsrf)  
332               yrugos(j) = rugos(i, nsrf)               yrugos(j) = rugos(i, nsrf)
333               yrugoro(j) = rugoro(i)               yrugoro(j) = rugoro(i)
334               yu1(j) = u1lay(i)               yu1(j) = u1lay(i)
335               yv1(j) = v1lay(i)               yv1(j) = v1lay(i)
336               yrads(j) = ysolsw(j) + ysollw(j)               yrads(j) = solsw(i, nsrf) + sollw(i, nsrf)
337               ypaprs(j, klev+1) = paprs(i, klev+1)               ypaprs(j, klev+1) = paprs(i, klev+1)
338               y_run_off_lic_0(j) = run_off_lic_0(i)               y_run_off_lic_0(j) = run_off_lic_0(i)
              yu10mx(j) = u10m(i, nsrf)  
              yu10my(j) = v10m(i, nsrf)  
              ywindsp(j) = sqrt(yu10mx(j)*yu10mx(j)+yu10my(j)*yu10my(j))  
339            END DO            END DO
340    
341            ! For continent, copy soil water content            ! For continent, copy soil water content
# Line 476  contains Line 443  contains
443    
444            ! calculer la diffusion de "q" et de "h"            ! calculer la diffusion de "q" et de "h"
445            CALL clqh(dtime, itap, jour, debut, rlat, knon, nsrf, ni(:knon), &            CALL clqh(dtime, itap, jour, debut, rlat, knon, nsrf, ni(:knon), &
446                 pctsrf, ytsoil, yqsol, rmu0, co2_ppm, yrugos, yrugoro, yu1, &                 pctsrf, ytsoil, yqsol, rmu0, yrugos, yrugoro, yu1, &
447                 yv1, coefh(:knon, :), yt, yq, yts, ypaprs, ypplay, ydelp, &                 yv1, coefh(:knon, :), yt, yq, yts, ypaprs, ypplay, ydelp, &
448                 yrads, yalb, yalblw(:knon), ysnow, yqsurf, yrain_f, ysnow_f, &                 yrads, yalb(:knon), ysnow, yqsurf, yrain_f, ysnow_f, yfder, &
449                 yfder, ysolsw, yfluxlat, pctsrf_new, yagesno, y_d_t, y_d_q, &                 yfluxlat, pctsrf_new, yagesno(:knon), y_d_t, y_d_q, &
450                 y_d_ts(:knon), yz0_new, y_flux_t, y_flux_q, y_dflux_t, &                 y_d_ts(:knon), yz0_new, y_flux_t, y_flux_q, y_dflux_t, &
451                 y_dflux_q, y_fqcalving, y_ffonte, y_run_off_lic_0, y_flux_o, &                 y_dflux_q, y_fqcalving, y_ffonte, y_run_off_lic_0)
                y_flux_g)  
452    
453            ! calculer la longueur de rugosite sur ocean            ! calculer la longueur de rugosite sur ocean
454            yrugm = 0.            yrugm = 0.
# Line 518  contains Line 484  contains
484    
485            evap(:, nsrf) = -flux_q(:, 1, nsrf)            evap(:, nsrf) = -flux_q(:, 1, nsrf)
486    
487            albe(:, nsrf) = 0.            falbe(:, nsrf) = 0.
           alblw(:, nsrf) = 0.  
488            snow(:, nsrf) = 0.            snow(:, nsrf) = 0.
489            qsurf(:, nsrf) = 0.            qsurf(:, nsrf) = 0.
490            rugos(:, nsrf) = 0.            rugos(:, nsrf) = 0.
# Line 527  contains Line 492  contains
492            DO j = 1, knon            DO j = 1, knon
493               i = ni(j)               i = ni(j)
494               d_ts(i, nsrf) = y_d_ts(j)               d_ts(i, nsrf) = y_d_ts(j)
495               albe(i, nsrf) = yalb(j)               falbe(i, nsrf) = yalb(j)
              alblw(i, nsrf) = yalblw(j)  
496               snow(i, nsrf) = ysnow(j)               snow(i, nsrf) = ysnow(j)
497               qsurf(i, nsrf) = yqsurf(j)               qsurf(i, nsrf) = yqsurf(j)
498               rugos(i, nsrf) = yz0_new(j)               rugos(i, nsrf) = yz0_new(j)
# Line 635  contains Line 599  contains
599                  q2(i, k, nsrf) = yq2(j, k)                  q2(i, k, nsrf) = yq2(j, k)
600               END DO               END DO
601            END DO            END DO
           !IM "slab" ocean  
           IF (nsrf == is_oce) THEN  
              DO j = 1, knon  
                 ! on projette sur la grille globale  
                 i = ni(j)  
                 IF (pctsrf_new(i, is_oce)>epsfra) THEN  
                    flux_o(i) = y_flux_o(j)  
                 ELSE  
                    flux_o(i) = 0.  
                 END IF  
              END DO  
           END IF  
   
           IF (nsrf == is_sic) THEN  
              DO j = 1, knon  
                 i = ni(j)  
                 ! On pond\`ere lorsque l'on fait le bilan au sol :  
                 IF (pctsrf_new(i, is_sic)>epsfra) THEN  
                    flux_g(i) = y_flux_g(j)  
                 ELSE  
                    flux_g(i) = 0.  
                 END IF  
              END DO  
   
           END IF  
602         end IF if_knon         end IF if_knon
603      END DO loop_surface      END DO loop_surface
604    

Legend:
Removed from v.154  
changed lines
  Added in v.178

  ViewVC Help
Powered by ViewVC 1.1.21