2025-01-12 20:48:10 +08:00

2340 lines
92 KiB
Fortran

module CNrestMod
!-----------------------------------------------------------------------
!BOP
!
! !MODULE: CNrestMod
!
! !DESCRIPTION:
! Read/Write to/from CN info to CLM restart file.
!
! !USES:
use shr_kind_mod, only : r8 => shr_kind_r8
use spmdMod , only : masterproc
use abortutils , only : endrun
!
! !PUBLIC TYPES:
implicit none
save
!
! !PUBLIC MEMBER FUNCTIONS:
public :: CNrest
!
! !REVISION HISTORY:
! 11/05/03: Module created by Peter Thornton
!
!EOP
!-----------------------------------------------------------------------
contains
!-----------------------------------------------------------------------
!BOP
!
! !IROUTINE: CNRest
!
! !INTERFACE:
subroutine CNRest ( ncid, flag )
!
! !DESCRIPTION:
! Read/write CN restart data
!
! !USES:
use clmtype
use clm_atmlnd , only : clm_a2l
use clm_varpar , only : numrad
use clm_varctl , only : use_c13, use_cndv, use_exit_spinup
use decompMod , only : get_proc_bounds
use clm_time_manager, only : is_restart
use ncdio_pio
!
! !ARGUMENTS:
implicit none
type(file_desc_t) :: ncid ! netcdf id
character(len=*), intent(in) :: flag !'read' or 'write'
!
! !CALLED FROM:
! subroutine restart in module restFileMod
!
! !REVISION HISTORY:
! Author: Peter Thornton
!
!
! !LOCAL VARIABLES:
!EOP
integer :: c,p,j ! indices
integer :: begp, endp ! per-proc beginning and ending pft indices
integer :: begc, endc ! per-proc beginning and ending column indices
integer :: begl, endl ! per-proc beginning and ending landunit indices
integer :: begg, endg ! per-proc gridcell ending gridcell indices
real(r8):: m ! multiplier for the exit_spinup code
logical :: readvar ! determine if variable is on initial file
character(len=128) :: varname ! temporary
type(gridcell_type), pointer :: gptr ! pointer to gridcell derived subtype
type(landunit_type), pointer :: lptr ! pointer to landunit derived subtype
type(column_type) , pointer :: cptr ! pointer to column derived subtype
type(pft_type) , pointer :: pptr ! pointer to pft derived subtype
integer , pointer :: iptemp(:) ! pointer to memory to be allocated
integer :: ier ! error status
!-----------------------------------------------------------------------
! Set pointers into derived type
gptr => grc
lptr => lun
cptr => col
pptr => pft
! Determine necessary subgrid bounds
call get_proc_bounds(begg, endg, begl, endl, begc, endc, begp, endp)
!--------------------------------
! pft ecophysiological variables
!--------------------------------
! dormant_flag
if (flag == 'define') then
call ncd_defvar(ncid=ncid, varname='dormant_flag', xtype=ncd_double, &
dim1name='pft',long_name='dormancy flag',units='unitless' )
else if (flag == 'read' .or. flag == 'write') then
call ncd_io(varname='dormant_flag', data=pepv%dormant_flag, &
dim1name=namep, ncid=ncid, flag=flag, readvar=readvar)
if (flag=='read' .and. .not. readvar) then
if (is_restart()) call endrun
end if
end if
! days_active
if (flag == 'define') then
call ncd_defvar(ncid=ncid, varname='days_active', xtype=ncd_double, &
dim1name='pft',long_name='number of days since last dormancy',units='days' )
else if (flag == 'read' .or. flag == 'write') then
call ncd_io(varname='days_active', data=pepv%days_active, &
dim1name=namep, ncid=ncid, flag=flag, readvar=readvar)
if (flag=='read' .and. .not. readvar) then
if (is_restart()) call endrun
end if
end if
! onset_flag
if (flag == 'define') then
call ncd_defvar(ncid=ncid, varname='onset_flag', xtype=ncd_double, &
dim1name='pft',long_name='flag if critical growing degree-day sum is exceeded',units='unitless' )
else if (flag == 'read' .or. flag == 'write') then
call ncd_io(varname='onset_flag', data=pepv%onset_flag, &
dim1name=namep, ncid=ncid, flag=flag, readvar=readvar)
if (flag=='read' .and. .not. readvar) then
if (is_restart()) call endrun
end if
end if
! onset_counter
if (flag == 'define') then
call ncd_defvar(ncid=ncid, varname='onset_counter', xtype=ncd_double, &
dim1name='pft',long_name='onset days counter',units='sec' )
else if (flag == 'read' .or. flag == 'write') then
call ncd_io(varname='onset_counter', data=pepv%onset_counter, &
dim1name=namep, ncid=ncid, flag=flag, readvar=readvar)
if (flag=='read' .and. .not. readvar) then
if (is_restart()) call endrun
end if
end if
! onset_gddflag
if (flag == 'define') then
call ncd_defvar(ncid=ncid, varname='onset_gddflag', xtype=ncd_double, &
dim1name='pft',long_name='onset flag for growing degree day sum',units='' )
else if (flag == 'read' .or. flag == 'write') then
call ncd_io(varname='onset_gddflag', data=pepv%onset_gddflag, &
dim1name=namep, ncid=ncid, flag=flag, readvar=readvar)
if (flag=='read' .and. .not. readvar) then
if (is_restart()) call endrun
end if
end if
! onset_fdd
if (flag == 'define') then
call ncd_defvar(ncid=ncid, varname='onset_fdd', xtype=ncd_double, &
dim1name='pft',long_name='onset freezing degree days counter',units='days' )
else if (flag == 'read' .or. flag == 'write') then
call ncd_io(varname='onset_fdd', data=pepv%onset_fdd, &
dim1name=namep, ncid=ncid, flag=flag, readvar=readvar)
if (flag=='read' .and. .not. readvar) then
if (is_restart()) call endrun
end if
end if
! onset_gdd
if (flag == 'define') then
call ncd_defvar(ncid=ncid, varname='onset_gdd', xtype=ncd_double, &
dim1name='pft',long_name='onset growing degree days',units='days' )
else if (flag == 'read' .or. flag == 'write') then
call ncd_io(varname='onset_gdd', data=pepv%onset_gdd, &
dim1name=namep, ncid=ncid, flag=flag, readvar=readvar)
if (flag=='read' .and. .not. readvar) then
if (is_restart()) call endrun
end if
end if
! onset_swi
if (flag == 'define') then
call ncd_defvar(ncid=ncid, varname='onset_swi', xtype=ncd_double, &
dim1name='pft',long_name='onset soil water index',units='days' )
else if (flag == 'read' .or. flag == 'write') then
call ncd_io(varname='onset_swi', data=pepv%onset_swi, &
dim1name=namep, ncid=ncid, flag=flag, readvar=readvar)
if (flag=='read' .and. .not. readvar) then
if (is_restart()) call endrun
end if
end if
! offset_flag
if (flag == 'define') then
call ncd_defvar(ncid=ncid, varname='offset_flag', xtype=ncd_double, &
dim1name='pft',long_name='offset flag',units='unitless' )
else if (flag == 'read' .or. flag == 'write') then
call ncd_io(varname='offset_flag', data=pepv%offset_flag, &
dim1name=namep, ncid=ncid, flag=flag, readvar=readvar)
if (flag=='read' .and. .not. readvar) then
if (is_restart()) call endrun
end if
end if
! offset_counter
if (flag == 'define') then
call ncd_defvar(ncid=ncid, varname='offset_counter', xtype=ncd_double, &
dim1name='pft',long_name='offset days counter',units='sec' )
else if (flag == 'read' .or. flag == 'write') then
call ncd_io(varname='offset_counter', data=pepv%offset_counter, &
dim1name=namep, ncid=ncid, flag=flag, readvar=readvar)
if (flag=='read' .and. .not. readvar) then
if (is_restart()) call endrun
end if
end if
! offset_fdd
if (flag == 'define') then
call ncd_defvar(ncid=ncid, varname='offset_fdd', xtype=ncd_double, &
dim1name='pft',long_name='offset freezing degree days counter',units='days' )
else if (flag == 'read' .or. flag == 'write') then
call ncd_io(varname='offset_fdd', data=pepv%offset_fdd, &
dim1name=namep, ncid=ncid, flag=flag, readvar=readvar)
if (flag=='read' .and. .not. readvar) then
if (is_restart()) call endrun
end if
end if
! offset_swi
if (flag == 'define') then
call ncd_defvar(ncid=ncid, varname='offset_swi', xtype=ncd_double, &
dim1name='pft',long_name='',units='')
else if (flag == 'read' .or. flag == 'write') then
call ncd_io(varname='offset_swi', data=pepv%offset_swi, &
dim1name=namep, ncid=ncid, flag=flag, readvar=readvar)
if (flag=='read' .and. .not. readvar) then
if (is_restart()) call endrun
end if
end if
! lgsf
if (flag == 'define') then
call ncd_defvar(ncid=ncid, varname='lgsf', xtype=ncd_double, &
dim1name='pft',long_name='',units='')
else if (flag == 'read' .or. flag == 'write') then
call ncd_io(varname='lgsf', data=pepv%lgsf, &
dim1name=namep, ncid=ncid, flag=flag, readvar=readvar)
if (flag=='read' .and. .not. readvar) then
if (is_restart()) call endrun
end if
end if
! bglfr
if (flag == 'define') then
call ncd_defvar(ncid=ncid, varname='bglfr', xtype=ncd_double, &
dim1name='pft',long_name='',units='')
else if (flag == 'read' .or. flag == 'write') then
call ncd_io(varname='bglfr', data=pepv%bglfr, &
dim1name=namep, ncid=ncid, flag=flag, readvar=readvar)
if (flag=='read' .and. .not. readvar) then
if (is_restart()) call endrun
end if
end if
! bgtr
if (flag == 'define') then
call ncd_defvar(ncid=ncid, varname='bgtr', xtype=ncd_double, &
dim1name='pft',long_name='',units='')
else if (flag == 'read' .or. flag == 'write') then
call ncd_io(varname='bgtr', data=pepv%bgtr, &
dim1name=namep, ncid=ncid, flag=flag, readvar=readvar)
if (flag=='read' .and. .not. readvar) then
if (is_restart()) call endrun
end if
end if
! dayl
if (flag == 'define') then
call ncd_defvar(ncid=ncid, varname='dayl', xtype=ncd_double, &
dim1name='pft',long_name='',units='')
else if (flag == 'read' .or. flag == 'write') then
call ncd_io(varname='dayl', data=pepv%dayl, &
dim1name=namep, ncid=ncid, flag=flag, readvar=readvar)
if (flag=='read' .and. .not. readvar) then
if (is_restart()) call endrun
end if
end if
! prev_dayl
if (flag == 'define') then
call ncd_defvar(ncid=ncid, varname='prev_dayl', xtype=ncd_double, &
dim1name='pft',long_name='',units='')
else if (flag == 'read' .or. flag == 'write') then
call ncd_io(varname='prev_dayl', data=pepv%prev_dayl, &
dim1name=namep, ncid=ncid, flag=flag, readvar=readvar)
if (flag=='read' .and. .not. readvar) then
if (is_restart()) call endrun
end if
end if
! annavg_t2m
if (flag == 'define') then
call ncd_defvar(ncid=ncid, varname='annavg_t2m', xtype=ncd_double, &
dim1name='pft',long_name='',units='')
else if (flag == 'read' .or. flag == 'write') then
call ncd_io(varname='annavg_t2m', data=pepv%annavg_t2m, &
dim1name=namep, ncid=ncid, flag=flag, readvar=readvar)
if (flag=='read' .and. .not. readvar) then
if (is_restart()) call endrun
end if
end if
! tempavg_t2m
if (flag == 'define') then
call ncd_defvar(ncid=ncid, varname='tempavg_t2m', xtype=ncd_double, &
dim1name='pft',long_name='',units='')
else if (flag == 'read' .or. flag == 'write') then
call ncd_io(varname='tempavg_t2m', data=pepv%tempavg_t2m, &
dim1name=namep, ncid=ncid, flag=flag, readvar=readvar)
if (flag=='read' .and. .not. readvar) then
if (is_restart()) call endrun
end if
end if
! gpp
if (flag == 'define') then
call ncd_defvar(ncid=ncid, varname='gpp_pepv', xtype=ncd_double, &
dim1name='pft',long_name='',units='')
else if (flag == 'read' .or. flag == 'write') then
call ncd_io(varname='gpp_pepv', data=pepv%gpp, &
dim1name=namep, ncid=ncid, flag=flag, readvar=readvar)
if (flag=='read' .and. .not. readvar) then
if (is_restart()) call endrun
end if
end if
! availc
if (flag == 'define') then
call ncd_defvar(ncid=ncid, varname='availc', xtype=ncd_double, &
dim1name='pft',long_name='',units='')
else if (flag == 'read' .or. flag == 'write') then
call ncd_io(varname='availc', data=pepv%availc, &
dim1name=namep, ncid=ncid, flag=flag, readvar=readvar)
if (flag=='read' .and. .not. readvar) then
if (is_restart()) call endrun
end if
end if
! xsmrpool_recover
if (flag == 'define') then
call ncd_defvar(ncid=ncid, varname='xsmrpool_recover', xtype=ncd_double, &
dim1name='pft',long_name='',units='')
else if (flag == 'read' .or. flag == 'write') then
call ncd_io(varname='xsmrpool_recover', data=pepv%xsmrpool_recover, &
dim1name=namep, ncid=ncid, flag=flag, readvar=readvar)
if (flag=='read' .and. .not. readvar) then
if (is_restart()) call endrun
end if
end if
if (use_c13) then
! xsmrpool_c13ratio
if (flag == 'define') then
call ncd_defvar(ncid=ncid, varname='xsmrpool_c13ratio', xtype=ncd_double, &
dim1name='pft',long_name='',units='')
else if (flag == 'read' .or. flag == 'write') then
call ncd_io(varname='xsmrpool_c13ratio', data=pepv%xsmrpool_c13ratio, &
dim1name=namep, ncid=ncid, flag=flag, readvar=readvar)
if (flag=='read' .and. .not. readvar) then
if (is_restart()) call endrun
end if
end if
end if
! alloc_pnow
if (flag == 'define') then
call ncd_defvar(ncid=ncid, varname='alloc_pnow', xtype=ncd_double, &
dim1name='pft',long_name='',units='')
else if (flag == 'read' .or. flag == 'write') then
call ncd_io(varname='alloc_pnow', data=pepv%alloc_pnow, &
dim1name=namep, ncid=ncid, flag=flag, readvar=readvar)
if (flag=='read' .and. .not. readvar) then
if (is_restart()) call endrun
end if
end if
! c_allometry
if (flag == 'define') then
call ncd_defvar(ncid=ncid, varname='c_allometry', xtype=ncd_double, &
dim1name='pft',long_name='',units='')
else if (flag == 'read' .or. flag == 'write') then
call ncd_io(varname='c_allometry', data=pepv%c_allometry, &
dim1name=namep, ncid=ncid, flag=flag, readvar=readvar)
if (flag=='read' .and. .not. readvar) then
if (is_restart()) call endrun
end if
end if
! n_allometry
if (flag == 'define') then
call ncd_defvar(ncid=ncid, varname='n_allometry', xtype=ncd_double, &
dim1name='pft',long_name='',units='')
else if (flag == 'read' .or. flag == 'write') then
call ncd_io(varname='n_allometry', data=pepv%n_allometry, &
dim1name=namep, ncid=ncid, flag=flag, readvar=readvar)
if (flag=='read' .and. .not. readvar) then
if (is_restart()) call endrun
end if
end if
! plant_ndemand
if (flag == 'define') then
call ncd_defvar(ncid=ncid, varname='plant_ndemand', xtype=ncd_double, &
dim1name='pft',long_name='',units='')
else if (flag == 'read' .or. flag == 'write') then
call ncd_io(varname='plant_ndemand', data=pepv%plant_ndemand, &
dim1name=namep, ncid=ncid, flag=flag, readvar=readvar)
if (flag=='read' .and. .not. readvar) then
if (is_restart()) call endrun
end if
end if
! tempsum_potential_gpp
if (flag == 'define') then
call ncd_defvar(ncid=ncid, varname='tempsum_potential_gpp', xtype=ncd_double, &
dim1name='pft',long_name='',units='')
else if (flag == 'read' .or. flag == 'write') then
call ncd_io(varname='tempsum_potential_gpp', data=pepv%tempsum_potential_gpp, &
dim1name=namep, ncid=ncid, flag=flag, readvar=readvar)
if (flag=='read' .and. .not. readvar) then
if (is_restart()) call endrun
end if
end if
!annsum_potential_gpp
if (flag == 'define') then
call ncd_defvar(ncid=ncid, varname='annsum_potential_gpp', xtype=ncd_double, &
dim1name='pft',long_name='',units='')
else if (flag == 'read' .or. flag == 'write') then
call ncd_io(varname='annsum_potential_gpp', data=pepv%annsum_potential_gpp, &
dim1name=namep, ncid=ncid, flag=flag, readvar=readvar)
if (flag=='read' .and. .not. readvar) then
if (is_restart()) call endrun
end if
end if
! tempmax_retransn
if (flag == 'define') then
call ncd_defvar(ncid=ncid, varname='tempmax_retransn', xtype=ncd_double, &
dim1name='pft',long_name='',units='')
else if (flag == 'read' .or. flag == 'write') then
call ncd_io(varname='tempmax_retransn', data=pepv%tempmax_retransn, &
dim1name=namep, ncid=ncid, flag=flag, readvar=readvar)
if (flag=='read' .and. .not. readvar) then
if (is_restart()) call endrun
end if
end if
! annmax_retransn
if (flag == 'define') then
call ncd_defvar(ncid=ncid, varname='annmax_retransn', xtype=ncd_double, &
dim1name='pft',long_name='',units='')
else if (flag == 'read' .or. flag == 'write') then
call ncd_io(varname='annmax_retransn', data=pepv%annmax_retransn, &
dim1name=namep, ncid=ncid, flag=flag, readvar=readvar)
if (flag=='read' .and. .not. readvar) then
if (is_restart()) call endrun
end if
end if
! avail_retransn
if (flag == 'define') then
call ncd_defvar(ncid=ncid, varname='avail_retransn', xtype=ncd_double, &
dim1name='pft',long_name='',units='')
else if (flag == 'read' .or. flag == 'write') then
call ncd_io(varname='avail_retransn', data=pepv%avail_retransn, &
dim1name=namep, ncid=ncid, flag=flag, readvar=readvar)
if (flag=='read' .and. .not. readvar) then
if (is_restart()) call endrun
end if
end if
! plant_nalloc
if (flag == 'define') then
call ncd_defvar(ncid=ncid, varname='plant_nalloc', xtype=ncd_double, &
dim1name='pft',long_name='',units='')
else if (flag == 'read' .or. flag == 'write') then
call ncd_io(varname='plant_nalloc', data=pepv%plant_nalloc, &
dim1name=namep, ncid=ncid, flag=flag, readvar=readvar)
if (flag=='read' .and. .not. readvar) then
if (is_restart()) call endrun
end if
end if
! plant_calloc
if (flag == 'define') then
call ncd_defvar(ncid=ncid, varname='plant_calloc', xtype=ncd_double, &
dim1name='pft',long_name='',units='')
else if (flag == 'read' .or. flag == 'write') then
call ncd_io(varname='plant_calloc', data=pepv%plant_calloc, &
dim1name=namep, ncid=ncid, flag=flag, readvar=readvar)
if (flag=='read' .and. .not. readvar) then
if (is_restart()) call endrun
end if
end if
! excess_cflux
if (flag == 'define') then
call ncd_defvar(ncid=ncid, varname='excess_cflux', xtype=ncd_double, &
dim1name='pft',long_name='',units='')
else if (flag == 'read' .or. flag == 'write') then
call ncd_io(varname='excess_cflux', data=pepv%excess_cflux, &
dim1name=namep, ncid=ncid, flag=flag, readvar=readvar)
if (flag=='read' .and. .not. readvar) then
if (is_restart()) call endrun
end if
end if
! downreg
if (flag == 'define') then
call ncd_defvar(ncid=ncid, varname='downreg', xtype=ncd_double, &
dim1name='pft',long_name='',units='')
else if (flag == 'read' .or. flag == 'write') then
call ncd_io(varname='downreg', data=pepv%downreg, &
dim1name=namep, ncid=ncid, flag=flag, readvar=readvar)
if (flag=='read' .and. .not. readvar) then
if (is_restart()) call endrun
end if
end if
! prev_leafc_to_litter
if (flag == 'define') then
call ncd_defvar(ncid=ncid, varname='prev_leafc_to_litter', xtype=ncd_double, &
dim1name='pft',long_name='',units='')
else if (flag == 'read' .or. flag == 'write') then
call ncd_io(varname='prev_leafc_to_litter', data=pepv%prev_leafc_to_litter, &
dim1name=namep, ncid=ncid, flag=flag, readvar=readvar)
if (flag=='read' .and. .not. readvar) then
if (is_restart()) call endrun
end if
end if
! prev_frootc_to_litter
if (flag == 'define') then
call ncd_defvar(ncid=ncid, varname='prev_frootc_to_litter', xtype=ncd_double, &
dim1name='pft',long_name='',units='')
else if (flag == 'read' .or. flag == 'write') then
call ncd_io(varname='prev_frootc_to_litter', data=pepv%prev_frootc_to_litter, &
dim1name=namep, ncid=ncid, flag=flag, readvar=readvar)
if (flag=='read' .and. .not. readvar) then
if (is_restart()) call endrun
end if
end if
! tempsum_npp
if (flag == 'define') then
call ncd_defvar(ncid=ncid, varname='tempsum_npp', xtype=ncd_double, &
dim1name='pft',long_name='',units='')
else if (flag == 'read' .or. flag == 'write') then
call ncd_io(varname='tempsum_npp', data=pepv%tempsum_npp, &
dim1name=namep, ncid=ncid, flag=flag, readvar=readvar)
if (flag=='read' .and. .not. readvar) then
if (is_restart()) call endrun
end if
end if
! annsum_npp
if (flag == 'define') then
call ncd_defvar(ncid=ncid, varname='annsum_npp', xtype=ncd_double, &
dim1name='pft',long_name='',units='')
else if (flag == 'read' .or. flag == 'write') then
call ncd_io(varname='annsum_npp', data=pepv%annsum_npp, &
dim1name=namep, ncid=ncid, flag=flag, readvar=readvar)
if (flag=='read' .and. .not. readvar) then
if (is_restart()) call endrun
end if
end if
if (use_c13) then
! rc13_canair
if (flag == 'define') then
call ncd_defvar(ncid=ncid, varname='rc13_canair', xtype=ncd_double, &
dim1name='pft',long_name='',units='')
else if (flag == 'read' .or. flag == 'write') then
call ncd_io(varname='rc13_canair', data=pepv%rc13_canair, &
dim1name=namep, ncid=ncid, flag=flag, readvar=readvar)
if (flag=='read' .and. .not. readvar) then
if (is_restart()) call endrun
end if
end if
! rc13_psnsun
if (flag == 'define') then
call ncd_defvar(ncid=ncid, varname='rc13_psnsun', xtype=ncd_double, &
dim1name='pft',long_name='',units='')
else if (flag == 'read' .or. flag == 'write') then
call ncd_io(varname='rc13_psnsun', data=pepv%rc13_psnsun, &
dim1name=namep, ncid=ncid, flag=flag, readvar=readvar)
if (flag=='read' .and. .not. readvar) then
if (is_restart()) call endrun
end if
end if
! rc13_psnsha
if (flag == 'define') then
call ncd_defvar(ncid=ncid, varname='rc13_psnsha', xtype=ncd_double, &
dim1name='pft',long_name='',units='')
else if (flag == 'read' .or. flag == 'write') then
call ncd_io(varname='rc13_psnsha', data=pepv%rc13_psnsha, &
dim1name=namep, ncid=ncid, flag=flag, readvar=readvar)
if (flag=='read' .and. .not. readvar) then
if (is_restart()) call endrun
end if
end if
end if
!--------------------------------
! pft carbon state variables
!--------------------------------
! leafc
if (flag == 'define') then
call ncd_defvar(ncid=ncid, varname='leafc', xtype=ncd_double, &
dim1name='pft',long_name='',units='')
else if (flag == 'read' .or. flag == 'write') then
call ncd_io(varname='leafc', data=pcs%leafc, &
dim1name=namep, ncid=ncid, flag=flag, readvar=readvar)
if (flag=='read' .and. .not. readvar) then
if (is_restart()) call endrun
end if
end if
! leafc_storage
if (flag == 'define') then
call ncd_defvar(ncid=ncid, varname='leafc_storage', xtype=ncd_double, &
dim1name='pft',long_name='',units='')
else if (flag == 'read' .or. flag == 'write') then
call ncd_io(varname='leafc_storage', data=pcs%leafc_storage, &
dim1name=namep, ncid=ncid, flag=flag, readvar=readvar)
if (flag=='read' .and. .not. readvar) then
if (is_restart()) call endrun
end if
end if
! leafc_xfer
if (flag == 'define') then
call ncd_defvar(ncid=ncid, varname='leafc_xfer', xtype=ncd_double, &
dim1name='pft',long_name='',units='')
else if (flag == 'read' .or. flag == 'write') then
call ncd_io(varname='leafc_xfer', data=pcs%leafc_xfer, &
dim1name=namep, ncid=ncid, flag=flag, readvar=readvar)
if (flag=='read' .and. .not. readvar) then
if (is_restart()) call endrun
end if
end if
! frootc
if (flag == 'define') then
call ncd_defvar(ncid=ncid, varname='frootc', xtype=ncd_double, &
dim1name='pft',long_name='',units='')
else if (flag == 'read' .or. flag == 'write') then
call ncd_io(varname='frootc', data=pcs%frootc, &
dim1name=namep, ncid=ncid, flag=flag, readvar=readvar)
if (flag=='read' .and. .not. readvar) then
if (is_restart()) call endrun
end if
end if
! frootc_storage
if (flag == 'define') then
call ncd_defvar(ncid=ncid, varname='frootc_storage', xtype=ncd_double, &
dim1name='pft',long_name='',units='')
else if (flag == 'read' .or. flag == 'write') then
call ncd_io(varname='frootc_storage', data=pcs%frootc_storage, &
dim1name=namep, ncid=ncid, flag=flag, readvar=readvar)
if (flag=='read' .and. .not. readvar) then
if (is_restart()) call endrun
end if
end if
!frootc_xfer
if (flag == 'define') then
call ncd_defvar(ncid=ncid, varname='frootc_xfer', xtype=ncd_double, &
dim1name='pft',long_name='',units='')
else if (flag == 'read' .or. flag == 'write') then
call ncd_io(varname='frootc_xfer', data=pcs%frootc_xfer, &
dim1name=namep, ncid=ncid, flag=flag, readvar=readvar)
if (flag=='read' .and. .not. readvar) then
if (is_restart()) call endrun
end if
end if
! livestemc
if (flag == 'define') then
call ncd_defvar(ncid=ncid, varname='livestemc', xtype=ncd_double, &
dim1name='pft',long_name='',units='')
else if (flag == 'read' .or. flag == 'write') then
call ncd_io(varname='livestemc', data=pcs%livestemc, &
dim1name=namep, ncid=ncid, flag=flag, readvar=readvar)
if (flag=='read' .and. .not. readvar) then
if (is_restart()) call endrun
end if
end if
! livestemc_storage
if (flag == 'define') then
call ncd_defvar(ncid=ncid, varname='livestemc_storage', xtype=ncd_double, &
dim1name='pft',long_name='',units='')
else if (flag == 'read' .or. flag == 'write') then
call ncd_io(varname='livestemc_storage', data=pcs%livestemc_storage, &
dim1name=namep, ncid=ncid, flag=flag, readvar=readvar)
if (flag=='read' .and. .not. readvar) then
if (is_restart()) call endrun
end if
end if
! livestemc_xfer
if (flag == 'define') then
call ncd_defvar(ncid=ncid, varname='livestemc_xfer', xtype=ncd_double, &
dim1name='pft',long_name='',units='')
else if (flag == 'read' .or. flag == 'write') then
call ncd_io(varname='livestemc_xfer', data=pcs%livestemc_xfer, &
dim1name=namep, ncid=ncid, flag=flag, readvar=readvar)
if (flag=='read' .and. .not. readvar) then
if (is_restart()) call endrun
end if
end if
! deadstemc
if (flag == 'define') then
call ncd_defvar(ncid=ncid, varname='deadstemc', xtype=ncd_double, &
dim1name='pft',long_name='',units='')
else if (flag == 'read' .or. flag == 'write') then
call ncd_io(varname='deadstemc', data=pcs%deadstemc, &
dim1name=namep, ncid=ncid, flag=flag, readvar=readvar)
if (flag=='read' .and. .not. readvar) then
if (is_restart()) call endrun
end if
end if
! deadstemc_storage
if (flag == 'define') then
call ncd_defvar(ncid=ncid, varname='deadstemc_storage', xtype=ncd_double, &
dim1name='pft',long_name='',units='')
else if (flag == 'read' .or. flag == 'write') then
call ncd_io(varname='deadstemc_storage', data=pcs%deadstemc_storage, &
dim1name=namep, ncid=ncid, flag=flag, readvar=readvar)
if (flag=='read' .and. .not. readvar) then
if (is_restart()) call endrun
end if
end if
! deadstemc_xfer
if (flag == 'define') then
call ncd_defvar(ncid=ncid, varname='deadstemc_xfer', xtype=ncd_double, &
dim1name='pft',long_name='',units='')
else if (flag == 'read' .or. flag == 'write') then
call ncd_io(varname='deadstemc_xfer', data=pcs%deadstemc_xfer, &
dim1name=namep, ncid=ncid, flag=flag, readvar=readvar)
if (flag=='read' .and. .not. readvar) then
if (is_restart()) call endrun
end if
end if
! livecrootc
if (flag == 'define') then
call ncd_defvar(ncid=ncid, varname='livecrootc', xtype=ncd_double, &
dim1name='pft',long_name='',units='')
else if (flag == 'read' .or. flag == 'write') then
call ncd_io(varname='livecrootc', data=pcs%livecrootc, &
dim1name=namep, ncid=ncid, flag=flag, readvar=readvar)
if (flag=='read' .and. .not. readvar) then
if (is_restart()) call endrun
end if
end if
! livecrootc_storage
if (flag == 'define') then
call ncd_defvar(ncid=ncid, varname='livecrootc_storage', xtype=ncd_double, &
dim1name='pft',long_name='',units='')
else if (flag == 'read' .or. flag == 'write') then
call ncd_io(varname='livecrootc_storage', data=pcs%livecrootc_storage, &
dim1name=namep, ncid=ncid, flag=flag, readvar=readvar)
if (flag=='read' .and. .not. readvar) then
if (is_restart()) call endrun
end if
end if
! livecrootc_xfer
if (flag == 'define') then
call ncd_defvar(ncid=ncid, varname='livecrootc_xfer', xtype=ncd_double, &
dim1name='pft',long_name='',units='')
else if (flag == 'read' .or. flag == 'write') then
call ncd_io(varname='livecrootc_xfer', data=pcs%livecrootc_xfer, &
dim1name=namep, ncid=ncid, flag=flag, readvar=readvar)
if (flag=='read' .and. .not. readvar) then
if (is_restart()) call endrun
end if
end if
! deadcrootc
if (flag == 'define') then
call ncd_defvar(ncid=ncid, varname='deadcrootc', xtype=ncd_double, &
dim1name='pft',long_name='',units='')
else if (flag == 'read' .or. flag == 'write') then
call ncd_io(varname='deadcrootc', data=pcs%deadcrootc, &
dim1name=namep, ncid=ncid, flag=flag, readvar=readvar)
if (flag=='read' .and. .not. readvar) then
if (is_restart()) call endrun
end if
end if
! deadcrootc_storage
if (flag == 'define') then
call ncd_defvar(ncid=ncid, varname='deadcrootc_storage', xtype=ncd_double, &
dim1name='pft',long_name='',units='')
else if (flag == 'read' .or. flag == 'write') then
call ncd_io(varname='deadcrootc_storage', data=pcs%deadcrootc_storage, &
dim1name=namep, ncid=ncid, flag=flag, readvar=readvar)
if (flag=='read' .and. .not. readvar) then
if (is_restart()) call endrun
end if
end if
! deadcrootc_xfer
if (flag == 'define') then
call ncd_defvar(ncid=ncid, varname='deadcrootc_xfer', xtype=ncd_double, &
dim1name='pft',long_name='',units='')
else if (flag == 'read' .or. flag == 'write') then
call ncd_io(varname='deadcrootc_xfer', data=pcs%deadcrootc_xfer, &
dim1name=namep, ncid=ncid, flag=flag, readvar=readvar)
if (flag=='read' .and. .not. readvar) then
if (is_restart()) call endrun
end if
end if
! gresp_storage
if (flag == 'define') then
call ncd_defvar(ncid=ncid, varname='gresp_storage', xtype=ncd_double, &
dim1name='pft',long_name='',units='')
else if (flag == 'read' .or. flag == 'write') then
call ncd_io(varname='gresp_storage', data=pcs%gresp_storage, &
dim1name=namep, ncid=ncid, flag=flag, readvar=readvar)
if (flag=='read' .and. .not. readvar) then
if (is_restart()) call endrun
end if
end if
! gresp_xfer
if (flag == 'define') then
call ncd_defvar(ncid=ncid, varname='gresp_xfer', xtype=ncd_double, &
dim1name='pft',long_name='',units='')
else if (flag == 'read' .or. flag == 'write') then
call ncd_io(varname='gresp_xfer', data=pcs%gresp_xfer, &
dim1name=namep, ncid=ncid, flag=flag, readvar=readvar)
if (flag=='read' .and. .not. readvar) then
if (is_restart()) call endrun
end if
end if
! cpool
if (flag == 'define') then
call ncd_defvar(ncid=ncid, varname='cpool', xtype=ncd_double, &
dim1name='pft',long_name='',units='')
else if (flag == 'read' .or. flag == 'write') then
call ncd_io(varname='cpool', data=pcs%cpool, &
dim1name=namep, ncid=ncid, flag=flag, readvar=readvar)
if (flag=='read' .and. .not. readvar) then
if (is_restart()) call endrun
end if
end if
! xsmrpool
if (flag == 'define') then
call ncd_defvar(ncid=ncid, varname='xsmrpool', xtype=ncd_double, &
dim1name='pft',long_name='',units='')
else if (flag == 'read' .or. flag == 'write') then
call ncd_io(varname='xsmrpool', data=pcs%xsmrpool, &
dim1name=namep, ncid=ncid, flag=flag, readvar=readvar)
if (flag=='read' .and. .not. readvar) then
if (is_restart()) call endrun
end if
end if
! pft_ctrunc
if (flag == 'define') then
call ncd_defvar(ncid=ncid, varname='pft_ctrunc', xtype=ncd_double, &
dim1name='pft',long_name='',units='')
else if (flag == 'read' .or. flag == 'write') then
call ncd_io(varname='pft_ctrunc', data=pcs%pft_ctrunc, &
dim1name=namep, ncid=ncid, flag=flag, readvar=readvar)
if (flag=='read' .and. .not. readvar) then
if (is_restart()) call endrun
end if
end if
! totvegc
if (flag == 'define') then
call ncd_defvar(ncid=ncid, varname='totvegc', xtype=ncd_double, &
dim1name='pft',long_name='',units='')
else if (flag == 'read' .or. flag == 'write') then
call ncd_io(varname='totvegc', data=pcs%totvegc, &
dim1name=namep, ncid=ncid, flag=flag, readvar=readvar)
if (flag=='read' .and. .not. readvar) then
if (is_restart()) call endrun
end if
end if
if (use_c13) then
!--------------------------------
! C13 pft carbon state variables
!--------------------------------
! leafc
if (flag == 'define') then
call ncd_defvar(ncid=ncid, varname='leafc_13', xtype=ncd_double, &
dim1name='pft',long_name='',units='')
else if (flag == 'read' .or. flag == 'write') then
call ncd_io(varname='leafc_13', data=pc13s%leafc, &
dim1name=namep, ncid=ncid, flag=flag, readvar=readvar)
if (flag=='read' .and. .not. readvar) then
if (is_restart()) call endrun
end if
end if
! leafc_storage
if (flag == 'define') then
call ncd_defvar(ncid=ncid, varname='leafc_storage_13', xtype=ncd_double, &
dim1name='pft',long_name='',units='')
else if (flag == 'read' .or. flag == 'write') then
call ncd_io(varname='leafc_storage_13', data=pc13s%leafc_storage, &
dim1name=namep, ncid=ncid, flag=flag, readvar=readvar)
if (flag=='read' .and. .not. readvar) then
if (is_restart()) call endrun
end if
end if
! leafc_xfer
if (flag == 'define') then
call ncd_defvar(ncid=ncid, varname='leafc_xfer_13', xtype=ncd_double, &
dim1name='pft',long_name='',units='')
else if (flag == 'read' .or. flag == 'write') then
call ncd_io(varname='leafc_xfer_13', data=pc13s%leafc_xfer, &
dim1name=namep, ncid=ncid, flag=flag, readvar=readvar)
if (flag=='read' .and. .not. readvar) then
if (is_restart()) call endrun
end if
end if
! frootc
if (flag == 'define') then
call ncd_defvar(ncid=ncid, varname='frootc_13', xtype=ncd_double, &
dim1name='pft',long_name='',units='')
else if (flag == 'read' .or. flag == 'write') then
call ncd_io(varname='frootc_13', data=pc13s%frootc, &
dim1name=namep, ncid=ncid, flag=flag, readvar=readvar)
if (flag=='read' .and. .not. readvar) then
if (is_restart()) call endrun
end if
end if
! frootc_storage
if (flag == 'define') then
call ncd_defvar(ncid=ncid, varname='frootc_storage_13', xtype=ncd_double, &
dim1name='pft',long_name='',units='')
else if (flag == 'read' .or. flag == 'write') then
call ncd_io(varname='frootc_storage_13', data=pc13s%frootc_storage, &
dim1name=namep, ncid=ncid, flag=flag, readvar=readvar)
if (flag=='read' .and. .not. readvar) then
if (is_restart()) call endrun
end if
end if
!frootc_xfer
if (flag == 'define') then
call ncd_defvar(ncid=ncid, varname='frootc_xfer_13', xtype=ncd_double, &
dim1name='pft',long_name='',units='')
else if (flag == 'read' .or. flag == 'write') then
call ncd_io(varname='frootc_xfer_13', data=pc13s%frootc_xfer, &
dim1name=namep, ncid=ncid, flag=flag, readvar=readvar)
if (flag=='read' .and. .not. readvar) then
if (is_restart()) call endrun
end if
end if
! livestemc
if (flag == 'define') then
call ncd_defvar(ncid=ncid, varname='livestemc_13', xtype=ncd_double, &
dim1name='pft',long_name='',units='')
else if (flag == 'read' .or. flag == 'write') then
call ncd_io(varname='livestemc_13', data=pc13s%livestemc, &
dim1name=namep, ncid=ncid, flag=flag, readvar=readvar)
if (flag=='read' .and. .not. readvar) then
if (is_restart()) call endrun
end if
end if
! livestemc_storage
if (flag == 'define') then
call ncd_defvar(ncid=ncid, varname='livestemc_storage_13', xtype=ncd_double, &
dim1name='pft',long_name='',units='')
else if (flag == 'read' .or. flag == 'write') then
call ncd_io(varname='livestemc_storage_13', data=pc13s%livestemc_storage, &
dim1name=namep, ncid=ncid, flag=flag, readvar=readvar)
if (flag=='read' .and. .not. readvar) then
if (is_restart()) call endrun
end if
end if
! livestemc_xfer
if (flag == 'define') then
call ncd_defvar(ncid=ncid, varname='livestemc_xfer_13', xtype=ncd_double, &
dim1name='pft',long_name='',units='')
else if (flag == 'read' .or. flag == 'write') then
call ncd_io(varname='livestemc_xfer_13', data=pc13s%livestemc_xfer, &
dim1name=namep, ncid=ncid, flag=flag, readvar=readvar)
if (flag=='read' .and. .not. readvar) then
if (is_restart()) call endrun
end if
end if
! deadstemc
if (flag == 'define') then
call ncd_defvar(ncid=ncid, varname='deadstemc_13', xtype=ncd_double, &
dim1name='pft',long_name='',units='')
else if (flag == 'read' .or. flag == 'write') then
call ncd_io(varname='deadstemc_13', data=pc13s%deadstemc, &
dim1name=namep, ncid=ncid, flag=flag, readvar=readvar)
if (flag=='read' .and. .not. readvar) then
if (is_restart()) call endrun
end if
end if
! deadstemc_storage
if (flag == 'define') then
call ncd_defvar(ncid=ncid, varname='deadstemc_storage_13', xtype=ncd_double, &
dim1name='pft',long_name='',units='')
else if (flag == 'read' .or. flag == 'write') then
call ncd_io(varname='deadstemc_storage_13', data=pc13s%deadstemc_storage, &
dim1name=namep, ncid=ncid, flag=flag, readvar=readvar)
if (flag=='read' .and. .not. readvar) then
if (is_restart()) call endrun
end if
end if
! deadstemc_xfer
if (flag == 'define') then
call ncd_defvar(ncid=ncid, varname='deadstemc_xfer_13', xtype=ncd_double, &
dim1name='pft',long_name='',units='')
else if (flag == 'read' .or. flag == 'write') then
call ncd_io(varname='deadstemc_xfer_13', data=pc13s%deadstemc_xfer, &
dim1name=namep, ncid=ncid, flag=flag, readvar=readvar)
if (flag=='read' .and. .not. readvar) then
if (is_restart()) call endrun
end if
end if
! livecrootc
if (flag == 'define') then
call ncd_defvar(ncid=ncid, varname='livecrootc_13', xtype=ncd_double, &
dim1name='pft',long_name='',units='')
else if (flag == 'read' .or. flag == 'write') then
call ncd_io(varname='livecrootc_13', data=pc13s%livecrootc, &
dim1name=namep, ncid=ncid, flag=flag, readvar=readvar)
if (flag=='read' .and. .not. readvar) then
if (is_restart()) call endrun
end if
end if
! livecrootc_storage
if (flag == 'define') then
call ncd_defvar(ncid=ncid, varname='livecrootc_storage_13', xtype=ncd_double, &
dim1name='pft',long_name='',units='')
else if (flag == 'read' .or. flag == 'write') then
call ncd_io(varname='livecrootc_storage_13', data=pc13s%livecrootc_storage, &
dim1name=namep, ncid=ncid, flag=flag, readvar=readvar)
if (flag=='read' .and. .not. readvar) then
if (is_restart()) call endrun
end if
end if
! livecrootc_xfer
if (flag == 'define') then
call ncd_defvar(ncid=ncid, varname='livecrootc_xfer_13', xtype=ncd_double, &
dim1name='pft',long_name='',units='')
else if (flag == 'read' .or. flag == 'write') then
call ncd_io(varname='livecrootc_xfer_13', data=pc13s%livecrootc_xfer, &
dim1name=namep, ncid=ncid, flag=flag, readvar=readvar)
if (flag=='read' .and. .not. readvar) then
if (is_restart()) call endrun
end if
end if
! deadcrootc
if (flag == 'define') then
call ncd_defvar(ncid=ncid, varname='deadcrootc_13', xtype=ncd_double, &
dim1name='pft',long_name='',units='')
else if (flag == 'read' .or. flag == 'write') then
call ncd_io(varname='deadcrootc_13', data=pc13s%deadcrootc, &
dim1name=namep, ncid=ncid, flag=flag, readvar=readvar)
if (flag=='read' .and. .not. readvar) then
if (is_restart()) call endrun
end if
end if
! deadcrootc_storage
if (flag == 'define') then
call ncd_defvar(ncid=ncid, varname='deadcrootc_storage_13', xtype=ncd_double, &
dim1name='pft',long_name='',units='')
else if (flag == 'read' .or. flag == 'write') then
call ncd_io(varname='deadcrootc_storage_13', data=pc13s%deadcrootc_storage, &
dim1name=namep, ncid=ncid, flag=flag, readvar=readvar)
if (flag=='read' .and. .not. readvar) then
if (is_restart()) call endrun
end if
end if
! deadcrootc_xfer
if (flag == 'define') then
call ncd_defvar(ncid=ncid, varname='deadcrootc_xfer_13', xtype=ncd_double, &
dim1name='pft',long_name='',units='')
else if (flag == 'read' .or. flag == 'write') then
call ncd_io(varname='deadcrootc_xfer_13', data=pc13s%deadcrootc_xfer, &
dim1name=namep, ncid=ncid, flag=flag, readvar=readvar)
if (flag=='read' .and. .not. readvar) then
if (is_restart()) call endrun
end if
end if
! gresp_storage
if (flag == 'define') then
call ncd_defvar(ncid=ncid, varname='gresp_storage_13', xtype=ncd_double, &
dim1name='pft',long_name='',units='')
else if (flag == 'read' .or. flag == 'write') then
call ncd_io(varname='gresp_storage_13', data=pc13s%gresp_storage, &
dim1name=namep, ncid=ncid, flag=flag, readvar=readvar)
if (flag=='read' .and. .not. readvar) then
if (is_restart()) call endrun
end if
end if
! gresp_xfer
if (flag == 'define') then
call ncd_defvar(ncid=ncid, varname='gresp_xfer_13', xtype=ncd_double, &
dim1name='pft',long_name='',units='')
else if (flag == 'read' .or. flag == 'write') then
call ncd_io(varname='gresp_xfer_13', data=pc13s%gresp_xfer, &
dim1name=namep, ncid=ncid, flag=flag, readvar=readvar)
if (flag=='read' .and. .not. readvar) then
if (is_restart()) call endrun
end if
end if
! cpool
if (flag == 'define') then
call ncd_defvar(ncid=ncid, varname='cpool_13', xtype=ncd_double, &
dim1name='pft',long_name='',units='')
else if (flag == 'read' .or. flag == 'write') then
call ncd_io(varname='cpool_13', data=pc13s%cpool, &
dim1name=namep, ncid=ncid, flag=flag, readvar=readvar)
if (flag=='read' .and. .not. readvar) then
if (is_restart()) call endrun
end if
end if
! xsmrpool
if (flag == 'define') then
call ncd_defvar(ncid=ncid, varname='xsmrpool_13', xtype=ncd_double, &
dim1name='pft',long_name='',units='')
else if (flag == 'read' .or. flag == 'write') then
call ncd_io(varname='xsmrpool_13', data=pc13s%xsmrpool, &
dim1name=namep, ncid=ncid, flag=flag, readvar=readvar)
if (flag=='read' .and. .not. readvar) then
if (is_restart()) call endrun
end if
end if
! pft_ctrunc
if (flag == 'define') then
call ncd_defvar(ncid=ncid, varname='pft_ctrunc_13', xtype=ncd_double, &
dim1name='pft',long_name='',units='')
else if (flag == 'read' .or. flag == 'write') then
call ncd_io(varname='pft_ctrunc_13', data=pc13s%pft_ctrunc, &
dim1name=namep, ncid=ncid, flag=flag, readvar=readvar)
if (flag=='read' .and. .not. readvar) then
if (is_restart()) call endrun
end if
end if
! totvegc
if (flag == 'define') then
call ncd_defvar(ncid=ncid, varname='totvegc_13', xtype=ncd_double, &
dim1name='pft',long_name='',units='')
else if (flag == 'read' .or. flag == 'write') then
call ncd_io(varname='totvegc_13', data=pc13s%totvegc, &
dim1name=namep, ncid=ncid, flag=flag, readvar=readvar)
if (flag=='read' .and. .not. readvar) then
if (is_restart()) call endrun
end if
end if
end if
!--------------------------------
! pft nitrogen state variables
!--------------------------------
! leafn
if (flag == 'define') then
call ncd_defvar(ncid=ncid, varname='leafn', xtype=ncd_double, &
dim1name='pft',long_name='',units='')
else if (flag == 'read' .or. flag == 'write') then
call ncd_io(varname='leafn', data=pns%leafn, &
dim1name=namep, ncid=ncid, flag=flag, readvar=readvar)
if (flag=='read' .and. .not. readvar) then
if (is_restart()) call endrun
end if
end if
! leafn_storage
if (flag == 'define') then
call ncd_defvar(ncid=ncid, varname='leafn_storage', xtype=ncd_double, &
dim1name='pft',long_name='',units='')
else if (flag == 'read' .or. flag == 'write') then
call ncd_io(varname='leafn_storage', data=pns%leafn_storage, &
dim1name=namep, ncid=ncid, flag=flag, readvar=readvar)
if (flag=='read' .and. .not. readvar) then
if (is_restart()) call endrun
end if
end if
! leafn_xfer
if (flag == 'define') then
call ncd_defvar(ncid=ncid, varname='leafn_xfer', xtype=ncd_double, &
dim1name='pft',long_name='',units='')
else if (flag == 'read' .or. flag == 'write') then
call ncd_io(varname='leafn_xfer', data=pns%leafn_xfer, &
dim1name=namep, ncid=ncid, flag=flag, readvar=readvar)
if (flag=='read' .and. .not. readvar) then
if (is_restart()) call endrun
end if
end if
! frootn
if (flag == 'define') then
call ncd_defvar(ncid=ncid, varname='frootn', xtype=ncd_double, &
dim1name='pft',long_name='',units='')
else if (flag == 'read' .or. flag == 'write') then
call ncd_io(varname='frootn', data=pns%frootn, &
dim1name=namep, ncid=ncid, flag=flag, readvar=readvar)
if (flag=='read' .and. .not. readvar) then
if (is_restart()) call endrun
end if
end if
! frootn_storage
if (flag == 'define') then
call ncd_defvar(ncid=ncid, varname='frootn_storage', xtype=ncd_double, &
dim1name='pft',long_name='',units='')
else if (flag == 'read' .or. flag == 'write') then
call ncd_io(varname='frootn_storage', data=pns%frootn_storage, &
dim1name=namep, ncid=ncid, flag=flag, readvar=readvar)
if (flag=='read' .and. .not. readvar) then
if (is_restart()) call endrun
end if
end if
! frootn_xfer
if (flag == 'define') then
call ncd_defvar(ncid=ncid, varname='frootn_xfer', xtype=ncd_double, &
dim1name='pft',long_name='',units='')
else if (flag == 'read' .or. flag == 'write') then
call ncd_io(varname='frootn_xfer', data=pns%frootn_xfer, &
dim1name=namep, ncid=ncid, flag=flag, readvar=readvar)
if (flag=='read' .and. .not. readvar) then
if (is_restart()) call endrun
end if
end if
! livestemn
if (flag == 'define') then
call ncd_defvar(ncid=ncid, varname='livestemn', xtype=ncd_double, &
dim1name='pft',long_name='',units='')
else if (flag == 'read' .or. flag == 'write') then
call ncd_io(varname='livestemn', data=pns%livestemn, &
dim1name=namep, ncid=ncid, flag=flag, readvar=readvar)
if (flag=='read' .and. .not. readvar) then
if (is_restart()) call endrun
end if
end if
! livestemn_storage
if (flag == 'define') then
call ncd_defvar(ncid=ncid, varname='livestemn_storage', xtype=ncd_double, &
dim1name='pft',long_name='',units='')
else if (flag == 'read' .or. flag == 'write') then
call ncd_io(varname='livestemn_storage', data=pns%livestemn_storage, &
dim1name=namep, ncid=ncid, flag=flag, readvar=readvar)
if (flag=='read' .and. .not. readvar) then
if (is_restart()) call endrun
end if
end if
! livestemn_xfer
if (flag == 'define') then
call ncd_defvar(ncid=ncid, varname='livestemn_xfer', xtype=ncd_double, &
dim1name='pft',long_name='',units='')
else if (flag == 'read' .or. flag == 'write') then
call ncd_io(varname='livestemn_xfer', data=pns%livestemn_xfer, &
dim1name=namep, ncid=ncid, flag=flag, readvar=readvar)
if (flag=='read' .and. .not. readvar) then
if (is_restart()) call endrun
end if
end if
! deadstemn
if (flag == 'define') then
call ncd_defvar(ncid=ncid, varname='deadstemn', xtype=ncd_double, &
dim1name='pft',long_name='',units='')
else if (flag == 'read' .or. flag == 'write') then
call ncd_io(varname='deadstemn', data=pns%deadstemn, &
dim1name=namep, ncid=ncid, flag=flag, readvar=readvar)
if (flag=='read' .and. .not. readvar) then
if (is_restart()) call endrun
end if
end if
!deadstemn_storage
if (flag == 'define') then
call ncd_defvar(ncid=ncid, varname='deadstemn_storage', xtype=ncd_double, &
dim1name='pft',long_name='',units='')
else if (flag == 'read' .or. flag == 'write') then
call ncd_io(varname='deadstemn_storage', data=pns%deadstemn_storage, &
dim1name=namep, ncid=ncid, flag=flag, readvar=readvar)
if (flag=='read' .and. .not. readvar) then
if (is_restart()) call endrun
end if
end if
!deadstemn_xfer
if (flag == 'define') then
call ncd_defvar(ncid=ncid, varname='deadstemn_xfer', xtype=ncd_double, &
dim1name='pft',long_name='',units='')
else if (flag == 'read' .or. flag == 'write') then
call ncd_io(varname='deadstemn_xfer', data=pns%deadstemn_xfer, &
dim1name=namep, ncid=ncid, flag=flag, readvar=readvar)
if (flag=='read' .and. .not. readvar) then
if (is_restart()) call endrun
end if
end if
! livecrootn
if (flag == 'define') then
call ncd_defvar(ncid=ncid, varname='livecrootn', xtype=ncd_double, &
dim1name='pft',long_name='',units='')
else if (flag == 'read' .or. flag == 'write') then
call ncd_io(varname='livecrootn', data=pns%livecrootn, &
dim1name=namep, ncid=ncid, flag=flag, readvar=readvar)
if (flag=='read' .and. .not. readvar) then
if (is_restart()) call endrun
end if
end if
! livecrootn_storage
if (flag == 'define') then
call ncd_defvar(ncid=ncid, varname='livecrootn_storage', xtype=ncd_double, &
dim1name='pft',long_name='',units='')
else if (flag == 'read' .or. flag == 'write') then
call ncd_io(varname='livecrootn_storage', data=pns%livecrootn_storage, &
dim1name=namep, ncid=ncid, flag=flag, readvar=readvar)
if (flag=='read' .and. .not. readvar) then
if (is_restart()) call endrun
end if
end if
!livecrootn_xfer
if (flag == 'define') then
call ncd_defvar(ncid=ncid, varname='livecrootn_xfer', xtype=ncd_double, &
dim1name='pft',long_name='',units='')
else if (flag == 'read' .or. flag == 'write') then
call ncd_io(varname='livecrootn_xfer', data=pns%livecrootn_xfer, &
dim1name=namep, ncid=ncid, flag=flag, readvar=readvar)
if (flag=='read' .and. .not. readvar) then
if (is_restart()) call endrun
end if
end if
! deadcrootn
if (flag == 'define') then
call ncd_defvar(ncid=ncid, varname='deadcrootn', xtype=ncd_double, &
dim1name='pft',long_name='',units='')
else if (flag == 'read' .or. flag == 'write') then
call ncd_io(varname='deadcrootn', data=pns%deadcrootn, &
dim1name=namep, ncid=ncid, flag=flag, readvar=readvar)
if (flag=='read' .and. .not. readvar) then
if (is_restart()) call endrun
end if
end if
! deadcrootn_storage
if (flag == 'define') then
call ncd_defvar(ncid=ncid, varname='deadcrootn_storage', xtype=ncd_double, &
dim1name='pft',long_name='',units='')
else if (flag == 'read' .or. flag == 'write') then
call ncd_io(varname='deadcrootn_storage', data=pns%deadcrootn_storage, &
dim1name=namep, ncid=ncid, flag=flag, readvar=readvar)
if (flag=='read' .and. .not. readvar) then
if (is_restart()) call endrun
end if
end if
! deadcrootn_xfer
if (flag == 'define') then
call ncd_defvar(ncid=ncid, varname='deadcrootn_xfer', xtype=ncd_double, &
dim1name='pft',long_name='',units='')
else if (flag == 'read' .or. flag == 'write') then
call ncd_io(varname='deadcrootn_xfer', data=pns%deadcrootn_xfer, &
dim1name=namep, ncid=ncid, flag=flag, readvar=readvar)
if (flag=='read' .and. .not. readvar) then
if (is_restart()) call endrun
end if
end if
!retransn
if (flag == 'define') then
call ncd_defvar(ncid=ncid, varname='retransn', xtype=ncd_double, &
dim1name='pft',long_name='',units='')
else if (flag == 'read' .or. flag == 'write') then
call ncd_io(varname='retransn', data=pns%retransn, &
dim1name=namep, ncid=ncid, flag=flag, readvar=readvar)
if (flag=='read' .and. .not. readvar) then
if (is_restart()) call endrun
end if
end if
! npool
if (flag == 'define') then
call ncd_defvar(ncid=ncid, varname='npool', xtype=ncd_double, &
dim1name='pft',long_name='',units='')
else if (flag == 'read' .or. flag == 'write') then
call ncd_io(varname='npool', data=pns%npool, &
dim1name=namep, ncid=ncid, flag=flag, readvar=readvar)
if (flag=='read' .and. .not. readvar) then
if (is_restart()) call endrun
end if
end if
! pft_ntrunc
if (flag == 'define') then
call ncd_defvar(ncid=ncid, varname='pft_ntrunc', xtype=ncd_double, &
dim1name='pft',long_name='',units='')
else if (flag == 'read' .or. flag == 'write') then
call ncd_io(varname='pft_ntrunc', data=pns%pft_ntrunc, &
dim1name=namep, ncid=ncid, flag=flag, readvar=readvar)
if (flag=='read' .and. .not. readvar) then
if (is_restart()) call endrun
end if
end if
!--------------------------------
! column physical state variables
!--------------------------------
! decl
if (flag == 'define') then
call ncd_defvar(ncid=ncid, varname='decl', xtype=ncd_double, &
dim1name='column',long_name='',units='')
else if (flag == 'read' .or. flag == 'write') then
call ncd_io(varname='decl', data=cps%decl, &
dim1name=namec, ncid=ncid, flag=flag, readvar=readvar)
if (flag=='read' .and. .not. readvar) then
if (is_restart()) call endrun
end if
end if
! fpi
if (flag == 'define') then
call ncd_defvar(ncid=ncid, varname='fpi', xtype=ncd_double, &
dim1name='column',long_name='',units='')
else if (flag == 'read' .or. flag == 'write') then
call ncd_io(varname='fpi', data=cps%fpi, &
dim1name=namec, ncid=ncid, flag=flag, readvar=readvar)
if (flag=='read' .and. .not. readvar) then
if (is_restart()) call endrun
end if
end if
! fpg
if (flag == 'define') then
call ncd_defvar(ncid=ncid, varname='fpg', xtype=ncd_double, &
dim1name='column',long_name='',units='')
else if (flag == 'read' .or. flag == 'write') then
call ncd_io(varname='fpg', data=cps%fpg, &
dim1name=namec, ncid=ncid, flag=flag, readvar=readvar)
if (flag=='read' .and. .not. readvar) then
if (is_restart()) call endrun
end if
end if
! annsum_counter
if (flag == 'define') then
call ncd_defvar(ncid=ncid, varname='annsum_counter', xtype=ncd_double, &
dim1name='column',long_name='',units='')
else if (flag == 'read' .or. flag == 'write') then
call ncd_io(varname='annsum_counter', data=cps%annsum_counter, &
dim1name=namec, ncid=ncid, flag=flag, readvar=readvar)
if (flag=='read' .and. .not. readvar) then
if (is_restart()) call endrun
end if
end if
! cannsum_npp
if (flag == 'define') then
call ncd_defvar(ncid=ncid, varname='cannsum_npp', xtype=ncd_double, &
dim1name='column',long_name='',units='')
else if (flag == 'read' .or. flag == 'write') then
call ncd_io(varname='cannsum_npp', data=cps%cannsum_npp, &
dim1name=namec, ncid=ncid, flag=flag, readvar=readvar)
if (flag=='read' .and. .not. readvar) then
if (is_restart()) call endrun
end if
end if
! cannavg_t2m
if (flag == 'define') then
call ncd_defvar(ncid=ncid, varname='cannavg_t2m', xtype=ncd_double, &
dim1name='column',long_name='',units='')
else if (flag == 'read' .or. flag == 'write') then
call ncd_io(varname='cannavg_t2m', data=cps%cannavg_t2m, &
dim1name=namec, ncid=ncid, flag=flag, readvar=readvar)
if (flag=='read' .and. .not. readvar) then
if (is_restart()) call endrun
end if
end if
! wf
if (flag == 'define') then
call ncd_defvar(ncid=ncid, varname='wf', xtype=ncd_double, &
dim1name='column',long_name='',units='')
else if (flag == 'read' .or. flag == 'write') then
call ncd_io(varname='wf', data=cps%wf, &
dim1name=namec, ncid=ncid, flag=flag, readvar=readvar)
if (flag=='read' .and. .not. readvar) then
if (is_restart()) call endrun
end if
end if
! me
if (flag == 'define') then
call ncd_defvar(ncid=ncid, varname='me', xtype=ncd_double, &
dim1name='column',long_name='',units='')
else if (flag == 'read' .or. flag == 'write') then
call ncd_io(varname='me', data=cps%me, &
dim1name=namec, ncid=ncid, flag=flag, readvar=readvar)
if (flag=='read' .and. .not. readvar) then
if (is_restart()) call endrun
end if
end if
! fire_prob
if (flag == 'define') then
call ncd_defvar(ncid=ncid, varname='fire_prob', xtype=ncd_double, &
dim1name='column',long_name='',units='')
else if (flag == 'read' .or. flag == 'write') then
call ncd_io(varname='fire_prob', data=cps%fire_prob, &
dim1name=namec, ncid=ncid, flag=flag, readvar=readvar)
if (flag=='read' .and. .not. readvar) then
if (is_restart()) call endrun
end if
end if
! mean_fire_prob
if (flag == 'define') then
call ncd_defvar(ncid=ncid, varname='mean_fire_prob', xtype=ncd_double, &
dim1name='column',long_name='',units='')
else if (flag == 'read' .or. flag == 'write') then
call ncd_io(varname='mean_fire_prob', data=cps%mean_fire_prob, &
dim1name=namec, ncid=ncid, flag=flag, readvar=readvar)
if (flag=='read' .and. .not. readvar) then
if (is_restart()) call endrun
end if
end if
! fireseasonl
if (flag == 'define') then
call ncd_defvar(ncid=ncid, varname='fireseasonl', xtype=ncd_double, &
dim1name='column',long_name='',units='')
else if (flag == 'read' .or. flag == 'write') then
call ncd_io(varname='fireseasonl', data=cps%fireseasonl, &
dim1name=namec, ncid=ncid, flag=flag, readvar=readvar)
if (flag=='read' .and. .not. readvar) then
if (is_restart()) call endrun
end if
end if
! farea_burned
if (flag == 'define') then
call ncd_defvar(ncid=ncid, varname='farea_burned', xtype=ncd_double, &
dim1name='column',long_name='',units='')
else if (flag == 'read' .or. flag == 'write') then
call ncd_io(varname='farea_burned', data=cps%farea_burned, &
dim1name=namec, ncid=ncid, flag=flag, readvar=readvar)
if (flag=='read' .and. .not. readvar) then
if (is_restart()) call endrun
end if
end if
! ann_farea_burned
if (flag == 'define') then
call ncd_defvar(ncid=ncid, varname='ann_farea_burned', xtype=ncd_double, &
dim1name='column',long_name='',units='')
else if (flag == 'read' .or. flag == 'write') then
call ncd_io(varname='ann_farea_burned', data=cps%ann_farea_burned, &
dim1name=namec, ncid=ncid, flag=flag, readvar=readvar)
if (flag=='read' .and. .not. readvar) then
if (is_restart()) call endrun
end if
end if
!--------------------------------
! column carbon state variables
!--------------------------------
! cwdc
if (flag == 'define') then
call ncd_defvar(ncid=ncid, varname='cwdc', xtype=ncd_double, &
dim1name='column',long_name='',units='')
else if (flag == 'read' .or. flag == 'write') then
call ncd_io(varname='cwdc', data=ccs%cwdc, &
dim1name=namec, ncid=ncid, flag=flag, readvar=readvar)
if (flag=='read' .and. .not. readvar) then
if (is_restart()) call endrun
end if
end if
! litr1c
if (flag == 'define') then
call ncd_defvar(ncid=ncid, varname='litr1c', xtype=ncd_double, &
dim1name='column',long_name='',units='')
else if (flag == 'read' .or. flag == 'write') then
call ncd_io(varname='litr1c', data=ccs%litr1c, &
dim1name=namec, ncid=ncid, flag=flag, readvar=readvar)
if (flag=='read' .and. .not. readvar) then
if (is_restart()) call endrun
end if
end if
!litr2c
if (flag == 'define') then
call ncd_defvar(ncid=ncid, varname='litr2c', xtype=ncd_double, &
dim1name='column',long_name='',units='')
else if (flag == 'read' .or. flag == 'write') then
call ncd_io(varname='litr2c', data=ccs%litr2c, &
dim1name=namec, ncid=ncid, flag=flag, readvar=readvar)
if (flag=='read' .and. .not. readvar) then
if (is_restart()) call endrun
end if
end if
! litr3c
if (flag == 'define') then
call ncd_defvar(ncid=ncid, varname='litr3c', xtype=ncd_double, &
dim1name='column',long_name='',units='')
else if (flag == 'read' .or. flag == 'write') then
call ncd_io(varname='litr3c', data=ccs%litr3c, &
dim1name=namec, ncid=ncid, flag=flag, readvar=readvar)
if (flag=='read' .and. .not. readvar) then
if (is_restart()) call endrun
end if
end if
!soil1c
if (flag == 'define') then
call ncd_defvar(ncid=ncid, varname='soil1c', xtype=ncd_double, &
dim1name='column',long_name='',units='')
else if (flag == 'read' .or. flag == 'write') then
call ncd_io(varname='soil1c', data=ccs%soil1c, &
dim1name=namec, ncid=ncid, flag=flag, readvar=readvar)
if (flag=='read' .and. .not. readvar) then
if (is_restart()) call endrun
end if
end if
! soil2c
if (flag == 'define') then
call ncd_defvar(ncid=ncid, varname='soil2c', xtype=ncd_double, &
dim1name='column',long_name='',units='')
else if (flag == 'read' .or. flag == 'write') then
call ncd_io(varname='soil2c', data=ccs%soil2c, &
dim1name=namec, ncid=ncid, flag=flag, readvar=readvar)
if (flag=='read' .and. .not. readvar) then
if (is_restart()) call endrun
end if
end if
! soil3c
if (flag == 'define') then
call ncd_defvar(ncid=ncid, varname='soil3c', xtype=ncd_double, &
dim1name='column',long_name='',units='')
else if (flag == 'read' .or. flag == 'write') then
call ncd_io(varname='soil3c', data=ccs%soil3c, &
dim1name=namec, ncid=ncid, flag=flag, readvar=readvar)
if (flag=='read' .and. .not. readvar) then
if (is_restart()) call endrun
end if
end if
! soil4c
if (flag == 'define') then
call ncd_defvar(ncid=ncid, varname='soil4c', xtype=ncd_double, &
dim1name='column',long_name='',units='')
else if (flag == 'read' .or. flag == 'write') then
call ncd_io(varname='soil4c', data=ccs%soil4c, &
dim1name=namec, ncid=ncid, flag=flag, readvar=readvar)
if (flag=='read' .and. .not. readvar) then
if (is_restart()) call endrun
end if
end if
! seedc
if (flag == 'define') then
call ncd_defvar(ncid=ncid, varname='seedc', xtype=ncd_double, &
dim1name='column',long_name='',units='')
else if (flag == 'read' .or. flag == 'write') then
call ncd_io(varname='seedc', data=ccs%seedc, &
dim1name=namec, ncid=ncid, flag=flag, readvar=readvar)
if (flag=='read' .and. .not. readvar) then
if (is_restart()) call endrun
end if
end if
! col_ctrunc
if (flag == 'define') then
call ncd_defvar(ncid=ncid, varname='col_ctrunc', xtype=ncd_double, &
dim1name='column',long_name='',units='')
else if (flag == 'read' .or. flag == 'write') then
call ncd_io(varname='col_ctrunc', data=ccs%col_ctrunc, &
dim1name=namec, ncid=ncid, flag=flag, readvar=readvar)
if (flag=='read' .and. .not. readvar) then
if (is_restart()) call endrun
end if
end if
! totlitc
if (flag == 'define') then
call ncd_defvar(ncid=ncid, varname='totlitc', xtype=ncd_double, &
dim1name='column',long_name='',units='')
else if (flag == 'read' .or. flag == 'write') then
call ncd_io(varname='totlitc', data=ccs%totlitc, &
dim1name=namec, ncid=ncid, flag=flag, readvar=readvar)
if (flag=='read' .and. .not. readvar) then
if (is_restart()) call endrun
end if
end if
! totcolc
if (flag == 'define') then
call ncd_defvar(ncid=ncid, varname='totcolc', xtype=ncd_double, &
dim1name='column',long_name='',units='')
else if (flag == 'read' .or. flag == 'write') then
call ncd_io(varname='totcolc', data=ccs%totcolc, &
dim1name=namec, ncid=ncid, flag=flag, readvar=readvar)
if (flag=='read' .and. .not. readvar) then
if (is_restart()) call endrun
end if
end if
! prod10c
if (flag == 'define') then
call ncd_defvar(ncid=ncid, varname='prod10c', xtype=ncd_double, &
dim1name='column',long_name='',units='')
else if (flag == 'read' .or. flag == 'write') then
call ncd_io(varname='prod10c', data=ccs%prod10c, &
dim1name=namec, ncid=ncid, flag=flag, readvar=readvar)
if (flag=='read' .and. .not. readvar) then
if (is_restart()) call endrun
end if
end if
! prod100c
if (flag == 'define') then
call ncd_defvar(ncid=ncid, varname='prod100c', xtype=ncd_double, &
dim1name='column',long_name='',units='')
else if (flag == 'read' .or. flag == 'write') then
call ncd_io(varname='prod100c', data=ccs%prod100c, &
dim1name=namec, ncid=ncid, flag=flag, readvar=readvar)
if (flag=='read' .and. .not. readvar) then
if (is_restart()) call endrun
end if
end if
if (use_c13) then
!--------------------------------
! C13 column carbon state variables
!--------------------------------
! cwdc
if (flag == 'define') then
call ncd_defvar(ncid=ncid, varname='cwdc_13', xtype=ncd_double, &
dim1name='column',long_name='',units='')
else if (flag == 'read' .or. flag == 'write') then
call ncd_io(varname='cwdc_13', data=cc13s%cwdc, &
dim1name=namec, ncid=ncid, flag=flag, readvar=readvar)
if (flag=='read' .and. .not. readvar) then
if (is_restart()) call endrun
end if
end if
! litr1c
if (flag == 'define') then
call ncd_defvar(ncid=ncid, varname='litr1c_13', xtype=ncd_double, &
dim1name='column',long_name='',units='')
else if (flag == 'read' .or. flag == 'write') then
call ncd_io(varname='litr1c_13', data=cc13s%litr1c, &
dim1name=namec, ncid=ncid, flag=flag, readvar=readvar)
if (flag=='read' .and. .not. readvar) then
if (is_restart()) call endrun
end if
end if
!litr2c
if (flag == 'define') then
call ncd_defvar(ncid=ncid, varname='litr2c_13', xtype=ncd_double, &
dim1name='column',long_name='',units='')
else if (flag == 'read' .or. flag == 'write') then
call ncd_io(varname='litr2c_13', data=cc13s%litr2c, &
dim1name=namec, ncid=ncid, flag=flag, readvar=readvar)
if (flag=='read' .and. .not. readvar) then
if (is_restart()) call endrun
end if
end if
! litr3c
if (flag == 'define') then
call ncd_defvar(ncid=ncid, varname='litr3c_13', xtype=ncd_double, &
dim1name='column',long_name='',units='')
else if (flag == 'read' .or. flag == 'write') then
call ncd_io(varname='litr3c_13', data=cc13s%litr3c, &
dim1name=namec, ncid=ncid, flag=flag, readvar=readvar)
if (flag=='read' .and. .not. readvar) then
if (is_restart()) call endrun
end if
end if
!soil1c
if (flag == 'define') then
call ncd_defvar(ncid=ncid, varname='soil1c_13', xtype=ncd_double, &
dim1name='column',long_name='',units='')
else if (flag == 'read' .or. flag == 'write') then
call ncd_io(varname='soil1c_13', data=cc13s%soil1c, &
dim1name=namec, ncid=ncid, flag=flag, readvar=readvar)
if (flag=='read' .and. .not. readvar) then
if (is_restart()) call endrun
end if
end if
! soil2c
if (flag == 'define') then
call ncd_defvar(ncid=ncid, varname='soil2c_13', xtype=ncd_double, &
dim1name='column',long_name='',units='')
else if (flag == 'read' .or. flag == 'write') then
call ncd_io(varname='soil2c_13', data=cc13s%soil2c, &
dim1name=namec, ncid=ncid, flag=flag, readvar=readvar)
if (flag=='read' .and. .not. readvar) then
if (is_restart()) call endrun
end if
end if
! soil3c
if (flag == 'define') then
call ncd_defvar(ncid=ncid, varname='soil3c_13', xtype=ncd_double, &
dim1name='column',long_name='',units='')
else if (flag == 'read' .or. flag == 'write') then
call ncd_io(varname='soil3c_13', data=cc13s%soil3c, &
dim1name=namec, ncid=ncid, flag=flag, readvar=readvar)
if (flag=='read' .and. .not. readvar) then
if (is_restart()) call endrun
end if
end if
! soil4c
if (flag == 'define') then
call ncd_defvar(ncid=ncid, varname='soil4c_13', xtype=ncd_double, &
dim1name='column',long_name='',units='')
else if (flag == 'read' .or. flag == 'write') then
call ncd_io(varname='soil4c_13', data=cc13s%soil4c, &
dim1name=namec, ncid=ncid, flag=flag, readvar=readvar)
if (flag=='read' .and. .not. readvar) then
if (is_restart()) call endrun
end if
end if
! seedc
if (flag == 'define') then
call ncd_defvar(ncid=ncid, varname='seedc_13', xtype=ncd_double, &
dim1name='column',long_name='',units='')
else if (flag == 'read' .or. flag == 'write') then
call ncd_io(varname='seedc_13', data=cc13s%seedc, &
dim1name=namec, ncid=ncid, flag=flag, readvar=readvar)
if (flag=='read' .and. .not. readvar) then
if (is_restart()) call endrun
end if
end if
! col_ctrunc
if (flag == 'define') then
call ncd_defvar(ncid=ncid, varname='col_ctrunc_13', xtype=ncd_double, &
dim1name='column',long_name='',units='')
else if (flag == 'read' .or. flag == 'write') then
call ncd_io(varname='col_ctrunc_13', data=cc13s%col_ctrunc, &
dim1name=namec, ncid=ncid, flag=flag, readvar=readvar)
if (flag=='read' .and. .not. readvar) then
if (is_restart()) call endrun
end if
end if
! totlitc
if (flag == 'define') then
call ncd_defvar(ncid=ncid, varname='totlitc_13', xtype=ncd_double, &
dim1name='column',long_name='',units='')
else if (flag == 'read' .or. flag == 'write') then
call ncd_io(varname='totlitc_13', data=cc13s%totlitc, &
dim1name=namec, ncid=ncid, flag=flag, readvar=readvar)
if (flag=='read' .and. .not. readvar) then
if (is_restart()) call endrun
end if
end if
! totcolc
if (flag == 'define') then
call ncd_defvar(ncid=ncid, varname='totcolc_13', xtype=ncd_double, &
dim1name='column',long_name='',units='')
else if (flag == 'read' .or. flag == 'write') then
call ncd_io(varname='totcolc_13', data=cc13s%totcolc, &
dim1name=namec, ncid=ncid, flag=flag, readvar=readvar)
if (flag=='read' .and. .not. readvar) then
if (is_restart()) call endrun
end if
end if
! prod10c
if (flag == 'define') then
call ncd_defvar(ncid=ncid, varname='prod10c_13', xtype=ncd_double, &
dim1name='column',long_name='',units='')
else if (flag == 'read' .or. flag == 'write') then
call ncd_io(varname='prod10c_13', data=cc13s%prod10c, &
dim1name=namec, ncid=ncid, flag=flag, readvar=readvar)
if (flag=='read' .and. .not. readvar) then
if (is_restart()) call endrun
end if
end if
! prod100c
if (flag == 'define') then
call ncd_defvar(ncid=ncid, varname='prod100c_13', xtype=ncd_double, &
dim1name='column',long_name='',units='')
else if (flag == 'read' .or. flag == 'write') then
call ncd_io(varname='prod100c_13', data=cc13s%prod100c, &
dim1name=namec, ncid=ncid, flag=flag, readvar=readvar)
if (flag=='read' .and. .not. readvar) then
if (is_restart()) call endrun
end if
end if
end if
!--------------------------------
! column nitrogen state variables
!--------------------------------
! cwdn
if (flag == 'define') then
call ncd_defvar(ncid=ncid, varname='cwdn', xtype=ncd_double, &
dim1name='column',long_name='',units='')
else if (flag == 'read' .or. flag == 'write') then
call ncd_io(varname='cwdn', data=cns%cwdn, &
dim1name=namec, ncid=ncid, flag=flag, readvar=readvar)
if (flag=='read' .and. .not. readvar) then
if (is_restart()) call endrun
end if
end if
!litr1n
if (flag == 'define') then
call ncd_defvar(ncid=ncid, varname='litr1n', xtype=ncd_double, &
dim1name='column',long_name='',units='')
else if (flag == 'read' .or. flag == 'write') then
call ncd_io(varname='litr1n', data=cns%litr1n, &
dim1name=namec, ncid=ncid, flag=flag, readvar=readvar)
if (flag=='read' .and. .not. readvar) then
if (is_restart()) call endrun
end if
end if
! litr2n
if (flag == 'define') then
call ncd_defvar(ncid=ncid, varname='litr2n', xtype=ncd_double, &
dim1name='column',long_name='',units='')
else if (flag == 'read' .or. flag == 'write') then
call ncd_io(varname='litr2n', data=cns%litr2n, &
dim1name=namec, ncid=ncid, flag=flag, readvar=readvar)
if (flag=='read' .and. .not. readvar) then
if (is_restart()) call endrun
end if
end if
! litr3n
if (flag == 'define') then
call ncd_defvar(ncid=ncid, varname='litr3n', xtype=ncd_double, &
dim1name='column',long_name='',units='')
else if (flag == 'read' .or. flag == 'write') then
call ncd_io(varname='litr3n', data=cns%litr3n, &
dim1name=namec, ncid=ncid, flag=flag, readvar=readvar)
if (flag=='read' .and. .not. readvar) then
if (is_restart()) call endrun
end if
end if
! soil1n
if (flag == 'define') then
call ncd_defvar(ncid=ncid, varname='soil1n', xtype=ncd_double, &
dim1name='column',long_name='',units='')
else if (flag == 'read' .or. flag == 'write') then
call ncd_io(varname='soil1n', data=cns%soil1n, &
dim1name=namec, ncid=ncid, flag=flag, readvar=readvar)
if (flag=='read' .and. .not. readvar) then
if (is_restart()) call endrun
end if
end if
! soil2n
if (flag == 'define') then
call ncd_defvar(ncid=ncid, varname='soil2n', xtype=ncd_double, &
dim1name='column',long_name='',units='')
else if (flag == 'read' .or. flag == 'write') then
call ncd_io(varname='soil2n', data=cns%soil2n, &
dim1name=namec, ncid=ncid, flag=flag, readvar=readvar)
if (flag=='read' .and. .not. readvar) then
if (is_restart()) call endrun
end if
end if
! soil3n
if (flag == 'define') then
call ncd_defvar(ncid=ncid, varname='soil3n', xtype=ncd_double, &
dim1name='column',long_name='',units='')
else if (flag == 'read' .or. flag == 'write') then
call ncd_io(varname='soil3n', data=cns%soil3n, &
dim1name=namec, ncid=ncid, flag=flag, readvar=readvar)
if (flag=='read' .and. .not. readvar) then
if (is_restart()) call endrun
end if
end if
! soil4n
if (flag == 'define') then
call ncd_defvar(ncid=ncid, varname='soil4n', xtype=ncd_double, &
dim1name='column',long_name='',units='')
else if (flag == 'read' .or. flag == 'write') then
call ncd_io(varname='soil4n', data=cns%soil4n, &
dim1name=namec, ncid=ncid, flag=flag, readvar=readvar)
if (flag=='read' .and. .not. readvar) then
if (is_restart()) call endrun
end if
end if
! sminn
if (flag == 'define') then
call ncd_defvar(ncid=ncid, varname='sminn', xtype=ncd_double, &
dim1name='column',long_name='',units='')
else if (flag == 'read' .or. flag == 'write') then
call ncd_io(varname='sminn', data=cns%sminn, &
dim1name=namec, ncid=ncid, flag=flag, readvar=readvar)
if (flag=='read' .and. .not. readvar) then
if (is_restart()) call endrun
end if
end if
! col_ntrunc
if (flag == 'define') then
call ncd_defvar(ncid=ncid, varname='col_ntrunc', xtype=ncd_double, &
dim1name='column',long_name='',units='')
else if (flag == 'read' .or. flag == 'write') then
call ncd_io(varname='col_ntrunc', data=cns%col_ntrunc, &
dim1name=namec, ncid=ncid, flag=flag, readvar=readvar)
if (flag=='read' .and. .not. readvar) then
if (is_restart()) call endrun
end if
end if
! totcoln
if (flag == 'define') then
call ncd_defvar(ncid=ncid, varname='totcoln', xtype=ncd_double, &
dim1name='column',long_name='',units='')
else if (flag == 'read' .or. flag == 'write') then
call ncd_io(varname='totcoln', data=cns%totcoln, &
dim1name=namec, ncid=ncid, flag=flag, readvar=readvar)
if (flag=='read' .and. .not. readvar) then
if (is_restart()) call endrun
end if
end if
! seedn
if (flag == 'define') then
call ncd_defvar(ncid=ncid, varname='seedn', xtype=ncd_double, &
dim1name='column',long_name='',units='')
else if (flag == 'read' .or. flag == 'write') then
call ncd_io(varname='seedn', data=cns%seedn, &
dim1name=namec, ncid=ncid, flag=flag, readvar=readvar)
if (flag=='read' .and. .not. readvar) then
if (is_restart()) call endrun
end if
end if
! prod10n
if (flag == 'define') then
call ncd_defvar(ncid=ncid, varname='prod10n', xtype=ncd_double, &
dim1name='column',long_name='',units='')
else if (flag == 'read' .or. flag == 'write') then
call ncd_io(varname='prod10n', data=cns%prod10n, &
dim1name=namec, ncid=ncid, flag=flag, readvar=readvar)
if (flag=='read' .and. .not. readvar) then
if (is_restart()) call endrun
end if
end if
! prod100n
if (flag == 'define') then
call ncd_defvar(ncid=ncid, varname='prod100n', xtype=ncd_double, &
dim1name='column',long_name='',units='')
else if (flag == 'read' .or. flag == 'write') then
call ncd_io(varname='prod100n', data=cns%prod100n, &
dim1name=namec, ncid=ncid, flag=flag, readvar=readvar)
if (flag=='read' .and. .not. readvar) then
if (is_restart()) call endrun
end if
end if
if (use_exit_spinup) then
if (flag == 'read') then
m = 20._r8
do c = begc, endc
ccs%soil1c(c) = ccs%soil1c(c) * m
ccs%soil2c(c) = ccs%soil2c(c) * m
ccs%soil3c(c) = ccs%soil3c(c) * m
ccs%soil4c(c) = ccs%soil4c(c) * m
if (use_c13) then
! adding code for 13C, 12/25/05, PET
cc13s%soil1c(c) = cc13s%soil1c(c) * m
cc13s%soil2c(c) = cc13s%soil2c(c) * m
cc13s%soil3c(c) = cc13s%soil3c(c) * m
cc13s%soil4c(c) = cc13s%soil4c(c) * m
end if
cns%soil1n(c) = cns%soil1n(c) * m
cns%soil2n(c) = cns%soil2n(c) * m
cns%soil3n(c) = cns%soil3n(c) * m
cns%soil4n(c) = cns%soil4n(c) * m
end do
end if
end if
if (use_cndv) then
! pft type dgvm physical state - crownarea
if (flag == 'define') then
call ncd_defvar(ncid=ncid, varname='CROWNAREA', xtype=ncd_double, &
dim1name='pft',long_name='',units='')
else if (flag == 'read' .or. flag == 'write') then
call ncd_io(varname='CROWNAREA', data=pdgvs%crownarea, &
dim1name=namep, ncid=ncid, flag=flag, readvar=readvar)
if (flag=='read' .and. .not. readvar) then
if (is_restart()) call endrun
end if
end if
! tempsum_litfall
if (flag == 'define') then
call ncd_defvar(ncid=ncid, varname='tempsum_litfall', xtype=ncd_double, &
dim1name='pft',long_name='',units='')
else if (flag == 'read' .or. flag == 'write') then
call ncd_io(varname='tempsum_litfall', data=pepv%tempsum_litfall, &
dim1name=namep, ncid=ncid, flag=flag, readvar=readvar)
if (flag=='read' .and. .not. readvar) then
if (is_restart()) call endrun
end if
end if
! annsum_litfall
if (flag == 'define') then
call ncd_defvar(ncid=ncid, varname='annsum_litfall', xtype=ncd_double, &
dim1name='pft',long_name='',units='')
else if (flag == 'read' .or. flag == 'write') then
call ncd_io(varname='annsum_litfall', data=pepv%annsum_litfall, &
dim1name=namep, ncid=ncid, flag=flag, readvar=readvar)
if (flag=='read' .and. .not. readvar) then
if (is_restart()) call endrun
end if
end if
! nind
if (flag == 'define') then
call ncd_defvar(ncid=ncid, varname='nind', xtype=ncd_double, &
dim1name='pft',long_name='',units='')
else if (flag == 'read' .or. flag == 'write') then
call ncd_io(varname='nind', data=pdgvs%nind, &
dim1name=namep, ncid=ncid, flag=flag, readvar=readvar)
if (flag=='read' .and. .not. readvar) then
if (is_restart()) call endrun
end if
end if
! fpcgrid
if (flag == 'define') then
call ncd_defvar(ncid=ncid, varname='fpcgrid', xtype=ncd_double, &
dim1name='pft',long_name='',units='')
else if (flag == 'read' .or. flag == 'write') then
call ncd_io(varname='fpcgrid', data=pdgvs%fpcgrid, &
dim1name=namep, ncid=ncid, flag=flag, readvar=readvar)
if (flag=='read' .and. .not. readvar) then
if (is_restart()) call endrun
end if
end if
! fpcgridold
if (flag == 'define') then
call ncd_defvar(ncid=ncid, varname='fpcgridold', xtype=ncd_double, &
dim1name='pft',long_name='',units='')
else if (flag == 'read' .or. flag == 'write') then
call ncd_io(varname='fpcgridold', data=pdgvs%fpcgridold, &
dim1name=namep, ncid=ncid, flag=flag, readvar=readvar)
if (flag=='read' .and. .not. readvar) then
if (is_restart()) call endrun
end if
end if
! gridcell type dgvm physical state - tmomin20
if (flag == 'define') then
call ncd_defvar(ncid=ncid, varname='TMOMIN20', xtype=ncd_double, &
dim1name='gridcell',long_name='',units='')
else if (flag == 'read' .or. flag == 'write') then
call ncd_io(varname='TMOMIN20', data=gdgvs%tmomin20, &
dim1name=nameg, ncid=ncid, flag=flag, readvar=readvar)
if (flag=='read' .and. .not. readvar) then
if (is_restart()) call endrun
end if
end if
! gridcell type dgvm physical state - agdd20
if (flag == 'define') then
call ncd_defvar(ncid=ncid, varname='AGDD20', xtype=ncd_double, &
dim1name='gridcell',long_name='',units='')
else if (flag == 'read' .or. flag == 'write') then
call ncd_io(varname='AGDD20', data=gdgvs%agdd20, &
dim1name=nameg, ncid=ncid, flag=flag, readvar=readvar)
if (flag=='read' .and. .not. readvar) then
if (is_restart()) call endrun
end if
end if
! pft type dgvm physical state - t_mo_min
if (flag == 'define') then
call ncd_defvar(ncid=ncid, varname='T_MO_MIN', xtype=ncd_double, &
dim1name='pft',long_name='',units='')
else if (flag == 'read' .or. flag == 'write') then
call ncd_io(varname='T_MO_MIN', data=pdgvs%t_mo_min, &
dim1name=namep, ncid=ncid, flag=flag, readvar=readvar)
if (flag=='read' .and. .not. readvar) then
if (is_restart()) call endrun
end if
end if
! present
if (flag == 'define') then
call ncd_defvar(ncid=ncid, varname='present', xtype=ncd_int, &
dim1name='pft',long_name='',units='')
else if (flag == 'read' .or. flag == 'write') then
allocate (iptemp(begp:endp), stat=ier)
if (ier /= 0) then
call endrun('CNrest: allocation error ')
end if
if (flag == 'write') then
do p = begp,endp
iptemp(p) = 0
if (pdgvs%present(p)) iptemp(p) = 1
end do
end if
call ncd_io(varname='present', data=iptemp, &
dim1name=namep, ncid=ncid, flag=flag, readvar=readvar)
if (flag=='read') then
if (.not. readvar) then
if (is_restart()) call endrun
else
do p = begp,endp
pdgvs%present(p) = .false.
if (iptemp(p) == 1) pdgvs%present(p) = .true.
end do
end if
end if
deallocate (iptemp)
end if
! leafcmax
if (flag == 'define') then
call ncd_defvar(ncid=ncid, varname='leafcmax', xtype=ncd_double, &
dim1name='pft',long_name='',units='')
else if (flag == 'read' .or. flag == 'write') then
call ncd_io(varname='leafcmax', data=pcs%leafcmax, &
dim1name=namep, ncid=ncid, flag=flag, readvar=readvar)
if (flag=='read' .and. .not. readvar) then
if (is_restart()) call endrun
end if
end if
! heatstress
if (flag == 'define') then
call ncd_defvar(ncid=ncid, varname='heatstress', xtype=ncd_double, &
dim1name='pft',long_name='',units='')
else if (flag == 'read' .or. flag == 'write') then
call ncd_io(varname='heatstress', data=pdgvs%heatstress, &
dim1name=namep, ncid=ncid, flag=flag, readvar=readvar)
if (flag=='read' .and. .not. readvar) then
if (is_restart()) call endrun
end if
end if
! greffic
if (flag == 'define') then
call ncd_defvar(ncid=ncid, varname='greffic', xtype=ncd_double, &
dim1name='pft',long_name='',units='')
else if (flag == 'read' .or. flag == 'write') then
call ncd_io(varname='greffic', data=pdgvs%greffic, &
dim1name=namep, ncid=ncid, flag=flag, readvar=readvar)
if (flag=='read' .and. .not. readvar) then
if (is_restart()) call endrun
end if
end if
end if
end subroutine CNRest
end module CNrestMod