GeochemicalModelInterrogator

This sets up a very simple MOOSE simulation, with zero time steps, no "usual" solution process, no "usual" output, etc. The only thing the simulation does is add a GeochemicalModelInterrogator userobject, which outputs balanced reactions and equilibrium constants, activity ratios, equilibrium temperature, etc (and then MOOSE exits). See the GeochemicalModelInterrogator userobject for more discussion.

An example is

# Outputs equilibrium reactions fo Clinoptil-Ca for various different basis species, along with log10(K)
[GeochemicalModelInterrogator]
  model_definition = definition
  swap_out_of_basis = "Al+++     SiO2(aq) H+"
  swap_into_basis = "  Muscovite Quartz   OH-"
  equilibrium_species = "Clinoptil-Ca"
[]

[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)