R/pft.coms.r

#==========================================================================================#
#==========================================================================================#
#     This module contains several parameters used in the Farquar Leuning photosynthesis   #
# solver.  The following references are used as a departing point:                         #
# - M09 - Medvigy, D.M., S. C. Wofsy, J. W. Munger, D. Y. Hollinger, P. R. Moorcroft,      #
#         2009: Mechanistic scaling of ecosystem function and dynamics in space and time:  #
#         Ecosystem Demography model version 2.  J. Geophys. Res., 114, G01002,            #
#         doi:10.1029/2008JG000812.                                                        #
# - M06 - Medvigy, D.M., 2006: The State of the Regional Carbon Cycle: results from a      #
#         constrained coupled ecosystem-atmosphere model, 2006.  Ph.D. dissertation,       #
#         Harvard University, Cambridge, MA, 322pp.                                        #
# - M01 - Moorcroft, P. R., G. C. Hurtt, S. W. Pacala, 2001: A method for scaling          #
#         vegetation dynamics: the ecosystem demography model, Ecological Monographs, 71,  #
#         557-586.                                                                         #
# - F96 - Foley, J. A., I. Colin Prentice, N. Ramankutty, S. Levis, D. Pollard, S. Sitch,  #
#         A. Haxeltime, 1996: An integrated biosphere model of land surface processes,     #
#         terrestrial carbon balance, and vegetation dynamics. Glob. Biogeochem. Cycles,   #
#         10, 603-602.                                                                     #
# - L95 - Leuning, R., F. M. Kelliher, D. G. G. de Pury, E. D. Schulze, 1995: Leaf         #
#         nitrogen, photosynthesis, conductance, and transpiration: scaling from leaves to #
#         canopies. Plant, Cell, and Environ., 18, 1183-1200.                              #
# - C91 - Collatz, G. J., J. T. Ball, C. Grivet, J. A. Berry, 1991: Physiological and      #
#         environmental regulation of stomatal conductance, photosynthesis and             #
#         transpiration: A model that includes a laminar boundary layer. Agric. For.       #
#         Meteor., 53, 107-136.                                                            #
# - B01 - Bernacchi, C. J., E. L. Singsaas, C. Pimentel, A. R. Portis Jr., S. P. Long,     #
#         2001: Improved temperature response functions for models of Rubisco-limited      #
#         photosynthesis. Plant, Cell and Environ., 24, 253-259.                           #
# - B02 - Bernacchi, C. J., A. R. Portis, H. Nakano, S. von Caemmerer, S. P. Long,         #
#         2002: Temperature response of mesophyll conductance.  Implications for the       #
#         determination of Rubisco enzyme kinetics and for limitations to photosynthesis   #
#         in vivo.  Plant physiol., 130, 1992-1998.                                        #
#------------------------------------------------------------------------------------------#
#' @include rconstants.r
#'
#'
#'
if (! "npft" %in% ls()) npft = 17


#----- Fudging parameters to try to tune photosynthesis. ----------------------------------#
if (! "alpha.c3" %in% ls()){
   alpha.c3  <<-   0.08
}else{
   alpha.c3  <<-   alpha.c3
}#end if
if (! "alpha.c4" %in% ls()){
   alpha.c4  <<-   0.053
}else{
   alpha.c4  <<-   alpha.c4
}#end if
if (! "vmfact.c3" %in% ls()){
   vmfact.c3  <<-   1.0
}else{
   vmfact.c3  <<-   vmfact.c3
}#end if
if (! "vmfact.c4" %in% ls()){
   vmfact.c4  <<-   1.0
}else{
   vmfact.c4  <<-   vmfact.c4
}#end if
if (! "mphoto.c3" %in% ls()){
   mphoto.c3  <<-   8.0
}else{
   mphoto.c3  <<-   mphoto.c3
}#end if
if (! "mphoto.aa" %in% ls()){
   mphoto.aa  <<-   6.4
}else{
   mphoto.aa  <<-   mphoto.aa
}#end if
if (! "mphoto.c4" %in% ls()){
   mphoto.c4  <<-   4.0
}else{
   mphoto.c4  <<-   mphoto.c4
}#end if
if (! "gamma.c3" %in% ls()){
   gamma.c3  <<-   0.020
}else{
   gamma.c3  <<-   gamma.c3
}#end if
if (! "gamma.aa" %in% ls()){
   gamma.aa  <<-   0.028
}else{
   gamma.aa  <<-   gamma.aa
}#end if
if (! "gamma.c4" %in% ls()){
   gamma.c4  <<-   0.040
}else{
   gamma.c4  <<-   gamma.c4
}#end if
if (! "d0.grass" %in% ls()){
   d0.grass      <<-   0.01
}else{
   d0.grass      <<-   d0.grass
}#end if
if (! "d0.tree" %in% ls()){
   d0.tree      <<-   0.01
}else{
   d0.tree      <<-   d0.tree
}#end if


if (! "klowin" %in% ls()){
   klowin      <<-   18000.
}else{
   klowin    <<-   klowin
}#end if
if (! "base.c3" %in% ls()){
   base.c3       <<-   2.4
}else{
   base.c3       <<-   base.c3
}#end if
if (! "base.c4" %in% ls()){
   base.c4       <<-   2.0
}else{
   base.c4       <<-   base.c4
}#end if
if (! "b.c3" %in% ls()){
   b.c3       <<-   10000.
}else{
   b.c3       <<-   b.c3
}#end if
if (! "b.aa" %in% ls()){
   b.aa       <<-   1000.
}else{
   b.aa       <<-   b.aa
}#end if
if (! "b.c4" %in% ls()){
   b.c4       <<-    8000.
}else{
   b.c4       <<-   b.c4
}#end if
if (! "orient.tree" %in% ls()){
   orient.tree     <<-   0.00
}else{
   orient.tree     <<-   orient.tree
}#end if
if (! "orient.aa" %in% ls()){
   orient.aa       <<-   0.00
}else{
   orient.aa       <<-   orient.aa
}#end if
if (! "orient.grass" %in% ls()){
   orient.grass    <<-  0.00
}else{
   orient.grass    <<-   orient.grass
}#end if
if (! "clumping.tree" %in% ls()){
   clumping.tree     <<-   0.735
}else{
   clumping.tree     <<-   clumping.tree
}#end if
if (! "clumping.aa" %in% ls()){
   clumping.aa       <<-   0.735
}else{
   clumping.aa       <<-   clumping.aa
}#end if
if (! "clumping.grass" %in% ls()){
   clumping.grass    <<-  1.0
}else{
   clumping.grass    <<-   clumping.grass
}#end if
if (! "lwidth.grass" %in% ls()){
   lwidth.grass      <<-   0.05
}else{
   lwidth.grass      <<-   lwidth.grass
}#end if
if (! "lwidth.bltree" %in% ls()){
   lwidth.bltree     <<-   0.10
}else{
   lwidth.bltree     <<-   lwidth.bltree
}#end if
if (! "lwidth.nltree" %in% ls()){
   lwidth.nltree     <<-   0.05
}else{
   lwidth.nltree     <<-   lwidth.nltree
}#end if
#------------------------------------------------------------------------------------------#



#------------------------------------------------------------------------------------------#
#    The following parameter is the k coefficient in Foley et al. (1996) that is used to   #
# determine the CO2-limited photosynthesis for C4 grasses.                                 #
#------------------------------------------------------------------------------------------#
klowco2      <<- klowin * mmco2 /mmdry  # Coefficient for low CO2      [ mol/mol]
#------------------------------------------------------------------------------------------#




#------------------------------------------------------------------------------------------#
#    These parameters will be assigned to the PFT structure.  Notice that depending on the #
# physiology method (Foley or Collatz), some of them will be used, and some of them will   #
# not.                                                                                     #
#------------------------------------------------------------------------------------------#
vm.hor          <<- 3000.      # Ref. exp. coeff. for carboxylase fctn.          [       K]
vm.base.c3      <<- base.c3    # Base Vm for C3 - Collatz et al. (1991)          [mol/m2/s]
vm.base.c4      <<- base.c4    # Base Vm for C4 - Collatz et al. (1992)          [mol/m2/s]
vm.decay.a      <<- 220000.    # Decay function for warm temperatures -- A       [   J/mol]
vm.decay.b      <<- 695.       # Decay function for warm temperatures -- B       [ J/mol/K]

vm.tcold.c3temp <<- 4.7137
vm.tcold.c3trop <<- 8.0
vm.tcold.aa     <<- 4.7137
vm.tcold.c4     <<- 8.0

vm.thot.c3      <<- 45.0
vm.thot.aa      <<- 45.0
vm.thot.c4      <<- 45.0

vm.decay.e.c3   <<- 0.4
vm.decay.e.aa   <<- 0.4
vm.decay.e.c4   <<- 0.4

lr.hor          <<- 3000.      # Ref. exp. coeff. for carboxylase fctn.          [       K]
lr.base.c3      <<- base.c3
lr.base.c4      <<- base.c4

lr.tcold.c3temp <<- vm.tcold.c3temp
lr.tcold.c3trop <<- vm.tcold.c3trop
lr.tcold.aa     <<- vm.tcold.aa
lr.tcold.c4     <<- vm.tcold.c4

lr.thot.c3      <<- vm.thot.c3
lr.thot.aa      <<- vm.thot.aa
lr.thot.c4      <<- vm.thot.c3

lr.decay.e.c3   <<- 0.4
lr.decay.e.aa   <<- 0.4
lr.decay.e.c4   <<- 0.4

#------------------------------------------------------------------------------------------#



#------------------------------------------------------------------------------------------#
#    Define some common values to make it easier to change the list below...               #
#------------------------------------------------------------------------------------------#
C2B    <<- 2.0
#------------------------------------------------------------------------------------------#



#------------------------------------------------------------------------------------------#
#    These variables define the allometry to use                                           #
# 0 - ED-2.1                                                                               #
# 1 - a.  AGB is based on Baker et al. (2004), Chave formula, keeping the same Bleaf as    #
#         ED-2.1 and Bdead to make up the difference.                                      #
#     b.  Use the crown area as in Poorter et al. (2006) for tropical PFTs                 #
#     c.  Use a simple rooting depth ranging from 0.5 to 5.0                               #
# 2 - Same as 1, but using the height as in Poorter et al. (2006) for tropical PFTs, and   #
#     finding a fit similar to Baker et al. (2004) that doesn't depend on height, using    #
#     Saldarriaga et al. (1988) as a starting point.                                       #
#------------------------------------------------------------------------------------------#
if ("iallom" %in% ls()){
   iallom <<- iallom
}else{
   iallom <<- 3
}#end if
#------------------------------------------------------------------------------------------#


#------------------------------------------------------------------------------------------#
#     These constants will help defining the allometric parameters for IALLOM 1 and 2.     #
#------------------------------------------------------------------------------------------#
odead.small = c( -1.11382700, 2.44048300,  2.18063200)
odead.large = c(  0.13625460, 2.42173900,  6.94835320)
ndead.small = c( -1.26395300, 2.43236100,  1.80180100)
ndead.large = c( -0.83468050, 2.42557360,  2.68228050)
nleaf       = c(  0.01925119, 0.97494935,  2.58585087)
uleaf       = c( -1.09254800, 1.28505100,  3.199019  )
ncrown.area = c(  0.11842950, 1.05211970)
#------------------------------------------------------------------------------------------#



#----- Define reference height and coefficients for tropical allometry. -------------------#
if (iallom %in% c(0,1)){
   hgt.ref.trop = NA
   b1Ht.trop    = 0.37 * log(10)
   b2Ht.trop    = 0.64
}else if (iallom %in% c(2,3)){
   hgt.ref.trop = 61.7
   b1Ht.trop    = 0.0352
   b2Ht.trop    = 0.694
}#end if
#------------------------------------------------------------------------------------------#




#------------------------------------------------------------------------------------------#
#     The following variables will define the PFT characteristics regarding the            #
# photosynthesis.                                                                          #
#------------------------------------------------------------------------------------------#
pft01 = list( name               = "C4 grass"
            , key                = "C4G"
            , colour             = "#E5E503"
            , tropical           = TRUE
            , liana              = FALSE
            , pathway            = 4
            , d0                 = d0.grass
            , vm.hor             = vm.hor
            , vm.base            = vm.base.c4
            , vm.decay.a         = vm.decay.a
            , vm.decay.b         = vm.decay.b
            , vm.low.temp        = vm.tcold.c4   + t00
            , vm.high.temp       = vm.thot.c4    + t00
            , vm.decay.e         = vm.decay.e.c4
            , lr.hor             = lr.hor
            , lr.base            = lr.base.c4
            , lr.low.temp        = lr.tcold.c4   + t00
            , lr.high.temp       = lr.thot.c4    + t00
            , lr.decay.e         = lr.decay.e.c4
            , vm0                = 12.5 * vmfact.c4 * umol.2.mol
            , m                  = mphoto.c4
            , alpha              = alpha.c4
            , b                  = b.c4 * umol.2.mol
            , gamma.resp         = gamma.c4
            , effarea.transp     = 1.0
            , rho                = 0.20
            , leaf.turnover.rate = 2.0
            , root.turnover.rate = 2.0
            , SLA                = 22.7
            , hgt.ref            = hgt.ref.trop
            , b1Ht               = b1Ht.trop
            , b2Ht               = b2Ht.trop
            , b1Bl.small         = NA
            , b2Bl.small         = NA
            , b1Bl.large         = NA
            , b2Bl.large         = NA
            , bleaf.adult        = NA
            , b1Bs.small         = NA
            , b2Bs.small         = NA
            , b1Bs.large         = NA
            , b2Bs.large         = NA
            , b1Ca               = 2.490154
            , b2Ca               = 0.8068806
            , b1Cl               = 0.99
            , b2Cl               = 1.00
            , b1WAI              = 0.00
            , b2WAI              = 1.00
            , b1Vol              = 0.65 * pi * 0.11 * 0.11
            , b2Vol              = 2.0
            , hgt.min            = 0.5
            , hgt.max            = 1.5
            , qroot              = 1.0
            , qsw                = 22.0 / 3900.
            , agf.bs             = 0.7
            , orient.factor      = orient.grass
            , clumping.factor    = clumping.grass
            , leaf.width         = lwidth.grass
            , init.density       = 0.1
            , veg.hcap.min       = 3.68093E+00
            )

pft02 = list( name               = "Early tropical"
            , key                = "ETR"
            , colour             = "#9FFF8C"
            , tropical           = TRUE
            , liana              = FALSE
            , pathway            = 3
            , d0                 = d0.tree
            , vm.hor             = vm.hor
            , vm.base            = vm.base.c3
            , vm.decay.a         = vm.decay.a
            , vm.decay.b         = vm.decay.b
            , vm.low.temp        = vm.tcold.c3trop + t00
            , vm.high.temp       = vm.thot.c3      + t00
            , vm.decay.e         = vm.decay.e.c3
            , lr.hor             = lr.hor
            , lr.base            = lr.base.c3
            , lr.low.temp        = lr.tcold.c3trop + t00
            , lr.high.temp       = lr.thot.c3      + t00
            , lr.decay.e         = lr.decay.e.c3
            , vm0                = 18.75 * vmfact.c3 * umol.2.mol
            , m                  = mphoto.c3
            , alpha              = alpha.c3
            , b                  = b.c3 * umol.2.mol
            , gamma.resp         = gamma.c3
            , effarea.transp     = 1.0
            , rho                = 0.53
            , leaf.turnover.rate = 1.0
            , root.turnover.rate = 1.0
            , SLA                = NA
            , hgt.ref            = hgt.ref.trop
            , b1Ht               = b1Ht.trop
            , b2Ht               = b2Ht.trop
            , b1Bl.small         = NA
            , b2Bl.small         = NA
            , b1Bl.large         = NA
            , b2Bl.large         = NA
            , bleaf.adult        = NA
            , b1Bs.small         = NA
            , b2Bs.small         = NA
            , b1Bs.large         = NA
            , b2Bs.large         = NA
            , b1Ca               = 2.490154
            , b2Ca               = 0.8068806
            , b1Cl               = 0.3106775
            , b2Cl               = 1.098
            , b1WAI              = 0.0192 * 0.5
            , b2WAI              = 2.0947
            , b1Vol              = 0.65 * pi * 0.11 * 0.11
            , b2Vol              = 2.0
            , hgt.min            = 0.5
            , hgt.max            = 35.0
            , qroot              = 1.0
            , qsw                = 16.0 / 3900.
            , agf.bs             = 0.7
            , orient.factor      = orient.tree
            , clumping.factor    = clumping.tree
            , leaf.width         = lwidth.bltree
            , init.density       = 0.1
            , veg.hcap.min       = 9.75446E+00
            )

pft03 = list( name               = "Mid tropical"
            , key                = "MTR"
            , colour             = "#44CC29"
            , tropical           = TRUE
            , liana              = FALSE
            , pathway            = 3
            , d0                 = d0.tree
            , vm.hor             = vm.hor
            , vm.base            = vm.base.c3
            , vm.decay.a         = vm.decay.a
            , vm.decay.b         = vm.decay.b
            , vm.low.temp        = vm.tcold.c3trop + t00
            , vm.high.temp       = vm.thot.c3      + t00
            , vm.decay.e         = vm.decay.e.c3
            , lr.hor             = lr.hor
            , lr.base            = lr.base.c3
            , lr.low.temp        = lr.tcold.c3trop + t00
            , lr.high.temp       = lr.thot.c3      + t00
            , lr.decay.e         = lr.decay.e.c3
            , vm0                = 12.5 * vmfact.c3 * umol.2.mol
            , m                  = mphoto.c3
            , alpha              = alpha.c3
            , b                  = b.c3 * umol.2.mol
            , gamma.resp         = gamma.c3
            , effarea.transp     = 1.0
            , rho                = 0.71
            , leaf.turnover.rate = 0.50
            , root.turnover.rate = 0.50
            , SLA                = NA
            , hgt.ref            = hgt.ref.trop
            , b1Ht               = b1Ht.trop
            , b2Ht               = b2Ht.trop
            , b1Bl.small         = NA
            , b2Bl.small         = NA
            , b1Bl.large         = NA
            , b2Bl.large         = NA
            , bleaf.adult        = NA
            , b1Bs.small         = NA
            , b2Bs.small         = NA
            , b1Bs.large         = NA
            , b2Bs.large         = NA
            , b1Ca               = 2.490154
            , b2Ca               = 0.8068806
            , b1Cl               = 0.3106775
            , b2Cl               = 1.098
            , b1WAI              = 0.0192 * 0.5
            , b2WAI              = 2.0947
            , b1Vol              = 0.65 * pi * 0.11 * 0.11
            , b2Vol              = 2.0
            , hgt.min            = 0.5
            , hgt.max            = 35.0
            , qroot              = 1.0
            , qsw                = 11.6 / 3900.
            , agf.bs             = 0.7
            , orient.factor      = orient.tree
            , clumping.factor    = clumping.tree
            , leaf.width         = lwidth.bltree
            , init.density       = 0.1
            , veg.hcap.min       = 1.30673E+01
            )

pft04 = list( name               = "Late tropical"
            , key                = "LTR"
            , colour             = "#137300"
            , tropical           = TRUE
            , liana              = FALSE
            , pathway            = 3
            , d0                 = d0.tree
            , vm.hor             = vm.hor
            , vm.base            = vm.base.c3
            , vm.decay.a         = vm.decay.a
            , vm.decay.b         = vm.decay.b
            , vm.low.temp        = vm.tcold.c3trop + t00
            , vm.high.temp       = vm.thot.c3      + t00
            , vm.decay.e         = vm.decay.e.c3
            , lr.hor             = lr.hor
            , lr.base            = lr.base.c3
            , lr.low.temp        = lr.tcold.c3trop + t00
            , lr.high.temp       = lr.thot.c3      + t00
            , lr.decay.e         = lr.decay.e.c3
            , vm0                = 6.25 * vmfact.c3 * umol.2.mol
            , m                  = mphoto.c3
            , alpha              = alpha.c3
            , b                  = b.c3 * umol.2.mol
            , gamma.resp         = gamma.c3
            , effarea.transp     = 1.0
            , rho                = 0.90
            , leaf.turnover.rate = 1./3.
            , root.turnover.rate = 1./3.
            , SLA                = NA
            , hgt.ref            = hgt.ref.trop
            , b1Ht               = b1Ht.trop
            , b2Ht               = b2Ht.trop
            , b1Bl.small         = NA
            , b2Bl.small         = NA
            , b1Bl.large         = NA
            , b2Bl.large         = NA
            , bleaf.adult        = NA
            , b1Bs.small         = NA
            , b2Bs.small         = NA
            , b1Bs.large         = NA
            , b2Bs.large         = NA
            , b1Ca               = 2.490154
            , b2Ca               = 0.8068806
            , b1Cl               = 0.3106775
            , b2Cl               = 1.098
            , b1WAI              = 0.0192 * 0.5
            , b2WAI              = 2.0947
            , b1Vol              = 0.65 * pi * 0.11 * 0.11
            , b2Vol              = 2.0
            , hgt.min            = 0.5
            , hgt.max            = 35.0
            , qroot              = 1.0
            , qsw                = 9.67 / 3900.
            , agf.bs             = 0.7
            , orient.factor      = orient.tree
            , clumping.factor    = clumping.tree
            , leaf.width         = lwidth.bltree
            , init.density       = 0.1
            , veg.hcap.min       = 1.65642E+01
            )

pft05 = list( name               = "Temperate C3 Grass"
            , key                = "TTG"
            , colour             = "#B2B224"
            , tropical           = FALSE
            , liana              = FALSE
            , pathway            = 3
            , d0                 = d0.tree
            , vm.hor             = vm.hor
            , vm.base            = vm.base.c3
            , vm.decay.a         = vm.decay.a
            , vm.decay.b         = vm.decay.b
            , vm.low.temp        = vm.tcold.c3temp + t00
            , vm.high.temp       = vm.thot.c3      + t00
            , vm.decay.e         = vm.decay.e.c3
            , lr.hor             = lr.hor
            , lr.base            = lr.base.c3
            , lr.low.temp        = lr.tcold.c3temp + t00
            , lr.high.temp       = lr.thot.c3      + t00
            , lr.decay.e         = lr.decay.e.c3
            , vm0                = 18.3   * umol.2.mol
            , m                  = mphoto.c3
            , alpha              = alpha.c3
            , b                  = b.c3 * umol.2.mol
            , gamma.resp         = gamma.c3
            , effarea.transp     = 1.0
            , rho                = 0.32
            , leaf.turnover.rate = 2.0
            , root.turnover.rate = 2.0
            , SLA                = 22.0
            , hgt.ref            = 0.0
            , b1Ht               = 0.4778
            , b2Ht               = -0.750
            , b1Bl.small         = 0.08
            , b2Bl.small         = 1.00
            , b1Bl.large         = 0.08
            , b2Bl.large         = 1.00
            , bleaf.adult        = NA
            , b1Bs.small         = 1.e-5
            , b2Bs.small         = 1.0
            , b1Bs.large         = 1.e-5
            , b2Bs.large         = 1.0
            , b1Ca               = 2.490154
            , b2Ca               = 0.8068806
            , b1Cl               = 0.99
            , b2Cl               = 1.0
            , b1WAI              = 0.0
            , b2WAI              = 1.0
            , b1Vol              = 0.65 * pi * 0.11 * 0.11
            , b2Vol              = 2.0
            , hgt.min            = 0.15
            , hgt.max            = 0.95 * 0.4778
            , qroot              = 1.0
            , qsw                = 22.0 / 3900.
            , agf.bs             = 0.7
            , orient.factor      = -0.30
            , clumping.factor    =  1.00
            , leaf.width         = lwidth.grass
            , init.density       = 0.1
            , veg.hcap.min       = 9.16551E+00
            )

pft06 = list( name               = "North Pine"
            , key                = "NPN"
            , colour             = "#0066CC"
            , tropical           = FALSE
            , liana              = FALSE
            , pathway            = 3
            , d0                 = d0.tree
            , vm.hor             = vm.hor
            , vm.base            = vm.base.c3
            , vm.decay.a         = vm.decay.a
            , vm.decay.b         = vm.decay.b
            , vm.low.temp        = vm.tcold.c3temp + t00
            , vm.high.temp       = vm.thot.c3      + t00
            , vm.decay.e         = vm.decay.e.c3
            , lr.hor             = lr.hor
            , lr.base            = lr.base.c3
            , lr.low.temp        = lr.tcold.c3temp + t00
            , lr.high.temp       = lr.thot.c3      + t00
            , lr.decay.e         = lr.decay.e.c3
            , vm0                = 15.625 * 0.7264 * umol.2.mol
            , m                  = mphoto.c3 * 6.3949 / 8.0
            , alpha              = alpha.c3
            , b                  = 1000. * umol.2.mol
            , gamma.resp         = gamma.c3
            , effarea.transp     = 2.0
            , rho                = NA
            , leaf.turnover.rate = 1./3.
            , root.turnover.rate = 3.927218
            , SLA                = 6.0
            , hgt.ref            = 1.3
            , b1Ht               = 27.14
            , b2Ht               = -0.03884
            , b1Bl.small         = 0.024
            , b2Bl.small         = 1.899
            , b1Bl.large         = 0.024
            , b2Bl.large         = 1.899
            , bleaf.adult        = NA
            , b1Bs.small         = 0.147
            , b2Bs.small         = 2.238
            , b1Bs.large         = 0.147
            , b2Bs.large         = 2.238
            , b1Ca               = 2.490154
            , b2Ca               = 0.8068806
            , b1Cl               = 0.3106775
            , b2Cl               = 1.098
            , b1WAI              = 0.0553 * 0.5
            , b2WAI              = 1.9769
            , b1Vol              = 0.65 * pi * 0.11 * 0.11
            , b2Vol              = 2.0
            , hgt.min            = 1.5
            , hgt.max            = 0.999 * 27.14
            , qroot              = 0.3463
            , qsw                = 6.0 / 3900.
            , agf.bs             = 0.7
            , orient.factor      = 0.01
            , clumping.factor    = 0.735
            , leaf.width         = lwidth.nltree
            , init.density       = 0.1
            , veg.hcap.min       = 2.34683E-01
            )

pft07 = list( name               = "South Pine"
            , key                = "SPN"
            , colour             = "#99CCFF"
            , tropical           = FALSE
            , liana              = FALSE
            , pathway            = 3
            , d0                 = d0.tree
            , vm.hor             = vm.hor
            , vm.base            = vm.base.c3
            , vm.decay.a         = vm.decay.a
            , vm.decay.b         = vm.decay.b
            , vm.low.temp        = vm.tcold.c3temp + t00
            , vm.high.temp       = vm.thot.c3      + t00
            , vm.decay.e         = vm.decay.e.c3
            , lr.hor             = lr.hor
            , lr.base            = lr.base.c3
            , lr.low.temp        = lr.tcold.c3temp + t00
            , lr.high.temp       = lr.thot.c3      + t00
            , lr.decay.e         = lr.decay.e.c3
            , vm0                = 15.625 * 0.7264 * umol.2.mol
            , m                  = mphoto.c3 * 6.3949 / 8.0
            , alpha              = alpha.c3
            , b                  = 1000. * umol.2.mol
            , gamma.resp         = gamma.c3
            , effarea.transp     = 2.0
            , rho                = NA
            , leaf.turnover.rate = 1./3.
            , root.turnover.rate = 4.117847
            , SLA                = 9.0
            , hgt.ref            = 1.3
            , b1Ht               = 27.14
            , b2Ht               = -0.03884
            , b1Bl.small         = 0.024
            , b2Bl.small         = 1.899
            , b1Bl.large         = 0.024
            , b2Bl.large         = 1.899
            , bleaf.adult        = NA
            , b1Bs.small         = 0.147
            , b2Bs.small         = 2.238
            , b1Bs.large         = 0.147
            , b2Bs.large         = 2.238
            , b1Ca               = 2.490154
            , b2Ca               = 0.8068806
            , b1Cl               = 0.3106775
            , b2Cl               = 1.098
            , b1WAI              = 0.0553 * 0.5
            , b2WAI              = 1.9769
            , b1Vol              = 0.65 * pi * 0.11 * 0.11
            , b2Vol              = 2.0
            , hgt.min            = 1.5
            , hgt.max            = 0.999 * 27.14
            , qroot              = 0.3463
            , qsw                = 9.0 / 3900.
            , agf.bs             = 0.7
            , orient.factor      = 0.01
            , clumping.factor    = 0.735
            , leaf.width         = lwidth.nltree
            , init.density       = 0.1
            , veg.hcap.min       = 2.34683E-01
            )

pft08 = list( name               = "Late conifer"
            , key                = "LCN"
            , colour             = "#00407F"
            , tropical           = FALSE
            , liana              = FALSE
            , pathway            = 3
            , d0                 = d0.tree
            , vm.hor             = vm.hor
            , vm.base            = vm.base.c3
            , vm.decay.a         = vm.decay.a
            , vm.decay.b         = vm.decay.b
            , vm.low.temp        = vm.tcold.c3temp + t00
            , vm.high.temp       = vm.thot.c3      + t00
            , vm.decay.e         = vm.decay.e.c3
            , lr.hor             = lr.hor
            , lr.base            = lr.base.c3
            , lr.low.temp        = lr.tcold.c3temp + t00
            , lr.high.temp       = lr.thot.c3      + t00
            , lr.decay.e         = lr.decay.e.c3
            , vm0                = 6.25 * 0.7264 * umol.2.mol
            , m                  = mphoto.c3 * 6.3949 / 8.0
            , alpha              = alpha.c3
            , b                  = 1000. * umol.2.mol
            , gamma.resp         = gamma.c3
            , effarea.transp     = 2.0
            , rho                = NA
            , leaf.turnover.rate = 1./3.
            , root.turnover.rate = 3.800132
            , SLA                = 10.0
            , hgt.ref            = 1.3
            , b1Ht               = 22.79
            , b2Ht               = -0.04445
            , b1Bl.small         = 0.0454
            , b2Bl.small         = 1.6829
            , b1Bl.large         = 0.0454
            , b2Bl.large         = 1.6829
            , bleaf.adult        = NA
            , b1Bs.small         = 0.1617
            , b2Bs.small         = 2.1536
            , b1Bs.large         = 0.1617
            , b2Bs.large         = 2.1536
            , b1Ca               = 2.490154
            , b2Ca               = 0.8068806
            , b1Cl               = 0.3106775
            , b2Cl               = 1.098
            , b1WAI              = 0.0553 * 0.5
            , b2WAI              = 1.9769
            , b1Vol              = 0.65 * pi * 0.11 * 0.11
            , b2Vol              = 2.0
            , hgt.min            = 1.5
            , hgt.max            = 0.999 * 22.79
            , qroot              = 0.3463
            , qsw                = 10.0 / 3900.
            , agf.bs             = 0.7
            , orient.factor      = 0.01
            , clumping.factor    = 0.735
            , leaf.width         = lwidth.nltree
            , init.density       = 0.1
            , veg.hcap.min       = 6.80074E-01
            )

pft09 = list( name               = "Early hardwood"
            , key                = "EHW"
            , colour             = "#FF999B"
            , tropical           = FALSE
            , liana              = FALSE
            , pathway            = 3
            , d0                 = d0.tree
            , vm.hor             = vm.hor
            , vm.base            = vm.base.c3
            , vm.decay.a         = vm.decay.a
            , vm.decay.b         = vm.decay.b
            , vm.low.temp        = vm.tcold.c3temp + t00
            , vm.high.temp       = vm.thot.c3      + t00
            , vm.decay.e         = vm.decay.e.c3
            , lr.hor             = lr.hor
            , lr.base            = lr.base.c3
            , lr.low.temp        = lr.tcold.c3temp + t00
            , lr.high.temp       = lr.thot.c3      + t00
            , lr.decay.e         = lr.decay.e.c3
            , vm0                = 18.25  * 1.1171 * umol.2.mol
            , m                  = mphoto.c3 * 6.3949 / 8.0
            , alpha              = alpha.c3
            , b                  = 20000. * umol.2.mol
            , gamma.resp         = gamma.c3
            , effarea.transp     = 1.0
            , rho                = NA
            , leaf.turnover.rate = NA
            , root.turnover.rate = 5.772506
            , SLA                = 30.0
            , hgt.ref            = 1.3
            , b1Ht               = 22.6799
            , b2Ht               = -0.06534
            , b1Bl.small         = 0.0129
            , b2Bl.small         = 1.7477
            , b1Bl.large         = 0.0129
            , b2Bl.large         = 1.7477
            , bleaf.adult        = NA
            , b1Bs.small         = 0.02648
            , b2Bs.small         = 2.95954
            , b1Bs.large         = 0.02648
            , b2Bs.large         = 2.95954
            , b1Ca               = 2.490154
            , b2Ca               = 0.8068806
            , b1Cl               = 0.3106775
            , b2Cl               = 1.098
            , b1WAI              = 0.0192 * 0.5
            , b2WAI              = 2.0947
            , b1Vol              = 0.65 * pi * 0.11 * 0.11
            , b2Vol              = 2.0
            , hgt.min            = 1.5
            , hgt.max            = 0.999 * 22.6799
            , qroot              = 1.1274
            , qsw                = 30.0 / 3900.
            , agf.bs             = 0.7
            , orient.factor      = 0.25
            , clumping.factor    = 0.84
            , leaf.width         = lwidth.bltree
            , init.density       = 0.1
            , veg.hcap.min       = 8.95049E-02
            )

pft10 = list( name               = "Mid hardwood"
            , key                = "MHW"
            , colour             = "#E5171A"
            , tropical           = FALSE
            , liana              = FALSE
            , pathway            = 3
            , d0                 = d0.tree
            , vm.hor             = vm.hor
            , vm.base            = vm.base.c3
            , vm.decay.a         = vm.decay.a
            , vm.decay.b         = vm.decay.b
            , vm.low.temp        = vm.tcold.c3temp + t00
            , vm.high.temp       = vm.thot.c3      + t00
            , vm.decay.e         = vm.decay.e.c3
            , lr.hor             = lr.hor
            , lr.base            = lr.base.c3
            , lr.low.temp        = lr.tcold.c3temp + t00
            , lr.high.temp       = lr.thot.c3      + t00
            , lr.decay.e         = lr.decay.e.c3
            , vm0                = 15.625  * 1.1171 * umol.2.mol
            , m                  = mphoto.c3 * 6.3949 / 8.0
            , alpha              = alpha.c3
            , b                  = 20000. * umol.2.mol
            , gamma.resp         = gamma.c3
            , effarea.transp     = 1.0
            , rho                = NA
            , leaf.turnover.rate = NA
            , root.turnover.rate = 5.083700
            , SLA                = 24.2
            , hgt.ref            = 1.3
            , b1Ht               = 25.18
            , b2Ht               = -0.04964
            , b1Bl.small         = 0.048
            , b2Bl.small         = 1.455
            , b1Bl.large         = 0.048
            , b2Bl.large         = 1.455
            , bleaf.adult        = NA
            , b1Bs.small         = 0.1617
            , b2Bs.small         = 2.4572
            , b1Bs.large         = 0.1617
            , b2Bs.large         = 2.4572
            , b1Ca               = 2.490154
            , b2Ca               = 0.8068806
            , b1Cl               = 0.3106775
            , b2Cl               = 1.098
            , b1WAI              = 0.0192 * 0.5
            , b2WAI              = 2.0947
            , b1Vol              = 0.65 * pi * 0.11 * 0.11
            , b2Vol              = 2.0
            , hgt.min            = 1.5
            , hgt.max            = 0.999 * 25.18
            , qroot              = 1.1274
            , qsw                = 24.2 / 3900.
            , agf.bs             = 0.7
            , orient.factor      = 0.25
            , clumping.factor    = 0.84
            , leaf.width         = lwidth.bltree
            , init.density       = 0.1
            , veg.hcap.min       = 7.65271E-01
            )

pft11 = list( name               = "Late hardwood"
            , key                = "LHW"
            , colour             = "#990003"
            , tropical           = FALSE
            , liana              = FALSE
            , pathway            = 3
            , d0                 = d0.tree
            , vm.hor             = vm.hor
            , vm.base            = vm.base.c3
            , vm.decay.a         = vm.decay.a
            , vm.decay.b         = vm.decay.b
            , vm.low.temp        = vm.tcold.c3temp + t00
            , vm.high.temp       = vm.thot.c3      + t00
            , vm.decay.e         = vm.decay.e.c3
            , lr.hor             = lr.hor
            , lr.base            = lr.base.c3
            , lr.low.temp        = lr.tcold.c3temp + t00
            , lr.high.temp       = lr.thot.c3      + t00
            , lr.decay.e         = lr.decay.e.c3
            , vm0                = 6.25  * 1.1171 * umol.2.mol
            , m                  = mphoto.c3 * 6.3949 / 8.0
            , alpha              = alpha.c3
            , b                  = 20000. * umol.2.mol
            , gamma.resp         = gamma.c3
            , effarea.transp     = 1.0
            , rho                = NA
            , leaf.turnover.rate = NA
            , root.turnover.rate = 5.070992
            , SLA                = 60.0
            , hgt.ref            = 1.3
            , b1Ht               = 23.3874
            , b2Ht               = -0.05404
            , b1Bl.small         = 0.017
            , b2Bl.small         = 1.731
            , b1Bl.large         = 0.017
            , b2Bl.large         = 1.731
            , bleaf.adult        = NA
            , b1Bs.small         = 0.235
            , b2Bs.small         = 2.2518
            , b1Bs.large         = 0.235
            , b2Bs.large         = 2.2518
            , b1Ca               = 2.490154
            , b2Ca               = 0.8068806
            , b1Cl               = 0.3106775
            , b2Cl               = 1.098
            , b1WAI              = 0.0192 * 0.5
            , b2WAI              = 2.0947
            , b1Vol              = 0.65 * pi * 0.11 * 0.11
            , b2Vol              = 2.0
            , hgt.min            = 1.5
            , hgt.max            = 0.999 * 23.3874
            , qroot              = 1.1274
            , qsw                = 60.0 / 3900.
            , agf.bs             = 0.7
            , orient.factor      = 0.25
            , clumping.factor    = 0.84
            , leaf.width         = lwidth.bltree
            , init.density       = 0.1
            , veg.hcap.min       = 1.60601E-01
            )

pft12 = pft05; pft12$name = "C3 crop"   ; pft12$key = "CC3"; pft12$colour="#A38FCC"
pft13 = pft05; pft13$name = "C3 pasture"; pft13$key = "PC3"; pft13$colour="#7F40FF"
pft14 = pft01; pft14$name = "C4 crop"   ; pft14$key = "CC4"; pft14$colour="#A1E5CF"
pft15 = pft01; pft15$name = "C4 pasture"; pft15$key = "PC4"; pft15$colour="#6B998A"

pft16 = list( name               = "C3 grass"
            , key                = "C3G"
            , colour             = "#F2F291"
            , tropical           = TRUE
            , liana              = FALSE
            , pathway            = 3
            , d0                 = d0.grass
            , vm.hor             = vm.hor
            , vm.base            = vm.base.c3
            , vm.decay.a         = vm.decay.a
            , vm.decay.b         = vm.decay.b
            , vm.low.temp        = vm.tcold.c3trop + t00
            , vm.high.temp       = vm.thot.c3      + t00
            , vm.decay.e         = vm.decay.e.c3
            , lr.hor             = lr.hor
            , lr.base            = lr.base.c3
            , lr.low.temp        = lr.tcold.c3trop + t00
            , lr.high.temp       = lr.thot.c3      + t00
            , lr.decay.e         = lr.decay.e.c3
            , vm0                = 20.833333333 * vmfact.c3 * umol.2.mol
            , m                  = mphoto.c3
            , alpha              = alpha.c3
            , b                  = b.c3 * umol.2.mol
            , gamma.resp         = gamma.c3
            , effarea.transp     = 1.0
            , rho                = 0.20
            , leaf.turnover.rate = 2.0
            , root.turnover.rate = 2.0
            , SLA                = 22.7
            , hgt.ref            = hgt.ref.trop
            , b1Ht               = b1Ht.trop
            , b2Ht               = b2Ht.trop
            , b1Bl.small         = NA
            , b2Bl.small         = NA
            , b1Bl.large         = NA
            , b2Bl.large         = NA
            , bleaf.adult        = NA
            , b1Bs.small         = NA
            , b2Bs.small         = NA
            , b1Bs.large         = NA
            , b2Bs.large         = NA
            , b1Ca               = 2.490154
            , b2Ca               = 0.8068806
            , b1Cl               = 0.99
            , b2Cl               = 1.00
            , b1WAI              = 0.0
            , b2WAI              = 1.0
            , b1Vol              = 0.65 * pi * 0.11 * 0.11
            , b2Vol              = 2.0
            , hgt.min            = 0.5
            , hgt.max            = 1.5
            , qroot              = 1.0
            , qsw                = 22.0 / 3900.
            , agf.bs             = 0.7
            , orient.factor      = orient.grass
            , clumping.factor    = clumping.grass
            , leaf.width         = lwidth.grass
            , init.density       = 0.1
            , veg.hcap.min       = 3.68093E+00
            )

pft17 = list( name               = "Lianas"
            , key                = "Lia"
            , colour             = "#1E64C8"
            , tropical           = TRUE
            , liana              = TRUE
            , pathway            = 3
            , d0                 = d0.tree
            , vm.hor             = vm.hor
            , vm.base            = vm.base.c3
            , vm.decay.a         = vm.decay.a
            , vm.decay.b         = vm.decay.b
            , vm.low.temp        = vm.tcold.aa + t00
            , vm.high.temp       = vm.thot.aa  + t00
            , vm.decay.e         = vm.decay.e.aa
            , lr.hor             = lr.hor
            , lr.base            = lr.base.c3
            , lr.low.temp        = lr.tcold.aa + t00
            , lr.high.temp       = lr.thot.aa  + t00
            , lr.decay.e         = lr.decay.e.aa
            , vm0                = 18.75 * vmfact.c3 * umol.2.mol
            , m                  = mphoto.aa
            , alpha              = alpha.c3
            , b                  = b.aa * umol.2.mol
            , gamma.resp         = gamma.aa
            , effarea.transp     = 1.0
            , rho                = 0.46
            , leaf.turnover.rate = 1.27
            , root.turnover.rate = 1.27
            , SLA                = NA
            , hgt.ref            = hgt.ref.trop
            , b1Ht               = 0.1136442
            , b2Ht               = 0.8675
            , b1Bl.small         = NA
            , b2Bl.small         = NA
            , b1Bl.large         = NA
            , b2Bl.large         = NA
            , bleaf.adult        = NA
            , b1Bs.small         = NA
            , b2Bs.small         = NA
            , b1Bs.large         = NA
            , b2Bs.large         = NA
            , b1Ca               = 2.490154
            , b2Ca               = 1.26254364
            , b1Cl               = 0.3106775
            , b2Cl               = 1.098
            , b1WAI              = 0.0192 * 0.5
            , b2WAI              = 2.0947
            , b1Vol              = 0.65 * pi * 0.11 * 0.11
            , b2Vol              = 2.0
            , hgt.min            = 0.5
            , hgt.max            = 35.0
            , qroot              = 1.0
            , qsw                = 17.88 / 3900.
            , agf.bs             = 0.7
            , orient.factor      = orient.aa
            , clumping.factor    = clumping.aa
            , leaf.width         = lwidth.nltree
            , init.density       = 0.1
            , veg.hcap.min       = 9.93851E+00
            )
pft18 = pft07; pft18$name = "Total"   ; pft18$key = "ALL"; pft18$colour="#404040"
#------------------------------------------------------------------------------------------#



#----- Build the structure of photosynthesis parameters by PFT. ---------------------------#
pft = list()
for (p in 1:(npft+1)){
  ppp  = substring(100+p,2,3)
  phph = paste("pft",ppp,sep="")
  if (p == 1){
     pft = get(phph)
  }else{
     phmerge = get(phph)
     for (n in union(names(pft),names(phmerge))){
        pft[[n]] = c(pft[[n]],phmerge[[n]])
     } #end for
  }# end if
} #end for


#----- Minimum and Maximum DBH. -----------------------------------------------------------#
pft$dbh.min   = rep(NA,times=npft+1)
pft$dbh.crit  = rep(NA,times=npft+1)
pft$dbh.adult = rep(NA,times=npft+1)
for (ipft in sequence(npft)){
   if (pft$tropical[ipft]){
      if (iallom %in% c(0,1)){
         pft$dbh.min [ipft] = exp((log(pft$hgt.min[ipft])-pft$b1Ht[ipft])/pft$b2Ht[ipft])
         pft$dbh.crit[ipft] = exp((log(pft$hgt.max[ipft])-pft$b1Ht[ipft])/pft$b2Ht[ipft])
      }else if (iallom %in% c(2,3)){
         pft$dbh.min [ipft] = ( log(   pft$hgt.ref[ipft]
                                   / ( pft$hgt.ref[ipft] - pft$hgt.min[ipft]) )
                              / pft$b1Ht[ipft] ) ^ (1.0 / pft$b2Ht[ipft])
         pft$dbh.crit[ipft] = ( log(   pft$hgt.ref[ipft]
                                   / ( pft$hgt.ref[ipft] - pft$hgt.max[ipft]) )
                              / pft$b1Ht[ipft] ) ^ (1.0 / pft$b2Ht[ipft])
     }#end if
   }else{
      pft$dbh.min [ipft] = ( log(1.0 - (pft$hgt.min[ipft]-pft$hgt.ref[ipft])
                                       / pft$b1Ht[ipft] ) / pft$b2Ht[ipft] )
      pft$dbh.crit[ipft] = ( log(1.0 - (pft$hgt.max[ipft]-pft$hgt.ref[ipft])
                                       / pft$b1Ht[ipft]) / pft$b2Ht[ipft] )
   }#end if
   pft$dbh.adult[ipft]   = 10.0
}#end for

pft$dbh.crit[17]  = 26
pft$dbh.adult[17] = 1.81


#------------------------------------------------------------------------------------------#
#    Specific leaf area for those PFTs whose specific leaf area depends on the leaf turn-  #
# over rate.                                                                               #
#------------------------------------------------------------------------------------------#
#pft$SLA = rep(NA,times=npft+1)
for (ipft in sequence(npft)){
   if (is.na(pft$SLA[ipft])){
      pft$SLA[ipft] = ( 10^( (2.4 - 0.46 * log10(12./pft$leaf.turnover.rate[ipft])))
                      * C2B * 0.1 )
   }#end if
}#end for
#------------------------------------------------------------------------------------------#



#----- Constants shared by both bdead and bleaf -------------------------------------------#
a1    =  -1.981
b1    =   1.047
dcrit =   100.0
#----- Constants used by bdead only -------------------------------------------------------#
c1d   =   0.572
d1d   =   0.931
a2d   =  -1.086
b2d   =   0.876
c2d   =   0.604
d2d   =   0.871
#----- Constants used by bleaf only -------------------------------------------------------#
c1l   =  -0.584
d1l   =   0.550
a2l   =  -4.111
b2l   =   0.605
c2l   =   0.848
d2l   =   0.438
#------------------------------------------------------------------------------------------#

for (ipft in sequence(npft)){
   if (pft$tropical[ipft]){
      #------------------------------------------------------------------------------------#
      #      Fill in the leaf biomass parameters.                                          #
      #------------------------------------------------------------------------------------#
      if (iallom %in% c(0,1)){
         #---- ED-2.1 allometry. ----------------------------------------------------------#
         pft$b1Bl.small [ipft] = exp(a1 + c1l * pft$b1Ht[ipft] + d1l * log(pft$rho[ipft]))
         aux                   = ( (a2l - a1) + pft$b1Ht[ipft] * (c2l - c1l)
                                 + log(pft$rho[ipft]) * (d2l - d1l)) * (1.0/log(dcrit))
         pft$b2Bl.small [ipft] = C2B * b2l + c2l * pft$b2Ht[ipft] + aux
         pft$b1Bl.large [ipft] = pft$b1Bl.small[ipft]
         pft$b2Bl.large [ipft] = pft$b2Bl.small[ipft]
         pft$bleaf.adult[ipft] = ( pft$b1Bl.large[ipft] / C2B
                                 * pft$dbh.adult [ipft] ^ pft$b2Bl.large[ipft] )
      }else if(iallom %in% c(2)){
         pft$b1Bl.small [ipft] = C2B * exp(nleaf[1]) * pft$rho[ipft] / nleaf[3]
         pft$b2Bl.small [ipft] = nleaf[2]
         pft$b1Bl.large [ipft] = pft$b1Bl.small[ipft]
         pft$b2Bl.large [ipft] = pft$b2Bl.small[ipft]
         pft$bleaf.adult[ipft] = ( pft$b1Bl.large[ipft] / C2B
                                 * pft$dbh.adult [ipft] ^ pft$b2Bl.large[ipft] )
      }else if(iallom %in% c(3)){
         #---------------------------------------------------------------------------------#
         #    Use Lescure et al. (1983) for large trees, assume minimum leaf biomass for   #
         # mid-successional to be 50gC/plant and interpolate biomass for saplings using a  #
         # log-linear function.                                                            #
         #---------------------------------------------------------------------------------#
         pft$b1Bl.large [ipft] = 0.00873 * pft$SLA[3] / pft$SLA[ipft] # * C2B
         pft$b2Bl.large [ipft] = 2.1360

         bleaf.sapling         = 0.02 * C2B * pft$SLA[3] / pft$SLA[ipft]
         pft$bleaf.adult[ipft] = ( pft$b1Bl.large[ipft] / C2B
                                 * pft$dbh.adult [ipft] ^ pft$b2Bl.large[ipft] )
         pft$b2Bl.small [ipft] = ( log(pft$bleaf.adult[ipft]/bleaf.sapling)
                                 / log(pft$dbh.adult[ipft]/pft$dbh.min[ipft]) )
         pft$b1Bl.small [ipft] = ( pft$bleaf.adult[ipft] * C2B
                                 / pft$dbh.adult[ipft] ^ pft$b2Bl.small[ipft] )
      }#end if
      #------------------------------------------------------------------------------------#


      #------------------------------------------------------------------------------------#
      #      Fill in the structural biomass parameters.                                    #
      #------------------------------------------------------------------------------------#
      if (iallom %in% c(0)){
         #---- ED-2.1 allometry. ----------------------------------------------------------#
         pft$b1Bs.small[ipft] = exp(a1 + c1d * pft$b1Ht[ipft] + d1d * log(pft$rho[ipft]))
         pft$b1Bs.large[ipft] = exp(a1 + c1d * log(pft$hgt.max[ipft])
                                       + d1d * log(pft$rho[ipft]))
         aux                  = ( (a2d - a1) + pft$b1Ht[ipft] * (c2d - c1d)
                                + log(pft$rho[ipft]) * (d2d - d1d) ) * (1.0/log(dcrit))
         pft$b2Bs.small[ipft] = C2B * b2d + c2d * pft$b2Ht[ipft] + aux

         aux                  = ( (a2d - a1) + log(pft$hgt.max[ipft]) * (c2d - c1d)
                                + log(pft$rho[ipft]) * (d2d - d1d)) * (1.0/log(dcrit))
         pft$b2Bs.large[ipft] = C2B * b2d + aux

      }else if (iallom %in% c(1)){
         #---- Based on modified Chave et al. (2001) allometry. ---------------------------#
         pft$b1Bs.small[ipft] = C2B * exp(odead.small[1]) * pft$rho[ipft] / odead.small[3]
         pft$b2Bs.small[ipft] = odead.small[2]
         pft$b1Bs.large[ipft] = C2B * exp(odead.large[1]) * pft$rho[ipft] / odead.large[3]
         pft$b2Bs.large[ipft] = odead.large[2]
      }else if (iallom %in% c(2,3)){
         #---- Based an alternative modification of Chave et al. (2001) allometry. --------#
         pft$b1Bs.small[ipft] = C2B * exp(ndead.small[1]) * pft$rho[ipft] / ndead.small[3]
         pft$b2Bs.small[ipft] = ndead.small[2]
         pft$b1Bs.large[ipft] = C2B * exp(ndead.large[1]) * pft$rho[ipft] / ndead.large[3]
         pft$b2Bs.large[ipft] = ndead.large[2]
      }#end if
      #------------------------------------------------------------------------------------#
       pft$b1Bs.small[17] = 0.2749
       pft$b1Bs.large[17] = pft$b1Bs.small[17]
       pft$b2Bs.small[17] = 2.69373
       pft$b2Bs.large[17] = pft$b2Bs.small[17]

       pft$b1Bl.small[17] = pft$b1Bl.small[2]
       pft$b2Bl.small[17] = pft$b2Bl.small[2]
       pft$b1Bl.large[17] = 0.0856
       pft$b2Bl.large[17] = 2.0

      #------------------------------------------------------------------------------------#
      #      Replace the coefficients if we are going to use Poorter et al. (2006)         #
      # parameters for crown area.                                                         #
      #------------------------------------------------------------------------------------#
      if (iallom %in% c(0,1)){
         pft$b1Ca[ipft] = exp(-1.853) * exp(pft$b1Ht[ipft]) ^ 1.888
         pft$b2Ca[ipft] = pft$b2Ht[ipft] * 1.888
      }else if (iallom %in% c(2,3)){
         pft$b1Ca[ipft] = exp(ncrown.area[1])
         pft$b2Ca[ipft] = ncrown.area[2]
      }#end if
     pft$b2Ca[17] = 1.26254364
      #------------------------------------------------------------------------------------#



      #------------------------------------------------------------------------------------#
      #     Replace the coefficients for WAI in case iallom is 3.                          #
      #  These numbers come from fitting Chambers et al. (2001) and Chambers et al. (2004) #
      #  allometries for stem area index.                                                  #
      #------------------------------------------------------------------------------------#
      if (iallom %in% c(3)){
         pft$b1WAI[ipft] = 0.11 * pft$SLA[ipft] * pft$b1Bl.large[ipft]
         pft$b2WAI[ipft] = pft$b2Bl.large[ipft]
      }#end if
      #------------------------------------------------------------------------------------#
   }else{
      pft$bleaf.adult[ipft] = ( pft$b1Bl.large[ipft] / C2B
                              * pft$dbh.adult [ipft] ^ pft$b2Bl.large[ipft] )
   }#end if (pft$tropical[ipft])
   #---------------------------------------------------------------------------------------#
}#end for (ipft in sequence(npft))
#------------------------------------------------------------------------------------------#



#------------------------------------------------------------------------------------------#
#    Rooting depth coefficients.                                                                               #
#------------------------------------------------------------------------------------------#
pft$b1Rd = rep(NA,times=npft+1)
if (iallom %in% c(0)){
   #----- Original ED-2.1 scheme, based on standing volume. -------------------------------#
   pft$b1Rd[ 1:17] = NA
   pft$b1Rd[    1] = -0.700
   pft$b1Rd[  2:4] = -exp(0.545 * log(10.))
   pft$b1Rd[    5] = -0.700
   pft$b1Rd[ 6:11] = -exp(0.545 * log(10.))
   pft$b1Rd[12:16] = -0.700
   pft$b1Rd[   17] = -exp(0.545 * log(10.))
   pft$b2Rd[ 1:17] = NA
   pft$b2Rd[    1] = 0.000
   pft$b2Rd[  2:4] = 0.277
   pft$b2Rd[    5] = 0.000
   pft$b2Rd[ 6:11] = 0.277
   pft$b2Rd[12:16] = 0.000
   pft$b2Rd[   17] = 0.277

}else if (iallom %in% c(1,2,3)){
   #----- Simple allometry (0.5 m for seedlings, 5.0m for 35-m trees. ---------------------#
   pft$b1Rd[1:17]  = -1.1140580
   pft$b2Rd[1:17]  =  0.4223014

}#end if
#------------------------------------------------------------------------------------------#


#------------------------------------------------------------------------------------------#
#    Minimum bleaf and leaf area index that is resolvable.                                 #
#------------------------------------------------------------------------------------------#
pft$bleaf.min = c(dbh2bl(dbh=pft$dbh.min[1:npft],ipft=1:npft),NA)
pft$lai.min   = onesixth * pft$init.dens * pft$bleaf.min * pft$SLA
#------------------------------------------------------------------------------------------#
pft$dbh.min[c(2,3,4)]=10.0
pft$dbh.min[17]=2.0

#----- Make it global. --------------------------------------------------------------------#
pft <<- pft
#------------------------------------------------------------------------------------------#
manfredo89/ED2io documentation built on May 21, 2019, 11:24 a.m.