Ignore:
Timestamp:
May 18, 2024, 8:21:24 PM (9 months ago)
Author:
emillour
Message:

Generic PCM:
Add reading/writing of surface albedo in (re)startfi.nc to
improve model restartability. For now only the simpler case
of non-spectral dependent surface albedo is handled.
Turned "surfini" in a module in the process.
Unrelated: added missing delarations in kcm1d so it compiles one again.
EM

Location:
trunk/LMDZ.GENERIC/libf/dynphy_lonlat/phystd
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/LMDZ.GENERIC/libf/dynphy_lonlat/phystd/newstart.F

    r3116 r3335  
    2121      USE tracer_h, ONLY: igcm_co2_ice, igcm_h2o_vap, igcm_h2o_ice
    2222      USE comsoil_h, ONLY: nsoilmx, layer, mlayer, inertiedat
     23      USE radinc_h, only : L_NSPECTV ! number of spectral bands in the visible
    2324      USE surfdat_h, ONLY: phisfi, albedodat,
    2425     &                     zmea, zstd, zsig, zgam, zthe
     
    112113      REAL q2(ngridmx,llm+1)
    113114!      REAL rnaturfi(ngridmx)
    114       real alb(iip1,jjp1),albfi(ngridmx) ! albedos
     115      real alb(iip1,jjp1),albfi(ngridmx) ! bare ground albedos
     116      real albedodyn(iip1,jjp1),albedofi(ngridmx) ! surface albedos
     117      real spectral_albedofi(ngridmx,L_NSPECTV) ! spectral surface albedo
    115118      real,ALLOCATABLE :: ith(:,:,:),ithfi(:,:) ! thermal inertia (3D)
    116119      real surfith(iip1,jjp1),surfithfi(ngridmx) ! surface thermal inertia (2D)
     
    361364        fichnom = 'startfi.nc'
    362365        CALL phyetat0(.true.,ngridmx,llm,fichnom,tab0,Lmodif,nsoilmx,
    363      .        nqtot,day_ini,time,
    364      .        tsurf,tsoil,emis,q2,qsurf,   !) ! temporary modif by RDW
    365      .        cloudfrac,totalfrac,hice,rnat,pctsrf_sic,tslab,tsea_ice,
    366      .        sea_ice)
     366     &        nqtot,day_ini,time,
     367     &        tsurf,tsoil,emis,spectral_albedofi,q2,qsurf,
     368     &        cloudfrac,totalfrac,hice,rnat,pctsrf_sic,tslab,tsea_ice,
     369     &        sea_ice)
    367370
    368371        ! copy albedo and soil thermal inertia on (local) physics grid
    369372        do i=1,ngridmx
    370373          albfi(i) = albedodat(i)
     374          albedofi(i)= spectral_albedofi(i,1) ! assume same albedo at all wavelenghts
    371375          do j=1,nsoilmx
    372376           ithfi(i,j) = inertiedat(i,j)
     
    380384        ! to correctly recast things on physics grid)
    381385        call gr_fi_dyn(1,ngridmx,iip1,jjp1,albfi,alb)
     386        call gr_fi_dyn(1,ngridmx,iip1,jjp1,albedofi,albedodyn)
    382387        call gr_fi_dyn(nsoilmx,ngridmx,iip1,jjp1,ithfi,ith)
    383388        call gr_fi_dyn(1,ngridmx,iip1,jjp1,surfithfi,surfith)
     
    16621667      call physdem1("restartfi.nc",nsoilmx,ngridmx,llm,nqtot,
    16631668     &                dtphys,real(day_ini),
    1664      &                tsurf,tsoil,emis,q2,qsurf,
     1669     &                tsurf,tsoil,emis,spectral_albedofi,q2,qsurf,
    16651670     &                cloudfrac,totalfrac,hice,
    16661671     &                rnat,pctsrf_sic,tslab,tsea_ice,sea_ice)
  • trunk/LMDZ.GENERIC/libf/dynphy_lonlat/phystd/start2archive.F

    r3100 r3335  
    2121      use infotrac, only: infotrac_init, nqtot, tname
    2222      USE comsoil_h
    23      
     23      USE radinc_h, only : L_NSPECTV ! number of spectral bands in the visible
    2424!      use slab_ice_h, only: noceanmx
    2525      USE ocean_slab_mod, ONLY: nslay
     
    7373      REAL,ALLOCATABLE :: qsurf(:,:)
    7474      REAL emis(ngridmx)
     75      REAL :: albedo(ngridmx,L_NSPECTV) ! spectral surface albedo
    7576      INTEGER start,length
    7677      PARAMETER (length = 100)
     
    99100      REAL,ALLOCATABLE :: qsurfS(:,:)
    100101      REAL emisS(ip1jmp1)
     102      REAL :: albedoS(ngridmx) ! surface albedo assumed same at all wavelengths
    101103
    102104!     added by FF for cloud fraction setup
     
    245247      CALL phyetat0(.true.,ngridmx,llm,fichnom,0,Lmodif,nsoilmx,nqtot,
    246248     .      day_ini_fi,timefi,
    247      .      tsurf,tsoil,emis,q2,qsurf,
     249     .      tsurf,tsoil,emis,albedo,q2,qsurf,
    248250!       change FF 05/2011
    249251     .       cloudfrac,totalcloudfrac,hice,
     
    351353      call gr_fi_dyn(nsoilmx,ngridmx,iip1,jjp1,inertiedat,ithS)
    352354      call gr_fi_dyn(1,ngridmx,iip1,jjp1,emis,emisS)
     355      call gr_fi_dyn(1,ngridmx,iip1,jjp1,albedo(1,1),albedoS)
    353356      call gr_fi_dyn(llm+1,ngridmx,iip1,jjp1,q2,q2S)
    354357      call gr_fi_dyn(nqtot,ngridmx,iip1,jjp1,qsurf,qsurfS)
     
    455458!     &  'kg/m2',2,co2iceS)
    456459      call write_archive(nid,ntime,'emis','grd emis',' ',2,emisS)
     460      call write_archive(nid,ntime,'albedo','surface albedo',' ',
     461     &                   2,albedoS)
    457462      call write_archive(nid,ntime,'ps','Psurf','Pa',2,ps)
    458463      call write_archive(nid,ntime,'tsurf','surf T','K',2,tsurfS)
Note: See TracChangeset for help on using the changeset viewer.