#include <misc.h>
#include <preproc.h>
module restFileMod 3,5
!-----------------------------------------------------------------------
!BOP
!
! !MODULE: restFileMod
!
! !DESCRIPTION:
! Reads from or writes to/ the CLM restart file.
!
! !USES:
use shr_kind_mod
, only : r8 => shr_kind_r8
use spmdMod
, only : masterproc
use abortutils
, only : endrun
use clm_varctl
, only : iulog
use ncdio
!
! !PUBLIC TYPES:
implicit none
save
!
logical, public :: &
rest_flag = .true. ! namelist true => restart on
!
! !PUBLIC MEMBER FUNCTIONS:
public :: restFile_read
public :: restFile_write
public :: restFile_read_binary
public :: restFile_write_binary
public :: restFile_open
public :: restFile_close
public :: restFile_getfile
public :: restFile_filename ! Sets restart filename
!
! !PRIVATE MEMBER FUNCTIONS:
private :: restFile_read_pfile
private :: restFile_write_pfile ! Writes restart pointer file
private :: restFile_closeRestart ! Close restart file and write restart pointer file
private :: restFile_dimset
private :: restFile_dimcheck
private :: restFile_enddef
!
! !REVISION HISTORY:
! Author: Mariana Vertenstein
!
!
! !PRIVATE TYPES: None
private
!EOP
!-----------------------------------------------------------------------
contains
!-----------------------------------------------------------------------
!BOP
!
! !IROUTINE: restFile_write
!
! !INTERFACE:
subroutine restFile_write( file, nlend, noptr ) 2,28
!
! !DESCRIPTION:
! Read/write CLM restart file.
!
! !USES:
use clm_time_manager
, only : timemgr_restart_io, get_nstep
use subgridRestMod
, only : SubgridRest
use BiogeophysRestMod
, only : BiogeophysRest
#if (defined CN)
use CNRestMod
, only : CNRest
#endif
#if (defined RTM)
use RtmMod
, only : RTMRest
#endif
#if (defined CASA)
use CASAMod
, only : CASARest
#endif
use accumulMod
, only : accumulRest
!
! !ARGUMENTS:
implicit none
include 'netcdf.inc'
character(len=*) , intent(in) :: file ! output netcdf restart file
logical, intent(in) :: nlend ! if at the end of the simulation
logical, intent(in), optional :: noptr ! if should NOT write to the restart pointer file
!
! !CALLED FROM:
! subroutine clm_driver2
!
! !REVISION HISTORY:
! Author: Mariana Vertenstein
!
!
! !LOCAL VARIABLES:
!EOP
integer :: ncid ! netcdf id
integer :: i ! index
logical :: ptrfile ! write out the restart pointer file
!-----------------------------------------------------------------------
if ( present(noptr) )then
ptrfile = .not. noptr
else
ptrfile = .true.
end if
! Open restart file
call restFile_open
( flag='write', file=file, ncid=ncid )
! Define dimensions
call restFile_dimset
( ncid )
! Define restart file variables
call timemgr_restart_io
( ncid, flag='define' )
call SubgridRest
( ncid, flag='define' )
call BiogeophysRest
( ncid, flag='define' )
#if (defined CN)
call CNRest
( ncid, flag='define' )
#endif
#if (defined CASA)
call CASARest
( ncid, flag='define' )
#endif
#if (defined RTM)
call RtmRest
( ncid, flag='define' )
#endif
call accumulRest
( ncid, flag='define' )
call restFile_enddef
( ncid )
! Write restart file variables
call timemgr_restart_io
( ncid, flag='write' )
call SubgridRest
( ncid, flag='write' )
call BiogeophysRest
( ncid, flag='write' )
#if (defined CN)
call CNRest
( ncid, flag='write' )
#endif
#if (defined CASA)
call CASARest
( ncid, flag='write' )
#endif
#if (defined RTM)
call RtmRest
( ncid, flag='write' )
#endif
call accumulRest
( ncid, flag='write' )
! Close restart file and write restart pointer file
call restFile_close
( ncid )
call restFile_closeRestart
( file, nlend )
! Write restart pointer file
if ( ptrfile ) call restFile_write_pfile
( file )
! Write out diagnostic info
if (masterproc) then
write(iulog,*) 'Successfully wrote out restart data at nstep = ',get_nstep
()
write(iulog,'(72a1)') ("-",i=1,60)
end if
end subroutine restFile_write
!-----------------------------------------------------------------------
!BOP
!
! !IROUTINE: restFile_read
!
! !INTERFACE:
subroutine restFile_read( file ) 1,13
!
! !DESCRIPTION:
! Read a CLM restart file.
!
! !USES:
use BiogeophysRestMod
, only : BiogeophysRest
#if (defined CN)
use CNRestMod
, only : CNRest
#endif
#if (defined RTM)
use RtmMod
, only : RTMRest
#endif
#if (defined CASA)
use CASAMod
, only : CASARest
#endif
use accumulMod
, only : accumulRest
!
! !ARGUMENTS:
implicit none
include 'netcdf.inc'
character(len=*), intent(in) :: file ! output netcdf restart file
!
! !CALLED FROM:
! subroutine initialize2
!
! !REVISION HISTORY:
! Author: Mariana Vertenstein
!
!
! !LOCAL VARIABLES:
!EOP
integer :: ncid ! netcdf id
integer :: i ! index
!-----------------------------------------------------------------------
! Open file
call restFile_open
( flag='read', file=file, ncid=ncid )
! Read file
call restFile_dimcheck
( ncid )
call BiogeophysRest
( ncid, flag='read' )
#if (defined CN)
call CNRest
( ncid, flag='read' )
#endif
#if (defined CASA)
call CASARest
( ncid, flag='read' )
#endif
#if (defined RTM)
call RtmRest
( ncid, flag='read' )
#endif
call accumulRest
( ncid, flag='read' )
! Close file
call restFile_close
( ncid )
! Write out diagnostic info
if (masterproc) then
write(iulog,'(72a1)') ("-",i=1,60)
write(iulog,*) 'Successfully read restart data for restart run'
write(iulog,*)
end if
end subroutine restFile_read
!-----------------------------------------------------------------------
!BOP
!
! !IROUTINE: restFile_read_binary
!
! !INTERFACE:
subroutine restFile_read_binary( file ) 1,6
!
! !DESCRIPTION:
! Read a CLM restart file.
!
! !USES:
use fileutils
, only : relavu, opnfil, getfil, getavu
use histFileMod
, only : hist_restart
!
! !ARGUMENTS:
implicit none
character(len=*), intent(in) :: file ! binary restart file
!
! !CALLED FROM:
! subroutine initialize2
!
! !REVISION HISTORY:
! Author: Mariana Vertenstein
!
!
! !LOCAL VARIABLES:
!EOP
integer :: nio ! Fortran unit number
!-----------------------------------------------------------------------
if (masterproc) then
nio = getavu
()
call opnfil
(file, nio, 'u')
end if
call hist_restart
(nio, flag='read')
if (masterproc) then
call relavu
(nio)
end if
end subroutine restFile_read_binary
!-----------------------------------------------------------------------
!BOP
!
! !IROUTINE: restFile_write_binary
!
! !INTERFACE:
subroutine restFile_write_binary( file, nlend ) 1,7
!
! !DESCRIPTION:
! Read a CLM restart file.
!
! !USES:
use fileutils
, only : relavu, opnfil, getfil, getavu
use histFileMod
, only : hist_restart
!
! !ARGUMENTS:
implicit none
character(len=*) , intent(in) :: file ! binary restart file
logical, intent(in) :: nlend
!
! !CALLED FROM:
! subroutine clm_driver2
!
! !REVISION HISTORY:
! Author: Mariana Vertenstein
!
!
! !LOCAL VARIABLES:
!EOP
integer :: nio ! Fortran unit number
!-----------------------------------------------------------------------
if (masterproc) then
nio = getavu
()
call opnfil
(file, nio, 'u')
end if
call hist_restart
(nio, flag='write')
if (masterproc) then
call relavu
(nio)
call restFile_closeRestart
( file, nlend )
end if
end subroutine restFile_write_binary
!-----------------------------------------------------------------------
!BOP
!
! !IROUTINE: restFile_getfile
!
! !INTERFACE:
subroutine restFile_getfile( file, path ) 1,7
!
! !DESCRIPTION:
! Determine and obtain netcdf restart file
!
! !USES:
use clm_varctl
, only : caseid, finidat, nrevsn, nsrest, brnch_retain_casename
use fileutils
, only : getfil
!
! !ARGUMENTS:
implicit none
include 'netcdf.inc'
character(len=*), intent(out) :: file ! name of netcdf restart file
character(len=*), intent(out) :: path ! full pathname of netcdf restart file
!
! !CALLED FROM:
! subroutine initialize2
!
! !REVISION HISTORY:
! Author: Mariana Vertenstein
!
!
! !LOCAL VARIABLES:
!EOP
integer :: status ! return status
integer :: length ! temporary
character(len=256) :: ftest,ctest ! temporaries
!-----------------------------------------------------------------------
if (masterproc) then
! Restart run:
! Restart file pathname is read restart pointer file
if (nsrest==1) then
call restFile_read_pfile
( path )
call getfil
( path, file, 0 )
end if
! Branch run:
! Restart file pathname is obtained from namelist "nrevsn"
! Check case name consistency (case name must be different for branch run,
! unless namelist specification states otherwise)
if (nsrest==3) then
length = len_trim(nrevsn)
if (nrevsn(length-2:length) == '.nc') then
path = trim(nrevsn)
else
path = trim(nrevsn) // '.nc'
end if
call getfil
( path, file, 0 )
! tcraig, adding xx. and .clm2 makes this more robust
ctest = 'xx.'//trim(caseid)//'.clm2'
ftest = 'xx.'//trim(file)
status = index(trim(ftest),trim(ctest))
if (status /= 0 .and. .not.(brnch_retain_casename)) then
write(iulog,*) 'Must change case name on branch run if ',&
'brnch_retain_casename namelist is not set'
write(iulog,*) 'previous case filename= ',trim(file),&
' current case = ',trim(caseid), &
' ctest = ',trim(ctest), &
' ftest = ',trim(ftest)
call endrun
()
end if
end if
! Initial run:
! Restart file pathname is obtained from namelist "finidat"
if (nsrest==0) then
call getfil
( finidat, file, 0 )
end if
end if
end subroutine restFile_getfile
!-----------------------------------------------------------------------
!BOP
!
! !IROUTINE: restFile_read_pfile
!
! !INTERFACE:
subroutine restFile_read_pfile( pnamer ) 1,5
!
! !DESCRIPTION:
! Setup restart file and perform necessary consistency checks
!
! !USES:
use fileutils
, only : opnfil, getavu, relavu
use clm_varctl
, only : rpntfil, rpntdir
!
! !ARGUMENTS:
implicit none
character(len=*), intent(out) :: pnamer ! full path of binary restart file
!
! !CALLED FROM:
! subroutine restart in this module
!
! !REVISION HISTORY:
! Created by Mariana Vertenstein
!
!
! !LOCAL VARIABLES:
!EOP
integer :: i ! indices
integer :: nio ! restart unit
integer :: status ! substring check status
character(len=256) :: locfn ! Restart pointer file name
!-----------------------------------------------------------------------
! Obtain the restart file from the restart pointer file.
! For restart runs, the restart pointer file contains the full pathname
! of the restart file. For branch runs, the namelist variable
! [nrevsn] contains the full pathname of the restart file.
! New history files are always created for branch runs.
if (masterproc) then
write(iulog,*) 'Reading restart pointer file....'
nio = getavu
()
locfn = trim(rpntdir) //'/'// trim(rpntfil)
call opnfil
(locfn, nio, 'f')
read (nio,'(a256)') pnamer
call relavu
(nio)
write(iulog,*) 'Reading restart data.....'
write(iulog,'(72a1)') ("-",i=1,60)
end if
end subroutine restFile_read_pfile
!-----------------------------------------------------------------------
!BOP
!
! !IROUTINE: restFile_closeRestart
!
! !INTERFACE:
subroutine restFile_closeRestart( file, nlend ) 2,2
!
! !DESCRIPTION:
! Close restart file and write restart pointer file if
! in write mode, otherwise just close restart file if in read mode
!
! !USES:
use clm_time_manager
, only : is_last_step
use fileutils
, only : putfil, set_filename
!
! !ARGUMENTS:
implicit none
character(len=*) , intent(in) :: file ! local output filename
logical, intent(in) :: nlend
!
! !CALLED FROM:
! subroutine restart in this module
!
! !REVISION HISTORY:
! Author: Mariana Vertenstein
!
!
! !LOCAL VARIABLES:
!EOP
integer :: i !index
!-----------------------------------------------------------------------
if (masterproc) then
write(iulog,*) 'Successfully wrote local restart file ',trim(file)
write(iulog,'(72a1)') ("-",i=1,60)
write(iulog,*)
end if
end subroutine restFile_closeRestart
!-----------------------------------------------------------------------
!BOP
!
! !IROUTINE: restFile_write_pfile
!
! !INTERFACE:
subroutine restFile_write_pfile( fnamer ) 1,6
!
! !DESCRIPTION:
! Open restart pointer file. Write names of current binary and netcdf
! restart files.
!
! !USES:
use clm_varctl
, only : rpntdir, rpntfil
use fileutils
, only : set_filename, relavu
use fileutils
, only : getavu, opnfil
!
! !ARGUMENTS:
implicit none
character(len=*), intent(in) :: fnamer
!
! !CALLED FROM:
! subroutine restart in this module
!
! !REVISION HISTORY:
! Author: Mariana Vertenstein
!
!
! !LOCAL VARIABLES:
!EOP
integer :: m ! index
integer :: nio ! restart pointer file
character(len=256) :: filename ! local file name
!-----------------------------------------------------------------------
if (masterproc) then
nio = getavu
()
filename= trim(rpntdir) //'/'// trim(rpntfil)
call opnfil
( filename, nio, 'f' )
write(nio,'(a)') fnamer
call relavu
( nio )
write(iulog,*)'Successfully wrote local restart pointer file'
end if
end subroutine restFile_write_pfile
!-----------------------------------------------------------------------
subroutine restFile_open( flag, file, ncid ) 3,5
use clm_time_manager
, only : get_nstep
implicit none
character(len=*), intent(in) :: flag ! flag to specify read or write
character(len=*), intent(in) :: file ! filename
integer, intent(out) :: ncid ! netcdf id
integer :: omode ! netCDF dummy variable
character(len= 32) :: subname='restFile_open' ! subroutine name
if (masterproc) then
if (flag == 'write') then
! Create new netCDF file (in define mode) and set fill mode
! to "no fill" to optimize performance
write(iulog,*)
write(iulog,*)'restFile_open: writing restart dataset at ',&
trim(file), ' at nstep = ',get_nstep
()
write(iulog,*)
call ncd_create
(trim(file), nf_clobber, ncid, subname )
call check_ret
( nf_set_fill(ncid, nf_nofill, omode), subname )
else if (flag == 'read') then
! Open netcdf restart file
write(iulog,*) 'Reading restart dataset'
call ncd_open
(file, nf_nowrite, ncid, subname )
end if
end if
end subroutine restFile_open
!-----------------------------------------------------------------------
!BOP
!
! !IROUTINE: restFile_filename
!
! !INTERFACE:
character(len=256) function restFile_filename( type, offset, rdate ) 3,5
!
! !DESCRIPTION:
!
! !USES:
use clm_varctl
, only : caseid
use clm_time_manager
, only : get_curr_date, get_step_size
!
! !ARGUMENTS:
implicit none
character(len=*) , intent(in) :: type ! output type "binary" or "netcdf"
integer , optional, intent(in) :: offset ! offset from current time in seconds
! positive for future times and
! negative for previous times
character(len=*), optional, intent(in) :: rdate ! input date for restart file name
!
! !CALLED FROM:
! subroutine restart in this module
!
! !REVISION HISTORY:
! Author: Mariana Vertenstein
!
!
! !LOCAL VARIABLES:
!EOP
character(len=256) :: cdate ! date char string
integer :: day ! day (1 -> 31)
integer :: mon ! month (1 -> 12)
integer :: yr ! year (0 -> ...)
integer :: sec ! seconds into current day
!-----------------------------------------------------------------------
! Note - the only difference between a restart and an initial file
! is that an initial file is written one time step before the date
! stamp associated with the file name. Consequently it can be used
! for an initial run and have "restart" type of capabilities for that run
if (masterproc) then
if (present(rdate)) then
cdate = rdate
else
if (present(offset)) then
call get_curr_date
(yr, mon, day, sec, offset=offset)
else
call get_curr_date
(yr, mon, day, sec)
end if
write(cdate,'(i4.4,"-",i2.2,"-",i2.2,"-",i5.5)') yr,mon,day,sec
end if
if (trim(type) == 'binary') then
restFile_filename = "./"//trim(caseid)//".clm2.r."//trim(cdate)
else if (trim(type) == 'netcdf') then
if (present(offset)) then
restFile_filename = "./"//trim(caseid)//".clm2.i."//trim(cdate)//".nc"
write(iulog,*)'writing initial file ',trim(restFile_filename),' for model date = ',cdate
else
restFile_filename = "./"//trim(caseid)//".clm2.r."//trim(cdate)//".nc"
write(iulog,*)'writing restart file ',trim(restFile_filename),' for model date = ',cdate
end if
else
write(iulog,*)'restart file type ',trim(type),' is not supported'; call endrun
()
end if
else
restfile_filename = 'not_defined'
end if
end function restFile_filename
!------------------------------------------------------------------------
!BOP
!
! !IROUTINE: restFile_dimset
!
! !INTERFACE:
subroutine restFile_dimset( ncid ) 1,35
!
! !DESCRIPTION:
! Read/Write initial data from/to netCDF instantaneous initial data file
!
! !USES:
use shr_kind_mod
, only : r8 => shr_kind_r8
use clm_time_manager
, only : get_nstep, get_curr_date
use spmdMod
, only : mpicom, MPI_LOGICAL
use clm_varctl
, only : caseid, ctitle, version, username, hostname, fsurdat, &
conventions, source
use clm_varpar
, only : numrad, rtmlon, rtmlat, nlevlak, nlevsno, nlevgrnd
use decompMod
, only : get_proc_bounds, get_proc_global
#ifdef RTM
! use RunoffMod , only : get_proc_rof_global
#endif
#if (defined CASA)
use CASAMod
, only : nlive, npools, npool_types
#endif
!
! !ARGUMENTS:
implicit none
integer, intent(in) :: ncid ! netCDF dataset id
!
! !REVISION HISTORY:
!
!
! !LOCAL VARIABLES:
!EOP
integer :: yr ! current year (0 -> ...)
integer :: mon ! current month (1 -> 12)
integer :: day ! current day (1 -> 31)
integer :: mcsec ! seconds of current date
integer :: mcdate ! current date
integer :: dimid ! netCDF dimension id
integer :: numg ! total number of gridcells across all processors
integer :: numl ! total number of landunits across all processors
integer :: numc ! total number of columns across all processors
integer :: nump ! total number of pfts across all processors
! integer :: nrof_lnd ! total number of land runoff points across all procs
! integer :: nrof_ocn ! total number of ocean runoff points across all procs
! integer :: nrof_rtm ! total number of rtm cells over all procs
integer :: ier ! error status
integer :: strlen_dimid ! string dimension id
character(len= 8) :: curdate ! current date
character(len= 8) :: curtime ! current time
character(len=256) :: str
character(len= 32) :: subname='restFile_dimset' ! subroutine name
!------------------------------------------------------------------------
if (masterproc) then
call get_proc_global
(numg, numl, numc, nump)
#if (defined RTM)
! call get_proc_rof_global(nrof_rtm, nrof_lnd, nrof_ocn)
#endif
! Define dimensions
call check_ret
( nf_def_dim(ncid, 'gridcell', numg , dimid), subname )
call check_ret
( nf_def_dim(ncid, 'landunit', numl , dimid), subname )
call check_ret
( nf_def_dim(ncid, 'column' , numc , dimid), subname )
call check_ret
( nf_def_dim(ncid, 'pft' , nump , dimid), subname )
call check_ret
( nf_def_dim(ncid, 'levgrnd' , nlevgrnd , dimid), subname )
call check_ret
( nf_def_dim(ncid, 'levlak' , nlevlak , dimid), subname )
call check_ret
( nf_def_dim(ncid, 'levsno' , nlevsno , dimid), subname )
call check_ret
( nf_def_dim(ncid, 'levsno1' , nlevsno+1 , dimid), subname )
call check_ret
( nf_def_dim(ncid, 'levtot' , nlevsno+nlevgrnd, dimid), subname )
call check_ret
( nf_def_dim(ncid, 'numrad' , numrad , dimid), subname )
#if (defined CASA)
call check_ret
(nf_def_dim (ncid, 'nlive' , nlive , dimid), subname)
call check_ret
(nf_def_dim (ncid, 'npools' , npools , dimid), subname)
call check_ret
(nf_def_dim (ncid, 'npool_types', npool_types , dimid), subname)
#endif
#if (defined RTM)
! call check_ret( nf_def_dim(ncid, 'ocnrof' , nrof_ocn , dimid), subname )
! call check_ret( nf_def_dim(ncid, 'lndrof' , nrof_lnd , dimid), subname )
! call check_ret( nf_def_dim(ncid, 'allrof' , nrof_rtm , dimid), subname )
call check_ret
( nf_def_dim(ncid, 'rtmlon' , rtmlon , dimid), subname )
call check_ret
( nf_def_dim(ncid, 'rtmlat' , rtmlat , dimid), subname )
#endif
call check_ret
( nf_def_dim(ncid, 'string_length', 64 , dimid), subname)
! Define global attributes
call check_ret
(nf_put_att_text(ncid, NF_GLOBAL, 'conventions', len_trim(conventions), trim(conventions)), &
subname)
call getdatetime
(curdate, curtime)
str = 'created on ' // curdate // ' ' // curtime
call check_ret
(nf_put_att_text(ncid, NF_GLOBAL, 'history', len_trim(str), trim(str)), subname)
call check_ret
(nf_put_att_text(ncid, NF_GLOBAL, 'username', len_trim(username), trim(username)), subname)
call check_ret
(nf_put_att_text(ncid, NF_GLOBAL, 'host', len_trim(hostname), trim(hostname)), subname)
call check_ret
(nf_put_att_text(ncid, NF_GLOBAL, 'version', len_trim(version), trim(version)), subname)
call check_ret
(nf_put_att_text(ncid, NF_GLOBAL, 'source', len_trim(source), trim(source)), subname)
str = &
'$Id: restFileMod.F90 21819 2010-03-19 21:35:50Z erik $'
call check_ret
(nf_put_att_text(ncid, NF_GLOBAL, 'revision_id', len_trim(str), trim(str)), subname)
call check_ret
(nf_put_att_text(ncid, NF_GLOBAL, 'case_title', len_trim(ctitle), trim(ctitle)), subname)
call check_ret
(nf_put_att_text(ncid, NF_GLOBAL, 'case_id', len_trim(caseid), trim(caseid)), subname)
call check_ret
(nf_put_att_text(ncid, NF_GLOBAL, 'surface_dataset', len_trim(fsurdat), trim(fsurdat)), &
subname)
end if
end subroutine restFile_dimset
!-----------------------------------------------------------------------
!BOP
!
! !IROUTINE: restFile_dimcheck
!
! !INTERFACE:
subroutine restFile_dimcheck( ncid ) 1,11
!
! !DESCRIPTION:
! Check dimensions of restart file
!
! !USES:
use decompMod
, only : get_proc_bounds, get_proc_global
use clm_varpar
, only : nlevsno, nlevlak, nlevgrnd
use clm_varctl
, only : single_column, nsrest
implicit none
!
! !ARGUMENTS:
integer, intent(in) :: ncid
!
! !REVISION HISTORY:
! Author: Mariana Vertenstein
!
!
! !LOCAL VARIABLES:
!EOP
integer :: numg ! total number of gridcells across all processors
integer :: numl ! total number of landunits across all processors
integer :: numc ! total number of columns across all processors
integer :: nump ! total number of pfts across all processors
character(len=32) :: subname='restFile_dimcheck' ! subroutine name
!-----------------------------------------------------------------------
! Get relevant sizes
if (masterproc) then
if ( .not. single_column .or. nsrest /= 0 )then
call get_proc_global
(numg, numl, numc, nump)
call check_dim
(ncid, 'gridcell', numg)
call check_dim
(ncid, 'landunit', numl)
call check_dim
(ncid, 'column' , numc)
call check_dim
(ncid, 'pft' , nump)
end if
call check_dim
(ncid, 'levsno' , nlevsno)
call check_dim
(ncid, 'levgrnd' , nlevgrnd)
call check_dim
(ncid, 'levlak' , nlevlak)
#if (defined CASA)
! Dimensions should be checked, but this will only work for initial
! datasets created with CASA enabled so do not normally do this.
! call check_dim(ncid, 'nlive' , nlive)
! call check_dim(ncid, 'npools' , npools)
! call check_dim(ncid, 'npool_types' , npool_types)
#endif
end if
end subroutine restFile_dimcheck
!-----------------------------------------------------------------------
!BOP
!
! !IROUTINE: restFile_enddef
!
! !INTERFACE:
subroutine restFile_enddef( ncid ) 1,1
!
! !DESCRIPTION:
! Read a CLM restart file.
!
! !USES:
!
! !ARGUMENTS:
implicit none
integer, intent(in) :: ncid
!
! !REVISION HISTORY:
! Author: Mariana Vertenstein
!
!
! !LOCAL VARIABLES:
!EOP
integer :: nio ! Fortran unit number
character(len=32) :: subname='restFile_enddef' ! subroutine name
!-----------------------------------------------------------------------
if (masterproc) then
call check_ret
(nf_enddef(ncid), subname)
end if
end subroutine restFile_enddef
!-----------------------------------------------------------------------
!BOP
!
! !IROUTINE: restFile_close
!
! !INTERFACE:
subroutine restFile_close( ncid ) 3,1
!
! !DESCRIPTION:
! Read a CLM restart file.
!
! !USES:
!
! !ARGUMENTS:
implicit none
integer, intent(in) :: ncid
!
! !REVISION HISTORY:
! Author: Mariana Vertenstein
!
!
! !LOCAL VARIABLES:
!EOP
character(len=32) :: subname='restFile_close' ! subroutine name
!-----------------------------------------------------------------------
if (masterproc) then
call ncd_close
(ncid, subname)
end if
end subroutine restFile_close
end module restFileMod