Calculate temperature-dependent values using Arrhenius equations
calculate_arrhenius.Rd
Calculate leaf-temperature-dependent values of various parameters using Arrhenius equations. This function can accomodate alternative names for the leaf temperature column. It also checks the units of the leaf temperature column and will produce an error of the units are not correct.
Arguments
- exdf_obj
An
exdf
object representing data from a Licor gas exchange measurement system.- arrhenius_parameters
A list of named lists. Each list element should describe the Arrhenius scaling factor (
c
), activation energy inkJ / mol
(Ea
), and units (units
) for a variable that follows an Arrhenius temperature dependence. The name of each list element should be the corresponding name of the variable.- tleaf_column_name
The name of the column in
exdf_obj
that contains the leaf temperature in units ofdegrees C
.
Details
The Arrhenius equation is often used to calculate the temperature dependence of the rate of a chemical reaction. It is often stated as follows:
(1) rate = A * exp(-Ea / (R * T))
where A
is the "pre-exponential factor" that sets the overall scaling,
Ea
is the activation energy, R
is the ideal gas constant, and
T
is the temperature in Kelvin. See, for example, the
Wikipedia page for the equation.
In photosynthesis research, it is common to use an alternative form of the
equation, where the pre-exponential factor A
is rewritten as an
exponent A = exp(c)
, where c
is a "scaling factor" whose value
can be calculated from A
according to c = ln(A)
). In this
formulation, the equation becomes:
(2) rate = exp(c) * exp(-Ea / (R * T)) = exp(c - Ea / (R * T))
The advantage of this version is that the natural logarithm of the rate is
equal to c - Ea / (R * T)
. This means that the Arrhenius paramerer
values can be easily determined from a linear fit of log(rate)
against
1 / (R * T)
; c
is the y-intercept and -Ea
is the slope.
In calculate_arrhenius
, the scaling factor (c
), activation
energy (Ea
), and units (units
) for a variable must be specified
as elements of a list, which itself is a named element of
arrhenius_parameters
. For example, if a variable called Kc
has
c = 38.05
, Ea = 79.43, and units of micromol mol^(-1)
, the
arrhenius_parameters
argument could be specified as follows:
list(Kc = list(c = 38.05, Ea = 79.43, units = 'micromol mol^(-1)'))
. It
is rare to directly specify the Arrhenius parameters; instead, it is more
typical to use one of the pre-set values such as
c3_arrhenius_sharkey
.
Sometimes a publication will specify the value of a variable at 25 degrees C
instead of the Arrhenius scaling factor c
. In this case, there is a
"trick" for determining the value of c
. For example, if the Arrhenius
exponent should be X
at 25 degrees C, then we have the following:
X = exp(c - Ea / (R * (25 + 273.15)))
, which we can solve algebraically
for c
as follows: c = ln(X) + Ea / f
, where
f = R * (25 + 273.15)
. As a special case, for parameters normalized to
1 at 25 degrees C, we have c = Ea / f
. The value of f
can be
accessed as PhotoGEA:::f
.
Another common scenario is that we may wish to convert the units of a variable
defined by Arrhenius exponents. For example, let's say Y
is determined
by an Arrhenius exponent, i.e., that Y = exp(c - Ea / (R * T))
, and we
want to convert Y
to different units via a multiplicative conversion
factor cf
. Then, in the new units, Y
becomes
Y_new = cf * Y = cf * exp(c - (R * T))
. Through algebra, it is possible
to combine cf
with the original value of c
as
c_new = c + ln(cf)
. Then we can continue calculating Y_new
using
an Arrhenius factor as Y_new = exp(c_new - Ea / (R * T))
.
Value
An exdf
object based on exdf_obj
that includes one new column
for each element of arrhenius_parameters
, where the
temperature-dependent values of these new columns are determined using the
temperature values specified by the tleaf_column_name
column. The
category of each of these new columns is calculate_arrhenius
to
indicate that they were created using this function.
Examples
# Read an example Licor file included in the PhotoGEA package
licor_file <- read_gasex_file(
PhotoGEA_example_file_path('ball_berry_1.xlsx')
)
licor_file <- calculate_arrhenius(licor_file, c3_arrhenius_sharkey)
licor_file$units$Kc # View the units of the new `Kc` column
#> [1] "micromol mol^(-1)"
licor_file$categories$Kc # View the category of the new `Kc` column
#> [1] "calculate_arrhenius"
licor_file[,'Kc'] # View the values of the new `Kc` column
#> [1] 514.4424 476.5148 451.6481 443.3365 443.2988 438.5837 427.3056 603.5290
#> [9] 557.2026 557.8568 543.9679 557.8977 557.3369 559.3194 655.1498 617.2999
#> [17] 595.9931 593.0777 591.0264 562.0319 583.4480 680.0888 631.4699 599.4342
#> [25] 585.5236 591.0018 561.7495 559.9348