--- title: "Devils Hole" output: rmarkdown::html_vignette vignette: > %\VignetteIndexEntry{Devils Hole} %\VignetteEngine{knitr::rmarkdown} %\VignetteEncoding{UTF-8} --- ```{r, include = FALSE} #> Save the user's options and parameters oldpar = par() ``` ```{r, include = FALSE} knitr::opts_chunk$set( collapse = TRUE, comment = "#>", message = FALSE, eval = TRUE, fig.path = "figures/devils_hole-", fig.height = 4, fig.width = 8, dpi = 150, out.width = "100%" ) knitr::opts_knit$set(global.par = TRUE) ``` ```{r, include = FALSE} #> Set new parameters for this vignette. par(mfrow = c(1, 1), mar = c(4.5, 4.5, 0.3, 0.3), bg = "white") ``` ## Introduction This vignette demonstrates the usage of `isogeochem` using a case study based on [Bajnai et al. (2021)](https://doi.org/10.1029/2021GL093257). #### Background: [Winograd et al. (2006)](https://doi.org/10.1016/j.yqres.2006.06.003) acquired a *δ*18O time series from carbonates that precipitated underwater in the Devils Hole caves spanning the last ca. 570 thousand years. Now, we are interested in the variations in the *δ*18O value of the groundwater in this period. To reconstruct a groundwater *δ*18O time series from the carbonate *δ*18O values, we have to know the temperature of the groundwater. Therefore, we measured the clumped isotope values of ten calcite samples. First, we convert the measured *∆*47 values to carbonate growth temperatures. Then, using the mean of the clumped isotope temperatures, we convert the carbonate *δ*18O time series to a groundwater *δ*18O time series. ## Package setup Download, install, and load the `isogeochem` package: ```{r, include = TRUE, message = FALSE, eval = TRUE} if (!require("isogeochem")) install.packages("isogeochem") library("isogeochem") ``` ## Load data Data can be loaded into R in many ways. For example, to load data from an excel file you could use the `openxlsx` package. For this vignette, however, lets specify the measured *∆*47 values manually: ```{r} # D47(CDES90) values of Devils Hole carbonates DH_D47 = c(0.573, 0.575, 0.572, 0.581, 0.575, 0.575, 0.570, 0.574, 0.568, 0.575) DH_D47_err = c(0.003, 0.007, 0.003, 0.005, 0.006, 0.003, 0.005, 0.005, 0.007, 0.005) DH_D47_age = c(10.70, 36.00, 90.35, 122.75, 180.45, 236.65, 295.15, 355.65, 380.05, 496.65) ``` There are datasets available in `isogeochem`, which can be used simply by typing their name. For example, the `devilshole` dataset includes the original *δ*18O composite time series from the Devils Hole caves. ```{r} DH_age = devilshole$age DH_d18O_VSMOW = devilshole$d18O_VSMOW DH_d18O_err = devilshole$d18O_error ``` ## Carbonate *δ*18O vs age Lets visualize the carbonate *δ*18O VPDB time series: ```{r, label = "Figure1"} # Convert d18O VSMOW values to the VPDB scale DH_d18O_VPDB = to_VPDB(DH_d18O_VSMOW) # Calculate the errors DH_d18O_VPDB_err1 = to_VPDB(DH_d18O_VSMOW + DH_d18O_err) DH_d18O_VPDB_err2 = to_VPDB(DH_d18O_VSMOW - DH_d18O_err) # Plot the results plot(0, type = "l" , las = 1, xaxs = "i", xaxt = "n", ylim = c(-17.5, -14.5), xlim = c(0, 570), ylab = expression(delta ^ 18 * "O"[calcite] * " (‰, VPDB)"), xlab = "Age (ka)") # Set up the x axis with ticks and labels axis(1, at = seq(0, 570, by = 90)) axis(1, at = seq(0, 570, by = 10), labels=NA) # Add the error interval the plot polygon(c(DH_age, rev(DH_age)), c(DH_d18O_VPDB_err1, rev(DH_d18O_VPDB_err2)), col="wheat", border = NA) # Add the carbonate d18O VPDB time series to the plot lines(DH_age, DH_d18O_VPDB, lwd=2, col="gray10") ``` ## Calculate growth temperatures from *∆*47 ```{r, label = "Figure2"} # Convert D47 values into temperatures using the equation in Fiebig et al. (2021) DH_temp = temp_D47(DH_D47, DH_D47_err, eq = "Fiebig21") DH_temp_mean = mean(DH_temp$temp) DH_temp_mean DH_temp_err = mean(DH_temp$temp_err) DH_temp_err # Plot the results plot(0, type = "l", las = 1, xaxt = "n", xaxs = "i", ylim = c(28, 38), xlim = c(0, 570), ylab = "Temperature (°C)", xlab = "Age (ka)") # Set up the x axis with ticks and labels axis(1, at = seq(0, 570, by = 90)) axis(1, at = seq(0, 570, by = 10), labels = NA) # Add mean error range rect(0, DH_temp_mean - DH_temp_err, 570, DH_temp_mean + DH_temp_err, col = "wheat", border = NA) # Add error bars segments(DH_D47_age, DH_temp$temp - DH_temp$temp_err, DH_D47_age, DH_temp$temp + DH_temp$temp_err, col = "gray50") # Add points points(DH_D47_age, DH_temp$temp, col = "gray10", pch = 19) ``` ## Groundwater *δ*18O versus age The calculated clumped isotope temperatures for the samples are statistically indistinguishable, which allows us to calculate a mean groundwater temperature and use that to reconstruct the variations in groundwater *δ*18O. ```{r, label = "Figure3"} # Calculate groundwater d18O values and its error DH_d18O_gw = d18O_H2O( temp = DH_temp_mean, d18O_c_VSMOW = DH_d18O_VSMOW, min = "calcite", eq = "Coplen07") DH_d18O_gw_err_low = d18O_H2O( temp = DH_temp_mean + DH_temp_err, d18O_c_VSMOW = DH_d18O_VSMOW - DH_d18O_err, min = "calcite", eq = "Coplen07") DH_d18O_gw_err_high = d18O_H2O( DH_temp_mean - DH_temp_err, DH_d18O_VSMOW + DH_d18O_err, min = "calcite", eq = "Coplen07") # Plot the results plot(0, type = "l", las = 1, xaxt = "n", xaxs = "i", ylim = c(-16, -12), xlim = c(0, 570), ylab = expression(delta ^ 18 * "O"[groundwater] * " (‰, VSMOW)"), xlab = "Age (ka)") # Set up the x axis with ticks and labels axis(1, at = seq(0, 570, by = 90)) axis(1, at = seq(0, 570, by = 10), labels = NA) # Add the error interval the plot polygon(c(DH_age, rev(DH_age)), c(DH_d18O_gw_err_low, rev(DH_d18O_gw_err_high)), col = "wheat", border = NA) # Add the carbonate d18O time series to the plot lines(DH_age, DH_d18O_gw, lwd = 2, col = "gray10") ``` ```{r, include = FALSE} #> Reset to the user's options and parameters. par(oldpar) ```