INTERFACE:
subroutine initCASA()DESCRIPTION:
Initialize the CASA submodel.
USES:
use fileutils , only : getfil
use shr_const_mod, only : SHR_CONST_CDAY
use decompMod , only : get_proc_bounds, get_proc_global
use clm_varctl , only : nsrest, nsrStartup, nsrContinue
use clm_varpar , only : lsmlon, lsmlat, max_pft_per_gcell
use spmdMod , only : masterproc
use clm_time_manager , only : get_step_size
use pftvarcon , only : noveg, nc3_nonarctic_grass, nc3crop, nirrig
use ncdio_pio
ARGUMENTS:
implicit noneLOCAL VARIABLES:
real(r8), parameter :: plai_min_ic = 0.8_r8 ! init plai => Dickinson value
real(r8), parameter :: secpy = 365._r8*SHR_CONST_CDAY ! no of secs/yr
! local variables
integer :: g,c,i,j,l,m,n,p,pi ! indices
character(len=256) :: locfn ! local file name
type(file_desc_t) :: ncid ! netCDF file id
integer :: varid ! netCDF variable id
integer :: begp, endp ! per-proc beginning and ending pft indices
integer :: begc, endc ! per-proc beginning and ending column indices
integer :: begl, endl ! per-proc beginning and ending landunit indices
integer :: begg, endg ! per-proc gridcell ending gridcell indices
integer :: numg ! total number of gridcells across all processors
integer :: numl ! total number of landunits across all processors
integer :: numc ! total number of columns across all processors
integer :: nump ! total number of pfts across all processors
logical :: readvar ! is variable on file
integer :: ier, ret ! error return code
real(r8) dtime ! land model time step (sec)
real(r8) lnscl
real(r8) hardwire_sla(0:numpft)
real(r8), pointer :: sumwts(:)
real(r8), pointer :: vege_wts(:)
real(r8), pointer :: wood_wts(:)
real(r8), pointer :: vege_scale(:)
real(r8), pointer :: wood_scale(:)
real(r8), pointer :: rloc(:)
! pointers
integer , pointer :: pgridcell(:) ! gridcell index of corresponding pft
integer , pointer :: pcolumn(:) ! pft's column
integer , pointer :: plandunit(:) ! landunit index associated with pft
integer , pointer :: npfts(:) ! number of pfts on gridcell
integer , pointer :: pfti(:) ! initial pft on gridcell
integer , pointer :: ltype(:) ! landunit type for corresponding pft
integer , pointer :: ivt(:) ! pft vegetation type
real(r8), pointer :: wtgcell(:) ! pft weight relative to gridcell
real(r8), pointer :: XSCpool(:)
real(r8), pointer :: eff(:,:)
real(r8), pointer :: frac_donor(:,:)
real(r8), pointer :: Tpool_C(:,:) ! Total C pool size
real(r8), pointer :: plai(:) ! prognostic LAI (m2 leaf/m2 ground)
real(r8), pointer :: sandfrac(:)
real(r8), pointer :: clayfrac(:)
real(r8), pointer :: co2flux(:) ! net CO2 flux (gC/m2/s) [+ = to atm]
real(r8), pointer :: fnpp(:) ! NPP (gC/m2/sec)
real(r8), pointer :: Resp_C(:,:) ! could dimension by ndead, but caution!!!
real(r8), pointer :: Cflux(:)
real(r8), pointer :: watopt(:) !optimal soil water content for et for top 30cm (mm3/mm3)
real(r8), pointer :: watdry(:) !soil water when et stops for top 30cm (mm3/mm3)
real(r8), pointer :: sz(:) !thickness of soil layers contributing to output
real(r8), pointer :: watoptc(:) !optimal soil water content for et for entire column (mm3/mm3)
real(r8), pointer :: watdryc(:) !soil water when et stops for entire column (mm3/mm3)
real(r8), pointer :: szc(:) !thickness of soil layers contributing to output
real(r8), pointer :: watsat(:,:) !saturated volumetric soil water content (porosity)
real(r8), pointer :: sucsat(:,:) ! minimum soil suction (mm)
real(r8), pointer :: bsw(:,:) !Clapp and Hornberger "b" (nlevsoi)
real(r8), pointer :: z(:,:) ! soil layer depth (m)
real(r8), pointer :: dz(:,:) ! soil layer thickness (m)
character(len=32) :: subname='initCasa' ! subroutine name
CALLED FROM:
initialize in initializeModREVISION HISTORY:
2004.06.08 Vectorized and reformatted by Forrest Hoffman