Reaction balancing

This page follows Chapter 11 of Bethke (2007).

The geochemistry module can be used to provide balanced reactions in terms of user-defined components.

Ca-clinoptilolite

The reaction for the mineral Ca-clinoptilolite is written in the database as with an equilibrium constant of at 25C. Using basis-swaps, it can be expressed in terms of muscovite (instead of Al), quartz (instead of SiO(aq)) and OH instead of H: with .

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 Ca++ Al+++ SiO2(aq) H+ K+"
    equilibrium_minerals = "Clinoptil-Ca Muscovite Quartz"
    piecewise_linear_interpolation = true # to get exact logK at 25degC with no best-fit interpolation
  []
[]
(modules/geochemistry/test/tests/interrogate_reactions/clinoptilolite.i)

Then a GeochemicalModelInterrogator must be created which specifies the desired swaps:

[GeochemicalModelInterrogator]
  model_definition = definition
  swap_out_of_basis = "Al+++     SiO2(aq) H+"
  swap_into_basis = "  Muscovite Quartz   OH-"
  equilibrium_species = "Clinoptil-Ca"
[]
(modules/geochemistry/test/tests/interrogate_reactions/clinoptilolite.i)

The first and last lines of the output yield the desired information:


Clinoptil-Ca = 12*H2O + 1*Ca++ + 2*Al+++ + 10*SiO2(aq) - 8*H+  .  log10(K) = -9.12
Clinoptil-Ca = 8*H2O + 1*Ca++ + 0.6667*Muscovite + 8*SiO2(aq) - 1.333*H+ - 0.6667*K+  .  log10(K) = -18.83
Clinoptil-Ca = 8*H2O + 1*Ca++ + 0.6667*Muscovite + 8*Quartz - 1.333*H+ - 0.6667*K+  .  log10(K) = 13.16
Clinoptil-Ca = 6.667*H2O + 1*Ca++ + 0.6667*Muscovite + 8*Quartz + 1.333*OH- - 0.6667*K+  .  log10(K) = -5.484

Pyrite

The standard reaction for the mineral Pyrite is Using basis-swaps, it can be expressed in terms Fe(OH)(ppd) (instead of Fe): Alternatively, it can be expressed in terms of HS(aq) instead of SO: Or in terms of HS(aq) and SO:

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 Fe++ SO4-- H+ O2(aq)"
    equilibrium_minerals = "Pyrite Fe(OH)3(ppd)"
    piecewise_linear_interpolation = true # to get exact logK at 25degC with no best-fit interpolation
  []
[]
(modules/geochemistry/test/tests/interrogate_reactions/pyrite.i)

Then a GeochemicalModelInterrogator must be created which specifies the desired swaps:

[GeochemicalModelInterrogator]
  model_definition = definition
  swap_out_of_basis = "Fe++         Fe(OH)3(ppd) SO4--   O2(aq)"
  swap_into_basis = "  Fe(OH)3(ppd) Fe++         H2S(aq) SO4--"
  equilibrium_species = Pyrite
[]
(modules/geochemistry/test/tests/interrogate_reactions/pyrite.i)

The output yields the desired information:


Pyrite = -1*H2O + 1*Fe++ + 2*SO4-- + 2*H+ - 3.5*O2(aq)  .  log10(K) = 217.4
Pyrite = -3.5*H2O + 1*Fe(OH)3(ppd) + 2*SO4-- + 4*H+ - 3.75*O2(aq)  .  log10(K) = 221
Pyrite = -1*H2O + 1*Fe++ + 2*SO4-- + 2*H+ - 3.5*O2(aq)  .  log10(K) = 217.4
Pyrite = -1*H2O + 1*Fe++ + 2*H2S(aq) - 2*H+ + 0.5*O2(aq)  .  log10(K) = -45.39
Pyrite = -1*H2O + 1*Fe++ + 1.75*H2S(aq) - 1.5*H+ + 0.25*SO4--  .  log10(K) = -12.54

References

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