Introduction
This vignette demonstrates the usage ofisogeochem usinga case study based onBajnai etal. (2021).
Background:
Winograd etal. (2006) acquired aδ18O time series fromcarbonates that precipitated underwater in the Devils Hole cavesspanning the last ca. 570 thousand years. Now, we are interested in thevariations in theδ18O value of the groundwater inthis period. To reconstruct a groundwaterδ18O timeseries from the carbonateδ18O values, we have toknow the temperature of the groundwater. Therefore, we measured theclumped isotope values of ten calcite samples. First, we convert themeasured∆47 values to carbonate growthtemperatures. Then, using the mean of the clumped isotope temperatures,we convert the carbonateδ18O time series to agroundwaterδ18O time series.
Package setup
Download, install, and load theisogeochem package:
if(!require("isogeochem"))install.packages("isogeochem")library("isogeochem")Load data
Data can be loaded into R in many ways. For example, to load datafrom an excel file you could use theopenxlsx package. Forthis vignette, however, lets specify the measured∆47 values manually:
# D47(CDES90) values of Devils Hole carbonatesDH_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 inisogeochem, which can beused simply by typing their name. For example, thedevilshole dataset includes the originalδ18O composite time series from the Devils Holecaves.
DH_age=devilshole$ageDH_d18O_VSMOW=devilshole$d18O_VSMOWDH_d18O_err=devilshole$d18O_errorCarbonateδ18O vs age
Lets visualize the carbonateδ18O VPDB timeseries:
# Convert d18O VSMOW values to the VPDB scaleDH_d18O_VPDB=to_VPDB(DH_d18O_VSMOW)# Calculate the errorsDH_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 resultsplot(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 labelsaxis(1, at=seq(0,570, by=90))axis(1, at=seq(0,570, by=10), labels=NA)# Add the error interval the plotpolygon(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 plotlines(DH_age,DH_d18O_VPDB, lwd=2, col="gray10")
Calculate growth temperatures from∆47
# 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#> [1] 32.75DH_temp_err=mean(DH_temp$temp_err)DH_temp_err#> [1] 1.83# Plot the resultsplot(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 labelsaxis(1, at=seq(0,570, by=90))axis(1, at=seq(0,570, by=10), labels=NA)# Add mean error rangerect(0,DH_temp_mean-DH_temp_err,570,DH_temp_mean+DH_temp_err, col="wheat", border=NA)# Add error barssegments(DH_D47_age,DH_temp$temp-DH_temp$temp_err,DH_D47_age,DH_temp$temp+DH_temp$temp_err, col="gray50")# Add pointspoints(DH_D47_age,DH_temp$temp, col="gray10", pch=19)
Groundwaterδ18O versus age
The calculated clumped isotope temperatures for the samples arestatistically indistinguishable, which allows us to calculate a meangroundwater temperature and use that to reconstruct the variations ingroundwaterδ18O.
# Calculate groundwater d18O values and its errorDH_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 resultsplot(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 labelsaxis(1, at=seq(0,570, by=90))axis(1, at=seq(0,570, by=10), labels=NA)# Add the error interval the plotpolygon(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 plotlines(DH_age,DH_d18O_gw, lwd=2, col="gray10")
