Ignore:
Timestamp:
May 19, 2017, 11:19:17 AM (8 years ago)
Author:
mvals
Message:

Mars GCM

  • implementation of a sub-grid water cloud fraction scheme (by A. Pottier): If CLFvarying is set to true in callphys.def, then the sub-grid cloud fraction routine is applied in watercloud.F and aeropacity.F.
  • accordingly modified files are: watercloud.F, aeropacity.F, callradite.F, conf_phys.F, phyetat0.F, phyredem.F90, physiq_mod.F, testphys1d.F, callkeys.h, newtsart.F, start2archive.F, lect_start_archive.F
  • added file: tcondwater.F90, used by watercloud.F to calculate the condensation temperature of water
  • watercloud.F, aeropacity.F, callradite.F are converted to module files as watercloud_mod.F, aeropacity_mod.F, callradite_mod.F

MV

Location:
trunk/LMDZ.MARS/libf/dynphy_lonlat/phymars
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/LMDZ.MARS/libf/dynphy_lonlat/phymars/lect_start_archive.F

    r1422 r1711  
    22     &     date,tsurf,tsoil,emis,q2,
    33     &     t,ucov,vcov,ps,co2ice,h,phisold_newgrid,
    4      &     q,qsurf,tauscaling,surfith,nid)
     4     &     q,qsurf,tauscaling,totcloudfrac,surfith,nid)
    55c=======================================================================
    66c
     
    4949      REAL,INTENT(OUT) :: q2(ngrid,nlayer+1),qsurf(ngrid,nqtot)
    5050      REAL,INTENT(OUT) :: tauscaling(ngrid) ! dust conversion factor
     51      REAL,INTENT(OUT) :: totcloudfrac(ngrid) ! sub grid cloud fraction
    5152      REAL,INTENT(OUT) :: phisold_newgrid(iip1,jjp1)
    5253      REAL,INTENT(OUT) :: t(iip1,jjp1,llm)
     
    130131      REAL q2S(iip1,jjp1,llm+1),qsurfS(iip1,jjp1,nqtot)
    131132      real tauscalingS(iip1,jjp1)
     133      real totcloudfracS(iip1,jjp1)
    132134
    133135      real ptotal, co2icetotal
     
    158160      real, dimension(:,:,:,:), allocatable :: qold
    159161      real, dimension(:,:), allocatable :: tauscalingold
     162      real, dimension(:,:), allocatable :: totcloudfracold
    160163
    161164      real tab_cntrl(100)
     
    358361      allocate(qsurfold(imold+1,jmold+1,nqtot))
    359362      allocate(tauscalingold(imold+1,jmold+1))
     363      allocate(totcloudfracold(imold+1,jmold+1))
    360364
    361365      allocate(var (imold+1,jmold+1,llm))
     
    683687
    684688c-----------------------------------------------------------------------
    685 c 5.1 Lecture des champs 2D (co2ice, emis,ps,tsurf,Tg[10], q2surf, tauscaling)
     689c 5.1 Lecture des champs 2D (co2ice, emis,ps,tsurf,Tg[10], q2surf, tauscaling,totcloudfrac)
    686690c-----------------------------------------------------------------------
    687691 
     
    777781        IF (ierr .NE. NF_NOERR) THEN
    778782           PRINT*, "lect_start_archive: Failed loading <tauscaling>"
     783           PRINT*, NF_STRERROR(ierr)
     784           CALL abort
     785        ENDIF
     786      ENDIF
     787
     788      ierr = NF_INQ_VARID (nid, "totcloudfrac", nvarid)
     789      IF (ierr .NE. NF_NOERR) THEN
     790         PRINT*, "lect_start_archive: <totcloudfrac> not in file"
     791         totcloudfracold(:,:) = 1
     792      ELSE
     793#ifdef NC_DOUBLE
     794        ierr = NF_GET_VARA_DOUBLE(nid, nvarid,start,count,
     795     &                            totcloudfracold)
     796#else
     797        ierr = NF_GET_VARA_REAL(nid, nvarid,start,count,
     798     &                          totcloudfracold)
     799#endif
     800        IF (ierr .NE. NF_NOERR) THEN
     801           PRINT*, "lect_start_archive: Failed loading <totcloudfrac>"
    779802           PRINT*, NF_STRERROR(ierr)
    780803           CALL abort
     
    10631086     &                   1,rlonuold,rlatvold,rlonu,rlatv)
    10641087      call gr_dyn_fi (1,iim+1,jjm+1,ngrid,tauscalings,tauscaling)
     1088     
     1089c Sub grid cloud fraction
     1090      call interp_horiz (totcloudfracold,totcloudfracs,imold,jmold,iim,
     1091     &                   jjm,1,rlonuold,rlatvold,rlonu,rlatv)
     1092      call gr_dyn_fi (1,iim+1,jjm+1,ngrid,totcloudfracs,totcloudfrac)
     1093     
    10651094c     write(46,*) 'emis',emis
    10661095c-----------------------------------------------------------------------
     
    14221451      deallocate(qsurfold)
    14231452      deallocate(tauscalingold)
     1453      deallocate(totcloudfracold)
    14241454      deallocate(var,varp1)
    14251455
  • trunk/LMDZ.MARS/libf/dynphy_lonlat/phymars/newstart.F

    r1543 r1711  
    170170      real,allocatable :: coefvmr(:)  ! Correction coefficient when changing composition
    171171      integer :: iloc(1), iqmax
     172! sub-grid cloud fraction
     173      real :: totcloudfrac(ngridmx)
    172174
    173175c sortie visu pour les champs dynamiques
     
    402404     &   date,tsurf,tsoil,emis,q2,
    403405     &   t,ucov,vcov,ps,co2ice,teta,phisold_newgrid,q,qsurf,
    404      &   tauscaling,surfith,nid)
     406     &   tauscaling,totcloudfrac,surfith,nid)
    405407        write(*,*) "OK, read start_archive file"
    406408        ! copy soil thermal inertia
     
    423425        CALL phyetat0 (fichnom,tab0,Lmodif,nsoilmx,ngridmx,llm,nqtot,
    424426     .        day_ini,time,
    425      .        tsurf,tsoil,emis,q2,qsurf,co2ice,tauscaling)
     427     .        tsurf,tsoil,emis,q2,qsurf,co2ice,tauscaling,totcloudfrac)
    426428       
    427429        ! copy albedo and soil thermal inertia
     
    16401642      call physdem1("restartfi.nc",nsoilmx,ngridmx,llm,nqtot,
    16411643     .              dtphys,hour_ini,
    1642      .              tsurf,tsoil,co2ice,emis,q2,qsurf,tauscaling)
     1644     .              tsurf,tsoil,co2ice,emis,q2,qsurf,tauscaling,
     1645     .              totcloudfrac)
    16431646
    16441647c=======================================================================
  • trunk/LMDZ.MARS/libf/dynphy_lonlat/phymars/start2archive.F

    r1593 r1711  
    6464      REAL co2ice(ngridmx)        ! CO2 ice layer
    6565      REAL tauscaling(ngridmx) ! dust conversion factor
     66      REAL totcloudfrac(ngridmx) ! sub-grid cloud fraction
    6667      REAL q2(ngridmx,llm+1)
    6768      REAL emis(ngridmx)
     
    7980      REAL co2iceS(ip1jmp1)
    8081      REAL tauscalingS(ip1jmp1)
     82      REAL totcloudfracS(ip1jmp1)
    8183      REAL q2S(ip1jmp1,llm+1)
    8284      REAL,ALLOCATABLE :: qsurfS(:,:)
     
    156158      CALL phyetat0 (fichnom,0,Lmodif,nsoilmx,ngridmx,llm,nqtot,
    157159     &      day_ini_fi,timefi,tsurf,tsoil,emis,q2,qsurf,co2ice,
    158      &      tauscaling)
     160     &      tauscaling,totcloudfrac)
    159161
    160162       ierr = NF_OPEN (fichnom, NF_NOWRITE,nid1)
     
    244246c qsurf --> qsurfS
    245247c tauscaling --> tauscalingS
     248c totcloudfrac --> totcloudfracS
    246249c
    247250c-----------------------------------------------------------------------
     
    256259      call gr_fi_dyn(nqtot,ngridmx,iip1,jjp1,qsurf,qsurfS)
    257260      call gr_fi_dyn(1,ngridmx,iip1,jjp1,tauscaling,tauscalingS)
     261      call gr_fi_dyn(1,ngridmx,iip1,jjp1,totcloudfrac,totcloudfracS)
    258262
    259263c=======================================================================
     
    346350      call write_archive(nid,ntime,'tauscaling',
    347351     &  'dust conversion factor',' ',2,tauscalingS)
     352      call write_archive(nid,ntime,'totcloudfrac',
     353     &  'sub grid cloud fraction',' ',2,totcloudfracS)
    348354      call write_archive(nid,ntime,'emis','grd emis',' ',2,emisS)
    349355      call write_archive(nid,ntime,'ps','Psurf','Pa',2,ps)
Note: See TracChangeset for help on using the changeset viewer.