Kinetically-controlled dissolution of quartz

Section 16.4 of Bethke (2007) describes the gradual dissolution of quartz into deionized water, as governed by a simple kinetic rate law. The reaction is with rate It is assumed that:

  • there is 1kg of water;

  • the temperature is 100C so that ;

  • initially 5000g (83.216mol) of quartz is added to the water;

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

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

  • the initial concentration of SiO(aq) is mmolal.

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 Quartz will be controlled by a kinetic rate law. Note that this model contains H and Cl, which is a bit different than Bethke's set up (these species are provided with very small bulk composition so they don't impact the result). The reason for this is that geochemistry requires a charge-balance species to be defined.

  [definition]
    type = GeochemicalModelDefinition
    database_file = "../../../database/moose_geochemdb.json"
    basis_species = "H2O SiO2(aq) H+ Cl-"
    kinetic_minerals = "Quartz"
    kinetic_rate_descriptions = "rate_quartz"
    piecewise_linear_interpolation = true # for comparison with GWB
(modules/geochemistry/test/tests/kinetics/quartz_dissolution.i)

The rate law for Quartz is defined by a GeochemistryKineticRate UserObject:

  [rate_quartz]
    type = GeochemistryKineticRate
    kinetic_species_name = Quartz
    intrinsic_rate_constant = 1.728E-10 # 2.0E-15mol/s/cm^2 = 1.728E-10mol/day/cm^2
    multiply_by_mass = true
    area_quantity = 1000
  []
(modules/geochemistry/test/tests/kinetics/quartz_dissolution.i)

The TimeDependentReactionSolver defines the initial concentration of the species, including the initial mole number for Quartz. The system is closed at time zero (by default) so the free_molality constraint of SiO(aq) becomes inactive (no SiO(aq) is added or removed from the system by an external agent after this time):

[TimeDependentReactionSolver]
  model_definition = definition
  geochemistry_reactor_name = reactor
  charge_balance_species = "Cl-"
  constraint_species = "H2O              H+               Cl-              SiO2(aq)"
  constraint_value = "  1.0              1E-10            1E-10            1E-9"
  constraint_meaning = "kg_solvent_water bulk_composition bulk_composition free_concentration"
  constraint_unit = "   kg               moles            moles            molal"
  initial_temperature = 100.0
  temperature = 100.0
  kinetic_species_name = Quartz
  kinetic_species_initial_value = 5
  kinetic_species_unit = kg
  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/quartz_dissolution.i)

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

[Executioner]
  type = Transient
  [TimeStepper]
    type = FunctionDT
    function = timestepper
  []
  end_time = 5.0
[]
(modules/geochemistry/test/tests/kinetics/quartz_dissolution.i)

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

[AuxVariables]
  [diss]
  []
[]
[AuxKernels]
  [diss]
    type = ParsedAux
    coupled_variables = moles_Quartz
    expression = '83.216414271 - moles_Quartz'
    variable = diss
  []
[]
[Postprocessors]
  [dissolved_moles]
    type = PointValue
    point = '0 0 0'
    variable = diss
  []
[]
[Outputs]
  csv = true
[]
(modules/geochemistry/test/tests/kinetics/quartz_dissolution.i)

GWB input file

The equivalent Geochemists Workbench input file is

# React script that is equivalent to quartz_dissolution.i
time begin = 0 days, end = 5 days
T = 100
SiO2(aq) = 1 umolal
react 5000 g Quartz
kinetic Quartz rate_con = 2.0e-15 surface = 1000
go
(modules/geochemistry/test/tests/kinetics/quartz_dissolution.rea)

Results

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

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

References

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