GeochemistryKineticRate

Defines a kinetic rate for a kinetic species. The general form of this rate is This is a rather complicated equation, and simple examples are given below. In this equation:

  • (units: mol.s) is the rate of the kinetic reaction. If it is positive then the kinetic species' mass will be decreasing (eg, dissolution). If it is negative then the kinetic species' mass will be increasing (eg, precipitation).

  • is the intrinsic rate constant. The product has units mol.s (assuming the simulation's time units are seconds). Note that mole units are used, even if the initial amount of the kinetic species is given in mass or volume units. Examples of are given below.

  • is either the surface area (units: m) for the kinetic species, or the specific surface area (units: m.g)

  • (units: g) is the mass of the kinetic species. It is optional. Examples are given below.

  • is a label denoting a promoting species

  • is either: mass of solvent water (in kg) if the promoting species is HO; fugacity of a gas if the promoting species is a gas; activity if the promoting species is either H or OH; mobility, otherwise.

  • is a dimensionless power

  • is the activity product defined by the kinetic species' reaction in the database file

  • is the reaction's equilibrium constant defined in the database file

  • and are dimensionless exponents

  • (units: J.mol) is the activation energy

  • J.K.mol is the gas constant

  • (units: K) is a reference temperature

  • (units: K) is the temperature

  • is -1 if (kinetic species mass will increase with time), 1 if (kinetic species mass will decrease with time).

commentnote

Note that more than one GeochemistryKineticRate can be prescribed to a single kinetic species. The sum of all the individual rates defines the overall rate for each species (see Example 6). Simply supply your GeochemicalModelDefinition with a list of all the rates.

Example 1

Suppose that the kinetic rate is just a constant: for both the forward and backward reactions (ie, for precipitation and dissolution). Then set:

  • to the constant value, with units mol.s (assuming the simulation time is measured in seconds)

  • and multiply_by_mass = false

  • do not use any promoting_species_names or promoting_species_indices

  • set and

  • set .

Example 2

Suppose that the kinetic rate for a certain mineral is proportional the mineral's surface area and that the surface area is known and fixed. Then set:

  • to the coefficient of proportionality, with units mol.m.s (assuming the simulation time is measured in seconds)

  • to the known mineral surface area, with units m

  • multiply_by_mass = false

  • do not use any promoting_species_names or promoting_species_indices

  • set and

  • set .

Example 3

Suppose that the kinetic rate for a certain mineral is proportional the mineral's free mass Then set

  • to the coefficient of proportionality, with units mol.g.s (assuming the simulation time is measured in seconds)

  • multiply_by_mass = true. MOOSE will automatically calculate the mineral's free mass depending on its molar mass and the number of free moles.

  • do not use any promoting_species_names or promoting_species_indices

  • set and

  • set .

Example 4

Suppose that the kinetic rate for a certain mineral is proportional the mineral surface area but that the surface area itself isn't known. Only the mineral's specific surface area (surface area per gram of free mineral m.g) is known. Then set

  • to the coefficient of proportionality, with units mol.m.s (assuming the simulation time is measured in seconds)

  • to be the mineral specific surface area, with units m.g.

  • multiply_by_mass = true. MOOSE will automatically calculate the mineral's free mass depending on its molar mass and the number of free moles.

  • do not use any promoting_species_names or promoting_species_indices

  • set and

  • set .

Example 5

Suppose that the kinetic rate for a certain redox couple is proportional the quantity of solvent water present: Then set

  • to the coefficient of proportionality, with units mol.kg.s (assuming the simulation time is measured in seconds)

  • and multiply_by_mass = false.

  • promoting_species_names = H2O and promoting_species_indices = 1

  • set and

  • set .

Example 6

Suppose that the kinetic rate for a certain redox couple depends on the pH: For this, two GeochemistryKineticRate UserObjects must be created. Each has , multiply_by_mass = false, , and .

  • The first has , promoting_species_names = H+ and promoting_species_indices = 1.

  • The second has , promoting_species_names = OH- and promoting_species_indices = 1.5.

These are then supplied to the GeochemicalModelDefinition using its kinetic_rate_descriptions input.

Example 7

Suppose that the kinetic rate for a certain redox couple depends on the pH, the molality of Ca and the temperature: Then set

  • and multiply_by_mass = false

  • promoting_species_names = "H+ Ca++" and and promoting_species_indices = "1.5 0.3"

  • one_over_T0 = 0

Input Parameters

  • intrinsic_rate_constantThe intrinsic rate constant for the reaction

    C++ Type:double

    Controllable:No

    Description:The intrinsic rate constant for the reaction

  • kinetic_species_nameThe name of the kinetic species that will be controlled by this rate

    C++ Type:std::string

    Controllable:No

    Description:The name of the kinetic species that will be controlled by this rate

Required Parameters

  • activation_energy0Activation energy, in J.mol^-1, which appears in exp(activation_energy / R * (1/T0 - 1/T))

    Default:0

    C++ Type:double

    Controllable:No

    Description:Activation energy, in J.mol^-1, which appears in exp(activation_energy / R * (1/T0 - 1/T))

  • area_quantity1The surface area of the kinetic species in m^2 (if multiply_by_mass = false) or the specific surface area of the kinetic species in m^2/g (if multiply_by_mass = true)

    Default:1

    C++ Type:double

    Controllable:No

    Description:The surface area of the kinetic species in m^2 (if multiply_by_mass = false) or the specific surface area of the kinetic species in m^2/g (if multiply_by_mass = true)

  • eta1Eta parameter, which appears in |1 - (Q/K)^theta|^eta

    Default:1

    C++ Type:double

    Controllable:No

    Description:Eta parameter, which appears in |1 - (Q/K)^theta|^eta

  • execute_onTIMESTEP_ENDThe list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM, ALWAYS.

    Default:TIMESTEP_END

    C++ Type:ExecFlagEnum

    Options:NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM, ALWAYS

    Controllable:No

    Description:The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM, ALWAYS.

  • multiply_by_massFalseWhether the rate should be multiplied by the kinetic species mass

    Default:False

    C++ Type:bool

    Controllable:No

    Description:Whether the rate should be multiplied by the kinetic species mass

  • one_over_T001/T0, in 1/Kelvin, which appears in exp(activation_energy / R * (1/T0 - 1/T))

    Default:0

    C++ Type:double

    Controllable:No

    Description:1/T0, in 1/Kelvin, which appears in exp(activation_energy / R * (1/T0 - 1/T))

  • promoting_species_indicesIndices of the promoting species

    C++ Type:std::vector<double>

    Controllable:No

    Description:Indices of the promoting species

  • promoting_species_namesNames of any promoting species

    C++ Type:std::vector<std::string>

    Controllable:No

    Description:Names of any promoting species

  • prop_getter_suffixAn optional suffix parameter that can be appended to any attempt to retrieve/get material properties. The suffix will be prepended with a '_' character.

    C++ Type:MaterialPropertyName

    Controllable:No

    Description:An optional suffix parameter that can be appended to any attempt to retrieve/get material properties. The suffix will be prepended with a '_' character.

  • theta1Theta parameter, which appears in |1 - (Q/K)^theta|^eta

    Default:1

    C++ Type:double

    Controllable:No

    Description:Theta parameter, which appears in |1 - (Q/K)^theta|^eta

Optional Parameters

  • allow_duplicate_execution_on_initialFalseIn the case where this UserObject is depended upon by an initial condition, allow it to be executed twice during the initial setup (once before the IC and again after mesh adaptivity (if applicable).

    Default:False

    C++ Type:bool

    Controllable:No

    Description:In the case where this UserObject is depended upon by an initial condition, allow it to be executed twice during the initial setup (once before the IC and again after mesh adaptivity (if applicable).

  • 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.

  • force_postauxFalseForces the UserObject to be executed in POSTAUX

    Default:False

    C++ Type:bool

    Controllable:No

    Description:Forces the UserObject to be executed in POSTAUX

  • force_preauxFalseForces the UserObject to be executed in PREAUX

    Default:False

    C++ Type:bool

    Controllable:No

    Description:Forces the UserObject to be executed in PREAUX

  • force_preicFalseForces the UserObject to be executed in PREIC during initial setup

    Default:False

    C++ Type:bool

    Controllable:No

    Description:Forces the UserObject to be executed in PREIC during initial setup

  • use_displaced_meshFalseWhether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used.

    Default:False

    C++ Type:bool

    Controllable:No

    Description:Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used.

Advanced Parameters

Input Files