A function to calculate the expected sample specific fraction of saturation based on the model of Huntley (2006) using the approach as implemented in Kars et al. (2008) or Guralnik et al. (2015).
calc_Huntley2006(
data,
LnTn = NULL,
rhop,
ddot,
readerDdot,
normalise = TRUE,
fit.method = c("EXP", "GOK"),
lower.bounds = c(-Inf, -Inf, -Inf, -Inf),
summary = TRUE,
plot = TRUE,
...
)
An RLum.Results object is returned:
Slot: @data
OBJECT | TYPE | COMMENT |
results | data.frame | results of the of Kars et al. 2008 model |
data | data.frame | original input data |
Ln | numeric | Ln and its error |
LxTx_tables | list | A list of data.frames containing data on dose,
LxTx and LxTx error for each of the dose response curves.
Note that these do not contain the natural Ln signal, which is provided separately. |
fits | list | A list of nls objects produced by minpack.lm::nlsLM when fitting the dose response curves |
Slot: @info
OBJECT | TYPE | COMMENT |
call | call | the original function call |
args | list | arguments of the original function call |
data.frame (required):
A data.frame
with one of the following structures:
A three column data frame with numeric values on a) dose (s), b) LxTx
and
c) LxTx
error.
If a two column data frame is provided it is automatically
assumed that errors on LxTx
are missing. A third column will be attached
with an arbitrary 5 % error on the provided LxTx
values.
Can also be a wide table, i.e. a data.frame with a number of columns divisible by 3 and where each triplet has the aforementioned column structure.
(optional)
| dose (s)| LxTx | LxTx error |
| [ ,1] | [ ,2]| [ ,3] |
|---------|------|------------|
[1, ]| 0 | LnTn | LnTn error | (optional, see arg 'LnTn')
[2, ]| R1 | L1T1 | L1T1 error |
... | ... | ... | ... |
[x, ]| Rx | LxTx | LxTx error |
NOTE: The function assumes the first row of the function to be the
Ln/Tn
-value. If you want to provide more than one Ln/Tn
-value consider
using the argument LnTn
.
data.frame (optional):
This argument should only be used to provide more than one Ln/Tn
-value.
It assumes a two column data frame with the following structure:
| LnTn | LnTn error |
| [ ,1] | [ ,2] |
|--------|--------------|
[1, ]| LnTn_1 | LnTn_1 error |
[2, ]| LnTn_2 | LnTn_2 error |
... | ... | ... |
[x, ]| LnTn_x | LnTn_x error |
The function will calculate a mean Ln/Tn
-value and uses either the
standard deviation or the highest individual error, whichever is larger. If
another mean value (e.g. a weighted mean or median) or error is preferred,
this value must be calculated beforehand and used in the first row in the
data frame for argument data
.
NOTE: If you provide LnTn
-values with this argument the data frame
for the data
-argument must not contain any LnTn
-values!
numeric (required):
The density of recombination centres (rhop = c(2.92e-06, 4.93e-07)
.
numeric (required):
Environmental dose rate and its error, given as a numeric vector of length two.
Expected unit: Gy/ka. Example: ddot = c(3.7, 0.4)
.
numeric (required):
Dose rate of the irradiation source of the OSL reader and its error,
given as a numeric vector of length two.
Expected unit: Gy/s. Example: readerDdot = c(0.08, 0.01)
.
logical (with default): If TRUE
(the default) all measured and computed A
(see details).
character (with default):
Fit function of the dose response curve. Can either be EXP
(the default)
or GOK
. Note that EXP
(single saturating exponential) is the original
function the model after Huntley (2006) and Kars et al. (2008) was
designed to use. The use of a general-order kinetics function (GOK
)
is an experimental adaptation of the model and should be used
with great care.
numeric (with default):
A vector of length 4 that contains the lower bound values to be applied
when fitting the models with minpack.lm::nlsLM. In most cases, the
default values (c(-Inf, -Inf, -Inf, -Inf)
) are appropriate for finding
a best fit, but sometimes it may be useful to restrict the lower bounds to
e.g. c(0, 0, 0, 0)
. The values of the vectors are, respectively, for
parameters a
, D0
, c
and d
in that order (parameter d
is ignored
when fit.method = "EXP"
). More details can be found in
fit_DoseResponseCurve.
logical (with default):
If TRUE
(the default) various parameters provided by the user
and calculated by the model are added as text on the right-hand side of the
plot.
logical (with default): enable/disable the plot output.
Further parameters:
All other arguments are passed to plot and fit_DoseResponseCurve (in particular
mode
for the fit mode and fit.force_through_origin
)
0.4.5
King, G.E., Burow, C., Kreutzer, S., 2025. calc_Huntley2006(): Apply the Huntley (2006) model. Function version 0.4.5. In: Kreutzer, S., Burow, C., Dietze, M., Fuchs, M.C., Schmidt, C., Fischer, M., Friedrich, J., Mercier, N., Philippe, A., Riedesel, S., Autzen, M., Mittelstrass, D., Gray, H.J., Galharret, J., Colombo, M., Steinbuch, L., Boer, A.d., 2025. Luminescence: Comprehensive Luminescence Dating Data Analysis. R package version 1.0.1. https://r-lum.github.io/Luminescence/
Georgina E. King, University of Lausanne (Switzerland)
Christoph Burow, University of Cologne (Germany)
Sebastian Kreutzer, Ruprecht-Karl University of Heidelberg (Germany)
, RLum Developer Team
This function applies the approach described in Kars et al. (2008) or Guralnik et al. (2015),
which are both developed from the model of Huntley (2006) to calculate the expected sample
specific fraction of saturation of a feldspar and also to calculate fading
corrected age using this model. rhop
), the density of recombination
centres, is a crucial parameter of this model and must be determined
separately from a fading measurement. The function analyse_FadingMeasurement
can be used to calculate the sample specific
Kars et al. (2008) - Single saturating exponential
To apply the approach after Kars et al. (2008) use fit.method = "EXP"
.
Firstly, the unfaded
where
after King et al. (2016) where
Using fit parameters [1]
and [2]
. Computed
Guralnik et al. (2015) - General-order kinetics
To apply the approach after Guralnik et al. (2015) use fit.method = "GOK"
.
The approach of Guralnik et al. (2015) is very similar to that of Kars et al. (2008), but instead of using a single saturating exponential the model fits a general-order kinetics function of the form:
where
Level of saturation
The calc_Huntley2006 function also calculates the level of saturation (
The computation is done using 1000 equally-spaced points in the interval
[0.01, 3]. This can be controlled by setting option rprime
, such as
in rprime = seq(0.01, 3, length.out = 1000)
(the default).
Uncertainties
Uncertainties are reported at n.MC = 1000
)
of
Age calculated from 2D0 of the simulated natural DRC
In addition to the age calculated from the equivalent dose derived from
D0
)
of the simulated natural DRC. This can be a useful information for
(over)saturated samples (i.e., no intersect of
Kars, R.H., Wallinga, J., Cohen, K.M., 2008. A new approach towards anomalous fading correction for feldspar IRSL dating-tests on samples in field saturation. Radiation Measurements 43, 786-790. doi:10.1016/j.radmeas.2008.01.021
Guralnik, B., Li, B., Jain, M., Chen, R., Paris, R.B., Murray, A.S., Li, S.-H., Pagonis, P., Herman, F., 2015. Radiation-induced growth and isothermal decay of infrared-stimulated luminescence from feldspar. Radiation Measurements 81, 224-231.
Huntley, D.J., 2006. An explanation of the power-law decay of luminescence. Journal of Physics: Condensed Matter 18, 1359-1365. doi:10.1088/0953-8984/18/4/020
King, G.E., Herman, F., Lambert, R., Valla, P.G., Guralnik, B., 2016. Multi-OSL-thermochronometry of feldspar. Quaternary Geochronology 33, 76-87. doi:10.1016/j.quageo.2016.01.004
Further reading
Morthekai, P., Jain, M., Cunha, P.P., Azevedo, J.M., Singhvi, A.K., 2011. An attempt to correct for the fading in million year old basaltic rocks. Geochronometria 38(3), 223-230.
## Load example data (sample UNIL/NB123, see ?ExampleData.Fading)
data("ExampleData.Fading", envir = environment())
## (1) Set all relevant parameters
# a. fading measurement data (IR50)
fading_data <- ExampleData.Fading$fading.data$IR50
# b. Dose response curve data
data <- ExampleData.Fading$equivalentDose.data$IR50
## (2) Define required function parameters
ddot <- c(7.00, 0.004)
readerDdot <- c(0.134, 0.0067)
# Analyse fading measurement and get an estimate of rho'.
# Note that the RLum.Results object can be directly used for further processing.
# The number of MC runs is reduced for this example
rhop <- analyse_FadingMeasurement(fading_data, plot = TRUE, verbose = FALSE, n.MC = 10)
## (3) Apply the Kars et al. (2008) model to the data
kars <- calc_Huntley2006(
data = data,
rhop = rhop,
ddot = ddot,
readerDdot = readerDdot,
n.MC = 25)
if (FALSE) {
# You can also provide LnTn values separately via the 'LnTn' argument.
# Note, however, that the data frame for 'data' must then NOT contain
# a LnTn value. See argument descriptions!
LnTn <- data.frame(
LnTn = c(1.84833, 2.24833),
nTn.error = c(0.17, 0.22))
LxTx <- data[2:nrow(data), ]
kars <- calc_Huntley2006(
data = LxTx,
LnTn = LnTn,
rhop = rhop,
ddot = ddot,
readerDdot = readerDdot,
n.MC = 25)
}
Run the code above in your browser using DataLab