Function spwb()
is a water balance model that determines changes in soil moisture,
soil water potentials, plant transpiration and drought stress at daily steps for a given forest stand
during a period specified in the input climatic data. Function pwb()
performs plant water balance
only (i.e. soil moisture dynamics is an input) at daily steps for a given forest stand
during a period specified in the input climatic data. On both simulation functions plant transpiration
and photosynthesis processes are conducted with different level of detail depending on the transpiration mode.
spwb(
x,
meteo,
latitude,
elevation = NA_real_,
slope = NA_real_,
aspect = NA_real_,
CO2ByYear = numeric(0)
)pwb(
x,
meteo,
W,
latitude,
elevation = NA_real_,
slope = NA_real_,
aspect = NA_real_,
canopyEvaporation = numeric(0),
snowMelt = numeric(0),
soilEvaporation = numeric(0),
CO2ByYear = numeric(0)
)
Function spwb
returns a list of class 'spwb' whereas Function pwb
returns a list of class 'pwb'.
There are many elements in common in these lists, so they are listed here together:
"latitude"
: Latitude (in degrees) given as input.
"topography"
: Vector with elevation, slope and aspect given as input.
"weather"
: A copy of the input weather data frame.
"spwbInput"
: An copy of the object x
of class spwbInput
given as input.
"spwbOutput"
: An copy of the final state of the object x
of class spwbInput
.
"WaterBalance"
: A data frame where different variables (in columns) are given for each simulated day (in rows):
"PET"
: Potential evapotranspiration (in mm).
"Precipitation"
: Input precipitation (in mm).
"Rain"
: Precipitation as rain (in mm).
"Snow"
: Precipitation as snow (in mm).
"NetRain"
: Net rain, after accounting for interception (in mm).
"Infiltration"
: The amount of water infiltrating into the soil (in mm).
"Runoff"
: The amount of water exported via surface runoff (in mm).
"DeepDrainage"
: The amount of water exported via deep drainage (in mm).
"Evapotranspiration"
: Evapotranspiration (in mm).
"SoilEvaporation"
: Bare soil evaporation (in mm).
"PlantExtraction"
: Amount of water extracted from soil by plants (in mm) (can only be different from transpiration for transpirationMode = "Sperry"
when capacitance is considered).
"Transpiration"
: Plant transpiration (considering all soil layers) (in mm).
"HydraulicRedistribution"
: Water redistributed among soil layers, transported through the plant hydraulic network (only for transpirationMode = "Sperry"
).
"EnergyBalance"
: A data frame with the daily values of energy balance components for the soil and the canopy (only for transpirationMode = "Sperry"
).
"Temperature"
: A data frame with the daily values of minimum/mean/maximum temperatures for the atmosphere (input), canopy and soil (only for transpirationMode = "Sperry"
).
"Soil"
: A data frame where different variables (in columns) are given for each simulated day (in rows):
"W.1"
, ...
, "W.k"
: Relative soil moisture content (relative to field capacity) in each soil layer.
"ML.1"
, ...
, "ML.k"
: Soil water volume in each soil layer (in L/m2).
"MLTot"
: Total soil water volume (in L/m2).
"SWE"
: Snow water equivalent (mm) of the snow pack.
"PlantExt.1"
, ...
, "PlantExt.k"
: Plant extraction from each soil layer (in mm).
"HydraulicInput.1"
, ...
, "HydraulicInput.k"
: Water that entered the layer coming from other layers and transported via the plant hydraulic network (in mm) (only for transpirationMode = "Sperry"
).
"psi.1"
, ...
, "psi.k"
: Soil water potential in each soil layer (in MPa).
"Stand"
: A data frame where different variables (in columns) are given for each simulated day (in rows):
"LAI"
: LAI of the stand (including live and dead leaves) (in m2/m2).
"LAIlive"
: LAI of the stand assuming all leaves are unfolded (in m2/m2).
"LAIexpanded"
: LAI of the stand of leaves actually unfolded (in m2/m2).
"LAIdead"
: LAI of the stand corresponding to dead leaves (in m2/m2).
"Cm"
: Water retention capacity of the canopy (in mm) (accounting for leaf phenology).
"LgroundPAR"
: The percentage of PAR that reaches the ground (accounting for leaf phenology).
"LgroundSWR"
: The percentage of SWR that reaches the ground (accounting for leaf phenology).
"Plants"
: A list of daily results for plant cohorts (see below).
"subdaily"
: A list of objects of class spwb_day
, one per day simulated (only if required in control
parameters, see defaultControl
).
When transpirationMode = "Granier"
, element "Plants"
is a list with the following subelements:
"LAI"
: A data frame with the daily leaf area index for each plant cohort.
"LAIlive"
: A data frame with the daily leaf area index for each plant cohort, assuming all leaves are unfolded (in m2/m2).
"FPAR"
: A data frame with the fraction of PAR at the canopy level of each plant cohort.
"AbsorbedSWRFraction"
: A data frame with the fraction of SWR absorbed by each plant cohort.
"Transpiration"
: A data frame with the amount of daily transpiration (in mm) for each plant cohort.
"GrossPhotosynthesis"
: A data frame with the amount of daily gross photosynthesis (in g C·m-2) for each plant cohort.
"PlantPsi"
: A data frame with the average daily water potential of each plant (in MPa).
"StemPLC"
: A data frame with the average daily proportion of stem conductance loss of each plant ([0-1]).
"PlantWaterBalance"
: A data frame with the daily balance between transpiration and soil water extraction for each plant cohort.
"LeafRWC"
: A data frame with the average daily leaf relative water content of each plant (in percent).
"StemRWC"
: A data frame with the average daily stem relative water content of each plant (in percent).
"LFMC"
: A data frame with the daily live fuel moisture content (in percent of dry weight).
"PlantStress"
: A data frame with the amount of daily stress [0-1] suffered by each plant cohort (relative whole-plant conductance).
If transpirationMode="Sperry"
, element "Plants"
is a list with the following subelements:
"LAI"
: A data frame with the daily leaf area index for each plant cohort.
"AbsorbedSWR"
: A data frame with the daily SWR absorbed by each plant cohort.
"NetLWR"
: A data frame with the daily net LWR by each plant cohort.
"Transpiration"
: A data frame with the amount of daily transpiration (in mm) for each plant cohorts.
"GrossPhotosynthesis"
: A data frame with the amount of daily gross photosynthesis (in g C·m-2) for each plant cohort.
"NetPhotosynthesis"
: A data frame with the amount of daily net photosynthesis (in g C·m-2) for each plant cohort.
"dEdP"
: A data frame with mean daily values of soil-plant conductance (derivative of the supply function) for each plant cohort.
"PlantWaterBalance"
: A data frame with the daily balance between transpiration and soil water extraction for each plant cohort.
"SunlitLeaves"
and "ShadeLeaves"
: A list with daily results for sunlit and shade leaves:
"PsiMin"
: A data frame with the minimum (midday) daily sunlit or shade leaf water potential (in MPa).
"PsiMax"
: A data frame with the maximum (predawn) daily sunlit or shade leaf water potential (in MPa).
"LeafPsiMin"
: A data frame with the minimum (midday) daily (average) leaf water potential of each plant (in MPa).
"LeafPsiMax"
: A data frame with the maximum (predawn) daily (average) leaf water potential of each plant (in MPa).
"LeafRWC"
: A data frame with the average daily leaf relative water content of each plant (in percent).
"StemRWC"
: A data frame with the average daily stem relative water content of each plant (in percent).
"LFMC"
: A data frame with the daily live fuel moisture content (in percent of dry weight).
"StemPsi"
: A data frame with the minimum daily stem water potential of each plant (in MPa).
"StemPLC"
: A data frame with the average daily proportion of stem conductance loss of each plant ([0-1]).
"RootPsi"
: A data frame with the minimum daily root water potential of each plant (in MPa).
"RhizoPsi"
: A list of data frames (one per plant cohort) with the minimum daily root water potential of each plant (in MPa).
"PlantStress"
: A data frame with the amount of daily stress [0-1] suffered by each plant cohort (relative whole-plant conductance).
An object of class spwbInput
.
A data frame with daily meteorological data series. Row names of the data frame should correspond to date strings with format "yyyy-mm-dd" (see Date
).
The following columns are required:
MinTemperature
: Minimum temperature (in degrees Celsius).
MaxTemperature
: Maximum temperature (in degrees Celsius).
MinRelativeHumidity
: Minimum relative humidity (in percent).
MaxRelativeHumidity
: Maximum relative humidity (in percent).
Precipitation
: Precipitation (in mm).
Radiation
: Solar radiation (in MJ/m2/day), required only if snowpack = TRUE
.
WindSpeed
: Wind speed (in m/s). If not available, this column can be left with NA
values.
CO2
: Atmospheric (abovecanopy) CO2 concentration (in ppm). This column may not exist, or can be left with NA
values. In both cases simulations will assume a constant value specified in defaultControl
.
Latitude (in degrees).
Elevation above sea level (in m), slope (in degrees) and aspect (in degrees from North). Required when using the 'Sperry' transpiration mode. Elevation is also required for 'Granier' if snowpack dynamics are simulated.
A named numeric vector with years as names and atmospheric CO2 concentration (in ppm) as values. Used to specify annual changes in CO2 concentration along the simulation (as an alternative to specifying daily values in meteo
).
A matrix with the same number of rows as meteo
and as many columns as soil layers, containing the soil moisture of each layer as proportion of field capacity.
A vector of daily canopy evaporation (from interception) values (mm). The length should match the number of rows in meteo
.
A vector of daily snow melt values (mm). The length should match the number of rows in meteo
.
A vector of daily bare soil evaporation values (mm). The length should match the number of rows in meteo
.
Miquel De Cáceres Ainsa, CREAF
The model using 'Granier' transpiration mode is illustrated by function transp_transpirationGranier
and described in De Caceres et al. (2015).
Simulations using the 'Sperry' transpiration mode are computationally much more expensive, are described in De Cáceres et al. (2021) and are illustrated by function transp_transpirationSperry
.
De Cáceres M, Martínez-Vilalta J, Coll L, Llorens P, Casals P, Poyatos R, Pausas JG, Brotons L. (2015) Coupling a water balance model with forest inventory data to predict drought stress: the role of forest structural changes vs. climate changes. Agricultural and Forest Meteorology 213: 77-90 (doi:10.1016/j.agrformet.2015.06.012).
De Cáceres M, Mencuccini M, Martin-StPaul N, Limousin JM, Coll L, Poyatos R, Cabon A, Granda V, Forner A, Valladares F, Martínez-Vilalta J (2021) Unravelling the effect of species mixing on water use and drought stress in holm oak forests: a modelling approach. Agricultural and Forest Meteorology 296 (doi:10.1016/j.agrformet.2020.108233).
spwbInput
, spwb_day
, plot.spwb
,
spwb_ldrOptimization
, forest
#Load example daily meteorological data
data(examplemeteo)
#Load example plot plant data
data(exampleforestMED)
#Default species parameterization
data(SpParamsMED)
#Initialize soil with default soil params (4 layers)
examplesoil = soil(defaultSoilParams(4))
#Initialize control parameters
control = defaultControl("Granier")
#Initialize input
x1 = forest2spwbInput(exampleforestMED,examplesoil, SpParamsMED, control)
#Call simulation function
S1<-spwb(x1, examplemeteo, latitude = 41.82592, elevation = 100)
#Plot results
plot(S1)
#Monthly summary (averages) of soil water balance
summary(S1, freq="months",FUN=mean, output="Soil")
# \donttest{
#Switch to 'Sperry' transpiration mode
control = defaultControl("Sperry")
#Initialize input
x2 = forest2spwbInput(exampleforestMED,examplesoil, SpParamsMED, control)
#Call simulation function
S2<-spwb(x2, examplemeteo, latitude = 41.82592, elevation = 100)
# Run the model with 'Sperry' transpiration mode using the water balance of
# simulated with the 'Granier' model
WS = as.matrix(S1$Soil[, c("W.1", "W.2", "W.3", "W.4")])
P2<-pwb(x2, examplemeteo, latitude = 41.82592, elevation = 100,
W = WS,
canopyEvaporation = S1$WaterBalance$Interception,
snowMelt = S1$WaterBalance$Snowmelt,
soilEvaporation = S1$WaterBalance$SoilEvaporation)
# }
Run the code above in your browser using DataLab