Learn R Programming

bigleaf (version 0.8.2)

stomatal.slope: Stomatal Slope Parameter "g1"

Description

Estimation of the intrinsic WUE metric "g1" (stomatal slope) from nonlinear regression.

Usage

stomatal.slope(
  data,
  Tair = "Tair",
  pressure = "pressure",
  GPP = "GPP",
  Gs = "Gs_mol",
  VPD = "VPD",
  Ca = "Ca",
  Rleaf = NULL,
  model = c("USO", "Ball&Berry", "Leuning"),
  robust.nls = FALSE,
  nmin = 40,
  fitg0 = FALSE,
  g0 = 0,
  fitD0 = FALSE,
  D0 = 1.5,
  Gamma = 50,
  missing.Rleaf.as.NA = FALSE,
  constants = bigleaf.constants(),
  ...
)

Value

A nls model object, containing information on the fitted parameters, their uncertainty range, model fit, etc.

Arguments

data

Data.frame or matrix containing all required columns

Tair

Air (or surface) temperature (deg C)

pressure

Atmospheric pressure (kPa)

GPP

Gross primary productivity (umol CO2 m-2 s-1)

Gs

Surface conductance to water vapor (mol m-2 s-1)

VPD

Vapor pressure deficit (kPa)

Ca

Atmospheric CO2 concentration (air or surface) (umol mol-1)

Rleaf

Ecosystem respiration stemming from leaves (umol CO2 m-2 s-1); defaults to 0

model

Stomatal model used. One of "USO","Ball&Berry","Leuning".

robust.nls

Use robust nonlinear regression (nlrob)? Default is FALSE.

nmin

Minimum number of data required to perform the fit; defaults to 40.

fitg0

Should g0 and g1 be fitted simultaneously?

g0

Minimum stomatal conductance (mol m-2 s-1); ignored if fitg0 = TRUE.

fitD0

Should D0 be fitted along with g1 (and g0 if fitg0 = TRUE)?; only used if model = "Leuning".

D0

Stomatal sensitivity parameter to VPD; only used if model = "Leuning" and fitD0 = FALSE.

Gamma

Canopy CO2 compensation point (umol mol-1); only used if model = "Leuning". Can be a constant or a variable. Defaults to 50 umol mol-1.

missing.Rleaf.as.NA

if Rleaf is provided, should missing values be treated as NA (TRUE) or set to 0 (FALSE, the default)?

constants

Kelvin - conversion degree Celsius to Kelvin
Rgas - universal gas constant (J mol-1 K-1)
DwDc - Ratio of the molecular diffusivities for water vapor and CO2

...

Additional arguments to nls or nlrob if robust.nls = TRUE.

Details

All stomatal models were developed at leaf-level, but its parameters can also be estimated at ecosystem level (but be aware of caveats).

The unified stomatal optimization (USO) model is given by (Medlyn et al. 2011):

$$gs = g0 + 1.6*(1.0 + g1/sqrt(VPD)) * An/ca$$

The semi-empirical model by Ball et al. 1987 is defined as:

$$gs = g0 + g1* ((An * rH) / ca)$$

Leuning 1995 suggested a revised version of the Ball&Berry model:

$$gs = g0 + g1*An / ((ca - \Gamma) * (1 + VPD/D0))$$

where \(\Gamma\) is by default assumed to be constant, but likely varies with temperature and among plant species. The equations above are valid at leaf-level. At ecosystem level, An is replaced by GPP (or GPP - Rleaf, where Rleaf is leaf respiration), and gs (stomatal conductance) by Gs (surface conductance). The parameters in the models are estimated using nonlinear regression (nls) if robust.nls = FALSE and weighted nonlinear regression if robust.nls = TRUE. The weights are calculated from nlrob, and nls is used for the actual fitting. Alternatively to measured VPD and Ca (i.e. conditions at instrument height), conditions at the big-leaf surface can be provided. Those can be calculated using surface.conditions.

References

Medlyn B.E., et al., 2011: Reconciling the optimal and empirical approaches to modelling stomatal conductance. Global Change Biology 17, 2134-2144.

Ball T.J., Woodrow I.E., Berry J.A. 1987: A model predicting stomatal conductance and its contribution to the control of photosynthesis under different environmental conditions. In: Progress in Photosynthesis Research, edited by J.Biggins, pp. 221-224, Martinus Nijhoff Publishers, Dordrecht, Netherlands.

Leuning R., 1995: A critical appraisal of a combined stomatal-photosynthesis model for C3 plants. Plant, Cell and Environment 18, 339-355.

Knauer, J. et al., 2018: Towards physiologically meaningful water-use efficiency estimates from eddy covariance data. Global Change Biology 24, 694-710.

See Also

surface.conductance

Examples

Run this code
## filter data to ensure that Gs is a meaningful proxy to canopy conductance (Gc)
DE_Tha_Jun_2014_2 <- filter.data(DE_Tha_Jun_2014,quality.control=FALSE,
                                 vars.qc=c("Tair","precip","VPD","H","LE"),
                                 filter.growseas=FALSE,filter.precip=TRUE,
                                 filter.vars=c("Tair","PPFD","ustar","LE"),
                                 filter.vals.min=c(5,200,0.2,0),
                                 filter.vals.max=c(NA,NA,NA,NA),NA.as.invalid=TRUE,
                                 quality.ext="_qc",good.quality=c(0,1),
                                 missing.qc.as.bad=TRUE,GPP="GPP",doy="doy",
                                 year="year",tGPP=0.5,ws=15,min.int=5,precip="precip",
                                 tprecip=0.1,precip.hours=24,records.per.hour=2)

# calculate Gs from the the inverted PM equation
Ga <- aerodynamic.conductance(DE_Tha_Jun_2014_2,Rb_model="Thom_1972")[,"Ga_h"]

# if G and/or S are available, don't forget to indicate (they are ignored by default).
Gs_PM <- surface.conductance(DE_Tha_Jun_2014_2,Tair="Tair",pressure="pressure",
                             Rn="Rn",G="G",S=NULL,VPD="VPD",Ga=Ga,
                             formulation="Penman-Monteith")[,"Gs_mol"]
                             
### Estimate the stomatal slope parameter g1 using the USO model
mod_USO <- stomatal.slope(DE_Tha_Jun_2014_2,model="USO",GPP="GPP",Gs=Gs_PM,
                          robust.nls=FALSE,nmin=40,fitg0=FALSE)
                          
### Use robust regression to minimize influence of outliers in Gs                           
mod_USO <- stomatal.slope(DE_Tha_Jun_2014_2,model="USO",GPP="GPP",Gs=Gs_PM,
                          robust.nls=TRUE,nmin=40,fitg0=FALSE)

### Estimate the same parameter from the Ball&Berry model and prescribe g0
mod_BB <- stomatal.slope(DE_Tha_Jun_2014_2,model="Ball&Berry",GPP="GPP",
                         robust.nls=FALSE,Gs=Gs_PM,g0=0.01,nmin=40,fitg0=FALSE)

## same for the Leuning model, but this time estimate both g1 and g0 (but fix D0)
mod_Leu <- stomatal.slope(DE_Tha_Jun_2014_2,model="Leuning",GPP="GPP",Gs=Gs_PM,
                          robust.nls=FALSE,nmin=40,fitg0=FALSE,D0=1.5,fitD0=FALSE)

Run the code above in your browser using DataLab