Stable Isotope Geochemistry#

High-Temperature Geochemistry


Stable isotope geochemistry is concerned with isotopic variations that are created by physical-chemical rather than nuclear processes. Radiogenic isotope geochemistry assumes that isotope compositions such \({^{87}Sr}/{^{86}Sr}\) are not affected by processes other than radioactive decay because isotopes of the same element display the same chemical behavior. In detail this is not quite true, however! Isotopes of the same element display small but significant differences in their behavior during physical, chemical and biological processing. Physical (e.g., evaporation, diffusion), chemical (e.g., precipitation, oxidation), and biological processes (e.g., photosynthesis, respiration) can generate small changes in the isotope compositions of the elements – these changes are termed stable isotope fractionations or simply (isotope) fractionations.

Stable isotope fractionations are neglected in radiogenic isotope geochemistry because (i) stable isotope effects are often small compared to the effects of radioactive decay and/or (ii) radiogenic isotope analyses involve an ‘automatic’ correction for any variations introduced by stable isotope fractionations.

Variations in stable isotope compositions are generally due to mass dependent stable isotope fractionations – this means that the magnitude of the isotope effect depends on the mass difference of the isotopes involved. For example: consider a mixture of \(^1H\), \(^2H\) (deuterium), and \(^3H\) (tritium). If a fractionation process changes the \({^{1}H}/{^{2}H}\) ratio (\(\Delta M = 1\,amu\)) by \(0.5\%\), then the ratio \({^{1}H}/{^{3}H}\) (\(\Delta M = 2\,amu\)) will be altered by \(1\%\). Exceptions to this rule are known but they are extremely rare.

The elements which are most commonly studied, and which display the largest fractionations, are \(H\), \(Li\), \(B\), \(C\), \(N\), \(O\), \(Si\), \(S\), and \(Cl\). These are all “light” elements with atomic masses of less than \(40\,amu\). Among these, \(H\), \(O\), \(C\), and \(S\) are by far the most important. These elements have several common properties:

  • Low atomic mass.

  • The relative mass difference between the isotopes is large

  • They form bonds with a high degree of covalent character (non-ionic)

  • The elements exist in more than one oxidation state, form a wide range of compounds, and/or are important constituents of many natural solids and fluids.

  • The isotopes are abundant enough (\(> 0.1\%\)) to facilitate the isotope ratios measurements

It was once thought that elements, which did not meet these criteria would not display significant (= measurable) stable isotope fractionations. Due to recent advances in mass spectrometry, however, geochemists are now able to resolve natural isotopic variations of numerous additional elements, including high-atomic weight trace metals: \(Mg\), \(Ca\), \(Cr\), \(Fe\), \(Cu\), \(Zn\), \(Ge\), \(Se\), \(Mo\), \(Cd\), and \(Tl\). The natural stable isotope variations of the latter elements are generally smaller than those of the “classic” stable isotope elements. Nonetheless, they are large enough to permit the resolution of geologically useful fractionation effects and such studies of “non-traditional” stable isotope systems are currently attracting a lot of interest.

δ Notation#

Variations in stable isotope ratios are typically in the parts per thousand range and they are hence reported as permil deviations from a given isotope standard, using a \(\delta\)-notation. For example, \(O\) isotope variations are generally reported as permil deviations from the SMOW standard (Standard Mean Ocean Water):

\[\delta^{18}O = \left[\frac{({^{18}O}/{^{16}O})_{sam} - ({^{18}O}/{^{16}O})_{std}}{({^{18}O}/{^{16}O})_{std}}\right] \times 10^3\]

where the subscripts sam and std denote the \(O\) isotope compositions of the sample and the isotope standard, respectively.

The same notation is used for other elements. Different elements utilize different \(\delta = 0\) standards, however (see the table below).

# import relevant modules

%matplotlib inline
import numpy as np
import pandas as pd
from IPython.display import display
from math import log10, floor
# create our own functions

# function to round a value to a certain number of significant figures
def round_to_n_sf(value, no_of_significant_figures):
    value_rounded = round(value, no_of_significant_figures-1-int(floor(log10(abs(value)))))
    if value_rounded == int(value_rounded): 
        value_rounded = int(value_rounded)
    return value_rounded
# create a dataframe for isotopic ratios of stable isotopes
elements = ["Hydrogen", "Lithium", "Boron", "Carbon", "Nitrogen", "Oxygen", "Oxygen", "Chlorine", "Sulfur"]
notations = ["$$\delta D$$", "$$\delta^6 Li$$", "$$\delta^{11} B$$", "$$\delta^{13} C$$", "$$\delta^{15} N$$", 
             "$$\delta^{18} O$$", "$$\delta^{17} O$$", "$$\delta^{37} Cl$$", "$$\delta^{34} S$$"]
ratios = ["$$D/H\,({^2H}/{^1H})$$", "$${^6Li}/{^7Li}$$", "$${^{11}B}/{^{10}B}$$",
          "$${^{13}C}/{^{12}C}$$",  "$${^{15}N}/{^{14}N}$$",  "$${^{18}O}/{^{16}O}$$",
          "$${^{17}O}/{^{16}O}$$",  "$${^{37}Cl}/{^{35}Cl}$$",  "$${^{34}S}/{^{32}S}$$"]
standards = ["SMOW", "NBS L-SVEC", "NBS 951", "PDB", "Atmosphere",
            "SMOW, PDB", "SMOW", "Seawater", "CDT"]
absolute_ratios_print = ["$$1.557 × 10^{-4}$$", "$$0.08306$$", "$$4.044$$", 
                         "$$1.122 × 10^{-2}$$", "$$3.613 × 10^{-3}$$", "$$2.0052 × 10^{-3}$$",
                         "$$3.76 × 10^{-4}$$", "$$\sim 0.31978$$", "$$4.43 × 10^{-2}$$"]
absolute_ratios_values = [1.557*10**-4, 0.08306, 4.044, 1.122*10**-2, 3.613*10**-3,
                         2.0052*10**-3, 3.76*10**-4, 0.31978, 4.43*10**-2]

dict1 = {"Element" : elements,
        "Notation" : notations,
        "Ratio" : ratios,
        "Standard" : standards,
        "Absolute Ratio" : absolute_ratios_print}
df1 = pd.DataFrame(dict1)
Element Notation Ratio Standard Absolute Ratio
Hydrogen $$\delta D$$ $$D/H\,({^2H}/{^1H})$$ SMOW $$1.557 × 10^{-4}$$
Lithium $$\delta^6 Li$$ $${^6Li}/{^7Li}$$ NBS L-SVEC $$0.08306$$
Boron $$\delta^{11} B$$ $${^{11}B}/{^{10}B}$$ NBS 951 $$4.044$$
Carbon $$\delta^{13} C$$ $${^{13}C}/{^{12}C}$$ PDB $$1.122 × 10^{-2}$$
Nitrogen $$\delta^{15} N$$ $${^{15}N}/{^{14}N}$$ Atmosphere $$3.613 × 10^{-3}$$
Oxygen $$\delta^{18} O$$ $${^{18}O}/{^{16}O}$$ SMOW, PDB $$2.0052 × 10^{-3}$$
Oxygen $$\delta^{17} O$$ $${^{17}O}/{^{16}O}$$ SMOW $$3.76 × 10^{-4}$$
Chlorine $$\delta^{37} Cl$$ $${^{37}Cl}/{^{35}Cl}$$ Seawater $$\sim 0.31978$$
Sulfur $$\delta^{34} S$$ $${^{34}S}/{^{32}S}$$ CDT $$4.43 × 10^{-2}$$

Unfortunately, a dual standard has developed for reporting \(O\) isotopes. Isotope ratios of carbonates are reported relative to the PDB carbonate standard. This value is related to SMOW by:

\[{\delta^{18}O_{PDB}} = 1.03086{\delta^{18}O_{SMOW}} + 30.86\]

Fractionation Factor#

The fractionation factor \(\alpha\) is defined as:

\[\alpha_{A-B} = \frac{R_A}{R_B}\]

where \(R_A\) and \(R_B\) are the isotope ratios of two reservoirs \(A\) and \(B\). The isotopic fractionation between two reservoirs is often also reported as \(\Delta = \delta A - \delta B\). The relationship between \(\Delta\) and \(\alpha\) is:

\[\Delta = 1000 \times (\alpha - 1) \qquad or \qquad \Delta = 1000 \ln \alpha\]

For isotope exchange reactions, the fractionation factor is related to the equilibrium constant \(K\) of a reaction by:

\[\alpha = K^{\frac{1}{N}}\]

where \(n\) is the number of atoms that are exchanged.

Equilibrium and Kinetic Isotope Fractionation#

There are two principal pathways to stable isotope variations – equilibrium and kinetic isotope fractionation processes.

Equilibrium isotope effects arise from reversible isotope exchange reactions that run to completion, such that full equilibrium is achieved:

\[{H_2}^{18}O + 1/3 CaC^{16}O_3 = {H_2}^{16}O + 1/3 CaC^{18}O_3\]

Equilibrium fractionations are often smaller than kinetic effects.

Kinetic isotope effects are normally associated with irreversible, incomplete, or unidirectional processes, such as evaporation into vacuum, diffusion, precipitation or biologically mediated reactions. Kinetic fractionations are typically larger, and the reaction product is often enriched in light isotopes because these move or react faster than the heavy isotopes.

Theory of Equilibrium Isotope Fractionation#

Equilibrium isotope fractionations typically arise from quantum mechanical effects on the vibrational motions of molecules. This needs to be explained!

An isotope exchange reaction will run to minimize the energy of a given system. The energy of molecules can be described in terms of several components: nuclear, electronic, translational, rotational, and vibrational energy. The first two terms generally play no role in isotope fractionation. The translational and rotational energy terms typically also play no role or they are subordinate. The vibrational energy of molecules and the discrete vibrational energy levels, are thus the primary reason for the occurrence of equilibrium isotope fractionation in many reactions.

Equilibrium isotope effects typically arise from quantum mechanical effects on the vibrations of molecules. This plot shows the potential energy as a function of interatomic distance for \(H\)-\(H\), \(H\)-\(D\), and \(D\)-\(D\) molecules.

Quantum theory tells us that the system can only assume certain discrete energy levels:

\[E_{vib} = \left(n + \frac{1}{2}\right) h \nu\]

where \(n\) = quantum number; \(h\) = Planck’s constant; \(\nu\) = frequency of vibration at \(n=0\).

The lowest energy level is denoted by the zero-point energy (ZPE) – this is the ground state (\(n=0\)) of the “oscillator”:

\[E_{vib} = \frac{1}{2}h\nu\]

Ground state is relevant for most molecules at room temperature. The ZPEs of \(D\)-\(D\), \(H\)-\(D\), and \(H\)-\(H\) are different. The ZPE is lower for bonds involving heavier isotopes. This means that bonds of heavier isotopes are stronger.

In an isotope exchange reaction the isotopes can choose between two different bonds:

\[{H_2}^{18}O + 1/3 CaC^{16}O_3 = {H_2}^{16}O + 1/3 CaC^{18}O_3\]

Differences between the ZPEs are larger for stronger bonds. In our example, the \(C\)-\(O\) bond is stronger than the \(H\)-\(O\) bond.

The overall energy of an equilibrium system is minimized when the heavy isotope occupies the site with the stronger bond, thus, at equilibrium, the heavy isotope will tend to occupy the site with the stronger bond.

Equilibrium isotope effects are temperature dependent. At low (room) temperature most molecules are in the vibrational ground state (\(n=0\)). At higher temperatures, many molecules will be in exited states, characterized by higher quantum numbers \(n\). At high \(n\), the differences between the energy levels of the different isotopes become smaller. Therefore, equilibrium isotope effects are smaller at higher temperature.

Theory of Isotope Fractionation#

The preceding discussion provided a basic overview of why equilibrium isotope effects occur in nature. Equilibrium isotope fractionation requires that a system actually attains thermodynamic equilibrium. Many reactions in nature never achieve equilibrium, however, because they are too slow or because the product is removed from the system before equilibrium is reached. The latter is often the case for reactions in biological systems, where the reaction products may be immediately transported across a cell membrane once they are formed. In this case, the system will be operating far removed from an equilibrium state. Such systems can give rise to kinetic isotope effects.

Kinetic isotope effects are associated with fast, incomplete, or unidirectional processes. Common examples are free evaporation into vacuum, diffusion, dissociation reactions and biologically mediated processes. As an example, consider the diffusion of an ideal gas, such as \(Ar\) at low pressure. The average kinetic energy of the \(Ar\) atoms is given by:

\[E_{kin} = \frac{1}{2}mv^2\]

where \(m\) denotes the mass and \(v\) the velocity.

The different isotopes have the same kinetic energy, such that the velocities (and the diffusion coefficients \(D\)) of the isotopes \(^{40}Ar\) and \(^{36}Ar\) differ. The lighter isotopes have higher speeds, and hence they move (diffuse) faster.

The kinetic isotope fractionation factor for diffusion can be calculated from the ratio of the isotopic velocities:

\[\alpha = \frac{D_{^{36}Ar}}{D_{^{40}Ar}} = \frac{v_{^{36}Ar}}{v_{^{40}Ar}} = \sqrt{\frac{m_{^{40}Ar}}{m_{^{36}Ar}}} = 1.054\]

Hence, diffusion of pure \(Ar\) is expected to produce an isotopic effect of \(5.4\%\) for the \({^{40}Ar}/{^{36}Ar}\) ratio.

The same fractionation is expected for non-equilibrium evaporation of \(Ar\) into a vacuum, where the isotope fractionation is governed solely by the velocities of the atoms.

Another mechanism of kinetic isotope fractionation reflects that molecules with heavier isotopes (and more stable bonds) are also commonly less reactive than molecules with lighter isotopes. For example, we saw earlier that it takes more energy to dissociate \(D_2\) than \(H_2\). The dissociation reaction is also slower for \(D_2\). Thus, when a dissociation reaction does not reach equilibrium, the lighter isotopes are typically enriched in the reaction products because the reactant molecules with lighter isotopes react faster.

Biologically mediated reactions (e.g., photosynthesis or respiration) are commonly associated with large kinetic isotope effects, because such reactions generally do not achieve equilibrium.

The light isotopes are typically enriched in the reaction products.


  • \(^{12}C\) is enriched relative to \(^{13}C\) in the products of photosynthesis

  • \(^{32}S\) is enriched relative to \(^{34}S\) in \(H_2S\) produced by bacterial reduction of sulfate.

Reasons (which differ depending on the process):

  • Faster diffusion of light isotopes (e.g., across a membrane)

  • Bonds of light isotopes react faster

Problem Set 7#

Question 3#

(a) What is the \({^{18}O}/{^{16}O}\) ratio of water vapor that is characterized by \(\delta^{18}O = -12‰\) and \(+21‰\)?

(b) What is the \(\delta^{18}O\) value of water with \({^{18}O}/{^{16}O} = 2.0102 \times 10^{-3}\) and \({^{18}O}/{^{16}O} = 1.9998 \times 10^{-3}\) ?

# function representing delta notation (permil deviation)
def delta_notation(delta_value, ratio_sample, ratio_standard):
    if delta_value == '?':
        return ((ratio_sample/ratio_standard) - 1) * 1000
    elif ratio_sample == '?':
        return ratio_standard * (1+delta_value/1000)
# Question 3a
# standard value
O18_O16_ratio_SMOW = absolute_ratios_values[notations.index("$$\delta^{18} O$$")]
# data
delta_18O_sample_1a = -12  # sample 1
delta_18O_sample_2a = 21  # sample 2
# calculate the isotopic ratios of each sample
O18_O16_ratio_sample_1a = delta_notation(delta_18O_sample_1a, '?', O18_O16_ratio_SMOW)
O18_O16_ratio_sample_2a = delta_notation(delta_18O_sample_2a, '?', O18_O16_ratio_SMOW)
# print answers
The O-18/O-16 ratio of water vapor with δ(O-18) = %g is %.4e.\n\
The O-18/O-16 ratio of water vapor with δ(O-18) = %g is %.4e.\n" \
      % (delta_18O_sample_1a, O18_O16_ratio_sample_1a, delta_18O_sample_2a, O18_O16_ratio_sample_2a))

# Question 3b
# data
O18_O16_ratio_sample_1b = 2.0102 * 10**-3
O18_O16_ratio_sample_2b = 1.9998 * 10**-3
# calculate the permil deviations of each sample
delta_18O_sample_1b = delta_notation('?', O18_O16_ratio_sample_1b, O18_O16_ratio_SMOW)
delta_18O_sample_2b = delta_notation('?', O18_O16_ratio_sample_2b, O18_O16_ratio_SMOW)
# print answers
The permil deviation of water with O-18/O-16 = %.4e is %.1f ‰.\n\
The permil deviation of water with O-18/O-16 = %.4e is %.1f ‰." \
      % (O18_O16_ratio_sample_1b, delta_18O_sample_1b, O18_O16_ratio_sample_2b, delta_18O_sample_2b))
The O-18/O-16 ratio of water vapor with δ(O-18) = -12 is 1.9811e-03.
The O-18/O-16 ratio of water vapor with δ(O-18) = 21 is 2.0473e-03.

The permil deviation of water with O-18/O-16 = 2.0102e-03 is 2.5 ‰.
The permil deviation of water with O-18/O-16 = 1.9998e-03 is -2.7 ‰.

Question 4#

The following questions ask you to calculate isotope fractionation factors \(\alpha\) and isotopic fractionations \(\Delta\).

a) The biogenic \(C\) in tissue has a \(\delta^{13}C\) of \(-29.0‰\) whilst dissolved \(C\) features a \(\delta^{13}C\) value of \(-5.3‰\). What is the isotopic fractionation \(\Delta^{13}C_{bio-diss}\) between the two forms of carbon? What is the isotope fractionation factor \(\alpha_{bio-diss}\)?

b) Assume water (liq) is characterized by \({^{18}O}/{^{16}O} = 2.015 \times 10^{-3}\) and water vapor (vap) by \({^{18}O}/{^{16}O} = 1.999 \times 10^{-3}\). Calculate the \(\delta^{18}O\) values of the two phases relative to SMOW. Now calculate the isotopic fractionation \(\Delta^{18}O_{liq-vap}\) (in \(‰\)) and the \(O\) isotope fractionation factor \(\alpha_{liq-vap}\).

c) What is the isotopic fractionation \(\Delta^{37}O_{sol-diss}\) (in \(‰\)) between dissolved \(Cl^-\) ions with \({^{37}Cl}/{^{35}Cl} = 0.319766\) and solid \(AgCl\) with \({^{37}Cl}/{^{35}Cl} = 0.319936\)? What is the value of the \(Cl\) isotope fractionation factor \(\alpha_{sol-diss}\)?

# function representing the relationship between isotope fractionation (Δ) and fractionation factor (𝛼)
def isotope_fractionation_vs_fractionation_factor(isotope_fractionation, fractionation_factor):
    if isotope_fractionation == '?':
        return 1000*(fractionation_factor-1)
    elif fractionation_factor == '?':
        return isotope_fractionation/1000 + 1
# Question 4a
# data
delta_13C_bio = -29.0  # permil deviation in biogenic C
delta_13C_diss = -5.3  # permil deviation in dissolved C
# calculate the isotope fractionation
isotope_fractionation_bio_diss = delta_13C_bio - delta_13C_diss
# calculate the fractionation factor
fractionation_factor_bio_diss = isotope_fractionation_vs_fractionation_factor(isotope_fractionation_bio_diss, '?')
# print answers
The isotopic fractionation between the two forms of C is %.1f.\n\
The isotope fractionation factor is %.4f.\n" \
      % (isotope_fractionation_bio_diss, fractionation_factor_bio_diss))

# Question 4b
# data
O18_O16_ratio_liq = 2.015 * 10**-3  # O ratio of liquid water
O18_O16_ratio_vap = 1.999 * 10**-3  # O ratio of water vapor
# calculate the permil deviations of each sample
delta_18O_liq = delta_notation('?', O18_O16_ratio_liq, O18_O16_ratio_SMOW)
delta_18O_vap = delta_notation('?', O18_O16_ratio_vap, O18_O16_ratio_SMOW)
# calculate the isotope fractionation
isotope_fractionation_liq_vap = delta_18O_liq - delta_18O_vap
# calculate the fractionation factor
fractionation_factor_liq_vap = isotope_fractionation_vs_fractionation_factor(isotope_fractionation_liq_vap, '?')
# print answers
The permil deviation of water with O-18/O-16 = %.3e is %.1f ‰.\n\
The permil deviation of water with O-18/O-16 = %.3e is %.1f ‰.\n\
The isotopic fractionation between the two forms of carbon is %.1f.\n\
The isotope fractionation factor is %g.\n" \
      % (O18_O16_ratio_liq, delta_18O_liq, O18_O16_ratio_vap, delta_18O_vap, 
         isotope_fractionation_liq_vap, round_to_n_sf(fractionation_factor_liq_vap, 4)))

# Question 4c
# data
Cl37_Cl35_ratio_diss = 0.319766  # Cl ratio in Cl-(aq)
Cl37_Cl35_ratio_sol = 0.319936  # Cl ratio in AgCl(s)
# calculate the fractionation factor by definition
fractionation_factor_sol_diss = Cl37_Cl35_ratio_sol/Cl37_Cl35_ratio_diss
# calculate the isotope fractionation
isotope_fractionation_sol_diss = isotope_fractionation_vs_fractionation_factor('?', fractionation_factor_sol_diss)
# print answers
The isotope fractionation factor is %g.\n\
The isotopic fractionation between the two forms of Cl is %g." \
      % (round_to_n_sf(fractionation_factor_sol_diss, 6), round_to_n_sf(isotope_fractionation_sol_diss, 2)))
The isotopic fractionation between the two forms of C is -23.7.
The isotope fractionation factor is 0.9763.

The permil deviation of water with O-18/O-16 = 2.015e-03 is 4.9 ‰.
The permil deviation of water with O-18/O-16 = 1.999e-03 is -3.1 ‰.
The isotopic fractionation between the two forms of carbon is 8.0.
The isotope fractionation factor is 1.008.

The isotope fractionation factor is 1.00053.
The isotopic fractionation between the two forms of Cl is 0.53.

Problem Set 8 - Question 1#

Calculate the fractionation factor that is expected for the non-equilibrium evaporation of liquid \(He\), \(Cd\) (cadmium), and \(Hg\) (mercury) into a vacuum. Perform the calculation for the \({^{4}He}/{^{3}He}\), the \({^{111}Cd}/{^{110}Cd}\), and the \({^{201}Hg}/{^{200}Hg}\) isotope ratios. Why does the fractionation factor per amu mass difference decrease with increasing atomic weight?

# create a function to calculate the kinetic isotope fractionation factor from mass
# the input is a string of isotopic ratio (usable for elements only, not compounds!)
def fractionation_factor_calculator_from_mass(isotopic_ratio):
    # The numbers in the inputted string will be extracted by looping for each of its characters
    extracted_number_str = ''
    for c in isotopic_ratio:
        if c.isnumeric(): extracted_number_str += c
        else: extracted_number_str += ' '
    # get a list of numbers in the inputted string
    mass_list = extracted_number_str.strip().split(' ')
    mass_list = [float(n) for n in mass_list if n != '']
    # return the value of fractionation factor
    return (mass_list[0]/mass_list[1])**0.5

# Question 1
# print answers
print("The kinetic isotope fractionation factor of He (4He/3He) is %.4f." % fractionation_factor_calculator_from_mass("4He/3He"))
print("The kinetic isotope fractionation factor of Cd (111Cd/110Cd) is %.4f." % fractionation_factor_calculator_from_mass("111Cd/110Cd"))
print("The kinetic isotope fractionation factor of He (201Hg/200Hg) is %.4f." % fractionation_factor_calculator_from_mass("201Hg/200Hg"))
The kinetic isotope fractionation factor of He (4He/3He) is 1.1547.
The kinetic isotope fractionation factor of Cd (111Cd/110Cd) is 1.0045.
The kinetic isotope fractionation factor of He (201Hg/200Hg) is 1.0025.

The fractionation factor per amu mass difference decreases from \(H\) to \(Hg\) because the relative mass differences between adjacent isotopes (mass difference = \(1\,amu\)) is smaller for the heavier elements.


  • Lecture slide and Practical for Lecture 7 and 8 of the High-Temperature Geochemistry module