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<<<{"href": "index.html"}>>>]
model_definition<<<{"description": "The name of the GeochemicalModelDefinition user object"}>>> = definition
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. There must be the same number of species in swap_out_of_basis and swap_into_basis. 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"}>>> = "Al+++ SiO2(aq) H+"
swap_into_basis<<<{"description": "Species that should be removed from the model_definition's equilibrium species list and added to the basis"}>>> = " Muscovite Quartz OH-"
equilibrium_species<<<{"description": "Only output results for this equilibrium species. If not provided, results for all equilibrium species will be outputted"}>>> = "Clinoptil-Ca"
[]
[UserObjects<<<{"href": "../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/moose_geochemdb.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 Ca++ Al+++ SiO2(aq) H+ K+"
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"}>>> = "Clinoptil-Ca Muscovite Quartz"
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 # to get exact logK at 25degC with no best-fit interpolation
[]
[]
(modules/geochemistry/test/tests/interrogate_reactions/clinoptilolite.i)