Module containing vegetation constants and method to read and initialize vegetation (PFT) constants.
USES:
use shr_kind_mod, only : r8 => shr_kind_r8 use abortutils , only : endrun use clm_varpar , only : numpft, numrad use clm_varctl , only : iulogPUBLIC TYPES:
implicit none save Vegetation type constants character(len=40) pftname(0:numpft) !PFT description integer :: noveg !value for not vegetated integer :: ndllf_evr_tmp_tree !value for Needleleaf evergreen temperate tree integer :: ndllf_evr_brl_tree !value for Needleleaf evergreen boreal tree integer :: ndllf_dcd_brl_tree !value for Needleleaf deciduous boreal tree integer :: nbrdlf_evr_trp_tree !value for Broadleaf evergreen tropical tree integer :: nbrdlf_evr_tmp_tree !value for Broadleaf evergreen temperate tree integer :: nbrdlf_dcd_trp_tree !value for Broadleaf deciduous tropical tree integer :: nbrdlf_dcd_tmp_tree !value for Broadleaf deciduous temperate tree integer :: nbrdlf_dcd_brl_tree !value for Broadleaf deciduous boreal tree integer :: ntree !value for last type of tree integer :: nbrdlf_evr_shrub !value for Broadleaf evergreen shrub integer :: nbrdlf_dcd_tmp_shrub !value for Broadleaf deciduous temperate shrub integer :: nbrdlf_dcd_brl_shrub !value for Broadleaf deciduous boreal shrub integer :: nc3_arctic_grass !value for C3 arctic grass integer :: nc3_nonarctic_grass !value for C3 non-arctic grass integer :: nc4_grass !value for C4 grass integer :: ncorn !value for corn integer :: nwheat !value for wheat real(r8):: dleaf(0:numpft) !characteristic leaf dimension (m) real(r8):: c3psn(0:numpft) !photosynthetic pathway: 0. = c4, 1. = c3 real(r8):: vcmx25(0:numpft) !max rate of carboxylation at 25C (umol CO2/m**2/s) real(r8):: mp(0:numpft) !slope of conductance-to-photosynthesis relationship real(r8):: qe25(0:numpft) !quantum efficiency at 25C (umol CO2 / umol photon) real(r8):: xl(0:numpft) !leaf/stem orientation index real(r8):: rhol(0:numpft,numrad) !leaf reflectance: 1=vis, 2=nir real(r8):: rhos(0:numpft,numrad) !stem reflectance: 1=vis, 2=nir real(r8):: taul(0:numpft,numrad) !leaf transmittance: 1=vis, 2=nir real(r8):: taus(0:numpft,numrad) !stem transmittance: 1=vis, 2=nir real(r8):: z0mr(0:numpft) !ratio of momentum roughness length to canopy top height (-) real(r8):: displar(0:numpft) !ratio of displacement height to canopy top height (-) real(r8):: roota_par(0:numpft) !CLM rooting distribution parameter [1/m] real(r8):: rootb_par(0:numpft) !CLM rooting distribution parameter [1/m] real(r8):: crop(0:numpft) ! crop pft: 0. = not crop, 1. = crop pft real(r8):: sla(0:numpft) ! specific leaf area [m2 leaf g-1 carbon] real(r8):: smpso(0:numpft) !soil water potential at full stomatal opening (mm) real(r8):: smpsc(0:numpft) !soil water potential at full stomatal closure (mm) real(r8):: fnitr(0:numpft) !foliage nitrogen limitation factor (-) ! begin new pft parameters for CN code real(r8):: slatop(0:numpft) !SLA at top of canopy [m^2/gC] real(r8):: dsladlai(0:numpft) !dSLA/dLAI [m^2/gC] real(r8):: leafcn(0:numpft) !leaf C:N [gC/gN] real(r8):: flnr(0:numpft) !fraction of leaf N in Rubisco [no units] real(r8):: woody(0:numpft) !woody lifeform flag (0 or 1) real(r8):: lflitcn(0:numpft) !leaf litter C:N (gC/gN) real(r8):: frootcn(0:numpft) !fine root C:N (gC/gN) real(r8):: livewdcn(0:numpft) !live wood (phloem and ray parenchyma) C:N (gC/gN) real(r8):: deadwdcn(0:numpft) !dead wood (xylem and heartwood) C:N (gC/gN) real(r8):: froot_leaf(0:numpft) !allocation parameter: new fine root C per new leaf C (gC/gC) real(r8):: stem_leaf(0:numpft) !allocation parameter: new stem c per new leaf C (gC/gC) real(r8):: croot_stem(0:numpft) !allocation parameter: new coarse root C per new stem C (gC/gC) real(r8):: flivewd(0:numpft) !allocation parameter: fraction of new wood that is live (phloem and ray parenchyma) (no units) real(r8):: fcur(0:numpft) !allocation parameter: fraction of allocation that goes to currently displayed growth, remainder to storage real(r8):: lf_flab(0:numpft) !leaf litter labile fraction real(r8):: lf_fcel(0:numpft) !leaf litter cellulose fraction real(r8):: lf_flig(0:numpft) !leaf litter lignin fraction real(r8):: fr_flab(0:numpft) !fine root litter labile fraction real(r8):: fr_fcel(0:numpft) !fine root litter cellulose fraction real(r8):: fr_flig(0:numpft) !fine root litter lignin fraction real(r8):: dw_fcel(0:numpft) !dead wood cellulose fraction real(r8):: dw_flig(0:numpft) !dead wood lignin fraction real(r8):: leaf_long(0:numpft) !leaf longevity (yrs) real(r8):: evergreen(0:numpft) !binary flag for evergreen leaf habit (0 or 1) real(r8):: stress_decid(0:numpft) !binary flag for stress-deciduous leaf habit (0 or 1) real(r8):: season_decid(0:numpft) !binary flag for seasonal-deciduous leaf habit (0 or 1) ! new pft parameters for CN-fire code real(r8):: resist(0:numpft) !resistance to fire (no units) ! pft parameters for CNDV code ! from LPJ subroutine pftparameters real(r8) pftpar20(0:numpft) !tree maximum crown area (m2) real(r8) pftpar28(0:numpft) !min coldest monthly mean temperature real(r8) pftpar29(0:numpft) !max coldest monthly mean temperature real(r8) pftpar30(0:numpft) !min growing degree days (>= 5 deg C) real(r8) pftpar31(0:numpft) !upper limit of temperature of the warmest month (twmax) real(r8), parameter :: reinickerp = 1.6_r8 !parameter in allometric equation real(r8), parameter :: dwood = 2.5e5_r8 !cn wood density (gC/m3); lpj:2.0e5 real(r8), parameter :: allom1 = 100.0_r8 !parameters in real(r8), parameter :: allom2 = 40.0_r8 !...allometric real(r8), parameter :: allom3 = 0.5_r8 !...equations real(r8), parameter :: allom1s = 250.0_r8 !modified for shrubs by real(r8), parameter :: allom2s = 8.0_r8 !X.D.ZPUBLIC MEMBER FUNCTIONS:
public :: pftconrd ! Read and initialize vegetation (PFT) constantsREVISION HISTORY:
Created by Sam Levis (put into module form by Mariana Vertenstein) 10/21/03, Peter Thornton: Added new variables for CN code 06/24/09, Erik Kluzek: Add indices for all pft types, and add expected_pftnames array and comparision