- 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<<<{"href": "../../syntax/GeochemicalModelInterrogator/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": "../../syntax/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": "../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)An example of outputting activity ratios/products (interrogation = activity
) is
# Output activity ratios for reactions involving muscovite
[GeochemicalModelInterrogator<<<{"href": "../../syntax/GeochemicalModelInterrogator/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+++"
swap_into_basis<<<{"description": "Species that should be removed from the model_definition's equilibrium species list and added to the basis"}>>> = " Kaolinite"
activity_species<<<{"description": "Species that are provided numerical values of activity (or fugacity for gases) in the activity_value input"}>>> = "H2O"
activity_values<<<{"description": "Numerical values for the activity (or fugacity) for the species in the activity_species list. These are activity values, not log10(activity)."}>>> = "1.0"
equilibrium_species<<<{"description": "Only output results for this equilibrium species. If not provided, results for all equilibrium species will be outputted"}>>> = Muscovite
interrogation<<<{"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"}>>> = activity
[]
[UserObjects<<<{"href": "../../syntax/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": "../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 K+ Al+++ SiO2(aq) H+"
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"}>>> = "Muscovite Kaolinite"
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/muscovite.i)An example of computing temperature (interrogation = eqm_temperature
) at equilibrium is
# Find temperature at equilibrium for reactions involving gypsum
[GeochemicalModelInterrogator<<<{"href": "../../syntax/GeochemicalModelInterrogator/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"}>>> = "Ca++"
swap_into_basis<<<{"description": "Species that should be removed from the model_definition's equilibrium species list and added to the basis"}>>> = " Anhydrite"
activity_species<<<{"description": "Species that are provided numerical values of activity (or fugacity for gases) in the activity_value input"}>>> = "H2O"
activity_values<<<{"description": "Numerical values for the activity (or fugacity) for the species in the activity_species list. These are activity values, not log10(activity)."}>>> = "1.0"
temperature<<<{"description": "Equilibrium constants will be computed at this temperature [degC]. This is ignored if interrogation=eqm_temperature."}>>> = 25
equilibrium_species<<<{"description": "Only output results for this equilibrium species. If not provided, results for all equilibrium species will be outputted"}>>> = Gypsum
interrogation<<<{"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"}>>> = eqm_temperature
[]
[UserObjects<<<{"href": "../../syntax/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": "../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++ SO4--"
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"}>>> = "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<<<{"href": "../../syntax/GeochemicalModelInterrogator/index.html"}>>>]
model_definition<<<{"description": "The name of the GeochemicalModelDefinition user object"}>>> = definition
equilibrium_species<<<{"description": "Only output results for this equilibrium species. If not provided, results for all equilibrium species will be outputted"}>>> = Hematite
activity_species<<<{"description": "Species that are provided numerical values of activity (or fugacity for gases) in the activity_value input"}>>> = 'H2O Fe++'
activity_values<<<{"description": "Numerical values for the activity (or fugacity) for the species in the activity_species list. These are activity values, not log10(activity)."}>>> = '1 1E-10'
interrogation<<<{"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"}>>> = activity
[]
[UserObjects<<<{"href": "../../syntax/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": "../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 Fe++ H+ O2(aq)"
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"}>>> = "Hematite"
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/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>
Unit:(no unit assumed)
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
Unit:(no unit assumed)
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
Unit:(no unit assumed)
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. For a description of each flag, see https://mooseframework.inl.gov/source/interfaces/SetupInterface.html.
C++ Type:ExecFlagEnum
Controllable:No
Description:The list of flag(s) indicating when this object should be executed. For a description of each flag, see https://mooseframework.inl.gov/source/interfaces/SetupInterface.html.
- execute_onFINALThe list of flag(s) indicating when this object should be executed. For a description of each flag, see https://mooseframework.inl.gov/source/interfaces/SetupInterface.html.
Default:FINAL
C++ Type:ExecFlagEnum
Controllable:No
Description:The list of flag(s) indicating when this object should be executed. For a description of each flag, see https://mooseframework.inl.gov/source/interfaces/SetupInterface.html.
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
Unit:(no unit assumed)
Controllable:No
Description:Time at which this output object stop operating
- min_simulation_time_interval0The minimum simulation time between output steps
Default:0
C++ Type:double
Unit:(no unit assumed)
Controllable:No
Description:The minimum simulation time between output steps
- simulation_time_interval1.79769e+308The target simulation time interval (in seconds) at which to output
Default:1.79769e+308
C++ Type:double
Unit:(no unit assumed)
Controllable:No
Description:The target simulation time interval (in seconds) at which to output
- 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
Unit:(no unit assumed)
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>
Unit:(no unit assumed)
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_step_interval1The interval (number of time steps) at which output occurs. Unless explicitly set, the default value of this parameter is set to infinity if the wall_time_interval is explicitly set.
Default:1
C++ Type:unsigned int
Controllable:No
Description:The interval (number of time steps) at which output occurs. Unless explicitly set, the default value of this parameter is set to infinity if the wall_time_interval is explicitly set.
- time_tolerance1e-14Time tolerance utilized checking start and end times
Default:1e-14
C++ Type:double
Unit:(no unit assumed)
Controllable:No
Description:Time tolerance utilized checking start and end times
- wall_time_interval1.79769e+308The target wall time interval (in seconds) at which to output
Default:1.79769e+308
C++ Type:double
Unit:(no unit assumed)
Controllable:No
Description:The target wall time interval (in seconds) at which to output