/[lmdze]/trunk/phylmd/physiq.f90
ViewVC logotype

Diff of /trunk/phylmd/physiq.f90

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

revision 344 by guez, Tue Nov 12 15:18:14 2019 UTC revision 346 by guez, Mon Dec 9 20:15:29 2019 UTC
# Line 141  contains Line 141  contains
141      REAL, save:: radsol(klon)      REAL, save:: radsol(klon)
142      ! Bilan radiatif net au sol (W/m2), positif vers le bas. Must be      ! Bilan radiatif net au sol (W/m2), positif vers le bas. Must be
143      ! saved because radlwsw is not called at every time step.      ! saved because radlwsw is not called at every time step.
144        
145      REAL, save:: ftsol(klon, nbsrf) ! skin temperature of surface fraction, in K      REAL, save:: ftsol(klon, nbsrf) ! skin temperature of surface fraction, in K
146    
147      REAL, save:: ftsoil(klon, nsoilmx, nbsrf)      REAL, save:: ftsoil(klon, nsoilmx, nbsrf)
148      ! soil temperature of surface fraction      ! temperature of surface fraction inside the ground, in K, layer 1
149        ! nearest to the surface
150    
151      REAL fluxlat(klon, nbsrf) ! flux de chaleur latente, en W m-2      REAL fluxlat(klon, nbsrf) ! flux de chaleur latente, en W m-2
152    
# Line 263  contains Line 264  contains
264      REAL, save:: sollw(klon) ! surface net downward longwave flux, in W m-2      REAL, save:: sollw(klon) ! surface net downward longwave flux, in W m-2
265      real, save:: sollwdown(klon) ! downwelling longwave flux at surface      real, save:: sollwdown(klon) ! downwelling longwave flux at surface
266      REAL, save:: topsw0(klon), toplw0(klon), solsw0(klon), sollw0(klon)      REAL, save:: topsw0(klon), toplw0(klon), solsw0(klon), sollw0(klon)
     REAL, save:: albpla(klon)  
267    
268      REAL conv_q(klon, llm) ! convergence de l'humidite (kg / kg / s)      REAL conv_q(klon, llm) ! convergence de l'humidite (kg / kg / s)
269      REAL conv_t(klon, llm) ! convergence of temperature (K / s)      REAL conv_t(klon, llm) ! convergence of temperature (K / s)
# Line 272  contains Line 272  contains
272      REAL cldt(klon), cldq(klon) ! nuage total, eau liquide integree      REAL cldt(klon), cldq(klon) ! nuage total, eau liquide integree
273    
274      REAL zxfluxlat(klon)      REAL zxfluxlat(klon)
275      REAL dist, mu0(klon), fract(klon)      REAL dist ! distance Terre-Soleil, en ua
276        real mu0(klon), fract(klon)
277      real longi      real longi
278      REAL z_avant(klon), z_apres(klon), z_factor(klon)      REAL z_avant(klon), z_apres(klon), z_factor(klon)
279      REAL zb      REAL zb
# Line 311  contains Line 312  contains
312      ! eva: \'evaporation de l'eau liquide nuageuse      ! eva: \'evaporation de l'eau liquide nuageuse
313      ! vdf: vertical diffusion in boundary layer      ! vdf: vertical diffusion in boundary layer
314      REAL d_t_con(klon, llm), d_q_con(klon, llm)      REAL d_t_con(klon, llm), d_q_con(klon, llm)
315      REAL, save:: d_u_con(klon, llm), d_v_con(klon, llm)      REAL d_u_con(klon, llm), d_v_con(klon, llm)
316      REAL d_t_lsc(klon, llm), d_q_lsc(klon, llm), d_ql_lsc(klon, llm)      REAL d_t_lsc(klon, llm), d_q_lsc(klon, llm), d_ql_lsc(klon, llm)
317      REAL d_t_ajs(klon, llm), d_q_ajs(klon, llm)      REAL d_t_ajs(klon, llm), d_q_ajs(klon, llm)
318      REAL d_u_ajs(klon, llm), d_v_ajs(klon, llm)      REAL d_u_ajs(klon, llm), d_v_ajs(klon, llm)
# Line 346  contains Line 347  contains
347    
348      ! Param\`etres li\'es au nouveau sch\'ema de nuages :      ! Param\`etres li\'es au nouveau sch\'ema de nuages :
349      real:: fact_cldcon = 0.375      real:: fact_cldcon = 0.375
350      real:: facttemps = 1.e-4  
351        real:: facttemps = 1.e-4 ! in s-1
352        ! 1 / facttemps est le temps de relaxation des ratqs.
353    
354      real facteur      real facteur
355    
356      integer:: iflag_cldcon = 1      integer:: iflag_cldcon = 1 ! allowed values: - 2, ..., 3
357      logical ptconv(klon, llm)      logical ptconv(klon, llm)
358    
359      ! Variables pour effectuer les appels en s\'erie :      ! Variables pour effectuer les appels en s\'erie :
# Line 382  contains Line 386  contains
386    
387      REAL, save:: u10m_srf(klon, nbsrf), v10m_srf(klon, nbsrf)      REAL, save:: u10m_srf(klon, nbsrf), v10m_srf(klon, nbsrf)
388      ! composantes du vent \`a 10 m      ! composantes du vent \`a 10 m
389        
390      REAL zt2m(klon), zq2m(klon) ! température, humidité 2 m moyenne sur 1 maille      REAL zt2m(klon), zq2m(klon) ! température, humidité 2 m moyenne sur 1 maille
391      REAL u10m(klon), v10m(klon) ! vent \`a 10 m moyenn\' sur les sous-surfaces      REAL u10m(klon), v10m(klon) ! vent \`a 10 m moyenn\' sur les sous-surfaces
392    
# Line 416  contains Line 420  contains
420         t2m = 0.         t2m = 0.
421         q2m = 0.         q2m = 0.
422         ffonte = 0.         ffonte = 0.
        d_u_con = 0.  
        d_v_con = 0.  
423         rnebcon0 = 0.         rnebcon0 = 0.
424         clwcon0 = 0.         clwcon0 = 0.
        rnebcon = 0.  
425         clwcon = 0.         clwcon = 0.
426         pblh =0. ! Hauteur de couche limite         pblh =0. ! Hauteur de couche limite
427         plcl =0. ! Niveau de condensation de la CLA         plcl =0. ! Niveau de condensation de la CLA
# Line 433  contains Line 434  contains
434         print *, "Enter namelist 'physiq_nml'."         print *, "Enter namelist 'physiq_nml'."
435         read(unit=*, nml=physiq_nml)         read(unit=*, nml=physiq_nml)
436         write(unit_nml, nml=physiq_nml)         write(unit_nml, nml=physiq_nml)
437           call assert(iflag_cldcon >= - 2 .and. iflag_cldcon <= 3, &
438                "physiq iflag_cldcon")
439    
440         call ctherm         call ctherm
441         call conf_phys         call conf_phys
# Line 621  contains Line 624  contains
624         pen_d = 0.         pen_d = 0.
625         pde_d = 0.         pde_d = 0.
626         pde_u = 0.         pde_u = 0.
627           u_seri = u_seri + d_u_con
628           v_seri = v_seri + d_v_con
629      else      else
630         conv_q = d_q_dyn + d_q_vdf / dtphys         conv_q = d_q_dyn + d_q_vdf / dtphys
631         conv_t = d_t_dyn + d_t_vdf / dtphys         conv_t = d_t_dyn + d_t_vdf / dtphys
# Line 635  contains Line 640  contains
640         itop_con = llm + 1 - kctop         itop_con = llm + 1 - kctop
641      END if      END if
642    
643      DO k = 1, llm      t_seri = t_seri + d_t_con
644         DO i = 1, klon      q_seri = q_seri + d_q_con
           t_seri(i, k) = t_seri(i, k) + d_t_con(i, k)  
           q_seri(i, k) = q_seri(i, k) + d_q_con(i, k)  
           u_seri(i, k) = u_seri(i, k) + d_u_con(i, k)  
           v_seri(i, k) = v_seri(i, k) + d_v_con(i, k)  
        ENDDO  
     ENDDO  
645    
646      IF (.not. conv_emanuel) THEN      IF (.not. conv_emanuel) THEN
647         z_apres = sum((q_seri + ql_seri) * zmasse, dim=2)         z_apres = sum((q_seri + ql_seri) * zmasse, dim=2)
# Line 703  contains Line 702  contains
702      if (iflag_cldcon == 1 .or. iflag_cldcon == 2) then      if (iflag_cldcon == 1 .or. iflag_cldcon == 2) then
703         ! les ratqs sont une conbinaison de ratqss et ratqsc         ! les ratqs sont une conbinaison de ratqss et ratqsc
704         ! ratqs final         ! ratqs final
        ! 1e4 (en gros 3 heures), en dur pour le moment, est le temps de  
        ! relaxation des ratqs  
705         ratqs = max(ratqs * exp(- dtphys * facttemps), ratqss)         ratqs = max(ratqs * exp(- dtphys * facttemps), ratqss)
706         ratqs = max(ratqs, ratqsc)         ratqs = max(ratqs, ratqsc)
707      else      else
# Line 808  contains Line 805  contains
805         albsol = sum(falbe * pctsrf, dim = 2)         albsol = sum(falbe * pctsrf, dim = 2)
806         CALL radlwsw(dist, mu0, fract, paprs, play, tsol, albsol, t_seri, &         CALL radlwsw(dist, mu0, fract, paprs, play, tsol, albsol, t_seri, &
807              q_seri, wo, cldfra, cldemi, cldtau, heat, heat0, cool, cool0, &              q_seri, wo, cldfra, cldemi, cldtau, heat, heat0, cool, cool0, &
808              radsol, albpla, topsw, toplw, solsw, sollw, sollwdown, topsw0, &              radsol, topsw, toplw, solsw, sollw, sollwdown, topsw0, toplw0, &
809              toplw0, solsw0, sollw0, lwdn0, lwdn, lwup0, lwup, swdn0, swdn, &              solsw0, sollw0, lwdn0, lwdn, lwup0, lwup, swdn0, swdn, swup0, &
810              swup0, swup, ok_ade, topswad, solswad)              swup, ok_ade, topswad, solswad)
811      ENDIF      ENDIF
812    
813      ! Ajouter la tendance des rayonnements (tous les pas)      ! Ajouter la tendance des rayonnements (tous les pas)

Legend:
Removed from v.344  
changed lines
  Added in v.346

  ViewVC Help
Powered by ViewVC 1.1.21