Disturbance functions

FireDisturbance(
  cohortData = copy(sim$cohortData),
  cohortDefinitionCols = c("pixelGroup", "age", "speciesCode"),
  calibrate = FALSE,
  postFireRegenSummary = copy(sim$postFireRegenSummary),
  treedFirePixelTableSinceLastDisp = sim$treedFirePixelTableSinceLastDisp,
  rstCurrentBurn = sim$rstCurrentBurn,
  inactivePixelIndex = sim$inactivePixelIndex,
  pixelGroupMap = sim$pixelGroupMap,
  currentTime = NULL,
  rasterToMatch = sim$rasterToMatch,
  species = copy(sim$species),
  sufficientLight = copy(sim$sufficientLight),
  speciesEcoregion = copy(sim$speciesEcoregion),
  initialB = 10,
  successionTimestep = 10L,
  doAssertion = getOption("LandR.assertions", TRUE),
  verbose = getOption("LandR.verbose", TRUE)
)

FireDisturbancePM(
  cohortData = copy(sim$cohortData),
  cohortDefinitionCols = c("pixelGroup", "age", "speciesCode"),
  colsForPixelGroups = LandR::columnsForPixelGroups,
  calibrate = FALSE,
  LANDISPM = TRUE,
  postFireRegenSummary = copy(sim$postFireRegenSummary),
  treedFirePixelTableSinceLastDisp = copy(sim$treedFirePixelTableSinceLastDisp),
  rstCurrentBurn = sim$rstCurrentBurn,
  inactivePixelIndex = sim$inactivePixelIndex,
  pixelGroupMap = sim$pixelGroupMap,
  currentTime = NULL,
  rasterToMatch = sim$rasterToMatch,
  fireDamageTable = copy(sim$fireDamageTable),
  fireRSORas = sim$fireRSORas,
  fireROSRas = sim$fireROSRas,
  fireCFBRas = sim$fireCFBRas,
  species = copy(sim$species),
  sufficientLight = copy(sim$sufficientLight),
  speciesEcoregion = copy(sim$speciesEcoregion),
  initialB = 10,
  minRelativeB = copy(sim$minRelativeB),
  successionTimestep = 10L,
  doAssertion = getOption("LandR.assertions", TRUE),
  verbose = getOption("LandR.verbose", TRUE)
)

PeatlandThermokarst(
  thawedPixIDs = copy(sim$thawedPixIDs),
  treedThawedPixelTableSinceLastDisp = copy(sim$treedThawedPixelTableSinceLastDisp),
  wetlands = sim$wetlands,
  cohortData = copy(sim$cohortData),
  pixelGroupMap = sim$pixelGroupMap,
  rasterToMatch = sim$rasterToMatch,
  species = copy(sim$species),
  speciesEcoregion = copy(sim$speciesEcoregion),
  cohortDefinitionCols = c("pixelGroup", "speciesCode", "age"),
  initialB = 10L,
  inactivePixelIndex = sim$inactivePixelIndex,
  currentTime = NULL,
  successionTimestep = 10L
)

Arguments

cohortData

A data.table with columns: pixelGroup, ecoregionGroup, speciesCode, and optionally age, B, mortality, aNPPAct, and sumB.

cohortDefinitionCols

the columns in cohortData that define unique cohorts

calibrate

logical. Determines whether to output postFirePixelCohortData. Defaults to FALSE

postFireRegenSummary

a data.table summarizing for which species serotiny/resprouting were activated and in how many pixels, for each year. Only necessary if calibrate = TRUE.

treedFirePixelTableSinceLastDisp

data.table with 3 columns: pixelIndex, pixelGroup, and burnTime. Each row represents a forested pixel that was burned up to and including this year, since last dispersal event, with its corresponding pixelGroup and time it occurred Pixel group IDs correspond to the last year's pixelGroupMap and not necessarily the pixelGroupMap of the burnTime year.

rstCurrentBurn

raster layer with burnt pixels in currentTime. Usually generated by a fire spread module (or collection of modules) like fireSense. Values in the raster should contain 0's for unburnt pixels and values > 0 for burn pixels. NA's are assumed to be outside of the study area.

inactivePixelIndex

an internal object to Biomass_core that track of inactive pixels.

pixelGroupMap

A RasterLayer with pixel values equal to a pixel group number that corresponds exactly to pixelGroup column in cohortData.

currentTime

numeric. Current simulation time step (as in time(sim))

rasterToMatch

A RasterLayer objects to use as the template for all subsequent raster operations (i.e., the one used throughout the simulation).

species

a data.table with species traits such as longevity, shade tolerance, etc. Must have column speciesCode, with species names/IDs. The following is a list of default trait columns:

  • "species" same as "speciesCode" -- species ID name

  • "speciesCode"

  • "Area" -- inherited from LANDIS-II default table, the Canadian ecoregion from which traits where derived. Not used during the simulation

  • "firetolerance" -- modulerelative (to other species) fire tolerance

  • "growthcurve" and "mortalityshape" -- growth curve shape parameters.

  • "longevity" -- maximum species age

  • "postfireregen" -- post-fire regeneration strategy ("serotiny", "resprout" or "none")

  • "resproutprob" -- probability of resprouting

  • "resproutage_min" -- minimum age at which species is capable of resprouting

  • "resproutage_max" -- maximum age at which species is capable of resprouting

  • "seeddistance_eff" -- effective dispersal distance

  • "seeddistance_max" -- maximum dispersal distance

  • "shadetolerance" -- relative (to other species) shade tolerance

  • "sexualmature" -- age at sexual maturity Known optional parameters added/needed by some modules (the user may add others for their own modules):

  • "inflationFactor" -- Biomass_speciesParameters module: inflation factor for maxB

  • "growthCurveSource" -- Biomass_speciesParameters module: how "growthcurve" was estimated

  • "mANPPproportion" -- Biomass_speciesParameters module: multiplication factor to calculate maxANPP from maxB

  • "thermokarsttol" -- Biomass_disturbances module: proportion of biomass surviving after thermokarst (i.e. permafrost thaw). Applied equally across cohorts. Parameters inherited from LANDIS-II default table, but not used in LandR at the moment:

  • "leaflongevity"

  • "wooddecayrate"

  • "leafLignin"

  • "hardsoft" Please see the LANDIS-II Biomass Succession Extension v3.2.1 manual (Scheller and Miranda 2015) for further detail.

sufficientLight

a data.frame (not data.table!) containing probability of establishment, given a site's light conditions (X0-X5) for each level of a species shade tolerance (1-5).

speciesEcoregion

A data.table with species-ecoregion-specific species trait values. Ecoregion refers to "ecolocation", a categorical variable grouping sites with similar biophysical characteristics. The table should have at least the following columns: speciesCode and ecoregionGroup, character representation of species and ecoregion groups respectively, maxB the maximum biomass for the species in a given 'ecoregion', maxANPP the maximum aboveground net primary productivity and SEP the species establishment probability. May contain columns inflationFactor (used to adjust maxB) and mANPPproportion (used to calculate maxANPP).

initialB

the initial biomass of new cohorts. Defaults to 10. If NULL or NA, initial cohort biomass is calculated as in LANDIS-II Biomass Succession Extension v3.2.1 (Scheller & Miranda, 2015):

initialB = asInteger(pmin(maxANPP, asInteger(pmax(1, maxANPP \* exp(-1.6 \* sumB / maxB_eco)))))

where maxANPP and maxB_eco are the maximum ANPP and B parameters of the species in question within the pixel's ecolocation, and sumB is the total stand biomass excluding cohorts with ages less than successionTimestep.

successionTimestep

The time between successive seed dispersal events. In LANDIS-II, this is called "Succession Timestep".

doAssertion

A logical indicating whether some internal tests should be run to ensure the function is running correctly. Default: getOption("LandR.assertions", TRUE).

verbose

Controls message output. Defaults to getOption("LandR.verbose")

colsForPixelGroups

character. cohortData columns used to find identical pixels in terms of cohort composition, and group them into pixelGroups.

LANDISPM

logical. Should partial mortality be calculated as in LANDIS-II Dynamic Fire System v3.0. Must be TRUE for the time being.

fireDamageTable

data.table defining upper age limit of cohorts killed by fire. See LANDIS-II Dynamic Fire System v3.0 Manual for an example.

fireRSORas

raster layer of critical spread rate for crowning (m/min) for each burned pixel. If not provided dummy values are used.

fireROSRas

raster layer of equilibrium rate of spread (m/min) for each burned pixel. If not provided dummy values are used.

fireCFBRas

raster layer of crown fraction burnt for each burned pixel. If not provided dummy values are used.

minRelativeB

a data.frame with the cut points to classify stand shadiness.

thawedPixIDs

integer. Vector of pixel IDs than underwent thermokarst (and were converted to wetlands) in the current year (not the last thermokarst event).

treedThawedPixelTableSinceLastDisp

data.table with 3 columns: pixelIndex, pixelGroup, and burnTime. Each row represents a forested pixel that was burned up to and including this year, since last dispersal event, with its corresponding pixelGroup and time it occurred Pixel group IDs correspond to the last year's pixelGroupMap and not necessarily the pixelGroupMap of the burnTime year.

wetlands

binary SpatRaster with current wetland pixels.

Value

a list of objects to be exported to sim:

  • cohortData

  • pixelGroupMap

  • lastFireYear

  • treedFirePixelTableSinceLastDisp

  • serotinyResproutSuccessPixels

  • severityBMap

  • severityData

  • postFireRegenSummary (if calibrate == TRUE and !is.null(postFireRegenSummary))

Stand-replacing fire disturbances

FireDisturbance() simulates post-fire mortality, serotiny and regeneration sequentially occurring after a fire. Post-fire mortality is assumed to be 100% (stand-replacement). The serotiny and regeneration algorithms are based on those in LANDIS-II Biomass Succession extension, v3.2.1, with modifications Requires the following objects in sim (passed as sim$*): @template FireDisturbance. For any given burnt pixel, the function begins by killing all cohorts (i.e. removing them from cohortData). Then it activates serotiny for serotinous species that had been present pre-fire, and reprouting for reprouter species. Whether a species successfully regenerates via serotiny or resprouting depends on its traits (whether it is serotinous, resprouter, both or none; species table), pre-fire cohort age (in cohortData table), its light/shade requirements (species table) and its local maxB (speciesEcoregion) table (see Scheller & Miranda, 2015 and Scheller & Mladenoff, 2004 for details). Unlike in LANDIS-II Biomass Succession extension, v3.2.1, here we allow serotiny and resprouting to occur in the same pixel to reflect the competitive advantage of reprouters. However, for a given species only serotiny (takes precedence) or resprouting can be activated. The species table must contain the columns:

  • sexualmature -- age at sexual maturity

  • postfireregen -- post-fire regeneration strategy ("serotiny", "resprout" or "none")

  • shadetolerance -- shade tolerance value relative to other species.

  • resproutage_min, resproutage_max -- minimum and maximum age at which species can repsrout

  • resproutprob -- probability of resporuting success (before light/shade suitability is assessed)

Partial severity (i.e. mortality) fire disturbances

FireDisturbancePM() simulates partial post-fire mortality, serotiny and regeneration sequentially after a fire. The level of mortality depends of fire severity, and, by default, follows the mechanisms in LANDIS-II Dynamic Fire System v3.0. Serotiny and regeneration algorithms algorithms are based on those in LANDIS-II Biomass Succession extension, v3.2.1, with modifications (see FireDisturbance()). Requires the following objects in sim (and passed as sim$*): @template FireDisturbance

  • fireDamageTable

  • fireRSORas (Critical spread rate for crowning)

  • fireROSRas (Equilibrium Head Fire Rate of Spread)

  • fireCFBRas (Crown Fraction Burnt)

  • minRelativeB Rasters of fire behaviour properties (fireRSORas, fireROSRas and fireCFBRas) can be calculated using the cffdrs package. The species table must contain the columns:

  • firetolerance -- fire tolerance value relative to other species.

  • longevity -- maximum species age

  • sexualmature -- age at sexual maturity

  • postfireregen -- post-fire regeneration strategy ("serotiny", "resprout" or "none")

  • shadetolerance -- shade tolerance value relative to other species.

  • resproutage_min, resproutage_max -- minimum and maximum age at which species can repsrout

  • resproutprob -- probability of resporuting success (before light/shade suitability is assessed)

Peatland permafrost degradation (thermokarst) disturbances

PeatlandThermokarst() simulates tree cohort survival/mortality after peatland permafrost thermokarst. The level of mortality depends on species tolerance to thermokarst, determined by the thermokarsttol trait column in the species traits table. At the moment, this level of tolerance is used as the proportion of a cohort biomass that survives (is kept) when a pixel undergoes thermokarst. This is similar to the partial disturbance effects used in LANDIS-II Biomass Harvest v4.0. Requires the following objects in sim (and passed as sim$*):

  • thawedPixIDs

  • treedThawedPixelTableSinceLastDisp

  • wetlands

  • cohortData

  • pixelGroupMap

  • rasterToMatch

  • species

  • speciesEcoregion

  • inactivePixelIndex The species table must contain the columns:

  • thermokarsttol -- proportion of cohort biomass (B) that survives thermokarst

References

Scheller, R.M. & Miranda, B.R. (2015). LANDIS-II Biomass Succession v3.2 Extension – User Guide.

Scheller, R.M. & Mladenoff, D.J. (2004). A forest growth and biomass module for a landscape simulation model, LANDIS: design, validation, and application. Ecological Modelling, 180, 211–229.

Sturtevant, B.R., Miranda, B.R., Scheller, R.M. & Shinneman, D. (2018). LANDIS-II Dynamic Fire System Extension v3.0 – User Guide.

Scheller, R.M. & Domingo, J.B. (2021). LANDIS-II Biomass Harvest v4.4 Extension – User Guide