Calculate temperature-dependent values using Arrhenius equations
calculate_temperature_response_arrhenius.Rd
Calculate leaf-temperature-dependent values of various parameters using
Arrhenius equations. It is rare for users to call this function directly;
instead, it is used internally by
calculate_temperature_response
.
Usage
calculate_temperature_response_arrhenius(
exdf_obj,
arrhenius_parameters,
tleaf_column_name = 'TleafCnd'
)
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_temperature_response_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 those included in
c3_temperature_param_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_temperature_response_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_temperature_response_arrhenius(
licor_file,
list(Kc = c3_temperature_param_sharkey$Kc)
)
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_temperature_response_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