- model_definitionThe name of the GeochemicalModelDefinition user object
C++ Type:UserObjectName
Controllable:No
Description:The name of the GeochemicalModelDefinition user object
GeochemicalModelInterrogator
Usually this Output is added using the GeochemicalModelInterrogator action. The purpose of this Output is to output balanced reactions and equilibrium constants, activity ratios, equilibrium temperature, etc, depending on the interrogation
option. If a invalid swap is defined through the swap_into_basis
and swap_out_of_basis
options, the simulation will exit with an explanatory error message.
An example of outputting equilibrium reactions (interrogation = reaction
) for different choices of basis components 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)An example of outputting activity ratios/products (interrogation = activity
) is
# Output activity ratios for reactions involving muscovite
[GeochemicalModelInterrogator]
model_definition = definition
swap_out_of_basis = "Al+++"
swap_into_basis = " Kaolinite"
activity_species = "H2O"
activity_values = "1.0"
equilibrium_species = Muscovite
interrogation = activity
[]
[UserObjects]
[definition]
type = GeochemicalModelDefinition
database_file = "../../../database/moose_geochemdb.json"
basis_species = "H2O K+ Al+++ SiO2(aq) H+"
equilibrium_minerals = "Muscovite Kaolinite"
piecewise_linear_interpolation = true # to get exact logK at 25degC with no best-fit interpolation
[]
[]
(modules/geochemistry/test/tests/interrogate_reactions/muscovite.i)An example of computing temperature (interrogation = eqm_temperature
) at equilibrium is
# Find temperature at equilibrium for reactions involving gypsum
[GeochemicalModelInterrogator]
model_definition = definition
swap_out_of_basis = "Ca++"
swap_into_basis = " Anhydrite"
activity_species = "H2O"
activity_values = "1.0"
temperature = 25
equilibrium_species = Gypsum
interrogation = eqm_temperature
[]
[UserObjects]
[definition]
type = GeochemicalModelDefinition
database_file = "../../../database/moose_geochemdb.json"
basis_species = "H2O Ca++ SO4--"
equilibrium_minerals = "Gypsum Anhydrite"
[]
[]
(modules/geochemistry/test/tests/interrogate_reactions/gypsum.i)An example of outputting pH and pe (interrogation = activity
) at equilibrium is
# Compute pH values for an equilibrium reaction involving the mineral hematite
[GeochemicalModelInterrogator]
model_definition = definition
equilibrium_species = Hematite
activity_species = 'H2O Fe++'
activity_values = '1 1E-10'
interrogation = activity
[]
[UserObjects]
[definition]
type = GeochemicalModelDefinition
database_file = "../../../database/moose_geochemdb.json"
basis_species = "H2O Fe++ H+ O2(aq)"
equilibrium_minerals = "Hematite"
piecewise_linear_interpolation = true # to get exact logK at 25degC with no best-fit interpolation
[]
[]
(modules/geochemistry/test/tests/interrogate_reactions/hematite.i)Input Parameters
- activity_speciesSpecies that are provided numerical values of activity (or fugacity for gases) in the activity_value input
C++ Type:std::vector<std::string>
Controllable:No
Description:Species that are provided numerical values of activity (or fugacity for gases) in the activity_value input
- activity_valuesNumerical values for the activity (or fugacity) for the species in the activity_species list. These are activity values, not log10(activity).
C++ Type:std::vector<double>
Controllable:No
Description:Numerical values for the activity (or fugacity) for the species in the activity_species list. These are activity values, not log10(activity).
- equilibrium_speciesOnly output results for this equilibrium species. If not provided, results for all equilibrium species will be outputted
C++ Type:std::string
Controllable:No
Description:Only output results for this equilibrium species. If not provided, results for all equilibrium species will be outputted
- interrogationreactionType of interrogation to perform. reaction: Output equilibrium species reactions and log10K. activity: determine activity products at equilibrium. eqm_temperature: determine temperature to ensure equilibrium
Default:reaction
C++ Type:MooseEnum
Controllable:No
Description:Type of interrogation to perform. reaction: Output equilibrium species reactions and log10K. activity: determine activity products at equilibrium. eqm_temperature: determine temperature to ensure equilibrium
- precision4Precision for printing values. Also, if the absolute value of a stoichiometric coefficient is less than 10^(-precision) then it is set to zero. Also, if equilibrium temperatures are desired, they will be computed to a relative error of 10^(-precision)
Default:4
C++ Type:unsigned int
Controllable:No
Description:Precision for printing values. Also, if the absolute value of a stoichiometric coefficient is less than 10^(-precision) then it is set to zero. Also, if equilibrium temperatures are desired, they will be computed to a relative error of 10^(-precision)
- stoichiometry_tolerance1e-06Swapping involves inverting matrices via a singular value decomposition. During this process: (1) if abs(singular value) < stoi_tol * L1norm(singular values), then the matrix is deemed singular (so the basis swap is deemed invalid); (2) if abs(any stoichiometric coefficient) < stoi_tol then it is set to zero.
Default:1e-06
C++ Type:double
Controllable:No
Description:Swapping involves inverting matrices via a singular value decomposition. During this process: (1) if abs(singular value) < stoi_tol * L1norm(singular values), then the matrix is deemed singular (so the basis swap is deemed invalid); (2) if abs(any stoichiometric coefficient) < stoi_tol then it is set to zero.
- swap_into_basisSpecies that should be removed from the model_definition's equilibrium species list and added to the basis
C++ Type:std::vector<std::string>
Controllable:No
Description:Species that should be removed from the model_definition's equilibrium species list and added to the basis
- swap_out_of_basisSpecies 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
C++ Type:std::vector<std::string>
Controllable:No
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
- temperature25Equilibrium constants will be computed at this temperature [degC]. This is ignored if interrogation=eqm_temperature.
Default:25
C++ Type:double
Controllable:No
Description:Equilibrium constants will be computed at this temperature [degC]. This is ignored if interrogation=eqm_temperature.
- use_displacedFalseEnable/disable the use of the displaced mesh for outputting
Default:False
C++ Type:bool
Controllable:No
Description:Enable/disable the use of the displaced mesh for outputting
Optional Parameters
- additional_execute_onThe list of flag(s) indicating when this object should be executed, the available options include FORWARD, ADJOINT, HOMOGENEOUS_FORWARD, ADJOINT_TIMESTEP_BEGIN, ADJOINT_TIMESTEP_END, NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, MULTIAPP_FIXED_POINT_END, MULTIAPP_FIXED_POINT_BEGIN, FINAL, FAILED, CUSTOM.
C++ Type:ExecFlagEnum
Controllable:No
Description:The list of flag(s) indicating when this object should be executed, the available options include FORWARD, ADJOINT, HOMOGENEOUS_FORWARD, ADJOINT_TIMESTEP_BEGIN, ADJOINT_TIMESTEP_END, NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, MULTIAPP_FIXED_POINT_END, MULTIAPP_FIXED_POINT_BEGIN, FINAL, FAILED, CUSTOM.
- execute_onFINALThe list of flag(s) indicating when this object should be executed, the available options include FORWARD, ADJOINT, HOMOGENEOUS_FORWARD, ADJOINT_TIMESTEP_BEGIN, ADJOINT_TIMESTEP_END, NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, MULTIAPP_FIXED_POINT_END, MULTIAPP_FIXED_POINT_BEGIN, FINAL, FAILED, CUSTOM.
Default:FINAL
C++ Type:ExecFlagEnum
Controllable:No
Description:The list of flag(s) indicating when this object should be executed, the available options include FORWARD, ADJOINT, HOMOGENEOUS_FORWARD, ADJOINT_TIMESTEP_BEGIN, ADJOINT_TIMESTEP_END, NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, MULTIAPP_FIXED_POINT_END, MULTIAPP_FIXED_POINT_BEGIN, FINAL, FAILED, CUSTOM.
Execution Scheduling Parameters
- control_tagsAdds user-defined labels for accessing object parameters via control logic.
C++ Type:std::vector<std::string>
Controllable:No
Description:Adds user-defined labels for accessing object parameters via control logic.
- enableTrueSet the enabled status of the MooseObject.
Default:True
C++ Type:bool
Controllable:Yes
Description:Set the enabled status of the MooseObject.
Advanced Parameters
- end_stepTime step at which this output object stop operating
C++ Type:int
Controllable:No
Description:Time step at which this output object stop operating
- end_timeTime at which this output object stop operating
C++ Type:double
Controllable:No
Description:Time at which this output object stop operating
- interval1The interval at which time steps are output to the solution file
Default:1
C++ Type:unsigned int
Controllable:No
Description:The interval at which time steps are output to the solution file
- minimum_time_interval0The minimum simulation time between output steps
Default:0
C++ Type:double
Controllable:No
Description:The minimum simulation time between output steps
- start_stepTime step at which this output object begins to operate
C++ Type:int
Controllable:No
Description:Time step at which this output object begins to operate
- start_timeTime at which this output object begins to operate
C++ Type:double
Controllable:No
Description:Time at which this output object begins to operate
- sync_onlyFalseOnly export results at sync times
Default:False
C++ Type:bool
Controllable:No
Description:Only export results at sync times
- sync_timesTimes at which the output and solution is forced to occur
C++ Type:std::vector<double>
Controllable:No
Description:Times at which the output and solution is forced to occur
- sync_times_objectTimes object providing the times at which the output and solution is forced to occur
C++ Type:TimesName
Controllable:No
Description:Times object providing the times at which the output and solution is forced to occur
- time_tolerance1e-14Time tolerance utilized checking start and end times
Default:1e-14
C++ Type:double
Controllable:No
Description:Time tolerance utilized checking start and end times