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

    Options:

    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

    Options:

    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

    Options:

    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

    Options:

    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

    Options:

    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.

    Default:TIMESTEP_END

    C++ Type:ExecFlagEnum

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

    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.

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

    Default:False

    C++ Type:bool

    Options:

    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

    Options:

    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>

    Options:

    Description:Indices of the promoting species

  • promoting_species_namesNames of any promoting species

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

    Options:

    Description:Names of any promoting species

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

    Default:1

    C++ Type:double

    Options:

    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

    Options:

    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>

    Options:

    Description:Adds user-defined labels for accessing object parameters via control logic.

  • enableTrueSet the enabled status of the MooseObject.

    Default:True

    C++ Type:bool

    Options:

    Description:Set the enabled status of the MooseObject.

  • force_preauxFalseForces the GeneralUserObject to be executed in PREAUX

    Default:False

    C++ Type:bool

    Options:

    Description:Forces the GeneralUserObject to be executed in PREAUX

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

    Default:False

    C++ Type:bool

    Options:

    Description:Forces the GeneralUserObject 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

    Options:

    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