Ignore:
Timestamp:
Mar 9, 2001, 4:36:10 PM (23 years ago)
Author:
lmdzadmin
Message:

Lots of stuff, plus particulierement:

  • appel a ORCHIDEE en etat de marche (pb de grille subsiste)
  • modifs de Pascale sur soil dans le cas ou ok_veget=false -
File:
1 edited

Legend:

Unmodified
Added
Removed
  • LMDZ.3.3/branches/rel-LF/libf/phylmd/physiq.F

    r171 r177  
    33     .            paprs,pplay,pphi,pphis,paire,presnivs,clesphy0,
    44     .            u,v,t,qx,
    5      .            omega,
     5     .            omega, cufi, cvfi,
    66     .            d_u, d_v, d_t, d_qx, d_ps)
    77      USE ioipsl
     8      USE histcom
     9
    810      IMPLICIT none
    911c======================================================================
     
    8991ccc      PARAMETER (soil_model=.FALSE.)
    9092      logical ok_veget
    91       parameter (ok_veget = .false.)
     93      parameter (ok_veget = .true.)
    9294c======================================================================
    9395c Dans les versions precedentes, l'eau liquide nuageuse utilisee dans
     
    217219      REAL fevap(klon,nbsrf)
    218220      SAVE fevap                 ! evaporation
     221      REAL fluxlat(klon,nbsrf)
     222      SAVE fluxlat
    219223c
    220224      REAL deltat(klon)
     
    339343cAA
    340344      EXTERNAL hgardfou  ! verifier les temperatures
    341       EXTERNAL hydrol    ! hydrologie du sol
    342345      EXTERNAL nuage     ! calculer les proprietes radiatives
    343346      EXTERNAL o3cm      ! initialiser l'ozone
     
    379382      REAL cool0(klon,klev)   ! refroidissement infrarouge ciel clair
    380383      REAL topsw(klon), toplw(klon), solsw(klon), sollw(klon)
     384      real sollwdown(klon)    ! downward LW flux at surface
    381385      REAL topsw0(klon), toplw0(klon), solsw0(klon), sollw0(klon)
    382386      REAL albpla(klon)
    383387c Le rayonnement n'est pas calcule tous les pas, il faut donc
    384388c                      sauvegarder les sorties du rayonnement
    385       SAVE  heat,cool,albpla,topsw,toplw,solsw,sollw
     389      SAVE  heat,cool,albpla,topsw,toplw,solsw,sollw,sollwdown
    386390      SAVE  topsw0,toplw0,solsw0,sollw0, heat0, cool0
    387391      INTEGER itaprad
     
    492496      logical ok_sync
    493497
     498
    494499c
    495500c Declaration des constantes et des fonctions thermodynamiques
     
    538543         CALL phyetat0 ("startphy.nc",dtime,co2_ppm,solaire,
    539544     .       rlat,rlon,pctsrf, ftsol,ftsoil,deltat,fqsol,fsnow,
    540      .       falbe, fevap, rain_fall,snow_fall,solsw, sollw,
     545     .       falbe, fevap, rain_fall,snow_fall,solsw, sollwdown,
    541546     .       fder,radsol,frugs,agesno,clesphy0,
    542547     .       zmea,zstd,zsig,zgam,zthe,zpic,zval,rugoro,tabcntr0,
     
    718723     .                "ave(X)", zsto,zout)
    719724c
     725         CALL histdef(nid_day, "solldown", "Down. IR rad. at surface",
     726     .                "W/m2", iim,jjmp1,nhori, 1,1,1, -99, 32,
     727     .                "ave(X)", zsto,zout)
     728c
    720729         CALL histdef(nid_day, "bils", "Surf. total heat flux", "W/m2",
    721730     .                iim,jjmp1,nhori, 1,1,1, -99, 32,
     
    746755     $         iim,jjmp1,nhori, 1,1,1, -99, 32,
    747756     $         "ave(X)", zsto,zout)
    748 
     757C
     758           call histdef(nid_day, "tsol_"//clnsurf(nsrf),
     759     $         "Fraction"//clnsurf(nsrf), "W/m2", 
     760     $         iim,jjmp1,nhori, 1,1,1, -99, 32,
     761     $         "ave(X)", zsto,zout)
     762C
    749763           call histdef(nid_day, "sens_"//clnsurf(nsrf),
    750764     $         "Sensible heat flux "//clnsurf(nsrf), "W/m2", 
     
    766780     $         iim,jjmp1,nhori, 1,1,1, -99, 32,
    767781     $         "ave(X)", zsto,zout)
     782C
     783           call histdef(nid_day, "albe_"//clnsurf(nsrf),
     784     $         "Latent heat flux "//clnsurf(nsrf), "W/m2", 
     785     $         iim,jjmp1,nhori, 1,1,1, -99, 32,
     786     $         "ave(X)", zsto,zout)
     787C
     788           call histdef(nid_day, "rugs_"//clnsurf(nsrf),
     789     $         "Latent heat flux "//clnsurf(nsrf), "W/m2", 
     790     $         iim,jjmp1,nhori, 1,1,1, -99, 32,
     791     $         "ave(X)", zsto,zout)
     792
    768793C§§§
    769794         END DO
     
    921946     .                "ave(X)", zsto,zout)
    922947c
     948         CALL histdef(nid_mth, "solldown", "Down. IR rad. at surface",
     949     .                "W/m2", iim,jjmp1,nhori, 1,1,1, -99, 32,
     950     .                "ave(X)", zsto,zout)
     951c
    923952         CALL histdef(nid_mth, "tops0", "Solar rad. at TOA", "W/m2",
    924953     .                iim,jjmp1,nhori, 1,1,1, -99, 32,
     
    964993     $         "ave(X)", zsto,zout)
    965994C
     995           call histdef(nid_mth, "tsol_"//clnsurf(nsrf),
     996     $         "Fraction "//clnsurf(nsrf), "W/m2", 
     997     $         iim,jjmp1,nhori, 1,1,1, -99, 32,
     998     $         "ave(X)", zsto,zout)
     999C
    9661000           call histdef(nid_mth, "sens_"//clnsurf(nsrf),
    9671001     $         "Sensible heat flux "//clnsurf(nsrf), "W/m2", 
     
    9811015           call histdef(nid_mth, "tauy_"//clnsurf(nsrf),
    9821016     $         "Meridional xind stress "//clnsurf(nsrf), "Pa", 
     1017     $         iim,jjmp1,nhori, 1,1,1, -99, 32,
     1018     $         "ave(X)", zsto,zout)
     1019c
     1020           call histdef(nid_mth, "albe_"//clnsurf(nsrf),
     1021     $         "Latent heat flux "//clnsurf(nsrf), "W/m2", 
     1022     $         iim,jjmp1,nhori, 1,1,1, -99, 32,
     1023     $         "ave(X)", zsto,zout)
     1024c
     1025           call histdef(nid_mth, "rugs_"//clnsurf(nsrf),
     1026     $         "Latent heat flux "//clnsurf(nsrf), "W/m2", 
    9831027     $         iim,jjmp1,nhori, 1,1,1, -99, 32,
    9841028     $         "ave(X)", zsto,zout)
     
    12581302     .                "inst(X)", zsto,zout)
    12591303c
     1304         CALL histdef(nid_ins, "solldown", "Down. IR rad. at surface",
     1305     .                "W/m2", iim,jjmp1,nhori, 1,1,1, -99, 32,
     1306     .                "ave(X)", zsto,zout)
     1307c
    12601308         CALL histdef(nid_ins, "bils", "Surf. total heat flux", "W/m2",
    12611309     .                iim,jjmp1,nhori, 1,1,1, -99, 32,
     
    15261574      DO nsrf = 1, nbsrf
    15271575      DO i = 1, klon
    1528          zxrugs(i) = zxrugs(i) + frugs(i,nsrf)*pctsrf(i,nsrf)
     1576            zxrugs(i) = zxrugs(i) + frugs(i,nsrf)*pctsrf(i,nsrf)
    15291577      ENDDO
    15301578      ENDDO
     
    15461594     e            julien, rmu0,
    15471595     e            ok_veget, ocean, npas, nexca, ftsol,
    1548      e            paprs,pplay,radsol, fsnow,fqsol,fevap,falbe,
    1549      e            rain_fall, snow_fall, solsw, sollw, fder,
     1596     $            soil_model,ftsoil,
     1597     $            paprs,pplay,radsol, fsnow,fqsol,fevap,falbe,fluxlat,
     1598     e            rain_fall, snow_fall, solsw, sollw, sollwdown, fder,
    15501599     e            rlon, rlat, cufi, cvfi, frugs,
    15511600     e            debut, lafin, agesno,rugoro ,
     
    16051654      DO nsrf = 1, nbsrf
    16061655      DO i = 1, klon
    1607          ftsol(i,nsrf) = ftsol(i,nsrf) + d_ts(i,nsrf)
    1608          zxtsol(i) = zxtsol(i) + ftsol(i,nsrf)*pctsrf(i,nsrf)
     1656c$$$        IF (pctsrf(i,nsrf) .GE. EPSFRA) THEN
     1657            ftsol(i,nsrf) = ftsol(i,nsrf) + d_ts(i,nsrf)
     1658            zxtsol(i) = zxtsol(i) + ftsol(i,nsrf)*pctsrf(i,nsrf)
     1659c$$$        ENDIF
    16091660      ENDDO
    16101661      ENDDO
     
    16681719     s            pmfu, pmfd, pen_u, pde_u, pen_d, pde_d,
    16691720     s            kcbot, kctop, kdtop, pmflxr, pmflxs)
     1721      WHERE (rain_con < 0.) rain_con = 0.
     1722      WHERE (snow_con < 0.) snow_con = 0.
    16701723      DO i = 1, klon
    16711724         ibas_con(i) = klev+1 - kcbot(i)
     
    17581811     .           frac_impa, frac_nucl,
    17591812     .           prfl, psfl)
     1813      WHERE (rain_lsc < 0) rain_lsc = 0.
     1814      WHERE (snow_lsc < 0) snow_lsc = 0.
    17601815      DO k = 1, klev
    17611816      DO i = 1, klon
     
    18611916     s             heat,heat0,cool,cool0,radsol,albpla,
    18621917     s             topsw,toplw,solsw,sollw,
     1918     s             sollwdown,
    18631919     s             topsw0,toplw0,solsw0,sollw0)
    18641920      itaprad = 0
     
    18931949c Si une sous-fraction n'existe pas, elle prend la valeur moyenne
    18941950c
    1895       DO nsrf = 1, nbsrf
    1896       DO i = 1, klon
    1897          IF (pctsrf(i,nsrf).LT.epsfra) THEN
    1898             fqsol(i,nsrf) = zxqsol(i)
    1899             fsnow(i,nsrf) = zxsnow(i)
    1900          ENDIF
    1901       ENDDO
    1902       ENDDO
     1951c$$$      DO nsrf = 1, nbsrf
     1952c$$$      DO i = 1, klon
     1953c$$$         IF (pctsrf(i,nsrf).LT.epsfra) THEN
     1954c$$$            fqsol(i,nsrf) = zxqsol(i)
     1955c$$$            fsnow(i,nsrf) = zxsnow(i)
     1956c$$$         ENDIF
     1957c$$$      ENDDO
     1958c$$$      ENDDO
    19031959c
    19041960c Calculer le bilan du sol et la derive de temperature (couplage)
     
    20922148      CALL histwrite(nid_day,"soll",itap,zx_tmp_2d,iim*jjmp1,ndex2d)
    20932149c
     2150      CALL gr_fi_ecrit(1, klon,iim,jjmp1, sollwdown,zx_tmp_2d)
     2151      CALL histwrite(nid_day,"solldown",itap,zx_tmp_2d,iim*jjmp1,ndex2d)
     2152c
    20942153      CALL gr_fi_ecrit(1, klon,iim,jjmp1, bils,zx_tmp_2d)
    20952154      CALL histwrite(nid_day,"bils",itap,zx_tmp_2d,iim*jjmp1,ndex2d)
     
    21082167        CALL histwrite(nid_day,"pourc_"//clnsurf(nsrf),itap,
    21092168     $      zx_tmp_2d,iim*jjmp1,ndex2d)
     2169C
     2170        zx_tmp_fi2d(1 : klon) = ftsol( 1 : klon, nsrf)
     2171        CALL gr_fi_ecrit(1, klon,iim,jjmp1, zx_tmp_fi2d , zx_tmp_2d)
     2172        CALL histwrite(nid_day,"tsol_"//clnsurf(nsrf),itap,
     2173     $      zx_tmp_2d,iim*jjmp1,ndex2d)
    21102174C
    2111         zx_tmp_fi2d(1 : klon) = - fluxt( 1 : klon, 1, nsrf)
     2175        zx_tmp_fi2d(1 : klon) = fluxt( 1 : klon, 1, nsrf)
    21122176        CALL gr_fi_ecrit(1, klon,iim,jjmp1, zx_tmp_fi2d , zx_tmp_2d)
    21132177        CALL histwrite(nid_day,"sens_"//clnsurf(nsrf),itap,
    21142178     $      zx_tmp_2d,iim*jjmp1,ndex2d)
    21152179C
    2116         zx_tmp_fi2d(1 : klon) = - fluxq( 1 : klon, 1, nsrf)
     2180        zx_tmp_fi2d(1 : klon) = fluxlat( 1 : klon, nsrf)
    21172181        CALL gr_fi_ecrit(1, klon,iim,jjmp1, zx_tmp_fi2d , zx_tmp_2d)
    21182182        CALL histwrite(nid_day,"lat_"//clnsurf(nsrf),itap,
    21192183     $      zx_tmp_2d,iim*jjmp1,ndex2d)
    21202184C
    2121         zx_tmp_fi2d(1 : klon) = - fluxu( 1 : klon, 1, nsrf)
     2185        zx_tmp_fi2d(1 : klon) = fluxu( 1 : klon, 1, nsrf)
    21222186        CALL gr_fi_ecrit(1, klon,iim,jjmp1, zx_tmp_fi2d , zx_tmp_2d)
    21232187        CALL histwrite(nid_day,"taux_"//clnsurf(nsrf),itap,
    21242188     $      zx_tmp_2d,iim*jjmp1,ndex2d)
    21252189C     
    2126         zx_tmp_fi2d(1 : klon) = - fluxv( 1 : klon, 1, nsrf)
     2190        zx_tmp_fi2d(1 : klon) = fluxv( 1 : klon, 1, nsrf)
    21272191        CALL gr_fi_ecrit(1, klon,iim,jjmp1, zx_tmp_fi2d , zx_tmp_2d)
    21282192        CALL histwrite(nid_day,"tauy_"//clnsurf(nsrf),itap,
    21292193     $      zx_tmp_2d,iim*jjmp1,ndex2d)
     2194C
     2195        zx_tmp_fi2d(1 : klon) = falbe( 1 : klon, nsrf)
     2196        CALL gr_fi_ecrit(1, klon,iim,jjmp1, zx_tmp_fi2d , zx_tmp_2d)
     2197        CALL histwrite(nid_day,"albe_"//clnsurf(nsrf),itap,
     2198     $      zx_tmp_2d,iim*jjmp1,ndex2d)
     2199C
     2200        zx_tmp_fi2d(1 : klon) = frugs( 1 : klon, nsrf)
     2201        CALL gr_fi_ecrit(1, klon,iim,jjmp1, zx_tmp_fi2d , zx_tmp_2d)
     2202        CALL histwrite(nid_day,"rugs_"//clnsurf(nsrf),itap,
     2203     $      zx_tmp_2d,iim*jjmp1,ndex2d)
    21302204C
    21312205      END DO 
     
    22582332      CALL gr_fi_ecrit(1, klon,iim,jjmp1, sollw,zx_tmp_2d)
    22592333      CALL histwrite(nid_mth,"soll",itap,zx_tmp_2d,iim*jjmp1,ndex2d)
     2334c
     2335      CALL gr_fi_ecrit(1, klon,iim,jjmp1, sollwdown,zx_tmp_2d)
     2336      CALL histwrite(nid_mth,"solldown",itap,zx_tmp_2d,iim*jjmp1,ndex2d)
    22602337c
    22612338      CALL gr_fi_ecrit(1, klon,iim,jjmp1, topsw0,zx_tmp_2d)
     
    23002377     $      zx_tmp_2d,iim*jjmp1,ndex2d)
    23012378C
    2302         zx_tmp_fi2d(1 : klon) = - fluxt( 1 : klon, 1, nsrf)
     2379        zx_tmp_fi2d(1 : klon) = ftsol( 1 : klon, nsrf)
     2380        CALL gr_fi_ecrit(1, klon,iim,jjmp1, zx_tmp_fi2d , zx_tmp_2d)
     2381        CALL histwrite(nid_mth,"tsol_"//clnsurf(nsrf),itap,
     2382     $      zx_tmp_2d,iim*jjmp1,ndex2d)
     2383C
     2384        zx_tmp_fi2d(1 : klon) = fluxt( 1 : klon, 1, nsrf)
    23032385        CALL gr_fi_ecrit(1, klon,iim,jjmp1, zx_tmp_fi2d , zx_tmp_2d)
    23042386        CALL histwrite(nid_mth,"sens_"//clnsurf(nsrf),itap,
    2305      $      zx_tmp_2d,iim*jjmp1,ndex2d) 
    2306 C
    2307         zx_tmp_fi2d(1 : klon) = - fluxq( 1 : klon, 1, nsrf)
     2387     $      zx_tmp_2d,iim*jjmp1,ndex2d)
     2388C
     2389        zx_tmp_fi2d(1 : klon) = fluxlat( 1 : klon, nsrf)
    23082390        CALL gr_fi_ecrit(1, klon,iim,jjmp1, zx_tmp_fi2d , zx_tmp_2d)
    23092391        CALL histwrite(nid_mth,"lat_"//clnsurf(nsrf),itap,
    23102392     $      zx_tmp_2d,iim*jjmp1,ndex2d)
    23112393C
    2312         zx_tmp_fi2d(1 : klon) = - fluxu( 1 : klon, 1, nsrf)
     2394        zx_tmp_fi2d(1 : klon) = fluxu( 1 : klon, 1, nsrf)
    23132395        CALL gr_fi_ecrit(1, klon,iim,jjmp1, zx_tmp_fi2d , zx_tmp_2d)
    23142396        CALL histwrite(nid_mth,"taux_"//clnsurf(nsrf),itap,
    23152397     $      zx_tmp_2d,iim*jjmp1,ndex2d)
    23162398C     
    2317         zx_tmp_fi2d(1 : klon) = - fluxv( 1 : klon, 1, nsrf)
     2399        zx_tmp_fi2d(1 : klon) = fluxv( 1 : klon, 1, nsrf)
    23182400        CALL gr_fi_ecrit(1, klon,iim,jjmp1, zx_tmp_fi2d , zx_tmp_2d)
    23192401        CALL histwrite(nid_mth,"tauy_"//clnsurf(nsrf),itap,
    23202402     $      zx_tmp_2d,iim*jjmp1,ndex2d)
    23212403C
     2404        zx_tmp_fi2d(1 : klon) = falbe( 1 : klon, nsrf)
     2405        CALL gr_fi_ecrit(1, klon,iim,jjmp1, zx_tmp_fi2d , zx_tmp_2d)
     2406        CALL histwrite(nid_mth,"albe_"//clnsurf(nsrf),itap,
     2407     $      zx_tmp_2d,iim*jjmp1,ndex2d)
     2408C
     2409        zx_tmp_fi2d(1 : klon) = frugs( 1 : klon, nsrf)
     2410        CALL gr_fi_ecrit(1, klon,iim,jjmp1, zx_tmp_fi2d , zx_tmp_2d)
     2411        CALL histwrite(nid_mth,"rugs_"//clnsurf(nsrf),itap,
     2412     $      zx_tmp_2d,iim*jjmp1,ndex2d)
     2413
    23222414      END DO 
    23232415c$$$      DO i = 1, klon
     
    25592651      CALL gr_fi_ecrit(1, klon,iim,jjmp1, sollw,zx_tmp_2d)
    25602652      CALL histwrite(nid_ins,"soll",itap,zx_tmp_2d,iim*jjmp1,ndex2d)
     2653c
     2654      CALL gr_fi_ecrit(1, klon,iim,jjmp1, sollwdown,zx_tmp_2d)
     2655      CALL histwrite(nid_ins,"solldown",itap,zx_tmp_2d,iim*jjmp1,ndex2d)
    25612656c
    25622657      CALL gr_fi_ecrit(1, klon,iim,jjmp1, bils,zx_tmp_2d)
     
    25882683     $      zx_tmp_2d,iim*jjmp1,ndex2d)
    25892684C
    2590         zx_tmp_fi2d(1 : klon) = - fluxt( 1 : klon, 1, nsrf)
     2685        zx_tmp_fi2d(1 : klon) = fluxt( 1 : klon, 1, nsrf)
    25912686        CALL gr_fi_ecrit(1, klon,iim,jjmp1, zx_tmp_fi2d , zx_tmp_2d)
    25922687        CALL histwrite(nid_ins,"sens_"//clnsurf(nsrf),itap,
    25932688     $      zx_tmp_2d,iim*jjmp1,ndex2d)
    25942689C
    2595         zx_tmp_fi2d(1 : klon) = - fluxq( 1 : klon, 1, nsrf)
     2690        zx_tmp_fi2d(1 : klon) = fluxlat( 1 : klon, nsrf)
    25962691        CALL gr_fi_ecrit(1, klon,iim,jjmp1, zx_tmp_fi2d , zx_tmp_2d)
    25972692        CALL histwrite(nid_ins,"lat_"//clnsurf(nsrf),itap,
     
    26032698     $      zx_tmp_2d,iim*jjmp1,ndex2d)
    26042699C
    2605         zx_tmp_fi2d(1 : klon) = - fluxu( 1 : klon, 1, nsrf)
     2700        zx_tmp_fi2d(1 : klon) = fluxu( 1 : klon, 1, nsrf)
    26062701        CALL gr_fi_ecrit(1, klon,iim,jjmp1, zx_tmp_fi2d , zx_tmp_2d)
    26072702        CALL histwrite(nid_ins,"taux_"//clnsurf(nsrf),itap,
    26082703     $      zx_tmp_2d,iim*jjmp1,ndex2d)
    26092704C     
    2610         zx_tmp_fi2d(1 : klon) = - fluxv( 1 : klon, 1, nsrf)
     2705        zx_tmp_fi2d(1 : klon) = fluxv( 1 : klon, 1, nsrf)
    26112706        CALL gr_fi_ecrit(1, klon,iim,jjmp1, zx_tmp_fi2d , zx_tmp_2d)
    26122707        CALL histwrite(nid_ins,"tauy_"//clnsurf(nsrf),itap,
     
    27522847     .      rlat, rlon, pctsrf, ftsol, ftsoil, deltat, fqsol, fsnow,
    27532848     .      falbe, fevap, rain_fall, snow_fall,
    2754      .      solsw, sollw,fder,
     2849     .      solsw, sollwdown,fder,
    27552850     .      radsol,frugs,agesno,
    27562851     .      zmea,zstd,zsig,zgam,zthe,zpic,zval,rugoro,
Note: See TracChangeset for help on using the changeset viewer.