Sorption onto ferric hydroxide

This example closely follows Section 10.4 of Bethke (2007).

We explore the sorption of mercury, lead and sulfate onto hydrous ferric oxide at pH 4 and 8.

Definition of the sorption via surface complexation

It is assumed that there are two sorbing sites: Bethke (2007) uses the convention that a ">" indicates something to do with sorption. The sorbing reactions, written in the documentation on equilibrium reactions as are, specifically: The sorption occurs on the ferric hydroxide mineral, Fe(OH), called Fe(OH)3(ppd) in the database.

In order to complete the description of surface complexation, the surface potential must be specified. This requires the specific surface area, which is assumed to be We assume that:

  • For each mol of Fe(OH)3(ppd), there is 0.005mol of >(s)FeOH

  • For each mol of Fe(OH)3(ppd), there is 0.2mol of >(w)FeOH

All of the above information is contained in the MOOSE test database ferric_hydroxide_sorption.json. It is read into the MOOSE input file using a GeochemicalModelDefinition UserObject

[UserObjects<<<{"href": "../../../syntax/UserObjects/index.html"}>>>]
  [definition]
    type = GeochemicalModelDefinition<<<{"description": "User object that parses a geochemical database file, and only retains information relevant to the current geochemical model", "href": "../../../source/userobjects/GeochemicalModelDefinition.html"}>>>
    database_file<<<{"description": "The name of the geochemical database file"}>>> = "../../database/ferric_hydroxide_sorption.json"
    basis_species<<<{"description": "A list of basis components relevant to the aqueous-equilibrium problem. H2O must appear first in this list.  These components must be chosen from the 'basis species' in the database, the sorbing sites (if any) and the decoupled redox states that are in disequilibrium (if any)."}>>> = "H2O H+ Na+ Cl- Hg++ Pb++ SO4-- Fe+++ >(s)FeOH >(w)FeOH"
    equilibrium_minerals<<<{"description": "A list of minerals that are in equilibrium with the aqueous solution.  All members of this list must be in the 'minerals' section of the database file"}>>> = "Fe(OH)3(ppd)"
    piecewise_linear_interpolation<<<{"description": "If true then use a piecewise-linear interpolation of logK and Debye-Huckel parameters, regardless of the interpolation type specified in the database file.  This can be useful for comparing with results using other geochemistry software"}>>> = true # for comparison with GWB
  []
[]
(modules/geochemistry/test/tests/sorption_and_surface_complexation/ferric_hydroxide.i)

Chemical composition, mineral quantities and sorbing moles

The chemical composition of the water is shown in Table 1. In addition:

  • charge balance is performed on Cl;

  • two models are run: one with pH=4, and the other with pH=8.

Table 1: Element composition of water in the sorption example

SpeciesConcentration (mmol.kg)
Na10
Cl10
Hg0.1
Pb0.1
SO0.2

There is 1 free gram of Fe(OH)3(ppd), which in geochemistry language means there is free mols of this mineral. Remember "free" moles means a quantity that is "floating around in the aqueous solution". This is in contrast to a "bulk composition" which consists of the free amount as well as an amount that forms equilibrium (secondary) species. This means there is

  • mol of >(s)FeOH

  • mol of >(w)FeOH

Note that these are bulk composition values as some of these sites will be free and some will be occupied by sorbed species.

commentnote

The bulk mole compositions of the sites >(s)FeOH and >(w)FeOH must be specified in the geochemistry module. This is different from Geochemists Workbench, which works out the bulk compositions internally.

The TimeIndependentReactionSolver defines the composition, including the pH, the free mole number of the mineral, and the bulk composition of the sorbing sites:

[TimeIndependentReactionSolver<<<{"href": "../../../syntax/TimeIndependentReactionSolver/index.html"}>>>]
  model_definition<<<{"description": "The name of the GeochemicalModelDefinition user object (you must create this UserObject yourself)"}>>> = definition
  charge_balance_species<<<{"description": "Charge balance will be enforced on this basis species.  This means that its bulk mole number may be changed from the initial value you provide in order to ensure charge neutrality.  After the initial swaps have been performed, this must be in the basis, and it must be provided with a bulk_composition constraint_meaning."}>>> = "Cl-"
  swap_out_of_basis<<<{"description": "Species that should be removed from the model_definition's basis and be replaced with the swap_into_basis species"}>>> = "Fe+++"
  swap_into_basis<<<{"description": "Species that should be removed from the model_definition's equilibrium species list and added to the basis.  There must be the same number of species in swap_out_of_basis and swap_into_basis.  These swaps are performed before any other computations during the initial problem setup. If this list contains more than one species, the swapping is performed one-by-one, starting with the first pair (swap_out_of_basis[0] and swap_into_basis[0]), then the next pair, etc"}>>> = "Fe(OH)3(ppd)"
  constraint_species<<<{"description": "Names of the species that have their values fixed to constraint_value with meaning constraint_meaning.  All basis species (after swap_into_basis and swap_out_of_basis) must be provided with exactly one constraint.  These constraints are used to compute the configuration during the initial problem setup, and in time-dependent simulations they may be modified as time progresses."}>>> = "H2O              H+            Na+              Cl-              Hg++             Pb++             SO4--            Fe(OH)3(ppd) >(s)FeOH         >(w)FeOH"
  constraint_value<<<{"description": "Numerical value of the containts on constraint_species"}>>> = "  1.0              1E-4          10E-3            10E-3            0.1E-3           0.1E-3           0.2E-3           9.3573E-3    4.6786E-5        1.87145E-3"
  constraint_meaning<<<{"description": "Meanings of the numerical values given in constraint_value.  kg_solvent_water: can only be applied to H2O and units must be kg.  bulk_composition: can be applied to all non-gas species, and represents the total amount of the basis species contained as free species as well as the amount found in secondary species but not in kinetic species, and units must be moles or mass (kg, g, etc).  bulk_composition_with_kinetic: can be applied to all non-gas species, and represents the total amount of the basis species contained as free species as well as the amount found in secondary species and in kinetic species, and units must be moles or mass (kg, g, etc).  free_concentration: can be applied to all basis species that are not gas and not H2O and not mineral, and represents the total amount of the basis species existing freely (not as secondary species) within the solution, and units must be molal or mass_per_kg_solvent.  free_mineral: can be applied to all mineral basis species, and represents the total amount of the mineral existing freely (precipitated) within the solution, and units must be moles, mass or cm3.  activity and log10activity: can be applied to basis species that are not gas and not mineral and not sorbing sites, and represents the activity of the basis species (recall pH = -log10activity), and units must be dimensionless.  fugacity and log10fugacity: can be applied to gases, and units must be dimensionless"}>>> = "kg_solvent_water activity      bulk_composition bulk_composition bulk_composition bulk_composition bulk_composition free_mineral bulk_composition bulk_composition"
  constraint_unit<<<{"description": "Units of the numerical values given in constraint_value.  Dimensionless: should only be used for activity or fugacity constraints.  Moles: mole number.  Molal: moles per kg solvent water.  kg: kilograms.  g: grams.  mg: milligrams.  ug: micrograms.  kg_per_kg_solvent: kilograms per kg solvent water.  g_per_kg_solvent: grams per kg solvent water.  mg_per_kg_solvent: milligrams per kg solvent water.  ug_per_kg_solvent: micrograms per kg solvent water.  cm3: cubic centimeters"}>>> = "   kg               dimensionless moles            moles            moles            moles            moles            moles        moles            moles"
  ramp_max_ionic_strength_initial<<<{"description": "The number of iterations over which to progressively increase the maximum ionic strength (from zero to max_ionic_strength) during the initial equilibration.  Increasing this can help in convergence of the Newton process, at the cost of spending more time finding the aqueous configuration."}>>> = 0 # not needed in this simple problem
  stoichiometric_ionic_str_using_Cl_only<<<{"description": "If set to true, the stoichiometric ionic strength will be set equal to Cl- molality (or max_ionic_strength if the Cl- molality is too big).  This flag overrides ionic_str_using_basis_molality_only"}>>> = true # for comparison with GWB
  mol_cutoff<<<{"description": "Information regarding species with molalities less than this amount will not be outputted"}>>> = 1E-10
  abs_tol<<<{"description": "If the residual of the algebraic system (measured in mol) is lower than this value, the Newton process (that finds the aqueous configuration) is deemed to have converged"}>>> = 1E-15
[]
(modules/geochemistry/test/tests/sorption_and_surface_complexation/ferric_hydroxide.i)

GWB input file

The equivalent Geochemists Workbench input file is

# React script that is equivalent to ferric_hydroxide.i
surface_data = FeOH+.dat
sorbate include
data = thermo.tdat verify
conductivity = conductivity-USGS.dat
temperature = 25 C
H2O          = 1 free kg
Cl-          = 10.0E-3 mol
balance on Cl-
Na+          = 10.0E-3 mol
pH           = 4
Hg++         = 0.1E-3 mol
Pb++         = 0.1E-3 mol
SO4--        = 0.2E-3 mol
decouple Fe+++
swap Fe(OH)3(ppd) for Fe+++
Fe(OH)3(ppd) = 9.3573E-3 free mol
printout species = long
suppress all
unsuppress Fe(OH)3(ppd)
epsilon = 1e-12
(modules/geochemistry/test/tests/sorption_and_surface_complexation/ferric_hydroxide.rea)

Results

Bethke (2007) computes the results that are shown in Table 2, Table 3, Table 4 and Table 5. Both the geochemistry module and the GWB software give the same results. (A final note: sometimes the geochemistry results differ from the Geochemists Workbench results in the 4 significant figure. This is because of the different precision used for the permittivity of free space, the Faraday constant, etc.)

Table 2: Surface characteristics

CharacteristicpH=4pH=8
Surface charge (C.cm)16.00.4
Surface potential (mV)16817.1

Table 3: Concentration of species on weak sites

SiteConcentration (mmol.kg) pH = 4Concentration (mmol.kg) pH = 8
>(w)FeOH1.230.129
>(w)FeOH0.4341.29
>(w)FeO0.295
>(w)FeOHg0.0984
>(w)FeOPb0.0534
>(w)FeSO0.117
>(w)FeOHSO0.0825

Table 4: Concentration of species on strong sites

SiteConcentration (mmol.kg) pH = 4Concentration (mmol.kg) pH = 8
>(s)FeOH0.00559
>(s)FeOH0.00197
>(s)FeO
>(s)FeOHg
>(s)FeOPb0.03920.0466

Table 5: Percentage of species sorbed

Species% sorbed% sorbed
Hg0.00098.45
Pb39.59100
SO99.951.98

References

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