FATE
simulationR/PRE_FATE.params_PFGdisturbance.R
PRE_FATE.params_PFGdisturbance.Rd
This script is designed to create parameter files containing
response to disturbance parameters for each PFG (one file for each of them)
used in the disturbance module of FATE
.
PRE_FATE.params_PFGdisturbance(
name.simulation,
mat.PFG.dist = NULL,
mat.PFG.tol,
opt.folder.name = NULL
)
a string
corresponding to the main directory
or simulation name of the FATE
simulation
(optional)
a data.frame
with 5 columns : PFG
, type
, maturity
, longevity
,
age_above_150cm
(see
Details
)
a data.frame
with 3 to 7 columns :
nameDist
,
PFG
,
(responseStage
, breakAge
, resproutAge
),
responseStage
, killedIndiv
, resproutIndiv
(or strategy_tol
)
(see Details
)
(optional)
a string
corresponding
to the name of the folder that will be created into the
name.simulation/DATA/PFGS/DIST/
directory to store the results
A .txt
file per PFG into the
name.simulation/DATA/PFGS/DIST/
directory with the following
parameters :
ages at which the PFG changes of response stage (in years)
resprouting age table (in a single row)
This is a vector of no.DIST * no.responseStages
numbers
corresponding
to the age at which the PFG can be rejuvenated
(younger than the actual one) :
at different response stages (RS
)
for each disturbance (DI
).
These parameters should be given in this order (e.g. with 3 response
stages) : DI1_RS1, DI1_RS2, DI1_RS3, DI2_RS1...
(in
years).
disturbance response table (in a single row)
This is a vector of no.DIST * no.responseStages * 2
numbers
corresponding
to the proportion of individuals :
that will be killed (Ki
) or resprout
(Re
)
at different response stages (RS
)
for each disturbance (DI
).
These parameters should be given in this order (e.g. with 3 response
stages) : DI1_RS1_Ki, DI1_RS1_Re, DI1_RS2_Ki, DI1_RS2_Re,
DI1_RS3_Ki, DI1_RS3_Re, DI2_RS1_Ki...
(integer between 0
and 100
%).
proportion of propagules killed by each disturbance
(integer between 0
and 100
%)
proportion of seeds activated by each disturbance
(integer between 0
and 100
%)
A DIST_COMPLETE_TABLE.csv
file summarizing information for all
groups into the name.simulation/DATA/PFGS/
directory.
If the opt.folder.name
has been used, the files will be into the
folder name.simulation/DATA/PFGS/DIST/opt.folder.name/
.
The disturbance module allows the user to simulate spatial
perturbation(s) that will impact each PFG in terms of resprouting and
mortality at different response stages.
Several parameters, given within mat.PFG.dist
or mat.PFG.tol
,
are required for each PFG in order to set up these responses :
the concerned plant functional group
or life-form, based on Raunkier.
It should be
either H
(herbaceous), C
(chamaephyte) or P
(phanerophyte) for now
the age from which the PFG can reproduce
the maximum or average lifespan of the PFG
the age from which the PFG reaches 150 cm
(1000
otherwise)
the name of each perturbation (several can be defined at
the same time)
an integer
corresponding to the
concerned response class
the age from which the PFG is associated with this response class
the age at which the plants will grow back,
if they grow back
an integer
corresponding to the concerned
response class
an integer
between 0
and 100
corresponding to the proportion of killed individuals
an integer
between 0
and 100
corresponding to the proportion of resprouting individuals
a string
to choose the response to
disturbance strategy : indifferent
, mowing_herbs
,
mowing_trees
, grazing_herbs_1
, grazing_herbs_2
,
grazing_herbs_3
, grazing_trees_1
, grazing_trees_2
,
grazing_trees_3
These values will allow to calculate or define a set of characteristics for each PFG :
= each PFG can respond to a disturbance in several
different ways that depend on the PFG age
= ages at which each PFG changes of response stage
Two methods to define these ages are available :
from predefined rules (using type
,
maturity
, longevity
, age_above_150cm
) :
4 classes are defined that can be labelled as :
JustBorn
(1
), Juveniles (2
), Matures (3
),
Senescents (4
)
H (herbaceous) | C
(chamaephyte) or P (phanerophyte) | |
from class 1 to 2 | maturity - 2 | 1 |
from class 2 to 3 | maturity | min (maturity - 2 , age_above_150cm ) |
from class 3 to 4 | longevity - 2 | min (longevity - 2 , age_above_150cm ) |
Some corrections are made for short-living plants (annuals and biennials) :
as they die after 1 or 2 years, they are not affected differently according to life stages
break ages from class 1
to 3
are set to 1
,
and break age from 3
to 4
is set to their longevity
(1
or 2
)
from user data :
with the values contained within the breakAge
column,
if provided
= when subject to a perturbation, each PFG can either
stay undisturbed, be killed, or resprout at a particular age
(in years)
= ages at which each PFG will be rejuvenated by a disturbance
Two methods to define these ages are available :
from predefined rules (using maturity
,
longevity
, age_above_150cm
) :
classes 1
and 2
: too young to resprout
class 3
:
min
(maturity - 2 , age_above_150cm
)
class 4
: longevity - 2
short-living plants (annuals and biennials) always start back
at 0
from user data :
with the values contained within the resproutAge
column,
if provided
= proportion of killed and resprouting individuals
= for each disturbance and for each response stage
Two methods to define these tolerances are available :
from predefined scenarios (using
strategy_tol
) :
the values give the percentage of killed or resprouting individuals
with 1, 2, 3, 4
: response classes
with K
: killed individuals, R
: resprouting
individuals
| ___1___ | ___2___ | ___3___ | ___4___ |
| _K_ _R_ | _K_ _R_ | _K_ _R_ | _K_ _R_ |
_________________________________________
| _0_ _0_ | _0_ _0_ | _0_ _0_ | _0_ _0_ |
indifferent _________________________________________
| _0_ _0_ | _0_ _0_ | 50% 50% | 100% 0_ |
mowing_herbs | _0_ _0_ | 100% 0_ | 100% 0_ | 100% 0_ |
mowing_trees _________________________________________
| _0_ _0_ | 10% _0_ | _0_ 50% | _0_ 10% |
grazing_herbs_1 | _0_ _0_ | 50% _0_ | _0_ 80% | 10% 50% |
grazing_herbs_2 | _0_ _0_ | 90% _0_ | 10% 90% | 50% 50% |
grazing_herbs_3 _________________________________________
| 40% _0_ | _0_ _0_ | _0_ _0_ | _0_ _0_ |
grazing_trees_1 | 80% _0_ | _0_ _0_ | _0_ _0_ | _0_ _0_ |
grazing_trees_2 | 100% 0_ | 40% _0_ | _0_ _0_ | _0_ _0_ |
grazing_trees_3
from user data :
with the values contained within the responseStage
,
killedIndiv
and resproutIndiv
columns, if provided
The PFG
column can contain either the life form (H
,
C
or P
) or the PFG name. Both methods can be combined
(but are applied in the order given by the PFG
column).
= the proportion of propagules killed by each
disturbance
(currently set to 0
% for all PFG and disturbances)
= the proportion of seeds activated by each
disturbance
(currently set to 0
% for all PFG and disturbances)
## Create a skeleton folder with the default name ('FATE_simulation')
PRE_FATE.skeletonDirectory()
mat.char = data.frame(PFG = paste0('PFG', 1:6)
, type = c('C', 'C', 'H', 'H', 'P', 'P')
, maturity = c(5, 5, 3, 3, 8, 9)
, longevity = c(12, 200, 25, 4, 110, 70)
, age_above_150cm = c(1000, 100, 1000, 1000, 10, 12))
mat.tol = data.frame(nameDist = 'grazing'
, PFG = paste0('PFG', 1:6)
, strategy_tol = c('indifferent', 'grazing_herbs_1'
, 'grazing_herbs_1', 'grazing_herbs_2'
, 'indifferent', 'grazing_trees_2'))
## Create PFG response to disturbance parameter files (with PFG characteristics) -------------
PRE_FATE.params_PFGdisturbance(name.simulation = 'FATE_simulation'
, mat.PFG.dist = mat.char
, mat.PFG.tol = mat.tol)
## Create PFG response to disturbance parameter files (with all values) ----------------------
mat.tol = expand.grid(responseStage = 1:3
, PFG = paste0('PFG', 1:6)
, nameDist = 'Mowing')
mat.tol$breakAge = c(1, 4, 10
, 1, 4, 10
, 1, 2, 50
, 1, 2, 20
, 2, 6, 95
, 3, 8, 55)
mat.tol$resproutAge = c(0, 0, 4
, 0, 0, 4
, 0, 0, 2
, 0, 0, 2
, 0, 2, 5
, 0, 4, 7)
mat.tol$killedIndiv = c(100, 100, 50
, 100, 100, 50
, 100, 100, 50
, 100, 100, 50
, 100, 70, 40
, 100, 60, 30)
mat.tol$resproutIndiv = c(0, 0, 50
, 0, 0, 50
, 0, 0, 30
, 0, 0, 30
, 0, 10, 40
, 0, 20, 50)
str(mat.tol)
PRE_FATE.params_PFGdisturbance(name.simulation = 'FATE_simulation'
, mat.PFG.tol = mat.tol)
## -------------------------------------------------------------------------------------------
## Load example data
Champsaur_params = .loadData('Champsaur_params', 'RData')
## Create a skeleton folder
PRE_FATE.skeletonDirectory(name.simulation = 'FATE_Champsaur')
## PFG traits for succession
tab.succ = Champsaur_params$tab.SUCC
str(tab.succ)
## Create PFG succession parameter files (fixing strata limits) --------------
PRE_FATE.params_PFGsuccession(name.simulation = 'FATE_Champsaur'
, mat.PFG.succ = tab.succ
, strata.limits = c(0, 20, 50, 150, 400, 1000, 2000)
, strata.limits_reduce = FALSE)
require(data.table)
tmp = fread('FATE_Champsaur/DATA/PFGS/SUCC_COMPLETE_TABLE.csv')
tab.succ = Champsaur_params$tab.SUCC
tab.succ$age_above_150cm = tmp$CHANG_STR_AGES_to_str_4_150
tab.succ = tab.succ[, c('PFG', 'type', 'maturity', 'longevity', 'age_above_150cm')]
str(tab.succ)
## PFG traits for disturbance
tab.dist = Champsaur_params$tab.DIST
str(tab.dist)
## Create PFG response to disturbance parameter files (give warnings) ------------------------
PRE_FATE.params_PFGdisturbance(name.simulation = 'FATE_Champsaur'
, mat.PFG.dist = tab.succ
, mat.PFG.tol = tab.dist)