Fits gas concentration over time data with a model (exponential, quadratic or linear) and provides the slope later used to calculate gas fluxes with flux_calc
flux_fitting(
conc_df,
f_conc = f_conc,
f_datetime = f_datetime,
f_start = f_start,
f_end = f_end,
f_fluxid = f_fluxid,
fit_type = "exp_zhao18",
start_cut = 0,
end_cut = 0,
t_zero = 0,
cut_direction = "none",
cz_window = 15,
b_window = 10,
a_window = 10,
roll_width = 15
)a dataframe with the slope at t zero (f_slope),
a datetime column of t zero (f_start_z), a factor column indicating the
cuts (f_cut), the time in seconds since the start of the measurement
(f_time), the modeled fit (f_fit), the modeled slope (f_fit_slope),
the parameters of the fit depending on the model used,
and any columns present in the input.
The type of fit is added as an attribute for use by the other functions.
dataframe of gas concentration over time
column with gas concentration data
column with datetime of each concentration measurement
Note that if there are duplicated datetime in the same f_fluxid only
the first row will be kept
column with datetime when the measurement started (ymd_hms)
column with datetime when the measurement ended (ymd_hms)
column with ID of each flux
exp_zhao18, exp_tz, exp_hm, quadratic or linear.
exp_zhao18 is using the exponential model
C(t) = C_m + a (t - t_z) + (C_z - C_m) exp(-b (t - t_z))
from Zhao et al (2018).
expt_tz is a modified version which allows the user to fix t_zero:
C(t) = C_m + a * t + (C_z - C_m) exp(-b * t)
exp_hm is using the HM model
(Pedersen et al., 2010; Hutchinson and Mosier, 1981)
C(t) = C_m + (C_z - C_m) exp(-b * t)
exponential is equal to exp_zhao18, for backwards compatibility
time to discard at the start of the measurements (in seconds)
time to discard at the end of the measurements (in seconds)
time at which the slope should be calculated
(for quadratic, exp_tz and exp_hm fits)
"none" (default) means that the focus window is
f_start + start_cut to f_end - end_cut; "from_start" makes it
f_start + start_cut to f_start + end_cut; "from_end" makes it
f_end - start_cut to f_end - end_cut.
Bug fix since v1.3.4: "from_start" was doing f_start + start_cut to
f_start + start_cut + end_cut
window used to calculate Cz, at the beginning of cut window
(exp_zhao18 and exp_tz fits)
window to estimate b. It is an interval after tz where
it is assumed that the model fits the data perfectly
(exp_zhao18 and exp_tz fits)
window at the end of the flux to estimate a
(exp_zhao18 and exp_tz fits)
width of the rolling mean for gas concentration when
looking for tz, ideally same as cz_window
(exp_zhao18 and exp_tz fits)
Pedersen, A.R., Petersen, S.O., Schelde, K., 2010. A comprehensive approach to soil-atmosphere trace-gas flux estimation with static chambers. European Journal of Soil Science 61, 888-902. https://doi.org/10.1111/j.1365-2389.2010.01291.x
Hutchinson, G.L., Mosier, A.R., 1981. Improved Soil Cover Method for Field Measurement of Nitrous Oxide Fluxes. Soil Science Society of America Journal 45, 311-316. https://doi.org/10.2136/sssaj1981.03615995004500020017x
Zhao, P., Hammerle, A., Zeeman, M., Wohlfahrt, G., 2018. On the calculation of daytime CO2 fluxes measured by automated closed transparent chambers. Agricultural and Forest Meteorology 263, 267-275. https://doi.org/10.1016/j.agrformet.2018.08.022
data(co2_conc)
flux_fitting(co2_conc, conc, datetime, fit_type = "exp_zhao18")
flux_fitting(co2_conc, conc, datetime, fit_type = "quadratic",
t_zero = 10, end_cut = 30)
Run the code above in your browser using DataLab