Computing equilibrium activity ratios

This page follows Chapter 11 of Bethke (2007).

The geochemistry module can be used to provide activity ratios assuming equilibrium.

Muscovite and kaolinite

Using the standard GWB database and the component kaolinite instead of Al (using a swap), the reaction has an equilibrium constant at 25C. Assuming a water activity of 1, the equilibrium activity ratio can be computed to be

To perform this calculation using the geochemistry module, a GeochemicalModelDefinition object must be created with the desired mineral species:

[UserObjects]
  [definition]
    type = GeochemicalModelDefinition
    database_file = "../../../database/moose_geochemdb.json"
    basis_species = "H2O K+ Al+++ SiO2(aq) H+"
    equilibrium_minerals = "Muscovite Kaolinite"
    piecewise_linear_interpolation = true # to get exact logK at 25degC with no best-fit interpolation
  []
[]
(modules/geochemistry/test/tests/interrogate_reactions/muscovite.i)

Then a GeochemicalModelInterrogator must be created which specifies the desired swaps and the interrogation = activity instruction:

[GeochemicalModelInterrogator]
  model_definition = definition
  swap_out_of_basis = "Al+++"
  swap_into_basis = "  Kaolinite"
  activity_species = "H2O"
  activity_values = "1.0"
  equilibrium_species = Muscovite
  interrogation = activity
[]
(modules/geochemistry/test/tests/interrogate_reactions/muscovite.i)

The final line of the output yields the desired information:


(A_K+)^1 (A_Al+++)^3 (A_SiO2(aq))^3 (A_H+)^-10 = 10^14.56
(A_K+)^1 (A_H+)^-1 = 10^3.421

Muscovite and other minerals

The geochemical database can be manipulated to give the following reactions for muscovite: (at 25C). These yield, respectively

To perform this calculation using the geochemistry module, a GeochemicalModelDefinition object must be created with the desired mineral species:

[UserObjects]
  [definition]
    type = GeochemicalModelDefinition
    database_file = "../../../database/moose_geochemdb.json"
    basis_species = "H2O K+ Al+++ SiO2(aq) H+"
    equilibrium_minerals = "Muscovite Quartz Maximum Tridymite Amrph^silica"
    piecewise_linear_interpolation = true # to get exact logK at 25degC with no best-fit interpolation
  []
[]
(modules/geochemistry/test/tests/interrogate_reactions/muscovite2.i)

Then a GeochemicalModelInterrogator must be created which specifies the desired swaps and the interrogation = activity instruction:

[GeochemicalModelInterrogator]
  model_definition = definition
  swap_out_of_basis = "SiO2(aq) Al+++   Quartz   SiO2(aq)  Tridymite SiO2(aq)"
  swap_into_basis = "  Quartz   Maximum SiO2(aq) Tridymite SiO2(aq)  Amrph^silica"
  equilibrium_species = Muscovite
  interrogation = activity
[]
(modules/geochemistry/test/tests/interrogate_reactions/muscovite2.i)

The output yields the desired information


(A_H2O)^6 (A_K+)^1 (A_Al+++)^3 (A_SiO2(aq))^3 (A_H+)^-10 = 10^14.56
(A_H2O)^6 (A_K+)^1 (A_Al+++)^3 (A_H+)^-10 = 10^26.56
(A_K+)^-2 (A_H+)^2 = 10^-9.681
(A_K+)^-2 (A_SiO2(aq))^-6 (A_H+)^2 = 10^14.31
(A_K+)^-2 (A_H+)^2 = 10^-8.686
(A_K+)^-2 (A_SiO2(aq))^-6 (A_H+)^2 = 10^14.31
(A_K+)^-2 (A_H+)^2 = 10^-1.967

Ca-clinoptilolite, prehnite and quartz

Using the standard GWB database, prehnite instead of Al, quartz instead of SiO(aq) (using swaps), the reaction has an equilibrium constant at 200C. Assuming a water activity of 1, the equilibrium activity ratio can be computed to be

To produce this result using the geochemistry module, a GeochemicalModelDefinition object must be created with the desired mineral species:

[UserObjects]
  [definition]
    type = GeochemicalModelDefinition
    database_file = "../../../database/moose_geochemdb.json"
    basis_species = "H2O Ca++ Al+++ SiO2(aq) H+ K+"
    equilibrium_minerals = "Clinoptil-Ca Prehnite Quartz"
    piecewise_linear_interpolation = true # to get exact logK at 200degC with no best-fit interpolation
  []
[]
(modules/geochemistry/test/tests/interrogate_reactions/clinoptilolite2.i)

Then a GeochemicalModelInterrogator must be created which specifies the desired swaps and the interrogation = activity instruction:

[GeochemicalModelInterrogator]
  model_definition = definition
  swap_out_of_basis = "Al+++    SiO2(aq)"
  swap_into_basis = "  Prehnite Quartz"
  activity_species = "H2O"
  activity_values = "1"
  equilibrium_species = "Clinoptil-Ca"
  temperature = 200
  interrogation = activity
[]
(modules/geochemistry/test/tests/interrogate_reactions/clinoptilolite2.i)

The final line of the output yields the desired information:


(A_Ca++)^1 (A_Al+++)^2 (A_SiO2(aq))^10 (A_H+)^-8 = 10^-13.51
(A_Ca++)^-1 (A_SiO2(aq))^7 (A_H+)^2 = 10^-27.22
(A_Ca++)^-1 (A_H+)^2 = 10^-10.23

References

  1. Craig M. Bethke. Geochemical and Biogeochemical Reaction Modeling. Cambridge University Press, 2 edition, 2007. doi:10.1017/CBO9780511619670.[BibTeX]