/[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 304 by guez, Thu Sep 6 15:51:09 2018 UTC revision 308 by guez, Tue Sep 18 15:14:40 2018 UTC
# Line 144  contains Line 144  contains
144      ! Radiative transfer computations are made every "radpas" call to      ! Radiative transfer computations are made every "radpas" call to
145      ! "physiq".      ! "physiq".
146    
147      REAL, save:: radsol(klon) ! bilan radiatif au sol calcule par code radiatif      REAL, save:: radsol(klon)
148        ! bilan radiatif net au sol (W/m2), positif vers le bas
149        
150      REAL, save:: ftsol(klon, nbsrf) ! skin temperature of surface fraction      REAL, save:: ftsol(klon, nbsrf) ! skin temperature of surface fraction
151    
152      REAL, save:: ftsoil(klon, nsoilmx, nbsrf)      REAL, save:: ftsoil(klon, nsoilmx, nbsrf)
# Line 257  contains Line 259  contains
259      REAL, save:: cool(klon, llm) ! refroidissement infrarouge      REAL, save:: cool(klon, llm) ! refroidissement infrarouge
260      REAL, save:: cool0(klon, llm) ! refroidissement infrarouge ciel clair      REAL, save:: cool0(klon, llm) ! refroidissement infrarouge ciel clair
261      REAL, save:: topsw(klon), toplw(klon), solsw(klon)      REAL, save:: topsw(klon), toplw(klon), solsw(klon)
262      REAL, save:: sollw(klon) ! rayonnement infrarouge montant \`a la surface  
263        REAL, save:: sollw(klon) ! surface net downward longwave flux, in W m-2
264      real, save:: sollwdown(klon) ! downward LW flux at surface      real, save:: sollwdown(klon) ! downward LW flux at surface
265      REAL, save:: topsw0(klon), toplw0(klon), solsw0(klon), sollw0(klon)      REAL, save:: topsw0(klon), toplw0(klon), solsw0(klon), sollw0(klon)
266      REAL, save:: albpla(klon)      REAL, save:: albpla(klon)
     REAL fsollw(klon, nbsrf) ! bilan flux IR pour chaque sous-surface  
     REAL fsolsw(klon, nbsrf) ! flux solaire absorb\'e pour chaque sous-surface  
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 326  contains Line 327  contains
327      INTEGER, save:: ibas_con(klon), itop_con(klon)      INTEGER, save:: ibas_con(klon), itop_con(klon)
328      real ema_pct(klon) ! Emanuel pressure at cloud top, in Pa      real ema_pct(klon) ! Emanuel pressure at cloud top, in Pa
329    
330      REAL, save:: rain_con(klon)      REAL rain_con(klon)
331      real rain_lsc(klon)      real rain_lsc(klon)
332      REAL, save:: snow_con(klon) ! neige (mm / s)      REAL snow_con(klon) ! neige (mm / s)
333      real snow_lsc(klon)      real snow_lsc(klon)
334      REAL d_ts(klon, nbsrf) ! variation of ftsol      REAL d_ts(klon, nbsrf) ! variation of ftsol
335    
# Line 417  contains Line 418  contains
418         t2m = 0.         t2m = 0.
419         q2m = 0.         q2m = 0.
420         ffonte = 0.         ffonte = 0.
        rain_con = 0.  
        snow_con = 0.  
421         d_u_con = 0.         d_u_con = 0.
422         d_v_con = 0.         d_v_con = 0.
423         rnebcon0 = 0.         rnebcon0 = 0.
# Line 539  contains Line 538  contains
538    
539      CALL orbite(REAL(julien), longi, dist)      CALL orbite(REAL(julien), longi, dist)
540      CALL zenang(longi, time, dtphys * radpas, mu0, fract)      CALL zenang(longi, time, dtphys * radpas, mu0, fract)
     albsol = sum(falbe * pctsrf, dim = 2)  
   
     ! R\'epartition sous maille des flux longwave et shortwave  
     ! R\'epartition du longwave par sous-surface lin\'earis\'ee  
   
     forall (nsrf = 1: nbsrf)  
        fsollw(:, nsrf) = sollw + 4. * RSIGMA * tsol**3 &  
             * (tsol - ftsol(:, nsrf))  
        fsolsw(:, nsrf) = solsw * (1. - falbe(:, nsrf)) / (1. - albsol)  
     END forall  
541    
542      CALL pbl_surface(pctsrf, t_seri, q_seri, u_seri, v_seri, julien, mu0, &      CALL pbl_surface(pctsrf, t_seri, q_seri, u_seri, v_seri, julien, mu0, &
543           ftsol, cdmmax, cdhmax, ftsoil, qsol, paprs, play, fsnow, fqsurf, &           ftsol, cdmmax, cdhmax, ftsoil, qsol, paprs, play, fsnow, fqsurf, &
544           falbe, fluxlat, rain_fall, snow_fall, fsolsw, fsollw, frugs, agesno, &           falbe, fluxlat, rain_fall, snow_fall, frugs, agesno, rugoro, d_t_vdf, &
545           rugoro, d_t_vdf, d_q_vdf, d_u_vdf, d_v_vdf, d_ts, flux_t, flux_q, &           d_q_vdf, d_u_vdf, d_v_vdf, d_ts, flux_t, flux_q, flux_u, flux_v, &
546           flux_u, flux_v, cdragh, cdragm, q2, dflux_t, dflux_q, coefh, t2m, &           cdragh, cdragm, q2, dflux_t, dflux_q, coefh, t2m, q2m, u10m_srf, &
547           q2m, u10m_srf, v10m_srf, pblh, capCL, oliqCL, cteiCL, pblT, therm, &           v10m_srf, pblh, capCL, oliqCL, cteiCL, pblT, therm, plcl, fqcalving, &
548           plcl, fqcalving, ffonte, run_off_lic_0)           ffonte, run_off_lic_0, albsol, sollw, solsw, tsol)
549    
550      ! Incr\'ementation des flux      ! Incr\'ementation des flux
551    
# Line 996  contains Line 985  contains
985      CALL histwrite_phy("topl", toplw)      CALL histwrite_phy("topl", toplw)
986      CALL histwrite_phy("evap", evap)      CALL histwrite_phy("evap", evap)
987      CALL histwrite_phy("sols", solsw)      CALL histwrite_phy("sols", solsw)
988      CALL histwrite_phy("soll", sollw)      CALL histwrite_phy("rls", sollw)
989      CALL histwrite_phy("solldown", sollwdown)      CALL histwrite_phy("solldown", sollwdown)
990      CALL histwrite_phy("bils", bils)      CALL histwrite_phy("bils", bils)
991      CALL histwrite_phy("sens", - sens)      CALL histwrite_phy("sens", - sens)
# Line 1006  contains Line 995  contains
995      CALL histwrite_phy("dtsvdfg", d_ts(:, is_lic))      CALL histwrite_phy("dtsvdfg", d_ts(:, is_lic))
996      CALL histwrite_phy("dtsvdfi", d_ts(:, is_sic))      CALL histwrite_phy("dtsvdfi", d_ts(:, is_sic))
997      CALL histwrite_phy("zxfqcalving", sum(fqcalving * pctsrf, dim = 2))      CALL histwrite_phy("zxfqcalving", sum(fqcalving * pctsrf, dim = 2))
   
     DO nsrf = 1, nbsrf  
        CALL histwrite_phy("pourc_"//clnsurf(nsrf), pctsrf(:, nsrf) * 100.)  
        CALL histwrite_phy("fract_"//clnsurf(nsrf), pctsrf(:, nsrf))  
        CALL histwrite_phy("sens_"//clnsurf(nsrf), flux_t(:, nsrf))  
        CALL histwrite_phy("lat_"//clnsurf(nsrf), fluxlat(:, nsrf))  
        CALL histwrite_phy("tsol_"//clnsurf(nsrf), ftsol(:, nsrf))  
        CALL histwrite_phy("taux_"//clnsurf(nsrf), flux_u(:, nsrf))  
        CALL histwrite_phy("tauy_"//clnsurf(nsrf), flux_v(:, nsrf))  
        CALL histwrite_phy("rugs_"//clnsurf(nsrf), frugs(:, nsrf))  
        CALL histwrite_phy("albe_"//clnsurf(nsrf), falbe(:, nsrf))  
        CALL histwrite_phy("u10m_"//clnsurf(nsrf), u10m_srf(:, nsrf))  
        CALL histwrite_phy("v10m_"//clnsurf(nsrf), v10m_srf(:, nsrf))  
     END DO  
   
998      CALL histwrite_phy("albs", albsol)      CALL histwrite_phy("albs", albsol)
999      CALL histwrite_phy("tro3", wo * dobson_u * 1e3 / zmasse / rmo3 * md)      CALL histwrite_phy("tro3", wo * dobson_u * 1e3 / zmasse / rmo3 * md)
1000      CALL histwrite_phy("rugs", zxrugs)      CALL histwrite_phy("rugs", zxrugs)
# Line 1031  contains Line 1005  contains
1005      CALL histwrite_phy("s_oliqCL", s_oliqCL)      CALL histwrite_phy("s_oliqCL", s_oliqCL)
1006      CALL histwrite_phy("s_cteiCL", s_cteiCL)      CALL histwrite_phy("s_cteiCL", s_cteiCL)
1007      CALL histwrite_phy("s_therm", s_therm)      CALL histwrite_phy("s_therm", s_therm)
   
     if (conv_emanuel) then  
        CALL histwrite_phy("ptop", ema_pct)  
        CALL histwrite_phy("dnwd0", - mp)  
     end if  
   
1008      CALL histwrite_phy("temp", t_seri)      CALL histwrite_phy("temp", t_seri)
1009      CALL histwrite_phy("vitu", u_seri)      CALL histwrite_phy("vitu", u_seri)
1010      CALL histwrite_phy("vitv", v_seri)      CALL histwrite_phy("vitv", v_seri)
# Line 1050  contains Line 1018  contains
1018      CALL histwrite_phy("dtlw0", - cool0 / 86400.)      CALL histwrite_phy("dtlw0", - cool0 / 86400.)
1019      CALL histwrite_phy("msnow", sum(fsnow * pctsrf, dim = 2))      CALL histwrite_phy("msnow", sum(fsnow * pctsrf, dim = 2))
1020      call histwrite_phy("qsurf", sum(fqsurf * pctsrf, dim = 2))      call histwrite_phy("qsurf", sum(fqsurf * pctsrf, dim = 2))
1021        call histwrite_phy("flat", zxfluxlat)
1022    
1023        DO nsrf = 1, nbsrf
1024           CALL histwrite_phy("pourc_"//clnsurf(nsrf), pctsrf(:, nsrf) * 100.)
1025           CALL histwrite_phy("fract_"//clnsurf(nsrf), pctsrf(:, nsrf))
1026           CALL histwrite_phy("sens_"//clnsurf(nsrf), flux_t(:, nsrf))
1027           CALL histwrite_phy("lat_"//clnsurf(nsrf), fluxlat(:, nsrf))
1028           CALL histwrite_phy("tsol_"//clnsurf(nsrf), ftsol(:, nsrf))
1029           CALL histwrite_phy("taux_"//clnsurf(nsrf), flux_u(:, nsrf))
1030           CALL histwrite_phy("tauy_"//clnsurf(nsrf), flux_v(:, nsrf))
1031           CALL histwrite_phy("rugs_"//clnsurf(nsrf), frugs(:, nsrf))
1032           CALL histwrite_phy("albe_"//clnsurf(nsrf), falbe(:, nsrf))
1033           CALL histwrite_phy("u10m_"//clnsurf(nsrf), u10m_srf(:, nsrf))
1034           CALL histwrite_phy("v10m_"//clnsurf(nsrf), v10m_srf(:, nsrf))
1035        END DO
1036    
1037        if (conv_emanuel) then
1038           CALL histwrite_phy("ptop", ema_pct)
1039           CALL histwrite_phy("dnwd0", - mp)
1040        end if
1041    
1042      if (ok_instan) call histsync(nid_ins)      if (ok_instan) call histsync(nid_ins)
1043    

Legend:
Removed from v.304  
changed lines
  Added in v.308

  ViewVC Help
Powered by ViewVC 1.1.21