19 params.
addRequiredParam<FileName>(
"database_file",
"The name of the geochemical database file");
21 "reexpress_free_electron",
23 "If true then if: (1) the 'free electron' appears in the database file; and (2) its " 24 "equilibrium reaction includes O2(g); and (3) O2(g) is a gas; and (4) O2(g)'s equilibrium " 25 "reaction is O2(g)=O2(eq); and (5) O2(aq) exists as a basis species in the database file; " 26 "then reexpress the free electron's equilibrium reaction in terms of O2(aq). Note that if " 27 "you choose 'reexpress_free_electron=false' and these other 5 conditions are true, then the " 28 "'free electron' will not be available as a secondary species");
30 "piecewise_linear_interpolation",
32 "If true then use a piecewise-linear interpolation of logK and Debye-Huckel parameters, " 33 "regardless of the interpolation type specified in the database file. This can be useful " 34 "for comparing with results using other geochemistry software");
37 "A list of basis components relevant to the aqueous-equilibrium problem. H2O must appear " 38 "first in this list. These components must be chosen from the 'basis species' in the " 39 "database, the sorbing sites (if any) and the decoupled redox states that are in " 40 "disequilibrium (if any).");
41 params.
addParam<std::vector<std::string>>(
42 "equilibrium_minerals",
44 "A list of minerals that are in equilibrium with the aqueous solution. All members of this " 45 "list must be in the 'minerals' section of the database file");
46 params.
addParam<std::vector<std::string>>(
49 "A list of gases that are in equilibrium with the aqueous solution and can have their " 50 "fugacities fixed, at least for some time and spatial location. All members of this list " 51 "must be in the 'gas' section of the database file");
52 params.
addParam<std::vector<std::string>>(
55 "A list of minerals whose dynamics are governed by a rate law. These are not in equilibrium " 56 "with the aqueous solution. All members of this list must be in the 'minerals' section of " 59 params.
addParam<std::vector<std::string>>(
62 "A list alternative oxidation states (eg Fe+++) whose dynamics are governed by a rate law. " 63 "These are not in equilibrium with the aqueous solution. All members of this list must be " 65 "'redox couples' section of the database file.");
66 params.
addParam<std::vector<std::string>>(
67 "kinetic_surface_species",
69 "A list surface sorbing species whose dynamics are governed by a rate law. These are not in " 70 "equilibrium with the aqueous solution. All members of this list must be in the 'surface " 71 "species' section of the database file.");
75 "The name of the oxygen species that appears in redox reactions. For redox pairs that are " 76 "in disequilibrium to be correctly recorded, and hence their Nernst potentials to be " 77 "computed easily, redox_oxygen must be a basis species and it must appear in the reaction " 78 "for each redox pair");
82 "The name of the free electron. For redox pairs that are in disequilibrium to be correctly " 83 "recorded, and hence their Nernst potentials to be computed eqsily, the equilibrium reaction " 84 "for redox_electron must involve redox_oxygen, and the basis species must be chosen to that " 85 "redox_electron is an equilibrium species");
86 params.
addParam<std::vector<UserObjectName>>(
87 "kinetic_rate_descriptions",
89 "A list of GeochemistryKineticRate UserObject names that define the kinetic rates. If a " 90 "kinetic species has no rate prescribed to it, its reaction rate will be zero");
92 "remove_all_extrapolated_secondary_species",
94 "After reading the database file, immediately remove all secondary species that have " 95 "extrapolated equilibrium constants. Sometimes these extrapolations are completely crazy " 96 "and those secondary species greatly impact the results");
99 "retains information relevant to the current geochemical model");
106 _db(getParam<FileName>(
"database_file"),
107 getParam<bool>(
"reexpress_free_electron"),
108 getParam<bool>(
"piecewise_linear_interpolation"),
109 getParam<bool>(
"remove_all_extrapolated_secondary_species")),
111 getParam<
std::vector<
std::string>>(
"basis_species"),
112 getParam<
std::vector<
std::string>>(
"equilibrium_minerals"),
113 getParam<
std::vector<
std::string>>(
"equilibrium_gases"),
114 getParam<
std::vector<
std::string>>(
"kinetic_minerals"),
115 getParam<
std::vector<
std::string>>(
"kinetic_redox"),
116 getParam<
std::vector<
std::string>>(
"kinetic_surface_species"),
117 getParam<
std::string>(
"redox_oxygen"),
118 getParam<
std::string>(
"redox_electron"))
120 for (
const auto & kr :
getParam<std::vector<UserObjectName>>(
"kinetic_rate_descriptions"))
static InputParameters validParams()
const GeochemicalDatabaseReader & getOriginalFullDatabase() const
provides a reference to the full database file used by this object
const PertinentGeochemicalSystem & getPertinentGeochemicalSystem() const
provides a reference to the PertinentGeochemicalSystem of this object
registerMooseObject("GeochemistryApp", GeochemicalModelDefinition)
User object that parses a geochemical database file, and only retains information relevant to the cur...
const ModelGeochemicalDatabase & modelGeochemicalDatabase() const
Return a reference to the ModelGeochemicalDatabase structure.
virtual void initialize() override final
void addKineticRate(const KineticRateUserDescription &description)
Adds a rate description for kinetic_species.
const ModelGeochemicalDatabase & getDatabase() const
provides a reference to the pertinent geochemical database held by this object
Constructs and stores a minimal amount of information that is pertinent to the user-defined geochemic...
const T & getParam(const std::string &name) const
virtual void finalize() override final
Data structure to hold all relevant information from the database file.
const GeochemicalDatabaseReader _db
virtual void execute() override final
GeochemicalModelDefinition(const InputParameters ¶meters)
PertinentGeochemicalSystem _model
static InputParameters validParams()
Class for reading geochemical reactions from a MOOSE geochemical database.