View source: R/sw_Vegetation.R
estimate_PotNatVeg_composition | R Documentation |
The function returns relative abundance/land cover values that completely cover the surface (i.e., they sum to 1) of a site specified by climate and/or fixed input values.
estimate_PotNatVeg_composition(
MAP_mm,
MAT_C,
mean_monthly_ppt_mm,
mean_monthly_Temp_C,
dailyC4vars = NULL,
isNorth = TRUE,
shrub_limit = 0.2,
fix_succulents = FALSE,
Succulents_Fraction = NA,
fix_sumgrasses = FALSE,
SumGrasses_Fraction = NA,
fix_annuals = TRUE,
Annuals_Fraction = 0,
fix_C4grasses = FALSE,
C4_Fraction = NA,
fix_C3grasses = FALSE,
C3_Fraction = NA,
fix_shrubs = FALSE,
Shrubs_Fraction = NA,
fix_forbs = FALSE,
Forbs_Fraction = NA,
fix_trees = TRUE,
Trees_Fraction = 0,
fix_BareGround = TRUE,
BareGround_Fraction = 0,
fill_empty_with_BareGround = TRUE,
warn_extrapolation = TRUE
)
MAP_mm |
A numeric value. Mean annual precipitation in millimeter. |
MAT_C |
A numeric value. Mean annual temperature in degree Celsius. |
mean_monthly_ppt_mm |
A numeric vector of length 12. Mean monthly precipitation in millimeter. |
mean_monthly_Temp_C |
A numeric vector of length 12. Mean monthly temperature in degree Celsius. |
dailyC4vars |
A named list of length 3 or
|
isNorth |
A logical value. |
shrub_limit |
A numeric value. Default value is 0.2 based on page 1213 of Paruelo & Lauenroth 1996. |
fix_succulents |
A logical value. If |
Succulents_Fraction |
A numeric value between 0 and 1. |
fix_sumgrasses |
A logical value. If |
SumGrasses_Fraction |
A numeric value between 0 and 1.
|
fix_annuals |
A logical value. If |
Annuals_Fraction |
A numeric value between 0 and 1. Default value is 0. |
fix_C4grasses |
A logical value. If |
C4_Fraction |
A numeric value between 0 and 1. |
fix_C3grasses |
A logical value. If |
C3_Fraction |
A numeric value between 0 and 1. |
fix_shrubs |
A logical value. If |
Shrubs_Fraction |
A numeric value between 0 and 1. |
fix_forbs |
A logical value. If |
Forbs_Fraction |
A numeric value between 0 and 1. Default value is 0. |
fix_trees |
A logical value. If |
Trees_Fraction |
A numeric value between 0 and 1. Default value is 0. |
fix_BareGround |
A logical value. If |
BareGround_Fraction |
A numeric value between 0 and 1. Default value is 0. |
fill_empty_with_BareGround |
A logical value. If |
warn_extrapolation |
A logical value. If |
A list with three named numeric vectors.
A numeric vector of length 8 with relative abundance/cover [0-1] values of land cover types that sum to 1. The names of the 8 types are: Succulents, Forbs, Grasses_C3, Grasses_C4, Grasses_Annuals, Shrubs, Trees, BareGround.
A numeric vector of length 5 with relative abundance/cover [0-1] values of rSOILWAT2 land cover types that sum to 1. The names of the 5 types are: SW_TREES, SW_SHRUBS, SW_FORBS, SW_GRASS, and SW_BAREGROUND.
A numeric vector of length 3 with relative abundance/cover [0-1] values of the grass types that sum to 1, if there is any grass cover; otherwise, the values are 0. The names of the 3 sub-types are: Grasses_C3, Grasses_C4, and Grasses_Annuals.
Some of the land cover/vegetation types, i.e., trees, annual grasses, and bare-ground are not estimated from climate relationships; they are either set to 0, or alternatively fixed at the value of the input argument(s).
The remaining vegetation types, i.e., shrubs, C3 grasses,
C4 grasses, forbs, and succulents, are estimated from climate relationships
using equations developed by Paruelo & Lauenroth 1996, or alternatively
fixed at the value of the input argument(s). If values for
dailyC4vars
are provided, then equations developed by Teeri & Stowe
1976 are used to limit the occurrence of C4 grasses.
The relative abundance values of the the vegetation types that can be estimated and are not fixed by inputs, are estimated in two steps: (i) as if they cover the entire surface; (ii) scaled to the proportion of the surface that is not fixed by inputs.
The equations developed Paruelo & Lauenroth 1996 are based
on sites with MAT from 2 C to 21.2 C and MAP from 117 to
1011 mm. If warn_extrapolation
is set to TRUE
, then
inputs are checked against supported ranges, i.e., if MAT is below
1 C, then it is reset to 1 C with a warning. If other inputs exceed their
ranges, then a warning is issued and the code proceeds.
Paruelo J.M., Lauenroth W.K. (1996) Relative abundance of plant functional types in grasslands and shrublands of North America. Ecological Applications, 6, 1212-1224.
Teeri J.A., Stowe L.G. (1976) Climatic patterns and the distribution of C4 grasses in North America. Oecologia, 23, 1-12.
## Load weather dataset from rSOILWAT2
utils::data("weatherData", package = "rSOILWAT2")
clim1 <- calc_SiteClimate(weatherList = weatherData)
clim2 <- calc_SiteClimate(weatherList = weatherData, do_C4vars = TRUE)
## All estimable vegetation types are estimated:
estimate_PotNatVeg_composition(
MAP_mm = 10 * clim1[["MAP_cm"]],
MAT_C = clim1[["MAT_C"]],
mean_monthly_ppt_mm = 10 * clim1[["meanMonthlyPPTcm"]],
mean_monthly_Temp_C = clim1[["meanMonthlyTempC"]]
)
## Climate is outside supported range with MAT < 0 C:
estimate_PotNatVeg_composition(
MAP_mm = 10 * clim1[["MAP_cm"]],
MAT_C = clim1[["MAT_C"]] - clim1[["MAT_C"]],
mean_monthly_ppt_mm = 10 * clim1[["meanMonthlyPPTcm"]],
mean_monthly_Temp_C = clim1[["meanMonthlyTempC"]] - clim1[["MAT_C"]]
)
## Some land cover types are fixed and others are estimated, and
## the C4-grass adjustment is used:
estimate_PotNatVeg_composition(
MAP_mm = 10 * clim2[["MAP_cm"]],
MAT_C = clim2[["MAT_C"]],
mean_monthly_ppt_mm = 10 * clim2[["meanMonthlyPPTcm"]],
mean_monthly_Temp_C = clim2[["meanMonthlyTempC"]],
dailyC4vars = clim2[["dailyC4vars"]],
fix_shrubs = TRUE, Shrubs_Fraction = 0.5,
fix_BareGround = TRUE, BareGround_Fraction = 0.25
)
## Fix total grass cover and annual grass cover,
## but estimate relative proportions of C3 and C4 grasses:
estimate_PotNatVeg_composition(
MAP_mm = 10 * clim2[["MAP_cm"]],
MAT_C = clim2[["MAT_C"]],
mean_monthly_ppt_mm = 10 * clim2[["meanMonthlyPPTcm"]],
mean_monthly_Temp_C = clim2[["meanMonthlyTempC"]],
dailyC4vars = clim2[["dailyC4vars"]],
fix_sumgrasses = TRUE,
SumGrasses_Fraction = 0.8,
fix_annuals = TRUE,
Annuals_Fraction = 0.3
)
## SOILWAT2 uses the same algorithm internally if requested to do so
# Obtain cover values from SOILWAT2 output
swin <- rSOILWAT2::sw_exampleData
swin@prod@veg_method <- 1L
swout <- sw_exec(swin)
tmp <- slot(slot(swout, "BIOMASS"), "Year")
pnvsim <- tmp[1, grep("fCover", colnames(tmp)), drop = TRUE]
# Directly calculate cover values
climex <- calc_SiteClimate(weatherList = get_WeatherHistory(swin))
pnvex <- estimate_PotNatVeg_composition(
MAP_mm = 10 * climex[["MAP_cm"]],
MAT_C = climex[["MAT_C"]],
mean_monthly_ppt_mm = 10 * climex[["meanMonthlyPPTcm"]],
mean_monthly_Temp_C = climex[["meanMonthlyTempC"]]
)[["Rel_Abundance_L1"]]
# They are identical
identical(pnvsim[["fCover_shrub"]], pnvex[["SW_SHRUB"]])
identical(pnvsim[["fCover_grass"]], pnvex[["SW_GRASS"]])
identical(pnvsim[["fCover_forbs"]], pnvex[["SW_FORBS"]])
identical(pnvsim[["fCover_tree"]], pnvex[["SW_TREES"]])
identical(pnvsim[["fCover_BareGround"]], pnvex[["SW_BAREGROUND"]])
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.