Initial commit of code to rewrite C-LAMP output from CLM3 for the Earth System Grid (ESG)
authorForrest Hoffman <forrest@climatemodeling.org>
Sun, 21 Sep 2008 21:59:01 -0400
changeset 0c8ca04c3a9d6
child 1 2bbb71ef2f67
Initial commit of code to rewrite C-LAMP output from CLM3 for the Earth System Grid (ESG)
.hgignore
Makefile
c-lamp_rewrite.f90
clm_mod.f90
do_c-lamp_rewrite.bash
kind_mod.f90
namelist.clm3_casa.exp1_2.run1.monthly_mean
namelist.clm3_casa.exp1_3.run1.monthly_mean
namelist.clm3_casa.exp1_4.run1.monthly_mean
namelist.clm3_casa.exp1_6.run1.monthly_mean
namelist.clm3_casa.exp1_7.run1.monthly_mean
namelist.clm3_cn.exp1_2.run1.monthly_mean
namelist.clm3_cn.exp1_3.run1.monthly_mean
namelist.clm3_cn.exp1_4.run1.monthly_mean
namelist.clm3_cn.exp1_6.run1.monthly_mean
namelist.clm3_cn.exp1_7.run1.monthly_mean
     1.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.2 +++ b/.hgignore	Sun Sep 21 21:59:01 2008 -0400
     1.3 @@ -0,0 +1,6 @@
     1.4 +syntax: glob
     1.5 +*.o
     1.6 +*.mod
     1.7 +
     1.8 +c-lamp_rewrite
     1.9 +C-LAMP_L1_table
     2.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     2.2 +++ b/Makefile	Sun Sep 21 21:59:01 2008 -0400
     2.3 @@ -0,0 +1,40 @@
     2.4 +# On thing1, do the following first:
     2.5 +# $ module load pgi
     2.6 +# $ module load netcdf
     2.7 +# $ module load cmor
     2.8 +#
     2.9 +FC=pgf90
    2.10 +#CMOR=~hof/src/cmor/CMOR_V1.2
    2.11 +#NETCDF=/apps/netcdf/3.6.2/jaguar
    2.12 +#NETCDF=/apps/netcdf/3.6.1/hawk_x86_64
    2.13 +#NETCDF=/apps/netcdf/3.6.1/ewok_x86_64_pgi625
    2.14 +#NETCDF=$(HOME)/robin1/netcdf-3.6.2
    2.15 +# jaguar
    2.16 +#NETCDF=$(NETCDF_DIR)
    2.17 +#UDUNITS=/apps/udunits/1.12.4/robin1/udunits-1.12.4
    2.18 +FFLAGS=-I$(INC_CMOR) -I$(INC_NETCDF)
    2.19 +LIBS=-L$(LIB_CMOR) -L$(LIB_NETCDF) -lcmor -ludunits -lnetcdf
    2.20 +#
    2.21 +OBJS=c-lamp_rewrite.o kind_mod.o clm_mod.o
    2.22 +MODS=kind_mod.mod clm_mod.mod
    2.23 +
    2.24 +.SUFFIXES: .f90 .o
    2.25 +
    2.26 +.f90.o:
    2.27 +	$(FC) $(FFLAGS) -c $<
    2.28 +
    2.29 +all: c-lamp_rewrite
    2.30 +
    2.31 +c-lamp_rewrite: c-lamp_rewrite.o kind_mod.o clm_mod.o
    2.32 +	$(FC) $(FFLAGS) -o $@  c-lamp_rewrite.o kind_mod.o clm_mod.o $(LIBS)
    2.33 +
    2.34 +clean:
    2.35 +	$(RM) -f c-lamp_rewrite $(OBJS) $(MODS)
    2.36 +
    2.37 +install: all
    2.38 +	cp -p c-lamp_rewrite $(HOME)/bin/
    2.39 +
    2.40 +#
    2.41 +c-lamp_rewrite.o: clm_mod.o kind_mod.o c-lamp_rewrite.f90
    2.42 +clm_mod.o: kind_mod.o clm_mod.f90
    2.43 +kind_mod.o: kind_mod.f90
     3.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     3.2 +++ b/c-lamp_rewrite.f90	Sun Sep 21 21:59:01 2008 -0400
     3.3 @@ -0,0 +1,229 @@
     3.4 +  program clamp_rewrite
     3.5 +
     3.6 +! Program to use CMOR routines to rewrite model results from the simulations
     3.7 +! for the Carbon-Land Model Intercomparison Project (C-LAMP).
     3.8 +!
     3.9 +! Forrest M. Hoffman <forrest@climatemodeling.org>
    3.10 +! Created: Fri Jun  8 11:50:01 EDT 2007
    3.11 +
    3.12 +
    3.13 +    use cmor_users_functions
    3.14 +    use netcdf
    3.15 +    use kind_mod
    3.16 +    use clm_mod, only: namelen, varnamelen, coord, var_data, &
    3.17 +      clm_read_coord, clm_copy_grid_data, clm_read_data, clm_convert_data, &
    3.18 +      clm_free_data
    3.19 +    implicit none
    3.20 +
    3.21 +    integer, parameter :: maxf = 2500
    3.22 +    integer, parameter :: maxv = 200
    3.23 +    integer :: i, numf, numv
    3.24 +
    3.25 +    integer, allocatable :: iaxis(:)          ! CMOR handle for axes (time, [hour,] [z-level,] latitude, longitude)
    3.26 +    integer              :: ivar              ! CMOR handle for variable
    3.27 +    integer              :: ierr              ! error flag
    3.28 +    integer              :: axis_num          ! axis counter
    3.29 +    integer              :: realization       ! model run realization
    3.30 +    character (len=128)  :: input_path        ! input path
    3.31 +    character (len=128)  :: fnames(maxf) = '' ! input file names
    3.32 +    integer              :: tshift(maxf) = 0  ! time shift for files
    3.33 +    character (len=128)  :: output_path       ! output path
    3.34 +    character (len=128)  :: input_table       ! CMOR table path
    3.35 +    character (len=32)   :: vnames(maxv) = '' ! input variable names
    3.36 +    character (len=256)  :: source = ''       ! source global attribute
    3.37 +    character (len=128)  :: experiment = ''   ! experiment_id global attribute
    3.38 +    logical              :: casa_flux_bug     ! scale fluxes due to bug in CASA'
    3.39 +
    3.40 +    real(r4) :: imissing = 1.0e+36 ! missing-data flag on input
    3.41 +    real(r4) :: omissing = 1.0e+36 ! missing-data flag on output
    3.42 +
    3.43 +    casa_flux_bug = .false.
    3.44 +
    3.45 +    namelist /inparm/ input_table, output_path, experiment, source, &
    3.46 +      realization, input_path, fnames, tshift, vnames, casa_flux_bug
    3.47 +
    3.48 +    open(10, file='namelist', status='old')
    3.49 +    ierr = 1
    3.50 +    do while(ierr /= 0)
    3.51 +      read(10, inparm, iostat=ierr)
    3.52 +      if (ierr < 0) then
    3.53 +        stop 'End of file on namelist read'
    3.54 +      end if
    3.55 +    end do
    3.56 +    close(10)
    3.57 +
    3.58 +    ! Count number of input data files
    3.59 +    numf = 0
    3.60 +    do i = 1, maxf
    3.61 +       if (trim(fnames(i)) /= '') numf = numf + 1
    3.62 +    end do
    3.63 +    ! Count number of variables
    3.64 +    numv = 0
    3.65 +    do i = 1, maxv
    3.66 +       if (trim(vnames(i)) /= '') numv = numv + 1
    3.67 +    end do
    3.68 +
    3.69 +    print *, 'Reading input files for coordinates and counts...'
    3.70 +    call clm_read_coord(numf, input_path, fnames, .true.)
    3.71 +
    3.72 +    do i = 1, numv
    3.73 +      select case (vnames(i))
    3.74 +      ! gca
    3.75 +      case ('area')
    3.76 +         call clm_copy_grid_data(vnames(i))
    3.77 +      ! lbm
    3.78 +      case ('landmask')
    3.79 +         call clm_copy_grid_data(vnames(i))
    3.80 +      ! orog
    3.81 +      case ('topo')
    3.82 +         call clm_copy_grid_data(vnames(i))
    3.83 +      ! sftlf
    3.84 +      case ('landfrac')
    3.85 +         call clm_copy_grid_data(vnames(i))
    3.86 +      case default
    3.87 +         print *, 'Reading input files for variable ', vnames(i)
    3.88 +         call clm_read_data(numf, input_path, fnames, tshift, vnames(i))
    3.89 +
    3.90 +         !print *,'var_data%varname = ',var_data%varname
    3.91 +         !print *,'var_data%ndims = ',var_data%ndims
    3.92 +         !print *,'var_data%time = ',var_data%time
    3.93 +         !print *,'var_data%long_name = ',trim(var_data%long_name)
    3.94 +         !print *,'var_data%missing_value = ',var_data%missing_value
    3.95 +         !print *,'var_data%units = ',trim(var_data%units)
    3.96 +      end select
    3.97 +
    3.98 +      print *, 'Performing unit conversion on data...'
    3.99 +      call clm_convert_data(casa_flux_bug)
   3.100 +
   3.101 +      print *, 'Initializing CMOR...'
   3.102 +      ierr = cmor_setup(inpath='./',netcdf_file_action='preserve', &
   3.103 +        set_verbosity=2, exit_control=2)
   3.104 +
   3.105 +      print *, 'Identifying output data sets for CMOR...'
   3.106 +      ierr = cmor_dataset(                                              &
   3.107 +        outpath       = output_path,                                    &
   3.108 +        experiment_id = experiment,                                     &
   3.109 +        institution   = 'ORNL (Oak Ridge National Laboratory, Oak Ridge, Tennessee, USA)', &
   3.110 +        source        = trim(source),                                   &
   3.111 +        realization   = realization,                                    &
   3.112 +        calendar      = 'noleap',                                       &
   3.113 +        history       = 'Extracted from case '//trim(coord%case_id),    &
   3.114 +        comment       = 'Initial dataset: '//trim(coord%inidat)//       &
   3.115 +          '; surface dataset: '//trim(coord%surdat)//'; pft dataset: '//&
   3.116 +          trim(coord%pftdat)//'; rtm dataset: '//trim(coord%rtmdat),    &
   3.117 +        references    = 'http://www.climatemodeling.org/c-lamp',        &
   3.118 +        contact       = 'Forrest M. Hoffman <forrest@climatemodeling.org>')
   3.119 +
   3.120 +      allocate(iaxis(var_data%ndims), stat=ierr)
   3.121 +      if (ierr /= 0) then
   3.122 +         print *, 'Cannot allocate iaxis'
   3.123 +         stop
   3.124 +      end if
   3.125 +
   3.126 +      print *, 'Defining coordinates for CMOR output data...'
   3.127 +      axis_num = 1
   3.128 +
   3.129 +      iaxis(axis_num) = cmor_axis(                                      &
   3.130 +        table       = input_table,                                      &
   3.131 +        table_entry = 'longitude',                                      &
   3.132 +        units       = 'degrees_east',                                   &
   3.133 +        length      = coord%xsize,                                      &
   3.134 +        coord_vals  = coord%x)
   3.135 +      axis_num = axis_num + 1
   3.136 +
   3.137 +      iaxis(axis_num) = cmor_axis(                                      &
   3.138 +        table       = input_table,                                      &
   3.139 +        table_entry = 'latitude',                                       &
   3.140 +        units       = 'degrees_north',                                  &
   3.141 +        length      = coord%ysize,                                      &
   3.142 +        coord_vals  = coord%y)
   3.143 +      axis_num = axis_num + 1
   3.144 +
   3.145 +      if (var_data%soil_layer_flag) then
   3.146 +         iaxis(axis_num) = cmor_axis(                                   &
   3.147 +           table       = input_table,                                   &
   3.148 +           table_entry = 'depth_soil',                                  &
   3.149 +           units       = 'm',                                           &
   3.150 +           length      = coord%zsoi_size,                               &
   3.151 +           coord_vals  = coord%zsoi)
   3.152 +         axis_num = axis_num + 1
   3.153 +      end if
   3.154 +
   3.155 +      if (var_data%hour_flag) then
   3.156 +         iaxis(axis_num) = cmor_axis(                                   &
   3.157 +           table       = input_table,                                   &
   3.158 +           table_entry = 'hour',                                        &
   3.159 +           units       = 'hours',                                       &
   3.160 +           length      = coord%hr_size,                                 &
   3.161 +           coord_vals  = coord%hr)
   3.162 +         axis_num = axis_num + 1
   3.163 +      end if
   3.164 +
   3.165 +      if (var_data%ndims > 2) then
   3.166 +        iaxis(axis_num) = cmor_axis(                                    &
   3.167 +          table       = input_table,                                    &
   3.168 +          table_entry = 'time',                                         &
   3.169 +          units       = 'days since 1798-01-01 00:00:00')
   3.170 +        axis_num = axis_num + 1
   3.171 +      end if
   3.172 +
   3.173 +      print *, 'Defining CMOR output data variables...'
   3.174 +      if (var_data%positive == '') then
   3.175 +         ivar = cmor_variable(                                          &
   3.176 +           table         = input_table,                                 &
   3.177 +           table_entry   = var_data%out_varname,                        &
   3.178 +           original_name = var_data%varname,                            &
   3.179 +           units         = var_data%units,                              &
   3.180 +           missing_value = var_data%missing_value,                      &
   3.181 +           axis_ids      = iaxis)
   3.182 +      else
   3.183 +         ivar = cmor_variable(                                          &
   3.184 +           table         = input_table,                                 &
   3.185 +           table_entry   = var_data%out_varname,                        &
   3.186 +           original_name = var_data%varname,                            &
   3.187 +           units         = var_data%units,                              &
   3.188 +           positive      = var_data%positive,                           &
   3.189 +           missing_value = var_data%missing_value,                      &
   3.190 +           axis_ids      = iaxis)
   3.191 +      end if
   3.192 +
   3.193 +      print *, 'Writing CMOR output...'
   3.194 +      select case (var_data%ndims)
   3.195 +         case (2)
   3.196 +            if (var_data%int_type) then
   3.197 +               ierr = cmor_write(                                       &
   3.198 +                 var_id    = ivar,                                      &
   3.199 +                 data      = var_data%int2d)
   3.200 +            else
   3.201 +               ierr = cmor_write(                                       &
   3.202 +                 var_id    = ivar,                                      &
   3.203 +                 data      = var_data%var2d)
   3.204 +            end if
   3.205 +         case (3)
   3.206 +            ierr = cmor_write(                                          &
   3.207 +              var_id    = ivar,                                         &
   3.208 +              data      = var_data%var3d,                               &
   3.209 +              time_vals = var_data%time,                                &
   3.210 +              time_bnds = var_data%time_bounds)
   3.211 +         case (4)
   3.212 +            ierr = cmor_write(                                          &
   3.213 +              var_id    = ivar,                                         &
   3.214 +              data      = var_data%var4d,                               &
   3.215 +              time_vals = var_data%time,                                &
   3.216 +              time_bnds = var_data%time_bounds)
   3.217 +         case default
   3.218 +            print *, 'Unable to handle data with ', var_data%ndims, 'dimensions'
   3.219 +            stop
   3.220 +      end select
   3.221 +
   3.222 +      print *, 'Closing CMOR file(s)...'
   3.223 +      ierr = cmor_close()
   3.224 +
   3.225 +      deallocate(iaxis)
   3.226 +
   3.227 +      print *, 'Freeing data...'
   3.228 +      call clm_free_data()
   3.229 +
   3.230 +    end do ! loop over variables
   3.231 +
   3.232 +  end program clamp_rewrite
     4.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     4.2 +++ b/clm_mod.f90	Sun Sep 21 21:59:01 2008 -0400
     4.3 @@ -0,0 +1,1371 @@
     4.4 +module clm_mod
     4.5 +
     4.6 +  use netcdf
     4.7 +  use kind_mod
     4.8 +  implicit none
     4.9 +
    4.10 +  integer, parameter :: namelen = 128   ! string length for paths
    4.11 +  integer, parameter :: varnamelen = 32 ! string length for varnames
    4.12 +  integer, parameter :: posnamelen =  4 ! string length for positive attribute
    4.13 +  integer, parameter :: varattlen = 128 ! string length for variable attributes
    4.14 +  character (len=*), parameter  :: xname  = 'lon'
    4.15 +  character (len=*), parameter  :: yname  = 'lat'
    4.16 +  character (len=*), parameter  :: zsoi_name  = 'levsoi'
    4.17 +  character (len=*), parameter  :: zlak_name  = 'levlak'
    4.18 +  character (len=*), parameter  :: tname  = 'time'
    4.19 +  character (len=*), parameter  :: hr_name  = 'hour'
    4.20 +  character (len=*), parameter  :: nsamples_name  = 'nsamples'
    4.21 +  character (len=*), parameter  :: hiname = 'hist_interval'
    4.22 +  character (len=*), parameter  :: tbname = 'time_bounds'
    4.23 +  character (len=*), parameter  :: aname  = 'area'
    4.24 +  character (len=*), parameter  :: lname  = 'landfrac'
    4.25 +  character (len=*), parameter  :: mname  = 'landmask'
    4.26 +  character (len=*), parameter  :: oname  = 'topo'
    4.27 +  character (len=*), parameter  :: long_name_name = 'long_name'
    4.28 +  character (len=*), parameter  :: missing_value_name = 'missing_value'
    4.29 +  character (len=*), parameter  :: units_name = 'units'
    4.30 +  character (len=*), parameter  :: case_id_name = 'case_id'
    4.31 +  character (len=*), parameter  :: inidat_name = 'Initial_conditions_dataset'
    4.32 +  character (len=*), parameter  :: surdat_name = 'Surface_dataset'
    4.33 +  character (len=*), parameter  :: pftdat_name = 'PFT_physiological_constants_dataset'
    4.34 +  character (len=*), parameter  :: rtmdat_name = 'RTM_input_datset'
    4.35 +
    4.36 +  type surface
    4.37 +    integer  :: xsize     ! number of longitude points (lon)
    4.38 +    integer  :: ysize     ! number of latitutde points (lat)
    4.39 +    integer  :: psize     ! number of pfts
    4.40 +    real(r8), pointer :: x(:)    ! longitude values (lon)
    4.41 +    real(r8), pointer :: y(:)    ! latitude values (lat)
    4.42 +    real(r8), pointer :: p(:)    ! pft number
    4.43 +    real(r4), pointer :: pft(:,:,:) ! percent of each pft
    4.44 +  end type surface
    4.45 +
    4.46 +  type coordinates
    4.47 +    integer  :: xsize     ! number of longitude points (lon)
    4.48 +    integer  :: ysize     ! number of latitutde points (lat)
    4.49 +    integer  :: zsoi_size ! number of soil z-levels (levsoi)
    4.50 +    integer  :: zlak_size ! number of lake z-levels (levlak)
    4.51 +    integer  :: tsize     ! number of time points (time)
    4.52 +    integer  :: hr_size   ! number of hour points (hour = 24)
    4.53 +    integer  :: nsamples  ! number of time samples in post-processing statistics
    4.54 +    real(r8), pointer :: x(:)    ! longitude values (lon)
    4.55 +    real(r8), pointer :: y(:)    ! latitude values (lat)
    4.56 +    real(r8), pointer :: zsoi(:) ! soil z-level values (levsoi)
    4.57 +    real(r8), pointer :: zlak(:) ! lake z-level values (levlak)
    4.58 +    real(r8), pointer :: hr(:)   ! hour-of-day values (hour)
    4.59 +    real(r8), pointer :: area(:,:)     ! gridcell areas
    4.60 +    real(r8), pointer :: landfrac(:,:) ! gridcell land fractions
    4.61 +    integer, pointer  :: landmask(:,:) ! gridcell land/ocean mask
    4.62 +    real(r8), pointer :: orog(:,:)     ! gridcell orography/topography
    4.63 +    character (len=namelen) :: case_id ! case name of run
    4.64 +    character (len=namelen) :: inidat  ! initial dataset filename
    4.65 +    character (len=namelen) :: surdat  ! surface dataset filename
    4.66 +    character (len=namelen) :: pftdat  ! pft dataset filename
    4.67 +    character (len=namelen) :: rtmdat  ! runoff dataset filename
    4.68 +    logical  :: hour_flag ! flag for hour-of-day statistical summary files
    4.69 +  end type coordinates
    4.70 +
    4.71 +  type variable_data
    4.72 +    character (len=varnamelen) :: varname
    4.73 +    integer           :: ndims
    4.74 +    integer, pointer  :: int2d(:,:)
    4.75 +    real(r4), pointer :: var2d(:,:)
    4.76 +    real(r4), pointer :: var3d(:,:,:)
    4.77 +    real(r4), pointer :: var4d(:,:,:,:)
    4.78 +    real(r8), pointer :: time(:)
    4.79 +    real(r8), pointer :: time_bounds(:,:)
    4.80 +    logical  :: int_type ! set if type is integer
    4.81 +    logical  :: soil_layer_flag
    4.82 +    logical  :: hour_flag ! flag for hour-of-day statistical summary variable
    4.83 +    character (len=varattlen)  :: long_name
    4.84 +    real(r4)                   :: missing_value
    4.85 +    character (len=varattlen)  :: units
    4.86 +    character (len=posnamelen) :: positive
    4.87 +    character (len=varnamelen) :: out_varname
    4.88 +  end type variable_data
    4.89 +
    4.90 +  type(surface), target       :: surf
    4.91 +  type(coordinates), target   :: coord
    4.92 +  type(variable_data), target :: var_data
    4.93 +  save
    4.94 +
    4.95 +  public  clm_read_surf
    4.96 +  public  clm_free_surf
    4.97 +  public  clm_read_coord
    4.98 +  public  clm_copy_grid_data
    4.99 +  public  clm_read_data
   4.100 +  public  clm_convert_data
   4.101 +  public  clm_free_data
   4.102 +  private nc_err
   4.103 +
   4.104 +  contains
   4.105 +
   4.106 +    !
   4.107 +    !--------------------------------------------------------------------------
   4.108 +    !
   4.109 +    subroutine clm_read_surf(fsurdat)
   4.110 +
   4.111 +    implicit none
   4.112 +    character (len=namelen), intent(in) :: fsurdat ! input surface dataset
   4.113 +    integer :: i
   4.114 +    integer :: ierr
   4.115 +    integer :: ncid
   4.116 +    integer :: xdimid, xvarid, xlen
   4.117 +    integer :: ydimid, yvarid, ylen
   4.118 +    integer :: pdimid, pvarid, plen
   4.119 +    real(r8), allocatable :: longxy(:,:)
   4.120 +    real(r8), allocatable :: latixy(:,:)
   4.121 +    real(r4), allocatable :: pctpft(:,:,:)
   4.122 +
   4.123 +    ! Read coordinated from surface dataset
   4.124 +    print *, 'Opening ',trim(fsurdat)
   4.125 +    call nc_err(nf90_open(path=trim(fsurdat), mode=nf90_nowrite, ncid=ncid))
   4.126 +    call nc_err(nf90_inq_dimid(ncid, 'lsmlon', xdimid))
   4.127 +    call nc_err(nf90_inq_dimid(ncid, 'lsmlat', ydimid))
   4.128 +    call nc_err(nf90_inq_dimid(ncid, 'lsmpft', pdimid))
   4.129 +
   4.130 +    call nc_err(nf90_inquire_dimension(ncid=ncid, dimid=xdimid, len=xlen))
   4.131 +    call nc_err(nf90_inquire_dimension(ncid=ncid, dimid=ydimid, len=ylen))
   4.132 +    call nc_err(nf90_inquire_dimension(ncid=ncid, dimid=pdimid, len=plen))
   4.133 +
   4.134 +    call nc_err(nf90_inq_varid(ncid, 'LONGXY', xvarid))
   4.135 +    call nc_err(nf90_inq_varid(ncid, 'LATIXY', yvarid))
   4.136 +    call nc_err(nf90_inq_varid(ncid, 'PCT_PFT', pvarid))
   4.137 +
   4.138 +    allocate(longxy(xlen, ylen), latixy(xlen, ylen), pctpft(xlen, ylen, plen), stat=ierr)
   4.139 +    if (ierr /= 0) then
   4.140 +       print *, 'clm_read_surf: Cannot allocate longxy, latixy, pctpft variables'
   4.141 +       stop
   4.142 +    end if
   4.143 +
   4.144 +    call nc_err(nf90_get_var(ncid, xvarid, longxy))
   4.145 +    call nc_err(nf90_get_var(ncid, yvarid, latixy))
   4.146 +    call nc_err(nf90_get_var(ncid, pvarid, pctpft))
   4.147 +
   4.148 +    print *, 'Closing ',trim(fsurdat)
   4.149 +    call nc_err(nf90_close(ncid))
   4.150 +
   4.151 +    ! Allocate and fill in the surface derived data type
   4.152 +    surf%xsize = xlen
   4.153 +    surf%ysize = ylen
   4.154 +    surf%psize = plen
   4.155 +    allocate(surf%x(xlen), surf%y(ylen), surf%p(plen), surf%pft(xlen, ylen, plen), stat=ierr)
   4.156 +    if (ierr /= 0) then
   4.157 +       print *, 'clm_read_surf: Cannot allocate surface type variables'
   4.158 +       stop
   4.159 +    end if
   4.160 +    surf%x(:) = longxy(:,1)
   4.161 +    surf%y(:) = latixy(1,:)
   4.162 +    do i = 1, plen
   4.163 +       surf%p(i) = real(i)
   4.164 +    end do
   4.165 +    surf%pft  = pctpft
   4.166 +
   4.167 +    deallocate(longxy, latixy, pctpft)
   4.168 +
   4.169 +    end subroutine clm_read_surf
   4.170 +    !
   4.171 +    !--------------------------------------------------------------------------
   4.172 +    !
   4.173 +    subroutine clm_free_surf()
   4.174 +
   4.175 +    implicit none
   4.176 +
   4.177 +    if (allocated(surf%x))   deallocate(surf%x)
   4.178 +    if (allocated(surf%y))   deallocate(surf%y)
   4.179 +    if (allocated(surf%p))   deallocate(surf%p)
   4.180 +    if (allocated(surf%pft)) deallocate(surf%pft)
   4.181 +
   4.182 +    end subroutine clm_free_surf
   4.183 +    !
   4.184 +    !--------------------------------------------------------------------------
   4.185 +    !
   4.186 +    subroutine clm_read_coord(numf, input_path, fnames, read_grid_all)
   4.187 +
   4.188 +    implicit none
   4.189 +    integer, intent(in)                 :: numf          ! number of filenames
   4.190 +    character (len=namelen), intent(in) :: input_path    ! input path
   4.191 +    character (len=namelen), intent(in) :: fnames(numf)  ! input filenames
   4.192 +    logical, intent(in)                 :: read_grid_all ! flag to read area,...
   4.193 +    integer :: ncid
   4.194 +    integer :: xdimid, xvarid, xlen
   4.195 +    integer :: ydimid, yvarid, ylen
   4.196 +    integer :: zsoi_dimid, zsoi_varid, zsoi_len
   4.197 +    integer :: zlak_dimid, zlak_varid, zlak_len
   4.198 +    integer :: tdimid, tvarid, tlen
   4.199 +    integer :: hr_dimid, hr_varid, hr_len
   4.200 +    integer :: nsamples_dimid, nsamples_len
   4.201 +    integer :: avarid ! area (when read_grid_all true)
   4.202 +    integer :: lvarid ! landfrac (when read_grid_all true)
   4.203 +    integer :: mvarid ! landmask (when read_grid_all true)
   4.204 +    integer :: ovarid ! orog/topo (when read_grid_all true)
   4.205 +    integer(i8) :: i
   4.206 +    integer(i8) :: time_size
   4.207 +    real(r4), allocatable :: xvals(:)
   4.208 +    real(r4), allocatable :: yvals(:)
   4.209 +    real(r4), allocatable :: zsoi_vals(:)
   4.210 +    real(r4), allocatable :: zlak_vals(:)
   4.211 +    real(r4), allocatable :: hr_vals(:)
   4.212 +    real(r4), allocatable :: avals(:,:) ! area (when read_grid_all true)
   4.213 +    real(r4), allocatable :: lvals(:,:) ! landfrac (when read_grid_all true)
   4.214 +    integer, allocatable  :: mvals(:,:) ! landmask (when read_grid_all true)
   4.215 +    real(r4), allocatable :: ovals(:,:) ! orog/topo (when read_grid_all true)
   4.216 +    character (len=namelen) :: case_id = ''
   4.217 +    character (len=namelen) :: inidat = ''
   4.218 +    character (len=namelen) :: surdat = ''
   4.219 +    character (len=namelen) :: pftdat = ''
   4.220 +    character (len=namelen) :: rtmdat = ''
   4.221 +    logical :: hrflag = .false.
   4.222 +    integer :: ierr
   4.223 +
   4.224 +    ! Read coordinates from first file
   4.225 +    print *, 'Opening ',trim(input_path)//'/'//trim(fnames(1))
   4.226 +    call nc_err(nf90_open(path=trim(input_path)//'/'//trim(fnames(1)), mode=nf90_nowrite, ncid=ncid))
   4.227 +    call nc_err(nf90_inq_dimid(ncid, xname, xdimid))
   4.228 +    call nc_err(nf90_inq_dimid(ncid, yname, ydimid))
   4.229 +    call nc_err(nf90_inq_dimid(ncid, zsoi_name, zsoi_dimid))
   4.230 +    call nc_err(nf90_inq_dimid(ncid, zlak_name, zlak_dimid))
   4.231 +    call nc_err(nf90_inq_dimid(ncid, tname, tdimid))
   4.232 +    if (nf90_inq_dimid(ncid, hr_name, hr_dimid) == nf90_noerr) then
   4.233 +       call nc_err(nf90_inq_dimid(ncid, nsamples_name, nsamples_dimid))
   4.234 +       hrflag = .true.
   4.235 +    end if
   4.236 +
   4.237 +    call nc_err(nf90_inquire_dimension(ncid=ncid, dimid=xdimid, len=xlen))
   4.238 +    call nc_err(nf90_inquire_dimension(ncid=ncid, dimid=ydimid, len=ylen))
   4.239 +    call nc_err(nf90_inquire_dimension(ncid=ncid, dimid=zsoi_dimid, len=zsoi_len))
   4.240 +    call nc_err(nf90_inquire_dimension(ncid=ncid, dimid=zlak_dimid, len=zlak_len))
   4.241 +    call nc_err(nf90_inquire_dimension(ncid=ncid, dimid=tdimid, len=tlen))
   4.242 +    if (hrflag) then
   4.243 +       call nc_err(nf90_inquire_dimension(ncid=ncid, dimid=hr_dimid, len=hr_len))
   4.244 +       call nc_err(nf90_inquire_dimension(ncid=ncid, dimid=nsamples_dimid, len=nsamples_len))
   4.245 +    else
   4.246 +       hr_len = 0
   4.247 +       nsamples_len = 0
   4.248 +    end if
   4.249 +    print *, tlen,' values'
   4.250 +
   4.251 +    allocate(xvals(xlen), yvals(ylen), zsoi_vals(zsoi_len), zlak_vals(zlak_len), hr_vals(hr_len), stat=ierr)
   4.252 +    if (ierr /= 0) then
   4.253 +       print *, 'clm_read_coord: Cannot allocate grid variables'
   4.254 +       stop
   4.255 +    end if
   4.256 +    if (read_grid_all) then
   4.257 +       allocate(avals(xlen, ylen), lvals(xlen, ylen), mvals(xlen, ylen), ovals(xlen, ylen), stat=ierr)
   4.258 +       if (ierr /= 0) then
   4.259 +          print *, 'clm_read_coord: Cannot allocate extra grid variables'
   4.260 +          stop
   4.261 +       end if
   4.262 +    end if
   4.263 +
   4.264 +    call nc_err(nf90_inq_varid(ncid, xname, xvarid))
   4.265 +    call nc_err(nf90_inq_varid(ncid, yname, yvarid))
   4.266 +    call nc_err(nf90_inq_varid(ncid, zsoi_name, zsoi_varid))
   4.267 +    call nc_err(nf90_inq_varid(ncid, zlak_name, zlak_varid))
   4.268 +    call nc_err(nf90_inq_varid(ncid, tname, tvarid))
   4.269 +    if (hrflag) call nc_err(nf90_inq_varid(ncid, hr_name, hr_varid))
   4.270 +    if (read_grid_all) then
   4.271 +       call nc_err(nf90_inq_varid(ncid, aname, avarid))
   4.272 +       call nc_err(nf90_inq_varid(ncid, lname, lvarid))
   4.273 +       call nc_err(nf90_inq_varid(ncid, mname, mvarid))
   4.274 +       call nc_err(nf90_inq_varid(ncid, oname, ovarid))
   4.275 +    end if
   4.276 +
   4.277 +    call nc_err(nf90_get_var(ncid, xvarid, xvals))
   4.278 +    call nc_err(nf90_get_var(ncid, yvarid, yvals))
   4.279 +    call nc_err(nf90_get_var(ncid, zsoi_varid, zsoi_vals))
   4.280 +    call nc_err(nf90_get_var(ncid, zlak_varid, zlak_vals))
   4.281 +    if (hrflag) call nc_err(nf90_get_var(ncid, hr_varid, hr_vals))
   4.282 +    if (read_grid_all) then
   4.283 +       call nc_err(nf90_get_var(ncid, avarid, avals))
   4.284 +       call nc_err(nf90_get_var(ncid, lvarid, lvals))
   4.285 +       call nc_err(nf90_get_var(ncid, mvarid, mvals))
   4.286 +       call nc_err(nf90_get_var(ncid, ovarid, ovals))
   4.287 +    end if
   4.288 +
   4.289 +    ! Read global attributes
   4.290 +    call nc_err(nf90_get_att(ncid, nf90_global, case_id_name, case_id))
   4.291 +    call nc_err(nf90_get_att(ncid, nf90_global, inidat_name, inidat))
   4.292 +    call nc_err(nf90_get_att(ncid, nf90_global, surdat_name, surdat))
   4.293 +    call nc_err(nf90_get_att(ncid, nf90_global, pftdat_name, pftdat))
   4.294 +    call nc_err(nf90_get_att(ncid, nf90_global, rtmdat_name, rtmdat))
   4.295 +    
   4.296 +    call nc_err(nf90_close(ncid))
   4.297 +
   4.298 +    time_size = tlen
   4.299 +    ! Loop over all remaining files, reading size of time dimension
   4.300 +    do i = 2, numf
   4.301 +      print *, 'Opening ',trim(input_path)//'/'//trim(fnames(i))
   4.302 +      call nc_err(nf90_open(path=trim(input_path)//'/'//trim(fnames(i)), &
   4.303 +         mode=nf90_nowrite, ncid=ncid))
   4.304 +      call nc_err(nf90_inq_dimid(ncid, tname, tdimid))
   4.305 +      call nc_err(nf90_inquire_dimension(ncid=ncid, dimid=tdimid, len=tlen))
   4.306 +      call nc_err(nf90_close(ncid))
   4.307 +      print *, tlen,' values'
   4.308 +      time_size = time_size + tlen
   4.309 +    end do
   4.310 +
   4.311 +    ! Allocate and fill the coordinates derived data type
   4.312 +    coord%xsize = xlen
   4.313 +    coord%ysize = ylen
   4.314 +    coord%zsoi_size = zsoi_len
   4.315 +    coord%zlak_size = zlak_len
   4.316 +    coord%tsize = time_size
   4.317 +    coord%hr_size = hr_len
   4.318 +    coord%nsamples = nsamples_len
   4.319 +    allocate(coord%x(xlen), coord%y(ylen), coord%zsoi(zsoi_len), coord%zlak(zlak_len), coord%hr(hr_len), stat=ierr)
   4.320 +    if (ierr /= 0) then
   4.321 +       print *, 'clm_read_coord: Cannot allocate grid variables'
   4.322 +       stop
   4.323 +    end if
   4.324 +    if (read_grid_all) then
   4.325 +       allocate(coord%area(xlen, ylen), coord%landfrac(xlen, ylen), coord%landmask(xlen, ylen), coord%orog(xlen, ylen), stat=ierr)
   4.326 +       if (ierr /= 0) then
   4.327 +          print *, 'clm_read_coord: Cannot allocate extra grid variables'
   4.328 +          stop
   4.329 +       end if
   4.330 +    end if
   4.331 +    coord%x = xvals
   4.332 +    coord%y = yvals
   4.333 +    coord%zsoi = zsoi_vals
   4.334 +    coord%zlak = zlak_vals
   4.335 +    if (hrflag) coord%hr = hr_vals
   4.336 +    if (read_grid_all) then
   4.337 +       coord%area = avals
   4.338 +       coord%landfrac = lvals
   4.339 +       coord%landmask = mvals
   4.340 +       coord%orog = ovals
   4.341 +    end if
   4.342 +    deallocate(xvals, yvals, zsoi_vals, zlak_vals, hr_vals)
   4.343 +    if (read_grid_all) then
   4.344 +       deallocate(avals, lvals, mvals, ovals)
   4.345 +    end if
   4.346 +    coord%case_id = trim(case_id)
   4.347 +    coord%inidat = trim(inidat)
   4.348 +    coord%surdat = trim(surdat)
   4.349 +    coord%pftdat = trim(pftdat)
   4.350 +    coord%rtmdat = trim(rtmdat)
   4.351 +    coord%hour_flag = hrflag
   4.352 +
   4.353 +    end subroutine clm_read_coord
   4.354 +    !
   4.355 +    !--------------------------------------------------------------------------
   4.356 +    !
   4.357 +    subroutine clm_copy_grid_data(varname)
   4.358 +
   4.359 +    implicit none
   4.360 +    character (len=varnamelen), intent(in) :: varname      ! variable name
   4.361 +    integer :: ierr
   4.362 +
   4.363 +    var_data%varname       = varname
   4.364 +    var_data%ndims         = 2
   4.365 +    var_data%missing_value = 1.0e+36
   4.366 +    if (varname == 'landmask') then
   4.367 +       var_data%int_type = .true.
   4.368 +       allocate(var_data%int2d(coord%xsize, coord%ysize), stat=ierr)
   4.369 +       if (ierr /= 0) then
   4.370 +         print *, 'clm_copy_grid_data: Cannot allocate 2d integer variable'
   4.371 +         stop
   4.372 +       end if
   4.373 +    else
   4.374 +       var_data%int_type = .false.
   4.375 +       allocate(var_data%var2d(coord%xsize, coord%ysize), stat=ierr)
   4.376 +       if (ierr /= 0) then
   4.377 +         print *, 'clm_copy_grid_data: Cannot allocate 2d real variable'
   4.378 +         stop
   4.379 +       end if
   4.380 +    end if
   4.381 +
   4.382 +    select case (varname)
   4.383 +       case ('area')
   4.384 +          var_data%var2d = coord%area
   4.385 +       case ('landfrac')
   4.386 +          var_data%var2d = coord%landfrac
   4.387 +       case ('landmask')
   4.388 +          var_data%int2d = coord%landmask
   4.389 +       case ('topo')
   4.390 +          var_data%var2d = coord%orog
   4.391 +       case default
   4.392 +          print *,'clm_copy_grid_data: ',varname,' is not a known grid variable'
   4.393 +          stop
   4.394 +    end select
   4.395 +
   4.396 +    end subroutine clm_copy_grid_data
   4.397 +    !
   4.398 +    !--------------------------------------------------------------------------
   4.399 +    !
   4.400 +    subroutine clm_read_data(numf, input_path, fnames, tshift, varname)
   4.401 +
   4.402 +    implicit none
   4.403 +    integer, intent(in)                    :: numf         ! number of filenames
   4.404 +    character (len=namelen), intent(in)    :: input_path   ! input path
   4.405 +    character (len=namelen), intent(in)    :: fnames(numf) ! input filenames
   4.406 +    integer, intent(in)                    :: tshift(numf) ! time shift by file
   4.407 +    character (len=varnamelen), intent(in) :: varname      ! variable name
   4.408 +    integer :: ncid
   4.409 +    integer :: tdimid, tvarid, tlen
   4.410 +    integer :: hidimid, hilen
   4.411 +    integer :: tbvarid
   4.412 +    integer :: varid, dimids(nf90_max_var_dims), dimlen
   4.413 +    integer :: zsize
   4.414 +    integer(i8) :: i, j, k, l
   4.415 +    integer(i8) :: time_size
   4.416 +    real(r4), allocatable :: tvals(:)    ! temporary time values
   4.417 +    real(r4), allocatable :: tbvals(:,:) ! temporary time bounds values
   4.418 +    real(r4), allocatable :: vals(:,:)   ! temporary data values
   4.419 +    character (len=varnamelen) :: dimname      ! dimension name
   4.420 +    integer :: ierr
   4.421 +
   4.422 +    ! Figure out the dimensionality of the variable and variable attributes
   4.423 +    ! from the first file
   4.424 +    print *, 'Opening ',trim(input_path)//'/'//trim(fnames(1)), &
   4.425 +       ' to check dimensionality of ',trim(varname)
   4.426 +    call nc_err(nf90_open(path=trim(input_path)//'/'//trim(fnames(1)), mode=nf90_nowrite, ncid=ncid))
   4.427 +    call nc_err(nf90_inq_varid(ncid, trim(varname), varid))
   4.428 +    call nc_err(nf90_inquire_variable(ncid, varid, name=var_data%varname, ndims=var_data%ndims, dimids=dimids))
   4.429 +    ! Figure out if there is a Z-dimension and/or an hour-dimension
   4.430 +    ierr = 0
   4.431 +    var_data%int_type = .false.
   4.432 +    var_data%hour_flag = .false.
   4.433 +    var_data%soil_layer_flag = .false.
   4.434 +    do i = 1, var_data%ndims
   4.435 +       call nc_err(nf90_inquire_dimension(ncid, dimids(i), name=dimname, len=dimlen))
   4.436 +       if (i == 1 .and. dimname /= xname) ierr = ierr + 1
   4.437 +       if (i == 2 .and. dimname /= yname) ierr = ierr + 1
   4.438 +       if (i > 2 .and. i < var_data%ndims) then
   4.439 +          if (dimname == hr_name) then
   4.440 +             var_data%hour_flag = .true.
   4.441 +          else if (dimname == zsoi_name) then
   4.442 +             var_data%soil_layer_flag = .true.
   4.443 +          !else if (dimname == zlak_name) then
   4.444 +          !   var_data%zdim_name = dimname
   4.445 +          else
   4.446 +             ierr = ierr + 1
   4.447 +          end if
   4.448 +       end if
   4.449 +       ! This is not a good assumption (that time is always there), so skip it
   4.450 +       !if (i == var_data%ndims .and. dimname /= tname) ierr = ierr + 1
   4.451 +       print *,'Dimension ',i,' is ',dimname
   4.452 +    end do
   4.453 +    if (ierr /= 0) then
   4.454 +       print *,'clm_read_data: Unexpected dimension combination'
   4.455 +       stop
   4.456 +    end if
   4.457 +    !
   4.458 +    call nc_err(nf90_get_att(ncid, varid, long_name_name, var_data%long_name))
   4.459 +    call nc_err(nf90_get_att(ncid, varid, missing_value_name, var_data%missing_value))
   4.460 +    call nc_err(nf90_get_att(ncid, varid, units_name, var_data%units))
   4.461 +    call nc_err(nf90_close(ncid))
   4.462 +
   4.463 +    ! Allocate space for the variable of the correct dimensionality
   4.464 +    select case (var_data%ndims)
   4.465 +      case (2)
   4.466 +        allocate(var_data%var2d(coord%xsize, coord%ysize), stat=ierr)
   4.467 +        if (ierr /= 0) then
   4.468 +          print *, 'clm_read_data: Cannot allocate 2d variable'
   4.469 +          stop
   4.470 +        end if
   4.471 +      case (3)
   4.472 +        allocate(var_data%var3d(coord%xsize, coord%ysize, coord%tsize), stat=ierr)
   4.473 +        if (ierr /= 0) then
   4.474 +          print *, 'clm_read_data: Cannot allocate 3d variable'
   4.475 +          stop
   4.476 +        end if
   4.477 +      case (4)
   4.478 +        if (var_data%hour_flag) then
   4.479 +          zsize = coord%hr_size
   4.480 +        else if (var_data%soil_layer_flag) then
   4.481 +          zsize = coord%zsoi_size
   4.482 +        !else if (var_data%zdim_name == zlak_name) then
   4.483 +        !   zsize = coord%zlak_size
   4.484 +        else
   4.485 +          print *,'clm_read_data: Unexpected fourth dimension while allocating'
   4.486 +          stop
   4.487 +        end if
   4.488 +        allocate(var_data%var4d(coord%xsize, coord%ysize, zsize, coord%tsize), stat=ierr)
   4.489 +        if (ierr /= 0) then
   4.490 +          print *, 'clm_read_data: Cannot allocate 4d variable'
   4.491 +          stop
   4.492 +        end if
   4.493 +      case default
   4.494 +        print *, 'clm_read_data: Cannot handle variables of ', var_data%ndims, ' dimensions'
   4.495 +        stop
   4.496 +    end select
   4.497 +
   4.498 +    ! Allocate space for time stamps and bounds
   4.499 +    allocate(var_data%time(coord%tsize), stat=ierr)
   4.500 +    if (ierr /= 0) then
   4.501 +      print *, 'clm_read_data: Cannot allocate time variable'
   4.502 +      stop
   4.503 +    end if
   4.504 +    allocate(var_data%time_bounds(2,coord%tsize), stat=ierr)
   4.505 +    if (ierr /= 0) then
   4.506 +      print *, 'clm_read_data: Cannot allocate time bounds variable'
   4.507 +      stop
   4.508 +    end if
   4.509 +
   4.510 +    ! Allocate temporary space for the variable level-slice/time-slice */
   4.511 +    allocate(vals(coord%xsize, coord%ysize), stat=ierr)
   4.512 +    if (ierr /= 0) then
   4.513 +      print *, 'clm_read_data: Cannot allocate variable time-slice'
   4.514 +      stop
   4.515 +    end if
   4.516 +
   4.517 +    if (var_data%ndims == 2) then
   4.518 +      ! No time axis, so just read the first instance from the first file
   4.519 +      print *, 'Opening ',trim(input_path)//'/'//trim(fnames(1))
   4.520 +      call nc_err(nf90_open(path=trim(input_path)//'/'//trim(fnames(1)), mode=nf90_nowrite, ncid=ncid))
   4.521 +      call nc_err(nf90_inq_varid(ncid, trim(varname), varid))
   4.522 +      call nc_err(nf90_get_var(ncid, varid, vals, start = (/ 1, 1 /), count = (/ coord%xsize, coord%ysize /)))
   4.523 +      var_data%var2d(:,:) = vals(:,:)
   4.524 +      call nc_err(nf90_close(ncid))
   4.525 +    else
   4.526 +      ! Otherwise, loop over all times
   4.527 +      time_size = 0
   4.528 +      ! Loop over all files, reading data
   4.529 +      do i = 1, numf
   4.530 +        print *, 'Opening ',trim(input_path)//'/'//trim(fnames(i))
   4.531 +        call nc_err(nf90_open(path=trim(input_path)//'/'//trim(fnames(i)), mode=nf90_nowrite, ncid=ncid))
   4.532 +        call nc_err(nf90_inq_dimid(ncid, tname, tdimid))
   4.533 +        call nc_err(nf90_inquire_dimension(ncid=ncid, dimid=tdimid, len=tlen))
   4.534 +        call nc_err(nf90_inq_dimid(ncid, hiname, hidimid))
   4.535 +        call nc_err(nf90_inquire_dimension(ncid=ncid, dimid=hidimid, len=hilen))
   4.536 +
   4.537 +        call nc_err(nf90_inq_varid(ncid, tname, tvarid))
   4.538 +        call nc_err(nf90_inq_varid(ncid, tbname, tbvarid))
   4.539 +        call nc_err(nf90_inq_varid(ncid, trim(varname), varid))
   4.540 +
   4.541 +        ! Allocate temporary space for the time stamps and bounds
   4.542 +        allocate(tvals(tlen), stat=ierr)
   4.543 +        if (ierr /= 0) then
   4.544 +          print *, 'clm_read_data: Cannot allocate temporary time variable'
   4.545 +          stop
   4.546 +        end if
   4.547 +        allocate(tbvals(hilen,tlen), stat=ierr)
   4.548 +        if (ierr /= 0) then
   4.549 +          print *, 'clm_read_data: Cannot allocate temporary time bounds variable'
   4.550 +          stop
   4.551 +        end if
   4.552 +
   4.553 +        ! Get the time stamps and bounds
   4.554 +        call nc_err(nf90_get_var(ncid, tvarid, tvals))
   4.555 +        call nc_err(nf90_get_var(ncid, tbvarid, tbvals))
   4.556 +
   4.557 +        do j = 1, tlen
   4.558 +          ! Get and store a slab of data
   4.559 +          select case (var_data%ndims)
   4.560 +            case (3)
   4.561 +              !print *, 'Reading slice of data'
   4.562 +              call nc_err(nf90_get_var(ncid, varid, vals, start = (/ 1, 1, j /), count = (/ coord%xsize, coord%ysize, 1 /)))
   4.563 +              var_data%var3d(:,:,time_size + j) = vals(:,:)
   4.564 +            case (4)
   4.565 +              do k = 1, zsize
   4.566 +                 call nc_err(nf90_get_var(ncid, varid, vals, start = (/ 1, 1, k, j /), count = (/ coord%xsize, coord%ysize, 1, 1 /)))
   4.567 +                 var_data%var4d(:,:,k,time_size + j) = vals(:,:)
   4.568 +              end do
   4.569 +            case default
   4.570 +              print *, 'clm_read_data: Cannot handle variables of ', var_data%ndims, ' dimensions'
   4.571 +              stop
   4.572 +          end select
   4.573 +          ! Store each time stamp and bounds, including the time offset
   4.574 +          var_data%time(time_size + j) = tvals(j) + tshift(i)
   4.575 +          var_data%time_bounds(:,time_size + j) = tbvals(:,j) + tshift(i)
   4.576 +
   4.577 +        end do
   4.578 +
   4.579 +        call nc_err(nf90_close(ncid))
   4.580 +
   4.581 +        deallocate(tvals)
   4.582 +        deallocate(tbvals)
   4.583 +
   4.584 +        time_size = time_size + tlen
   4.585 +
   4.586 +      end do
   4.587 +    end if
   4.588 +
   4.589 +    deallocate(vals)
   4.590 +
   4.591 +    end subroutine clm_read_data
   4.592 +    !
   4.593 +    !--------------------------------------------------------------------------
   4.594 +    !
   4.595 +    subroutine clm_convert_data(casa_flux_bug)
   4.596 +
   4.597 +    implicit none
   4.598 +    logical, intent(in)  :: casa_flux_bug
   4.599 +    real(r8)             :: sfactor
   4.600 +    real(r8)             :: offset
   4.601 +    integer              :: ierr
   4.602 +    logical, allocatable :: mask2d(:,:)
   4.603 +    logical, allocatable :: mask3d(:,:,:)
   4.604 +    logical, allocatable :: mask4d(:,:,:,:)
   4.605 +
   4.606 +    ! Default offset is zero
   4.607 +    offset = 0.
   4.608 +
   4.609 +    ! Default var_data structure values
   4.610 +    var_data%positive = ''
   4.611 +
   4.612 +    ! Set scale factor according to which variable is to be converted
   4.613 +    select case (var_data%varname)
   4.614 +
   4.615 +      !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
   4.616 +      ! Atmospheric forcing
   4.617 +      !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
   4.618 +      ! husf
   4.619 +      case ('QBOT')
   4.620 +        ! QBOT: kg kg-1 -> kg kg-1
   4.621 +        sfactor = 1.0
   4.622 +        var_data%units = 'kg kg-1'
   4.623 +        var_data%out_varname = 'husf'
   4.624 +      ! prra
   4.625 +      case ('RAIN')
   4.626 +        ! RAIN: mm s-1 -> kg m-2 s-1
   4.627 +        sfactor = 1.0
   4.628 +        var_data%units = 'kg m-2 s-1'
   4.629 +        var_data%out_varname = 'prra'
   4.630 +      ! prsn
   4.631 +      case ('SNOW')
   4.632 +        ! SNOW: mm s-1 -> kg m-2 s-1
   4.633 +        sfactor = 1.0
   4.634 +        var_data%units = 'kg m-2 s-1'
   4.635 +        var_data%out_varname = 'prsn'
   4.636 +
   4.637 +      !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
   4.638 +      ! Biogeochemistry
   4.639 +      !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
   4.640 +      ! agbc
   4.641 +      ! aglbc
   4.642 +      ! agnpp
   4.643 +      case ('AGNPP')
   4.644 +        ! AGNPP: g m-2 s-1 -> kg m-2 s-1
   4.645 +        sfactor = 1.0e-3
   4.646 +        var_data%units = 'kg m-2 s-1'
   4.647 +        var_data%out_varname = 'agnpp'
   4.648 +      ! ar
   4.649 +      case ('AR')
   4.650 +        ! AR: g m-2 s-1 -> kg m-2 s-1
   4.651 +        sfactor = 1.0e-3
   4.652 +        var_data%units = 'kg m-2 s-1'
   4.653 +        var_data%out_varname = 'ar'
   4.654 +      ! bco
   4.655 +      case ('BIOGENCO')
   4.656 +        ! BIOGENCO: ug m-2 h-1 -> kg m-2 s-1
   4.657 +        sfactor = 1.0e-9 * (1.0 / 3600.)
   4.658 +        var_data%units = 'kg m-2 s-1'
   4.659 +        var_data%out_varname = 'bco'
   4.660 +      ! bgbc
   4.661 +      ! bgnpp
   4.662 +      case ('BGNPP')
   4.663 +        ! BGNPP: g m-2 s-1 -> kg m-2 s-1
   4.664 +        sfactor = 1.0e-3
   4.665 +        var_data%units = 'kg m-2 s-1'
   4.666 +        var_data%out_varname = 'bgnpp'
   4.667 +      ! bipn
   4.668 +      case ('ISOPRENE')
   4.669 +        ! ISOPRENE: ug m-2 h-1 -> kg m-2 s-1
   4.670 +        sfactor = 1.0e-9 * (1.0 / 3600.)
   4.671 +        var_data%units = 'kg m-2 s-1'
   4.672 +        var_data%out_varname = 'bipn'
   4.673 +      ! bmtpn
   4.674 +      case ('MONOTERP')
   4.675 +        ! MONOTERP: ug m-2 h-1 -> kg m-2 s-1
   4.676 +        sfactor = 1.0e-9 * (1.0 / 3600.)
   4.677 +        var_data%units = 'kg m-2 s-1'
   4.678 +        var_data%out_varname = 'bmtpn'
   4.679 +      ! borvoc
   4.680 +      case ('ORVOC')
   4.681 +        ! ORVOC: ug m-2 h-1 -> kg m-2 s-1
   4.682 +        sfactor = 1.0e-9 * (1.0 / 3600.)
   4.683 +        var_data%units = 'kg m-2 s-1'
   4.684 +        var_data%out_varname = 'borvoc'
   4.685 +      ! bovoc
   4.686 +      case ('OVOC')
   4.687 +        ! OVOC: ug m-2 h-1 -> kg m-2 s-1
   4.688 +        sfactor = 1.0e-9 * (1.0 / 3600.)
   4.689 +        var_data%units = 'kg m-2 s-1'
   4.690 +        var_data%out_varname = 'bovoc'
   4.691 +      ! cwdc
   4.692 +      case ('CWDC')
   4.693 +        ! CWDC: g m-2 -> kg m-2
   4.694 +        sfactor = 1.0e-3
   4.695 +        var_data%units = 'kg m-2'
   4.696 +        var_data%out_varname = 'cwdc'
   4.697 +      ! cwdc_hr
   4.698 +      case ('CWDC_HR')
   4.699 +        ! CWDC_HR: g m-2 s-1 -> kg m-2 s-1
   4.700 +        sfactor = 1.0e-3
   4.701 +        var_data%units = 'kg m-2 s-1'
   4.702 +        var_data%out_varname = 'cwdc_hr'
   4.703 +      ! cwdc_loss
   4.704 +      case ('CWDC_LOSS')
   4.705 +        ! CWDC_LOSS: g m-2 s-1 -> kg m-2 s-1
   4.706 +        sfactor = 1.0e-3
   4.707 +        if (casa_flux_bug) then
   4.708 +           print *,'WARNING: casa_flux_bug set to true; dividing data by 1200'
   4.709 +           sfactor = sfactor * (1. / 1200.)
   4.710 +        end if
   4.711 +        var_data%units = 'kg m-2 s-1'
   4.712 +        var_data%out_varname = 'cwdc_loss'
   4.713 +      ! froot_litterc
   4.714 +      ! froot_litterc_hr
   4.715 +      ! froot_litterc_loss
   4.716 +      ! frootc
   4.717 +      case ('FROOTC')
   4.718 +        ! FROOTC: g m-2 -> kg m-2
   4.719 +        sfactor = 1.0e-3
   4.720 +        var_data%units = 'kg m-2'
   4.721 +        var_data%out_varname = 'frootc'
   4.722 +      ! frootc_alloc
   4.723 +      case ('FROOTC_ALLOC')
   4.724 +        ! FROOTC_ALLOC: g m-2 s-1 -> kg m-2 s-1
   4.725 +        sfactor = 1.0e-3
   4.726 +        if (casa_flux_bug) then
   4.727 +           print *,'WARNING: casa_flux_bug set to true; dividing data by 1200'
   4.728 +           sfactor = sfactor * (1. / 1200.)
   4.729 +        end if
   4.730 +        var_data%units = 'kg m-2 s-1'
   4.731 +        var_data%out_varname = 'frootc_alloc'
   4.732 +      ! frootc_loss
   4.733 +      case ('FROOTC_LOSS')
   4.734 +        ! FROOTC_LOSS: g m-2 s-1 -> kg m-2 s-1
   4.735 +        sfactor = 1.0e-3
   4.736 +        if (casa_flux_bug) then
   4.737 +           print *,'WARNING: casa_flux_bug set to true; dividing data by 1200'
   4.738 +           sfactor = sfactor * (1. / 1200.)
   4.739 +        end if
   4.740 +        var_data%units = 'kg m-2 s-1'
   4.741 +        var_data%out_varname = 'frootc_loss'
   4.742 +      ! gpp
   4.743 +      case ('GPP')
   4.744 +        ! GPP: g m-2 s-1 -> kg m-2 s-1
   4.745 +        sfactor = 1.0e-3
   4.746 +        var_data%units = 'kg m-2 s-1'
   4.747 +        var_data%out_varname = 'gpp'
   4.748 +      ! gnmin
   4.749 +      case ('GROSS_NMIN')
   4.750 +        ! GROSS_NMIN: g m-2 s-1 -> kg m-2 s-1
   4.751 +        sfactor = 1.0e-3
   4.752 +        var_data%units = 'kg m-2 s-1'
   4.753 +        var_data%out_varname = 'gnmin'
   4.754 +      ! hr
   4.755 +      case ('HR')
   4.756 +        ! HR: g m-2 s-1 -> kg m-2 s-1
   4.757 +        sfactor = 1.0e-3
   4.758 +        var_data%units = 'kg m-2 s-1'
   4.759 +        var_data%out_varname = 'hr'
   4.760 +      ! leaf_litterc
   4.761 +      ! leaf_litterc_hr
   4.762 +      ! leaf_litterc_loss
   4.763 +      ! leafc
   4.764 +      case ('LEAFC')
   4.765 +        ! LEAFC: g m-2 -> kg m-2
   4.766 +        sfactor = 1.0e-3
   4.767 +        var_data%units = 'kg m-2'
   4.768 +        var_data%out_varname = 'leafc'
   4.769 +      ! leafc_alloc
   4.770 +      case ('LEAFC_ALLOC')
   4.771 +        ! LEAFC_ALLOC: g m-2 s-1 -> kg m-2 s-1
   4.772 +        sfactor = 1.0e-3
   4.773 +        if (casa_flux_bug) then
   4.774 +           print *,'WARNING: casa_flux_bug set to true; dividing data by 1200'
   4.775 +           sfactor = sfactor * (1. / 1200.)
   4.776 +        end if
   4.777 +        var_data%units = 'kg m-2 s-1'
   4.778 +        var_data%out_varname = 'leafc_alloc'
   4.779 +      ! leafc_loss
   4.780 +      case ('LEAFC_LOSS')
   4.781 +        ! LEAFC_LOSS: g m-2 s-1 -> kg m-2 s-1
   4.782 +        sfactor = 1.0e-3
   4.783 +        if (casa_flux_bug) then
   4.784 +           print *,'WARNING: casa_flux_bug set to true; dividing data by 1200'
   4.785 +           sfactor = sfactor * (1. / 1200.)
   4.786 +        end if
   4.787 +        var_data%units = 'kg m-2 s-1'
   4.788 +        var_data%out_varname = 'leafc_loss'
   4.789 +      ! litterc
   4.790 +      case ('LITTERC')
   4.791 +        ! LITTERC: g m-2 -> kg m-2
   4.792 +        sfactor = 1.0e-3
   4.793 +        var_data%units = 'kg m-2'
   4.794 +        var_data%out_varname = 'litterc'
   4.795 +      ! litterc_hr
   4.796 +      case ('LITTERC_HR')
   4.797 +        ! LITTERC_HR: g m-2 s-1 -> kg m-2 s-1
   4.798 +        sfactor = 1.0e-3
   4.799 +        var_data%units = 'kg m-2 s-1'
   4.800 +        var_data%out_varname = 'litterc_hr'
   4.801 +      ! litterc_loss
   4.802 +      case ('LITTERC_LOSS')
   4.803 +        ! LITTERC_LOSS: g m-2 s-1 -> kg m-2 s-1
   4.804 +        sfactor = 1.0e-3
   4.805 +        if (casa_flux_bug) then
   4.806 +           print *,'WARNING: casa_flux_bug set to true; dividing data by 1200'
   4.807 +           sfactor = sfactor * (1. / 1200.)
   4.808 +        end if
   4.809 +        var_data%units = 'kg m-2 s-1'
   4.810 +        var_data%out_varname = 'litterc_loss'
   4.811 +      ! nee
   4.812 +      case ('NEE')
   4.813 +        ! NEE: g m-2 s-1 -> kg m-2 s-1
   4.814 +        sfactor = 1.0e-3
   4.815 +        var_data%units = 'kg m-2 s-1'
   4.816 +        var_data%out_varname = 'nee'
   4.817 +      ! nep
   4.818 +      case ('NEP')
   4.819 +        ! NEP: g m-2 s-1 -> kg m-2 s-1
   4.820 +        sfactor = 1.0e-3
   4.821 +        var_data%units = 'kg m-2 s-1'
   4.822 +        var_data%out_varname = 'nep'
   4.823 +      ! nnmin
   4.824 +      case ('NET_NMIN')
   4.825 +        ! NEP: g m-2 s-1 -> kg m-2 s-1
   4.826 +        sfactor = 1.0e-3
   4.827 +        var_data%units = 'kg m-2 s-1'
   4.828 +        var_data%out_varname = 'nnmin'
   4.829 +      ! npp
   4.830 +      case ('NPP')
   4.831 +        ! NPP: g m-2 s-1 -> kg m-2 s-1
   4.832 +        sfactor = 1.0e-3
   4.833 +        var_data%units = 'kg m-2 s-1'
   4.834 +        var_data%out_varname = 'npp'
   4.835 +      ! soilc
   4.836 +      case ('SOILC')
   4.837 +        ! SOILC: g m-2 -> kg m-2
   4.838 +        sfactor = 1.0e-3
   4.839 +        var_data%units = 'kg m-2'
   4.840 +        var_data%out_varname = 'soilc'
   4.841 +      ! soilc_hr
   4.842 +      case ('SOILC_HR')
   4.843 +        ! SOILC_HR: g m-2 s-1 -> kg m-2 s-1
   4.844 +        sfactor = 1.0e-3
   4.845 +        var_data%units = 'kg m-2 s-1'
   4.846 +        var_data%out_varname = 'soilc_hr'
   4.847 +      ! soilc_loss
   4.848 +      case ('SOILC_LOSS')
   4.849 +        ! SOILC_LOSS: g m-2 s-1 -> kg m-2 s-1
   4.850 +        sfactor = 1.0e-3
   4.851 +        if (casa_flux_bug) then
   4.852 +           print *,'WARNING: casa_flux_bug set to true; dividing data by 1200'
   4.853 +           sfactor = sfactor * (1. / 1200.)
   4.854 +        end if
   4.855 +        var_data%units = 'kg m-2 s-1'
   4.856 +        var_data%out_varname = 'soilc_loss'
   4.857 +      ! tbvoc
   4.858 +      case ('VOCFLXT')
   4.859 +        ! VOCFLXT: ug m-2 h-1 -> kg m-2 s-1
   4.860 +        sfactor = 1.0e-9 * (1.0 / 3600.)
   4.861 +        var_data%units = 'kg m-2 s-1'
   4.862 +        var_data%out_varname = 'tbvoc'
   4.863 +      ! woodc
   4.864 +      case ('WOODC')
   4.865 +        ! WOODC: g m-2 -> kg m-2
   4.866 +        sfactor = 1.0e-3
   4.867 +        var_data%units = 'kg m-2'
   4.868 +        var_data%out_varname = 'woodc'
   4.869 +      ! woodc_alloc
   4.870 +      case ('WOODC_ALLOC')
   4.871 +        ! WOODC_ALLOC: g m-2 s-1 -> kg m-2 s-1
   4.872 +        sfactor = 1.0e-3
   4.873 +        if (casa_flux_bug) then
   4.874 +           print *,'WARNING: casa_flux_bug set to true; dividing data by 1200'
   4.875 +           sfactor = sfactor * (1. / 1200.)
   4.876 +        end if
   4.877 +        var_data%units = 'kg m-2 s-1'
   4.878 +        var_data%out_varname = 'woodc_alloc'
   4.879 +      ! woodc_loss
   4.880 +      case ('WOODC_LOSS')
   4.881 +        ! WOODC_LOSS: g m-2 s-1 -> kg m-2 s-1
   4.882 +        sfactor = 1.0e-3
   4.883 +        if (casa_flux_bug) then
   4.884 +           print *,'WARNING: casa_flux_bug set to true; dividing data by 1200'
   4.885 +           sfactor = sfactor * (1. / 1200.)
   4.886 +        end if
   4.887 +        var_data%units = 'kg m-2 s-1'
   4.888 +        var_data%out_varname = 'woodc_loss'
   4.889 +
   4.890 +      !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
   4.891 +      ! Energy
   4.892 +      !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
   4.893 +      ! hfg
   4.894 +      case ('FGR')
   4.895 +        ! FGR: W m-2 -> W m-2
   4.896 +        sfactor = 1.0
   4.897 +        var_data%units = 'W m-2'
   4.898 +        var_data%positive = 'down'
   4.899 +        var_data%out_varname = 'hfg'
   4.900 +      ! hfls
   4.901 +      case ('LATENT')
   4.902 +        ! LATENT: W m-2 -> W m-2
   4.903 +        sfactor = 1.0
   4.904 +        var_data%units = 'W m-2'
   4.905 +        var_data%positive = 'up'
   4.906 +        var_data%out_varname = 'hfls'
   4.907 +      ! hfss
   4.908 +      case ('FSH')
   4.909 +        ! FSH: W m-2 -> W m-2
   4.910 +        sfactor = 1.0
   4.911 +        var_data%units = 'W m-2'
   4.912 +        var_data%positive = 'up'
   4.913 +        var_data%out_varname = 'hfss'
   4.914 +      ! hfssg
   4.915 +      case ('FSH_G')
   4.916 +        ! FSH_G: W m-2 -> W m-2
   4.917 +        sfactor = 1.0
   4.918 +        var_data%units = 'W m-2'
   4.919 +        var_data%positive = 'up'
   4.920 +        var_data%out_varname = 'hfssg'
   4.921 +      ! hfssv
   4.922 +      case ('FSH_V')
   4.923 +        ! FSH_V: W m-2 -> W m-2
   4.924 +        sfactor = 1.0
   4.925 +        var_data%units = 'W m-2'
   4.926 +        var_data%positive = 'up'
   4.927 +        var_data%out_varname = 'hfssv'
   4.928 +
   4.929 +      !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
   4.930 +      ! Grid
   4.931 +      !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
   4.932 +      ! gca
   4.933 +      case ('area')
   4.934 +        ! area: km2 -> m2
   4.935 +        sfactor = 1.0e+3
   4.936 +        var_data%units = 'm2'
   4.937 +        var_data%out_varname = 'gca'
   4.938 +      ! lbm
   4.939 +      case ('landmask')
   4.940 +        ! landmask: 1 -> 1
   4.941 +        var_data%units = '1'
   4.942 +        var_data%out_varname = 'lbm'
   4.943 +        ! Do not convert integer landmask, just return
   4.944 +        return
   4.945 +      ! lcf
   4.946 +      ! lcn
   4.947 +      ! orog
   4.948 +      case ('topo')
   4.949 +        ! topo: m -> m
   4.950 +        sfactor = 1.0
   4.951 +        var_data%units = 'm'
   4.952 +        var_data%out_varname = 'orog'
   4.953 +      ! sftlf
   4.954 +      case ('landfrac')
   4.955 +        ! landfrac: 1 -> 1
   4.956 +        sfactor = 1.0
   4.957 +        var_data%units = '1'
   4.958 +        var_data%out_varname = 'sftlf'
   4.959 +
   4.960 +      !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
   4.961 +      ! Humidity
   4.962 +      !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
   4.963 +      ! hur2m
   4.964 +      case ('RH2M')
   4.965 +        ! RH2M: % -> %
   4.966 +        sfactor = 1.0
   4.967 +        var_data%units = '%'
   4.968 +        var_data%out_varname = 'hur2m'
   4.969 +      ! hus2m
   4.970 +      case ('Q2M')
   4.971 +        ! Q2M: kg kg-1 -> kg kg-1
   4.972 +        sfactor = 1.0
   4.973 +        var_data%units = 'kg kg-1'
   4.974 +        var_data%out_varname = 'hus2m'
   4.975 +
   4.976 +      !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
   4.977 +      ! Hydrology
   4.978 +      !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
   4.979 +      ! btran
   4.980 +      case ('BTRAN')
   4.981 +        ! BTRAN: 1 -> 1
   4.982 +        sfactor = 1.0
   4.983 +        var_data%units = '1'
   4.984 +        var_data%out_varname = 'btran'
   4.985 +      ! et
   4.986 +      case ('ET')
   4.987 +        ! ET: m s-1 -> kg m-2 s-1
   4.988 +        sfactor = 1.0e+3
   4.989 +        var_data%units = 'kg m-2 s-1'
   4.990 +        var_data%out_varname = 'et'
   4.991 +      ! evspsblsoi
   4.992 +      case ('QSOIL')
   4.993 +        ! QSOIL: mm s-1 -> kg m-2 s-1
   4.994 +        sfactor = 1.0
   4.995 +        var_data%units = 'kg m-2 s-1'
   4.996 +        var_data%out_varname = 'evspsblsoi'
   4.997 +      ! evspsblveg
   4.998 +      case ('QVEGE')
   4.999 +        ! QVEGE: mm s-1 -> kg m-2 s-1
  4.1000 +        sfactor = 1.0
  4.1001 +        var_data%units = 'kg m-2 s-1'
  4.1002 +        var_data%out_varname = 'evspsblveg'
  4.1003 +      ! mrfsl (multi-level)
  4.1004 +      case ('SOILICE')
  4.1005 +        ! SOILICE: kg m-2 -> kg m-2
  4.1006 +        sfactor = 1.0
  4.1007 +        var_data%units = 'kg m-2'
  4.1008 +        var_data%out_varname = 'mrfsl'
  4.1009 +      ! mrfso
  4.1010 +      case ('TOTAL_SOILICE')
  4.1011 +        ! TOTAL_SOILICE: kg m-2 -> kg m-2
  4.1012 +        sfactor = 1.0
  4.1013 +        var_data%units = 'kg m-2'
  4.1014 +        var_data%out_varname = 'mrfso'
  4.1015 +      ! mrlsl (multi-level)
  4.1016 +      case ('SOILLIQ')
  4.1017 +        ! SOILLIQ: kg m-2 -> kg m-2
  4.1018 +        sfactor = 1.0
  4.1019 +        var_data%units = 'kg m-2'
  4.1020 +        var_data%out_varname = 'mrlsl'
  4.1021 +      ! mrlso
  4.1022 +      case ('TOTAL_SOILLIQ')
  4.1023 +        ! TOTAL_SOILLIQ: kg m-2 -> kg m-2
  4.1024 +        sfactor = 1.0
  4.1025 +        var_data%units = 'kg m-2'
  4.1026 +        var_data%out_varname = 'mrlso'
  4.1027 +      ! mrros
  4.1028 +      case ('QOVER')
  4.1029 +        ! QOVER: mm s-1 -> kg m-2 s-1
  4.1030 +        sfactor = 1.0
  4.1031 +        var_data%units = 'kg m-2 s-1'
  4.1032 +        var_data%out_varname = 'mrros'
  4.1033 +      ! mrross
  4.1034 +      case ('QDRAI')
  4.1035 +        ! QDRAI: mm s-1 -> kg m-2 s-1
  4.1036 +        sfactor = 1.0
  4.1037 +        var_data%units = 'kg m-2 s-1'
  4.1038 +        var_data%out_varname = 'mrross'
  4.1039 +      ! prveg
  4.1040 +      case ('QINTR')
  4.1041 +        ! QINTR: mm s-1 -> kg m-2 s-1
  4.1042 +        sfactor = 1.0
  4.1043 +        var_data%units = 'kg m-2 s-1'
  4.1044 +        var_data%out_varname = 'prveg'
  4.1045 +      ! snd
  4.1046 +      case ('H2OSNO')
  4.1047 +        ! H2OSNO: mm -> m
  4.1048 +        sfactor = 1.0e-3
  4.1049 +        var_data%units = 'm'
  4.1050 +        var_data%out_varname = 'snd'
  4.1051 +      ! tran
  4.1052 +      case ('QVEGT')
  4.1053 +        ! QVEGT: mm s-1 -> kg m-2 s-1
  4.1054 +        sfactor = 1.0
  4.1055 +        var_data%units = 'kg m-2 s-1'
  4.1056 +        var_data%out_varname = 'tran'
  4.1057 +      ! vfwsl (multi-level)
  4.1058 +      case ('H2OSOI')
  4.1059 +        ! H2OSOI: mm3 mm-3 -> m3 m-3
  4.1060 +        sfactor = 1.0
  4.1061 +        var_data%units = 'm3 m-3'
  4.1062 +        var_data%out_varname = 'vfwsl'
  4.1063 +      ! wpsl (multi-level)
  4.1064 +      case ('SOILPSI')
  4.1065 +        ! SOILPSI: Pa -> Pa
  4.1066 +        sfactor = 1.0
  4.1067 +        var_data%units = 'Pa'
  4.1068 +        var_data%out_varname = 'wpsl'
  4.1069 +
  4.1070 +      !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  4.1071 +      ! Radiation
  4.1072 +      !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  4.1073 +      ! alsas
  4.1074 +      case ('ALL_SKY_ALBEDO')
  4.1075 +        ! ALL_SKY_ALBEDO: 1 -> 1
  4.1076 +        sfactor = 1.0
  4.1077 +        var_data%units = '1'
  4.1078 +        var_data%out_varname = 'alsas'
  4.1079 +      ! alsbs
  4.1080 +      case ('BLACK_SKY_ALBEDO')
  4.1081 +        ! BLACK_SKY_ALBEDO: 1 -> 1
  4.1082 +        sfactor = 1.0
  4.1083 +        var_data%units = '1'
  4.1084 +        var_data%out_varname = 'alsbs'
  4.1085 +      ! laisha
  4.1086 +      case ('LAISHA')
  4.1087 +        ! LAISHA: m2 m-2 -> m2 m-2
  4.1088 +        sfactor = 1.0
  4.1089 +        var_data%units = 'm2 m-2'
  4.1090 +        var_data%out_varname = 'laisha'
  4.1091 +      ! laisun
  4.1092 +      case ('LAISUN')
  4.1093 +        ! LAISUN: m2 m-2 -> m2 m-2
  4.1094 +        sfactor = 1.0
  4.1095 +        var_data%units = 'm2 m-2'
  4.1096 +        var_data%out_varname = 'laisun'
  4.1097 +      ! rlds
  4.1098 +      case ('FLDS')
  4.1099 +        ! FLDS: W m-2 -> W m-2
  4.1100 +        sfactor = 1.0
  4.1101 +        var_data%units = 'W m-2'
  4.1102 +        var_data%positive = 'down'
  4.1103 +        var_data%out_varname = 'rlds'
  4.1104 +      ! rls
  4.1105 +      case ('FIRA')
  4.1106 +        ! FIRA: W m-2 -> W m-2
  4.1107 +        sfactor = 1.0
  4.1108 +        var_data%units = 'W m-2'
  4.1109 +        var_data%positive = 'down'
  4.1110 +        var_data%out_varname = 'rls'
  4.1111 +      ! rlus
  4.1112 +      case ('FIRE')
  4.1113 +        ! FIRE: W m-2 -> W m-2
  4.1114 +        sfactor = 1.0
  4.1115 +        var_data%units = 'W m-2'
  4.1116 +        var_data%positive = 'up'
  4.1117 +        var_data%out_varname = 'rlus'
  4.1118 +      ! rs
  4.1119 +      case ('NETRAD')
  4.1120 +        ! NETRAD: W m-2 -> W m-2
  4.1121 +        sfactor = 1.0
  4.1122 +        var_data%units = 'W m-2'
  4.1123 +        var_data%positive = 'down'
  4.1124 +        var_data%out_varname = 'rs'
  4.1125 +      ! rsas
  4.1126 +      case ('FSA')
  4.1127 +        ! FSA: W m-2 -> W m-2
  4.1128 +        sfactor = 1.0
  4.1129 +        var_data%units = 'W m-2'
  4.1130 +        var_data%positive = 'down'
  4.1131 +        var_data%out_varname = 'rsas'
  4.1132 +      ! rsasg
  4.1133 +      case ('SABG')
  4.1134 +        ! SABG: W m-2 -> W m-2
  4.1135 +        sfactor = 1.0
  4.1136 +        var_data%units = 'W m-2'
  4.1137 +        var_data%positive = 'down'
  4.1138 +        var_data%out_varname = 'rsasg'
  4.1139 +      ! rsasv
  4.1140 +      case ('SABV')
  4.1141 +        ! SABV: W m-2 -> W m-2
  4.1142 +        sfactor = 1.0
  4.1143 +        var_data%units = 'W m-2'
  4.1144 +        var_data%positive = 'down'
  4.1145 +        var_data%out_varname = 'rsasv'
  4.1146 +      ! rsds
  4.1147 +      case ('FSDS')
  4.1148 +        ! FSDS: W m-2 -> W m-2
  4.1149 +        sfactor = 1.0
  4.1150 +        var_data%units = 'W m-2'
  4.1151 +        var_data%positive = 'down'
  4.1152 +        var_data%out_varname = 'rsds'
  4.1153 +      ! rsus
  4.1154 +      case ('FSR')
  4.1155 +        ! FSR: W m-2 -> W m-2
  4.1156 +        sfactor = 1.0
  4.1157 +        var_data%units = 'W m-2'
  4.1158 +        var_data%positive = 'up'
  4.1159 +        var_data%out_varname = 'rsus'
  4.1160 +      ! snc
  4.1161 +      case ('FSNO')
  4.1162 +        ! FSNO: 1 -> 1
  4.1163 +        sfactor = 1.0
  4.1164 +        var_data%units = '1'
  4.1165 +        var_data%out_varname = 'snc'
  4.1166 +
  4.1167 +      !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  4.1168 +      ! Temperature
  4.1169 +      !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  4.1170 +      ! degday
  4.1171 +      case ('DEGDAY')
  4.1172 +        ! DEGDAY: C -> K
  4.1173 +        sfactor = 1.0
  4.1174 +        offset  = 273.15
  4.1175 +        var_data%units = 'K'
  4.1176 +        var_data%out_varname = 'degday'
  4.1177 +      ! ta2m
  4.1178 +      case ('TSA')
  4.1179 +        ! TSA: K -> K
  4.1180 +        sfactor = 1.0
  4.1181 +        var_data%units = 'K'
  4.1182 +        var_data%out_varname = 'ta2m'
  4.1183 +      ! ta2mdmax
  4.1184 +      case ('TREFMXAV')
  4.1185 +        ! TREFMXAV: K -> K
  4.1186 +        sfactor = 1.0
  4.1187 +        var_data%units = 'K'
  4.1188 +        var_data%out_varname = 'ta2mdmax'
  4.1189 +      ! ta2mdmin
  4.1190 +      case ('TREFMNAV')
  4.1191 +        ! TREFMNAV: K -> K
  4.1192 +        sfactor = 1.0
  4.1193 +        var_data%units = 'K'
  4.1194 +        var_data%out_varname = 'ta2mdmin'
  4.1195 +      ! tsl (multi-level)
  4.1196 +      case ('TSOI')
  4.1197 +        ! TSOI: K -> K
  4.1198 +        sfactor = 1.0
  4.1199 +        var_data%units = 'K'
  4.1200 +        var_data%out_varname = 'tsl'
  4.1201 +      ! tv
  4.1202 +      case ('TV')
  4.1203 +        ! TV: K -> K
  4.1204 +        sfactor = 1.0
  4.1205 +        var_data%units = 'K'
  4.1206 +        var_data%out_varname = 'tv'
  4.1207 +
  4.1208 +      !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  4.1209 +      ! Vegetation phenology
  4.1210 +      !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  4.1211 +      ! laiexp
  4.1212 +      case ('ELAI')
  4.1213 +        ! ELAI: m2 m-2 -> m2 m-2
  4.1214 +        sfactor = 1.0
  4.1215 +        var_data%units = 'm2 m-2'
  4.1216 +        var_data%out_varname = 'laiexp'
  4.1217 +      ! laitot
  4.1218 +      case ('TLAI')
  4.1219 +        ! TLAI: m2 m-2 -> m2 m-2
  4.1220 +        sfactor = 1.0
  4.1221 +        var_data%units = 'm2 m-2'
  4.1222 +        var_data%out_varname = 'laitot'
  4.1223 +      ! saiexp
  4.1224 +      case ('ESAI')
  4.1225 +        ! ESAI: m2 m-2 -> m2 m-2
  4.1226 +        sfactor = 1.0
  4.1227 +        var_data%units = 'm2 m-2'
  4.1228 +        var_data%out_varname = 'saiexp'
  4.1229 +      ! saitot
  4.1230 +      case ('TSAI')
  4.1231 +        ! TSAI: m2 m-2 -> m2 m-2
  4.1232 +        sfactor = 1.0
  4.1233 +        var_data%units = 'm2 m-2'
  4.1234 +        var_data%out_varname = 'saitot'
  4.1235 +
  4.1236 +      !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  4.1237 +      ! Vegetation physiology
  4.1238 +      !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  4.1239 +      ! psn
  4.1240 +      case ('FPSN')
  4.1241 +        ! FPSN: umol m-2 s-1 -> kg m-2 s-1
  4.1242 +        sfactor = 12.0 * 1.0e-6 * 1.0e-3
  4.1243 +        var_data%units = 'kg m-2 s-1'
  4.1244 +        var_data%out_varname = 'psn'
  4.1245 +      ! rssha
  4.1246 +      case ('RSSHA')
  4.1247 +        ! RSSHA: s m-1 -> s m-1
  4.1248 +        sfactor = 1.0
  4.1249 +        var_data%units = 's m-1'
  4.1250 +        var_data%out_varname = 'rssha'
  4.1251 +      ! rssun
  4.1252 +      case ('RSSUN')
  4.1253 +        ! RSSUN: s m-1 -> s m-1
  4.1254 +        sfactor = 1.0
  4.1255 +        var_data%units = 's m-1'
  4.1256 +        var_data%out_varname = 'rssun'
  4.1257 +
  4.1258 +      case default
  4.1259 +        print *, 'clm_convert_data: Unknown variable name ', var_data%varname
  4.1260 +        stop
  4.1261 +    end select
  4.1262 +
  4.1263 +    ! Convert to the desired units using the offset and scale factor (sfactor)
  4.1264 +    select case (var_data%ndims)
  4.1265 +      case (2)
  4.1266 +        allocate(mask2d(coord%xsize, coord%ysize), stat=ierr)
  4.1267 +        if (ierr /= 0) then
  4.1268 +          print *, 'clm_convert_data: Cannot allocate 2d mask'
  4.1269 +          stop
  4.1270 +        end if
  4.1271 +        mask2d = .false.
  4.1272 +        if (var_data%int_type) then
  4.1273 +          where (var_data%int2d /= var_data%missing_value)
  4.1274 +            var_data%int2d = int(var_data%int2d * sfactor + offset)
  4.1275 +            mask2d = .true.
  4.1276 +          end where
  4.1277 +          print *, var_data%out_varname, &
  4.1278 +            ' min:', minval(var_data%int2d, mask=mask2d), &
  4.1279 +            ' max:', maxval(var_data%int2d, mask=mask2d)
  4.1280 +        else
  4.1281 +          where (var_data%var2d /= var_data%missing_value)
  4.1282 +            var_data%var2d = var_data%var2d * sfactor + offset
  4.1283 +            mask2d = .true.
  4.1284 +          end where
  4.1285 +          print *, var_data%out_varname, &
  4.1286 +            ' min:', minval(var_data%var2d, mask=mask2d), &
  4.1287 +            ' max:', maxval(var_data%var2d, mask=mask2d)
  4.1288 +        end if
  4.1289 +        if (allocated(mask2d)) deallocate(mask2d)
  4.1290 +      case (3)
  4.1291 +        allocate(mask3d(coord%xsize, coord%ysize, coord%tsize), stat=ierr)
  4.1292 +        if (ierr /= 0) then
  4.1293 +          print *, 'clm_convert_data: Cannot allocate 3d mask'
  4.1294 +          stop
  4.1295 +        end if
  4.1296 +        mask3d = .false.
  4.1297 +        where (var_data%var3d /= var_data%missing_value)
  4.1298 +           var_data%var3d = (var_data%var3d + offset) * sfactor
  4.1299 +           mask3d = .true.
  4.1300 +        end where
  4.1301 +        print *, var_data%out_varname, &
  4.1302 +          ' min:', minval(var_data%var3d, mask=mask3d), &
  4.1303 +          ' max:', maxval(var_data%var3d, mask=mask3d)
  4.1304 +        if (allocated(mask3d)) deallocate(mask3d)
  4.1305 +      case (4)
  4.1306 +        if (var_data%soil_layer_flag) then
  4.1307 +          allocate(mask4d(coord%xsize, coord%ysize, coord%zsoi_size, coord%tsize), stat=ierr)
  4.1308 +          if (ierr /= 0) then
  4.1309 +            print *, 'clm_convert_data: Cannot allocate 4d mask'
  4.1310 +            stop
  4.1311 +          end if
  4.1312 +          mask4d = .false.
  4.1313 +          where (var_data%var4d /= var_data%missing_value)
  4.1314 +             var_data%var4d = (var_data%var4d + offset) * sfactor
  4.1315 +             mask4d = .true.
  4.1316 +          end where
  4.1317 +          print *, var_data%out_varname, &
  4.1318 +            ' min:', minval(var_data%var4d, mask=mask4d), &
  4.1319 +            ' max:', maxval(var_data%var4d, mask=mask4d)
  4.1320 +          if (allocated(mask4d)) deallocate(mask4d)
  4.1321 +        else
  4.1322 +          print *,'clm_convert_data: Unknown data dimension'
  4.1323 +          stop
  4.1324 +        end if
  4.1325 +      case default
  4.1326 +        print *,'clm_convert_data: Dimension count not supported'
  4.1327 +        stop
  4.1328 +    end select
  4.1329 +
  4.1330 +    end subroutine clm_convert_data
  4.1331 +    !
  4.1332 +    !--------------------------------------------------------------------------
  4.1333 +    !
  4.1334 +    subroutine clm_free_data
  4.1335 +
  4.1336 +    implicit none
  4.1337 +
  4.1338 +    var_data%varname = ''
  4.1339 +    var_data%ndims = 0
  4.1340 +    if (allocated(var_data%int2d))        deallocate(var_data%int2d)
  4.1341 +    if (allocated(var_data%var2d))        deallocate(var_data%var2d)
  4.1342 +    if (allocated(var_data%var3d))        deallocate(var_data%var3d)
  4.1343 +    if (allocated(var_data%var4d))        deallocate(var_data%var4d)
  4.1344 +    if (allocated(var_data%time))         deallocate(var_data%time)
  4.1345 +    if (allocated(var_data%time_bounds))  deallocate(var_data%time_bounds)
  4.1346 +    var_data%int_type        = .false.
  4.1347 +    var_data%soil_layer_flag = .false.
  4.1348 +    var_data%hour_flag       = .false.
  4.1349 +    var_data%long_name       = ''
  4.1350 +    var_data%missing_value   = 0.
  4.1351 +    var_data%units           = ''
  4.1352 +    var_data%positive        = ''
  4.1353 +    var_data%out_varname     = ''
  4.1354 +
  4.1355 +    end subroutine clm_free_data
  4.1356 +    !
  4.1357 +    !--------------------------------------------------------------------------
  4.1358 +    !
  4.1359 +    subroutine nc_err(status)
  4.1360 +
  4.1361 +    implicit none
  4.1362 +    integer :: status ! status code
  4.1363 +
  4.1364 +    if (status /= nf90_noerr) then
  4.1365 +       print *, nf90_strerror(status)
  4.1366 +       stop 'Program stopped after encountering netCDF error.'
  4.1367 +    end if
  4.1368 +
  4.1369 +    end subroutine nc_err
  4.1370 +    !
  4.1371 +    !--------------------------------------------------------------------------
  4.1372 +    !
  4.1373 +
  4.1374 +end module clm_mod
     5.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     5.2 +++ b/do_c-lamp_rewrite.bash	Sun Sep 21 21:59:01 2008 -0400
     5.3 @@ -0,0 +1,25 @@
     5.4 +#!/bin/bash
     5.5 +#
     5.6 +# Rewrites C-LAMP Experiment 1 model output for distribution on the Earth
     5.7 +# System Grid (ESG).
     5.8 +#
     5.9 +ESGROOT=/u3/forrest/ESG/c-lamp
    5.10 +#
    5.11 +echo "`date` -- Rewriting C-LAMP model output for distribution on ESG"
    5.12 +for model in clm3_casa clm3_cn; do
    5.13 +   for exp in exp1_2 exp1_3 exp1_4 exp1_6 exp1_7; do
    5.14 +      for run in run1; do
    5.15 +         for stat in monthly_mean; do
    5.16 +            rm -rf ${ESGROOT}/${model}/${exp}/${run}/${stat}
    5.17 +            mkdir -p ${ESGROOT}/${model}/${exp}/${run}/${stat}
    5.18 +            chmod 755 ${ESGROOT}/${model}/${exp}/${run}/${stat}
    5.19 +            cp -p namelist.${model}.${exp}.${run}.${stat} namelist
    5.20 +            echo "`date` -- Rewriting output for ${model}.${exp}.${run}.${stat}"
    5.21 +            time ./c-lamp_rewrite >& c-lamp_rewrite.${model}.${exp}.${run}.${stat}.log
    5.22 +            echo "`date` -- Computing SHA1 checksums for ${model}.${exp}.${run}.${stat}"
    5.23 +            (cd ${ESGROOT}/${model}/${exp}/${run}/${stat} ; time sha1sum *.nc > SHA1SUM; chmod 644 *)
    5.24 +         done
    5.25 +      done
    5.26 +   done
    5.27 +done
    5.28 +echo "`date` -- Done"
     6.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     6.2 +++ b/kind_mod.f90	Sun Sep 21 21:59:01 2008 -0400
     6.3 @@ -0,0 +1,13 @@
     6.4 +  module kind_mod
     6.5 +
     6.6 +    implicit none
     6.7 +    integer, parameter :: r8 = selected_real_kind(12) ! 8 byte real
     6.8 +    integer, parameter :: r4 = selected_real_kind( 6) ! 4 byte real
     6.9 +    integer, parameter :: nr = kind(1.0)              ! native real
    6.10 +    integer, parameter :: i8 = selected_int_kind(13)  ! 8 byte integer
    6.11 +    integer, parameter :: i4 = selected_int_kind( 6)  ! 4 byte integer
    6.12 +    integer, parameter :: ni = kind(1)                ! native integer
    6.13 +
    6.14 +    save
    6.15 +
    6.16 +  end module kind_mod
     7.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     7.2 +++ b/namelist.clm3_casa.exp1_2.run1.monthly_mean	Sun Sep 21 21:59:01 2008 -0400
     7.3 @@ -0,0 +1,12 @@
     7.4 + &inparm
     7.5 + output_path = '/u3/forrest/ESG/c-lamp/clm3_casa/exp1_2/run1/monthly_mean/'
     7.6 + input_table = 'C-LAMP_L1_table'
     7.7 + source      = "Community Climate System Model: CCSM3.1 (ccsm3_1_beta40); Community Land Model: CLM3 (bgcmip05_clm3_expa_72); CASA' biogeochemistry"
     7.8 + experiment  = 'Experiment 1.2 (Control)'
     7.9 + realization = 1
    7.10 + input_path  = '/u3/forrest/C-LAMP/Exp1.2/clm3-casa'
    7.11 + fnames      = 'i01.06casa.clm2.h0.1798-1799.nc','i01.06casa.clm2.h0.1800-1809.nc','i01.06casa.clm2.h0.1810-1819.nc','i01.06casa.clm2.h0.1820-1829.nc','i01.06casa.clm2.h0.1830-1839.nc','i01.06casa.clm2.h0.1840-1849.nc','i01.06casa.clm2.h0.1850-1859.nc','i01.06casa.clm2.h0.1860-1869.nc','i01.06casa.clm2.h0.1870-1879.nc','i01.06casa.clm2.h0.1880-1889.nc','i01.06casa.clm2.h0.1890-1899.nc','i01.06casa.clm2.h0.1900-1909.nc','i01.06casa.clm2.h0.1910-1919.nc','i01.06casa.clm2.h0.1920-1929.nc','i01.06casa.clm2.h0.1930-1939.nc','i01.06casa.clm2.h0.1940-1949.nc','i01.06casa.clm2.h0.1950-1959.nc','i01.06casa.clm2.h0.1960-1969.nc','i01.06casa.clm2.h0.1970-1979.nc','i01.06casa.clm2.h0.1980-1989.nc','i01.06casa.clm2.h0.1990-1999.nc','i01.06casa.clm2.h0.2000-2004.nc'
    7.12 + tshift      = 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
    7.13 + vnames      = 'area','landmask','topo','landfrac','QBOT','RAIN','SNOW','AGNPP','AR','BIOGENCO','BGNPP','ISOPRENE','MONOTERP','ORVOC','OVOC','CWDC','CWDC_HR','CWDC_LOSS','FROOTC','FROOTC_ALLOC','FROOTC_LOSS','GPP','HR','LEAFC_ALLOC','LEAFC_LOSS','LITTERC','LITTERC_HR','LITTERC_LOSS','NEE','NEP','NPP','SOILC','SOILC_HR','SOILC_LOSS','VOCFLXT','WOODC','WOODC_ALLOC','WOODC_LOSS','FGR','LATENT','FSH','FSH_G','FSH_V','RH2M','Q2M','BTRAN','ET','QSOIL','QVEGE','SOILICE','TOTAL_SOILICE','SOILLIQ','TOTAL_SOILLIQ','QOVER','QDRAI','QINTR','H2OSNO','QVEGT','H2OSOI','SOILPSI','ALL_SKY_ALBEDO','BLACK_SKY_ALBEDO','LAISHA','LAISUN','FLDS','FIRA','FIRE','NETRAD','FSA','SABG','SABV','FSDS','FSR','FSNO','DEGDAY','TSA','TREFMXAV','TREFMNAV','TSOI','TV','ELAI','TLAI','ESAI','TSAI','FPSN','RSSHA','RSSUN'
    7.14 + casa_flux_bug = .true.
    7.15 + /
     8.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     8.2 +++ b/namelist.clm3_casa.exp1_3.run1.monthly_mean	Sun Sep 21 21:59:01 2008 -0400
     8.3 @@ -0,0 +1,12 @@
     8.4 + &inparm
     8.5 + output_path = '/u3/forrest/ESG/c-lamp/clm3_casa/exp1_3/run1/monthly_mean/'
     8.6 + input_table = 'C-LAMP_L1_table'
     8.7 + source      = "Community Climate System Model: CCSM3.1 (ccsm3_1_beta40); Community Land Model: CLM3 (bgcmip05_clm3_expa_72); CASA' biogeochemistry"
     8.8 + experiment  = 'Experiment 1.3 (Varying Climate)'
     8.9 + realization = 1
    8.10 + input_path  = '/u3/forrest/C-LAMP/Exp1.3/clm3-casa'
    8.11 + fnames      = 'i01.07casa.clm2.h0.1948-1949.nc','i01.07casa.clm2.h0.1950-1959.nc','i01.07casa.clm2.h0.1960-1969.nc','i01.07casa.clm2.h0.1970-1979.nc','i01.07casa.clm2.h0.1980-1989.nc','i01.07casa.clm2.h0.1990-1999.nc','i01.07casa.clm2.h0.2000-2004.nc'
    8.12 + tshift      = 54750,54750,54750,54750,54750,54750,54750 
    8.13 + vnames      = 'area','landmask','topo','landfrac','QBOT','RAIN','SNOW','AGNPP','AR','BIOGENCO','BGNPP','ISOPRENE','MONOTERP','ORVOC','OVOC','CWDC','CWDC_HR','CWDC_LOSS','FROOTC','FROOTC_ALLOC','FROOTC_LOSS','GPP','HR','LEAFC_ALLOC','LEAFC_LOSS','LITTERC','LITTERC_HR','LITTERC_LOSS','NEE','NEP','NPP','SOILC','SOILC_HR','SOILC_LOSS','VOCFLXT','WOODC','WOODC_ALLOC','WOODC_LOSS','FGR','LATENT','FSH','FSH_G','FSH_V','RH2M','Q2M','BTRAN','ET','QSOIL','QVEGE','SOILICE','TOTAL_SOILICE','SOILLIQ','TOTAL_SOILLIQ','QOVER','QDRAI','QINTR','H2OSNO','QVEGT','H2OSOI','SOILPSI','ALL_SKY_ALBEDO','BLACK_SKY_ALBEDO','LAISHA','LAISUN','FLDS','FIRA','FIRE','NETRAD','FSA','SABG','SABV','FSDS','FSR','FSNO','DEGDAY','TSA','TREFMXAV','TREFMNAV','TSOI','TV','ELAI','TLAI','ESAI','TSAI','FPSN','RSSHA','RSSUN'
    8.14 + casa_flux_bug = .true.
    8.15 + /
     9.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     9.2 +++ b/namelist.clm3_casa.exp1_4.run1.monthly_mean	Sun Sep 21 21:59:01 2008 -0400
     9.3 @@ -0,0 +1,12 @@
     9.4 + &inparm
     9.5 + output_path = '/u3/forrest/ESG/c-lamp/clm3_casa/exp1_4/run1/monthly_mean/'
     9.6 + input_table = 'C-LAMP_L1_table'
     9.7 + source      = "Community Climate System Model: CCSM3.1 (ccsm3_1_beta40); Community Land Model: CLM3 (bgcmip05_clm3_expa_72); CASA' biogeochemistry"
     9.8 + experiment  = 'Experiment 1.4 (Varying Climate, CO2, and N Deposition)'
     9.9 + realization = 1
    9.10 + input_path  = '/u3/forrest/C-LAMP/Exp1.4/clm3-casa'
    9.11 + fnames      = 'i01.08casa.clm2.h0.1798-1799.nc','i01.08casa.clm2.h0.1800-1809.nc','i01.08casa.clm2.h0.1810-1819.nc','i01.08casa.clm2.h0.1820-1829.nc','i01.08casa.clm2.h0.1830-1839.nc','i01.08casa.clm2.h0.1840-1849.nc','i01.08casa.clm2.h0.1850-1859.nc','i01.08casa.clm2.h0.1860-1869.nc','i01.08casa.clm2.h0.1870-1879.nc','i01.08casa.clm2.h0.1880-1889.nc','i01.08casa.clm2.h0.1890-1899.nc','i01.08casa.clm2.h0.1900-1909.nc','i01.08casa.clm2.h0.1910-1919.nc','i01.08casa.clm2.h0.1920-1929.nc','i01.08casa.clm2.h0.1930-1939.nc','i01.08casa.clm2.h0.1940-1947.nc','i01.10casa.clm2.h0.1948-1949.nc','i01.10casa.clm2.h0.1950-1959.nc','i01.10casa.clm2.h0.1960-1969.nc','i01.10casa.clm2.h0.1970-1979.nc','i01.10casa.clm2.h0.1980-1989.nc','i01.10casa.clm2.h0.1990-1999.nc','i01.10casa.clm2.h0.2000-2004.nc'
    9.12 + tshift      = 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54750,54750,54750,54750,54750,54750,54750 
    9.13 + vnames      = 'area','landmask','topo','landfrac','QBOT','RAIN','SNOW','AGNPP','AR','BIOGENCO','BGNPP','ISOPRENE','MONOTERP','ORVOC','OVOC','CWDC','CWDC_HR','CWDC_LOSS','FROOTC','FROOTC_ALLOC','FROOTC_LOSS','GPP','HR','LEAFC_ALLOC','LEAFC_LOSS','LITTERC','LITTERC_HR','LITTERC_LOSS','NEE','NEP','NPP','SOILC','SOILC_HR','SOILC_LOSS','VOCFLXT','WOODC','WOODC_ALLOC','WOODC_LOSS','FGR','LATENT','FSH','FSH_G','FSH_V','RH2M','Q2M','BTRAN','ET','QSOIL','QVEGE','SOILICE','TOTAL_SOILICE','SOILLIQ','TOTAL_SOILLIQ','QOVER','QDRAI','QINTR','H2OSNO','QVEGT','H2OSOI','SOILPSI','ALL_SKY_ALBEDO','BLACK_SKY_ALBEDO','LAISHA','LAISUN','FLDS','FIRA','FIRE','NETRAD','FSA','SABG','SABV','FSDS','FSR','FSNO','DEGDAY','TSA','TREFMXAV','TREFMNAV','TSOI','TV','ELAI','TLAI','ESAI','TSAI','FPSN','RSSHA','RSSUN'
    9.14 + casa_flux_bug = .true.
    9.15 + /
    10.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    10.2 +++ b/namelist.clm3_casa.exp1_6.run1.monthly_mean	Sun Sep 21 21:59:01 2008 -0400
    10.3 @@ -0,0 +1,12 @@
    10.4 + &inparm
    10.5 + output_path = '/u3/forrest/ESG/c-lamp/clm3_casa/exp1_6/run1/monthly_mean/'
    10.6 + input_table = 'C-LAMP_L1_table'
    10.7 + source      = "Community Climate System Model: CCSM3.1 (ccsm3_1_beta40); Community Land Model: CLM3 (bgcmip08_clm3_expa_72); CASA' biogeochemistry"
    10.8 + experiment  = 'Experiment 1.6 (FACE Control varying Climate, CO2, and N Deposition)'
    10.9 + realization = 1
   10.10 + input_path  = '/u3/forrest/C-LAMP/Exp1.6/clm3-casa'
   10.11 + fnames      = 'i01.11casa.clm2.h0.1997-1999.nc','i01.11casa.clm2.h0.2000-2009.nc','i01.11casa.clm2.h0.2010-2019.nc','i01.11casa.clm2.h0.2020-2029.nc','i01.11casa.clm2.h0.2030-2039.nc','i01.11casa.clm2.h0.2040-2049.nc','i01.11casa.clm2.h0.2050-2059.nc','i01.11casa.clm2.h0.2060-2069.nc','i01.11casa.clm2.h0.2070-2079.nc','i01.11casa.clm2.h0.2080-2089.nc','i01.11casa.clm2.h0.2090-2099.nc','i01.11casa.clm2.h0.2100-2100.nc'
   10.12 + tshift      = 52735,52735,52735,52735,52735,52735,52735,52735,52735,52735,52735,52735
   10.13 + vnames      = 'area','landmask','topo','landfrac','QBOT','RAIN','SNOW','AGNPP','AR','BIOGENCO','BGNPP','ISOPRENE','MONOTERP','ORVOC','OVOC','CWDC','CWDC_HR','CWDC_LOSS','FROOTC','FROOTC_ALLOC','FROOTC_LOSS','GPP','HR','LEAFC_ALLOC','LEAFC_LOSS','LITTERC','LITTERC_HR','LITTERC_LOSS','NEE','NEP','NPP','SOILC','SOILC_HR','SOILC_LOSS','VOCFLXT','WOODC','WOODC_ALLOC','WOODC_LOSS','FGR','LATENT','FSH','FSH_G','FSH_V','RH2M','Q2M','BTRAN','ET','QSOIL','QVEGE','SOILICE','TOTAL_SOILICE','SOILLIQ','TOTAL_SOILLIQ','QOVER','QDRAI','QINTR','H2OSNO','QVEGT','H2OSOI','SOILPSI','ALL_SKY_ALBEDO','BLACK_SKY_ALBEDO','LAISHA','LAISUN','FLDS','FIRA','FIRE','NETRAD','FSA','SABG','SABV','FSDS','FSR','FSNO','DEGDAY','TSA','TREFMXAV','TREFMNAV','TSOI','TV','ELAI','TLAI','ESAI','TSAI','FPSN','RSSHA','RSSUN'
   10.14 + casa_flux_bug = .false.
   10.15 + /
    11.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    11.2 +++ b/namelist.clm3_casa.exp1_7.run1.monthly_mean	Sun Sep 21 21:59:01 2008 -0400
    11.3 @@ -0,0 +1,12 @@
    11.4 + &inparm
    11.5 + output_path = '/u3/forrest/ESG/c-lamp/clm3_casa/exp1_7/run1/monthly_mean/'
    11.6 + input_table = 'C-LAMP_L1_table'
    11.7 + source      = "Community Climate System Model: CCSM3.1 (ccsm3_1_beta40); Community Land Model: CLM3 (bgcmip08_clm3_expa_72); CASA' biogeochemistry"
    11.8 + experiment  = 'Experiment 1.7 (FACE Transient varying Climate, CO2, and N Deposition)'
    11.9 + realization = 1
   11.10 + input_path  = '/u3/forrest/C-LAMP/Exp1.7/clm3-casa'
   11.11 + fnames      = 'i01.12casa.clm2.h0.1997-1999.nc','i01.12casa.clm2.h0.2000-2009.nc','i01.12casa.clm2.h0.2010-2019.nc','i01.12casa.clm2.h0.2020-2029.nc','i01.12casa.clm2.h0.2030-2039.nc','i01.12casa.clm2.h0.2040-2049.nc','i01.12casa.clm2.h0.2050-2059.nc','i01.12casa.clm2.h0.2060-2069.nc','i01.12casa.clm2.h0.2070-2079.nc','i01.12casa.clm2.h0.2080-2089.nc','i01.12casa.clm2.h0.2090-2099.nc','i01.12casa.clm2.h0.2100-2100.nc'
   11.12 + tshift      = 52735,52735,52735,52735,52735,52735,52735,52735,52735,52735,52735,52735
   11.13 + vnames      = 'area','landmask','topo','landfrac','QBOT','RAIN','SNOW','AGNPP','AR','BIOGENCO','BGNPP','ISOPRENE','MONOTERP','ORVOC','OVOC','CWDC','CWDC_HR','CWDC_LOSS','FROOTC','FROOTC_ALLOC','FROOTC_LOSS','GPP','HR','LEAFC_ALLOC','LEAFC_LOSS','LITTERC','LITTERC_HR','LITTERC_LOSS','NEE','NEP','NPP','SOILC','SOILC_HR','SOILC_LOSS','VOCFLXT','WOODC','WOODC_ALLOC','WOODC_LOSS','FGR','LATENT','FSH','FSH_G','FSH_V','RH2M','Q2M','BTRAN','ET','QSOIL','QVEGE','SOILICE','TOTAL_SOILICE','SOILLIQ','TOTAL_SOILLIQ','QOVER','QDRAI','QINTR','H2OSNO','QVEGT','H2OSOI','SOILPSI','ALL_SKY_ALBEDO','BLACK_SKY_ALBEDO','LAISHA','LAISUN','FLDS','FIRA','FIRE','NETRAD','FSA','SABG','SABV','FSDS','FSR','FSNO','DEGDAY','TSA','TREFMXAV','TREFMNAV','TSOI','TV','ELAI','TLAI','ESAI','TSAI','FPSN','RSSHA','RSSUN'
   11.14 + casa_flux_bug = .false.
   11.15 + /
    12.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    12.2 +++ b/namelist.clm3_cn.exp1_2.run1.monthly_mean	Sun Sep 21 21:59:01 2008 -0400
    12.3 @@ -0,0 +1,12 @@
    12.4 + &inparm
    12.5 + output_path = '/u3/forrest/ESG/c-lamp/clm3_cn/exp1_2/run1/monthly_mean/'
    12.6 + input_table = 'C-LAMP_L1_table'
    12.7 + source      = "Community Climate System Model: CCSM3.1 (ccsm3_1_beta40); Community Land Model: CLM3 (bgcmip05_clm3_expa_72); CN biogeochemistry"
    12.8 + experiment  = 'Experiment 1.2 (Control)'
    12.9 + realization = 1
   12.10 + input_path  = '/u3/forrest/C-LAMP/Exp1.2/clm3-cn'
   12.11 + fnames      = 'i01.06cn.clm2.h0.1798-1799.nc','i01.06cn.clm2.h0.1800-1809.nc','i01.06cn.clm2.h0.1810-1819.nc','i01.06cn.clm2.h0.1820-1829.nc','i01.06cn.clm2.h0.1830-1839.nc','i01.06cn.clm2.h0.1840-1849.nc','i01.06cn.clm2.h0.1850-1859.nc','i01.06cn.clm2.h0.1860-1869.nc','i01.06cn.clm2.h0.1870-1879.nc','i01.06cn.clm2.h0.1880-1889.nc','i01.06cn.clm2.h0.1890-1899.nc','i01.06cn.clm2.h0.1900-1909.nc','i01.06cn.clm2.h0.1910-1919.nc','i01.06cn.clm2.h0.1920-1929.nc','i01.06cn.clm2.h0.1930-1939.nc','i01.06cn.clm2.h0.1940-1949.nc','i01.06cn.clm2.h0.1950-1959.nc','i01.06cn.clm2.h0.1960-1969.nc','i01.06cn.clm2.h0.1970-1979.nc','i01.06cn.clm2.h0.1980-1989.nc','i01.06cn.clm2.h0.1990-1999.nc','i01.06cn.clm2.h0.2000-2004.nc'
   12.12 + tshift      = 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
   12.13 + vnames      = 'area','landmask','topo','landfrac','QBOT','RAIN','SNOW','AGNPP','AR','BIOGENCO','BGNPP','ISOPRENE','MONOTERP','ORVOC','OVOC','CWDC','CWDC_HR','CWDC_LOSS','FROOTC','FROOTC_ALLOC','FROOTC_LOSS','GPP','GROSS_NMIN','HR','LEAFC_ALLOC','LEAFC_LOSS','LITTERC','LITTERC_HR','LITTERC_LOSS','NEE','NEP','NET_NMIN','NPP','SOILC','SOILC_HR','SOILC_LOSS','VOCFLXT','WOODC','WOODC_ALLOC','WOODC_LOSS','FGR','LATENT','FSH','FSH_G','FSH_V','RH2M','Q2M','BTRAN','ET','QSOIL','QVEGE','SOILICE','TOTAL_SOILICE','SOILLIQ','TOTAL_SOILLIQ','QOVER','QDRAI','QINTR','H2OSNO','QVEGT','H2OSOI','SOILPSI','ALL_SKY_ALBEDO','BLACK_SKY_ALBEDO','LAISHA','LAISUN','FLDS','FIRA','FIRE','NETRAD','FSA','SABG','SABV','FSDS','FSR','FSNO','TSA','TREFMXAV','TREFMNAV','TSOI','TV','ELAI','TLAI','ESAI','TSAI','FPSN','RSSHA','RSSUN'
   12.14 + casa_flux_bug = .false.
   12.15 + /
    13.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    13.2 +++ b/namelist.clm3_cn.exp1_3.run1.monthly_mean	Sun Sep 21 21:59:01 2008 -0400
    13.3 @@ -0,0 +1,12 @@
    13.4 + &inparm
    13.5 + output_path = '/u3/forrest/ESG/c-lamp/clm3_cn/exp1_3/run1/monthly_mean/'
    13.6 + input_table = 'C-LAMP_L1_table'
    13.7 + source      = "Community Climate System Model: CCSM3.1 (ccsm3_1_beta40); Community Land Model: CLM3 (bgcmip05_clm3_expa_72); CN biogeochemistry"
    13.8 + experiment  = 'Experiment 1.3 (Varying Climate)'
    13.9 + realization = 1
   13.10 + input_path  = '/u3/forrest/C-LAMP/Exp1.3/clm3-cn'
   13.11 + fnames      = 'i01.07cn.clm2.h0.1948-1949.nc','i01.07cn.clm2.h0.1950-1959.nc','i01.07cn.clm2.h0.1960-1969.nc','i01.07cn.clm2.h0.1970-1979.nc','i01.07cn.clm2.h0.1980-1989.nc','i01.07cn.clm2.h0.1990-1999.nc','i01.07cn.clm2.h0.2000-2004.nc'
   13.12 + tshift      = 54750,54750,54750,54750,54750,54750,54750
   13.13 + vnames      = 'area','landmask','topo','landfrac','QBOT','RAIN','SNOW','AGNPP','AR','BIOGENCO','BGNPP','ISOPRENE','MONOTERP','ORVOC','OVOC','CWDC','CWDC_HR','CWDC_LOSS','FROOTC','FROOTC_ALLOC','FROOTC_LOSS','GPP','GROSS_NMIN','HR','LEAFC_ALLOC','LEAFC_LOSS','LITTERC','LITTERC_HR','LITTERC_LOSS','NEE','NEP','NET_NMIN','NPP','SOILC','SOILC_HR','SOILC_LOSS','VOCFLXT','WOODC','WOODC_ALLOC','WOODC_LOSS','FGR','LATENT','FSH','FSH_G','FSH_V','RH2M','Q2M','BTRAN','ET','QSOIL','QVEGE','SOILICE','TOTAL_SOILICE','SOILLIQ','TOTAL_SOILLIQ','QOVER','QDRAI','QINTR','H2OSNO','QVEGT','H2OSOI','SOILPSI','ALL_SKY_ALBEDO','BLACK_SKY_ALBEDO','LAISHA','LAISUN','FLDS','FIRA','FIRE','NETRAD','FSA','SABG','SABV','FSDS','FSR','FSNO','TSA','TREFMXAV','TREFMNAV','TSOI','TV','ELAI','TLAI','ESAI','TSAI','FPSN','RSSHA','RSSUN'
   13.14 + casa_flux_bug = .false.
   13.15 + /
    14.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    14.2 +++ b/namelist.clm3_cn.exp1_4.run1.monthly_mean	Sun Sep 21 21:59:01 2008 -0400
    14.3 @@ -0,0 +1,12 @@
    14.4 + &inparm
    14.5 + output_path = '/u3/forrest/ESG/c-lamp/clm3_cn/exp1_4/run1/monthly_mean/'
    14.6 + input_table = 'C-LAMP_L1_table'
    14.7 + source      = "Community Climate System Model: CCSM3.1 (ccsm3_1_beta40); Community Land Model: CLM3 (bgcmip05_clm3_expa_72); CN biogeochemistry"
    14.8 + experiment  = 'Experiment 1.4 (Varying Climate, CO2, and N Deposition)'
    14.9 + realization = 1
   14.10 + input_path  = '/u3/forrest/C-LAMP/Exp1.4/clm3-cn'
   14.11 + fnames      = 'i01.08cn.clm2.h0.1798-1799.nc','i01.08cn.clm2.h0.1800-1809.nc','i01.08cn.clm2.h0.1810-1819.nc','i01.08cn.clm2.h0.1820-1829.nc','i01.08cn.clm2.h0.1830-1839.nc','i01.08cn.clm2.h0.1840-1849.nc','i01.08cn.clm2.h0.1850-1859.nc','i01.08cn.clm2.h0.1860-1869.nc','i01.08cn.clm2.h0.1870-1879.nc','i01.08cn.clm2.h0.1880-1889.nc','i01.09cn.clm2.h0.1890-1899.nc','i01.09cn.clm2.h0.1900-1909.nc','i01.09cn.clm2.h0.1910-1919.nc','i01.09cn.clm2.h0.1920-1929.nc','i01.09cn.clm2.h0.1930-1939.nc','i01.09cn.clm2.h0.1940-1947.nc','i01.10cn.clm2.h0.1948-1949.nc','i01.10cn.clm2.h0.1950-1959.nc','i01.10cn.clm2.h0.1960-1969.nc','i01.10cn.clm2.h0.1970-1979.nc','i01.10cn.clm2.h0.1980-1989.nc','i01.10cn.clm2.h0.1990-1999.nc','i01.10cn.clm2.h0.2000-2004.nc'
   14.12 + tshift      = 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54750,54750,54750,54750,54750,54750,54750
   14.13 + vnames      = 'area','landmask','topo','landfrac','QBOT','RAIN','SNOW','AGNPP','AR','BIOGENCO','BGNPP','ISOPRENE','MONOTERP','ORVOC','OVOC','CWDC','CWDC_HR','CWDC_LOSS','FROOTC','FROOTC_ALLOC','FROOTC_LOSS','GPP','GROSS_NMIN','HR','LEAFC_ALLOC','LEAFC_LOSS','LITTERC','LITTERC_HR','LITTERC_LOSS','NEE','NEP','NET_NMIN','NPP','SOILC','SOILC_HR','SOILC_LOSS','VOCFLXT','WOODC','WOODC_ALLOC','WOODC_LOSS','FGR','LATENT','FSH','FSH_G','FSH_V','RH2M','Q2M','BTRAN','ET','QSOIL','QVEGE','SOILICE','TOTAL_SOILICE','SOILLIQ','TOTAL_SOILLIQ','QOVER','QDRAI','QINTR','H2OSNO','QVEGT','H2OSOI','SOILPSI','ALL_SKY_ALBEDO','BLACK_SKY_ALBEDO','LAISHA','LAISUN','FLDS','FIRA','FIRE','NETRAD','FSA','SABG','SABV','FSDS','FSR','FSNO','TSA','TREFMXAV','TREFMNAV','TSOI','TV','ELAI','TLAI','ESAI','TSAI','FPSN','RSSHA','RSSUN'
   14.14 + casa_flux_bug = .false.
   14.15 + /
    15.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    15.2 +++ b/namelist.clm3_cn.exp1_6.run1.monthly_mean	Sun Sep 21 21:59:01 2008 -0400
    15.3 @@ -0,0 +1,12 @@
    15.4 + &inparm
    15.5 + output_path = '/u3/forrest/ESG/c-lamp/clm3_cn/exp1_6/run1/monthly_mean/'
    15.6 + input_table = 'C-LAMP_L1_table'
    15.7 + source      = "Community Climate System Model: CCSM3.1 (ccsm3_1_beta40); Community Land Model: CLM3 (bgcmip08_clm3_expa_72); CN biogeochemistry"
    15.8 + experiment  = 'Experiment 1.6 (FACE Control varying Climate, CO2, and N Deposition)'
    15.9 + realization = 1
   15.10 + input_path  = '/u3/forrest/C-LAMP/Exp1.6/clm3-cn'
   15.11 + fnames      = 'i01.11cn.clm2.h0.1997-1999.nc','i01.11cn.clm2.h0.2000-2009.nc','i01.11cn.clm2.h0.2010-2019.nc','i01.11cn.clm2.h0.2020-2029.nc','i01.11cn.clm2.h0.2030-2039.nc','i01.11cn.clm2.h0.2040-2049.nc','i01.11cn.clm2.h0.2050-2059.nc','i01.11cn.clm2.h0.2060-2069.nc','i01.11cn.clm2.h0.2070-2079.nc','i01.11cn.clm2.h0.2080-2089.nc','i01.11cn.clm2.h0.2090-2099.nc','i01.11cn.clm2.h0.2100-2100.nc'
   15.12 + tshift      = 52735,52735,52735,52735,52735,52735,52735,52735,52735,52735,52735,52735
   15.13 + vnames      = 'area','landmask','topo','landfrac','QBOT','RAIN','SNOW','AGNPP','AR','BIOGENCO','BGNPP','ISOPRENE','MONOTERP','ORVOC','OVOC','CWDC','CWDC_HR','CWDC_LOSS','FROOTC','FROOTC_ALLOC','FROOTC_LOSS','GPP','GROSS_NMIN','HR','LEAFC_ALLOC','LEAFC_LOSS','LITTERC','LITTERC_HR','LITTERC_LOSS','NEE','NEP','NET_NMIN','NPP','SOILC','SOILC_HR','SOILC_LOSS','VOCFLXT','WOODC','WOODC_ALLOC','WOODC_LOSS','FGR','LATENT','FSH','FSH_G','FSH_V','RH2M','Q2M','BTRAN','ET','QSOIL','QVEGE','SOILICE','TOTAL_SOILICE','SOILLIQ','TOTAL_SOILLIQ','QOVER','QDRAI','QINTR','H2OSNO','QVEGT','H2OSOI','SOILPSI','ALL_SKY_ALBEDO','BLACK_SKY_ALBEDO','LAISHA','LAISUN','FLDS','FIRA','FIRE','NETRAD','FSA','SABG','SABV','FSDS','FSR','FSNO','TSA','TREFMXAV','TREFMNAV','TSOI','TV','ELAI','TLAI','ESAI','TSAI','FPSN','RSSHA','RSSUN'
   15.14 + casa_flux_bug = .false.
   15.15 + /
    16.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    16.2 +++ b/namelist.clm3_cn.exp1_7.run1.monthly_mean	Sun Sep 21 21:59:01 2008 -0400
    16.3 @@ -0,0 +1,12 @@
    16.4 + &inparm
    16.5 + output_path = '/u3/forrest/ESG/c-lamp/clm3_cn/exp1_7/run1/monthly_mean/'
    16.6 + input_table = 'C-LAMP_L1_table'
    16.7 + source      = "Community Climate System Model: CCSM3.1 (ccsm3_1_beta40); Community Land Model: CLM3 (bgcmip08_clm3_expa_72); CN biogeochemistry"
    16.8 + experiment  = 'Experiment 1.7 (FACE Transient varying Climate, CO2, and N Deposition)'
    16.9 + realization = 1
   16.10 + input_path  = '/u3/forrest/C-LAMP/Exp1.7/clm3-cn'
   16.11 + fnames      = 'i01.12cn.clm2.h0.1997-1999.nc','i01.12cn.clm2.h0.2000-2009.nc','i01.12cn.clm2.h0.2010-2019.nc','i01.12cn.clm2.h0.2020-2029.nc','i01.12cn.clm2.h0.2030-2039.nc','i01.12cn.clm2.h0.2040-2049.nc','i01.12cn.clm2.h0.2050-2059.nc','i01.12cn.clm2.h0.2060-2069.nc','i01.12cn.clm2.h0.2070-2079.nc','i01.12cn.clm2.h0.2080-2089.nc','i01.12cn.clm2.h0.2090-2099.nc','i01.12cn.clm2.h0.2100-2100.nc'
   16.12 + tshift      = 52735,52735,52735,52735,52735,52735,52735,52735,52735,52735,52735,52735
   16.13 + vnames      = 'area','landmask','topo','landfrac','QBOT','RAIN','SNOW','AGNPP','AR','BIOGENCO','BGNPP','ISOPRENE','MONOTERP','ORVOC','OVOC','CWDC','CWDC_HR','CWDC_LOSS','FROOTC','FROOTC_ALLOC','FROOTC_LOSS','GPP','GROSS_NMIN','HR','LEAFC_ALLOC','LEAFC_LOSS','LITTERC','LITTERC_HR','LITTERC_LOSS','NEE','NEP','NET_NMIN','NPP','SOILC','SOILC_HR','SOILC_LOSS','VOCFLXT','WOODC','WOODC_ALLOC','WOODC_LOSS','FGR','LATENT','FSH','FSH_G','FSH_V','RH2M','Q2M','BTRAN','ET','QSOIL','QVEGE','SOILICE','TOTAL_SOILICE','SOILLIQ','TOTAL_SOILLIQ','QOVER','QDRAI','QINTR','H2OSNO','QVEGT','H2OSOI','SOILPSI','ALL_SKY_ALBEDO','BLACK_SKY_ALBEDO','LAISHA','LAISUN','FLDS','FIRA','FIRE','NETRAD','FSA','SABG','SABV','FSDS','FSR','FSNO','TSA','TREFMXAV','TREFMNAV','TSOI','TV','ELAI','TLAI','ESAI','TSAI','FPSN','RSSHA','RSSUN'
   16.14 + casa_flux_bug = .false.
   16.15 + /