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

  • model_definitionThe name of the GeochemicalModelDefinition user object

    C++ Type:UserObjectName

    Controllable:No

    Description:The name of the GeochemicalModelDefinition user object

Required 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

    Options:reaction, activity, eqm_temperature

    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

    Options:XFEM_MARK, FORWARD, ADJOINT, HOMOGENEOUS_FORWARD, ADJOINT_TIMESTEP_BEGIN, ADJOINT_TIMESTEP_END, NONE, INITIAL, LINEAR, NONLINEAR_CONVERGENCE, NONLINEAR, POSTCHECK, TIMESTEP_END, TIMESTEP_BEGIN, MULTIAPP_FIXED_POINT_END, MULTIAPP_FIXED_POINT_BEGIN, FINAL, FAILED, CUSTOM

    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

    Options:XFEM_MARK, FORWARD, ADJOINT, HOMOGENEOUS_FORWARD, ADJOINT_TIMESTEP_BEGIN, ADJOINT_TIMESTEP_END, NONE, INITIAL, LINEAR, NONLINEAR_CONVERGENCE, NONLINEAR, POSTCHECK, TIMESTEP_END, TIMESTEP_BEGIN, MULTIAPP_FIXED_POINT_END, MULTIAPP_FIXED_POINT_BEGIN, FINAL, FAILED, CUSTOM

    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

Timing And Frequency Of Output Parameters