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"))
registerMooseObject("GeochemistryApp", GeochemicalModelDefinition)
static InputParameters validParams()
Class for reading geochemical reactions from a MOOSE geochemical database.
User object that parses a geochemical database file, and only retains information relevant to the cur...
const ModelGeochemicalDatabase & getDatabase() const
provides a reference to the pertinent geochemical database held by this object
const GeochemicalDatabaseReader _db
static InputParameters validParams()
const GeochemicalDatabaseReader & getOriginalFullDatabase() const
provides a reference to the full database file used by this object
GeochemicalModelDefinition(const InputParameters ¶meters)
virtual void execute() override final
PertinentGeochemicalSystem _model
virtual void initialize() override final
const PertinentGeochemicalSystem & getPertinentGeochemicalSystem() const
provides a reference to the PertinentGeochemicalSystem of this object
virtual void finalize() override final
Constructs and stores a minimal amount of information that is pertinent to the user-defined geochemic...
const ModelGeochemicalDatabase & modelGeochemicalDatabase() const
Return a reference to the ModelGeochemicalDatabase structure.
void addKineticRate(const KineticRateUserDescription &description)
Adds a rate description for kinetic_species.
Data structure to hold all relevant information from the database file.