Kinetically-controlled dissolution of albite into an acidic solution

Section 16.4 of Bethke (2007) describes the gradual dissolution of albite into an acidic solution, as governed by a kinetic rate law. The reaction is with rate It is assumed that:

  • there is 1kg of solvent water in addition to:

    • 0.1 molal Cl,

    • 0.1 molal Na,

    • molal SiO(aq),

    • molal Al;

  • the temperature is 70C;

  • initially 250g (0.953387mol) of "albite low" is added to the water;

  • the specific surface area is cm/g(albite low);

  • the rate constant is mol.cm.smol.cm.day;

  • the pH is fixed at 1.5 for the entire simulation

MOOSE input file

The MOOSE input file defines the model using the GeochemicalModelDefinition. This defines the basis species as well as defining that the dynamics of the mineral Albite will be controlled by a kinetic rate law.

  [definition]
    type = GeochemicalModelDefinition
    database_file = "../../../database/moose_geochemdb.json"
    basis_species = "H2O H+ Cl- Na+ SiO2(aq) Al+++"
    kinetic_minerals = "Albite"
    kinetic_rate_descriptions = "rate_albite"
(modules/geochemistry/test/tests/kinetics/kinetic_albite.i)

The rate law for Albite is defined by a GeochemistryKineticRate UserObject (note the promoting_species):

  [rate_albite]
    type = GeochemistryKineticRate
    kinetic_species_name = Albite
    intrinsic_rate_constant = 5.4432E-8 # 6.3E-13mol/s/cm^2 = 5.4432E-8mol/day/cm^2
    multiply_by_mass = true
    area_quantity = 1000
    promoting_species_names = "H+"
    promoting_species_indices = "1.0"
  []
(modules/geochemistry/test/tests/kinetics/kinetic_albite.i)

The TimeDependentReactionSolver defines the following.

  • The initial concentration of the species (see note below)

  • The initial mole number for Albite

  • That the system is closed at time zero (by default) so the free_molality constraints becomes inactive (no SiO(aq) or Al are added or removed from the system by an external agent after this time)

  • The pH, via the activity constraint on H. This constraint is not removed, so this effectively means HCl is continually added or removed from the system to maintain the pH (remember Cl is the charge-balance species)

  • That the kinetic rates are updated during the Newton solve that finds the equilibrium configuration at each time step. This helps with stability since it is an implicit approach. Geochemists Workbench appears to only compute the kinetic rates at the begining of the time step (an explicit approach).

[TimeDependentReactionSolver]
  model_definition = definition
  geochemistry_reactor_name = reactor
  charge_balance_species = "Cl-"
  constraint_species = "H2O              H+            Cl-              Na+              SiO2(aq)           Al+++"
  constraint_value = "  1.0              -1.5          0.1              0.1              1E-6               1E-6"
  constraint_meaning = "kg_solvent_water log10activity bulk_composition bulk_composition free_concentration free_concentration"
  constraint_unit = "   kg               dimensionless moles            moles            molal              molal"
  initial_temperature = 70.0
  temperature = 70.0
  kinetic_species_name = Albite
  kinetic_species_initial_value = 250
  kinetic_species_unit = g
  evaluate_kinetic_rates_always = true # implicit time-marching used for stability
  ramp_max_ionic_strength_initial = 0 # max_ionic_strength in such a simple problem does not need ramping
  stoichiometric_ionic_str_using_Cl_only = true # for comparison with GWB
  execute_console_output_on = '' # only CSV output for this example
[]
(modules/geochemistry/test/tests/kinetics/kinetic_albite.i)
commentnote

The bulk composition for Na+ is 0.1 moles. This means there are 0.1 moles in the aqueous solution (some will be free, others will be bound into secondary species such as NaCl). In addition to this, there is Na+ bound inside the 250g (0.953387 moles) of Albite. If you wish to define the entire bulk composition (aqueous plus kinetic) you should use the bulk_composition_with_kinetic keyword, which would be set to 1.053387 moles in this case. The other species (HO, Al, SiO(aq) and H) do not have bulk mole number constraints so they aren't impacted by the Albite.

The Executioner defines the time-stepping (time is measured in days in this input file)

[Executioner]
  type = Transient
  dt = 5
  end_time = 30 # measured in days
[]
(modules/geochemistry/test/tests/kinetics/kinetic_albite.i)

An AuxVariable, AuxKernel, Postprocessor and Output allow the mole number of the Albite mineral to be recorded into a CSV file using the moles_Albite AuxVariable added automatically by the TimeDependentReactionSolver

[AuxVariables]
  [mole_change_albite]
  []
[]
[AuxKernels]
  [mole_change_albite]
    type = ParsedAux
    args = moles_Albite
    function = 'moles_Albite - 0.953387'
    variable = mole_change_albite
  []
[]
[Postprocessors]
  [mole_change_Albite]
    type = PointValue
    point = '0 0 0'
    variable = "mole_change_albite"
  []
[]
[Outputs]
  csv = true
[]
(modules/geochemistry/test/tests/kinetics/kinetic_albite.i)

GWB input file

The equivalent Geochemists Workbench input file is

# React script that is equivalent to kinetic_albite.i
time begin = 0 days, end = 30 days
T = 70
pH = 1.5
0.1 molal Cl-
0.1 molal Na+
1 umolal SiO2(aq)
1 umolal Al+++

react 250 g "Albite low"
kinetic "Albite low" rate_con = 6.3e-13, apower(H+) = 1 \
   surface = 1000
fix pH
go
(modules/geochemistry/test/tests/kinetics/kinetic_albite.rea)

Note that the bulk composition for Na+ is 0.1, as mentioned above. When running, GWB increases the bulk composition of Cl- in order to enforce charge neutrality (which looks strange because the initial composition is uncharged) but that does not impact the results presented below.

Results

The results shown below can be compared with Bethke (2007) Figure 16.2.

Figure 1: Change in mole number of kinetically-controlled albite. Compare with Bethke's Figure 16.2

References

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