GeochemistryKineticRate

This UserObject defines a kinetic rate for a kinetic species. Usually the reaction for a kinetic species is written: (1) with equilibrium constant , and reaction rate . Further information can be found on the theory page.

The general form of the 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, which is positive (except in the raw and death cases mentioned below). 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 (hence the square brackets). Examples are given below.

  • (units: mol.kg) is the molality of the kinetic species. Hence is a monod form, where and are dimensionless parameters, and is a half saturation (units: mol.kg). This factor is optional, and may be omitted by ensuring .

  • 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 a dimensionless power. The denominator of monod form, , may be omitted by simply setting .

  • (units: mol.kg) is a half-saturation constant.

  • 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. This may be modified if the GeochemistryKineticRate object is used to model biologically-catalysed reactions. When a microbe catalyses one mole of the reaction, it captures Joules of energy (units: J). This means .

  • and are dimensionless exponents. If then irrespective of the value of , and .

  • (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 the "direction" of this reaction. Recall that is a dissolution rate, so if then the kinetic mass will decrease with time. The following choices for are available.

    • both: if then (so the kinetic species mass will increase with time), if then (so the kinetic species mass will decrease with time). This means both dissolution and precipitation are modelled, and which one occurs depends on the size of relative to .

    • dissolution: if then , while if then . This means that precipitation is prevented, while only dissolution (with ) occurs

    • precipitation: if then , while if then . This means that precipitation (with ) occurs, but dissolution is prevented

    • raw: irrespective of and . This means dissolution will occur if , while precipitation will occur if .

    • death: irrespective of and . This means dissolution will occur if , while precipitation will occur if . In addition, no reactants will be consumed or produced by the kinetic reaction: only the mass of the kinetic species will change. This is used to model the death of microbes in biologically-catalysed scenarios.

In addition, there are auxillary inputs that do not impact the rate directly, but impact the resulting products:

  • non_kinetic_biological_catalyst is a primary or secondary species that may be created or destroyed in addition to the reactants and products in the kinetic reaction Eq. (1). This is usually a biological species, hence the name "biological catalyst". An example is the sulfate reducer model.

  • non_kinetic_biological_efficiency is the number of moles of the non_kinetic_biological_catalyst that are created per mole of Eq. (1) reaction turnover

  • kinetic_biological_efficiency: when one mole of the reaction Eq. (1) occurs then kinetic_biological_efficiency moles of is created. Obviously, this defaults to , but for biogeochemical models, where represents a microbe population that is catalysing a reaction, a positive value may be appropriate. Examples are the sulfate reducer, the arsenate reducer and the aquifer zoning models.

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_indices or promoting_monod_indices

  • ensure kinetic_molal_index and kinetic_monod_index are both zero

  • set and

  • set and

  • set direction = both

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_indices or promoting_monod_indices

  • ensure kinetic_molal_index and kinetic_monod_index are both zero

  • set and

  • set and

  • set direction = both

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_indices or promoting_monod_indices

  • ensure kinetic_molal_index and kinetic_monod_index are both zero

  • set and

  • set and

  • set direction = both

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_indices or promoting_monod_indices

  • ensure kinetic_molal_index and kinetic_monod_index are both zero

  • set and

  • set and

  • set direction = both

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_indices = 1 and promoting_monod_indices = 0

  • ensure kinetic_molal_index and kinetic_monod_index are both zero

  • set and

  • set and

  • set direction = both

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, , , , , direction = both and zero kinetic_molal_index and zero kinetic_monod_index.

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

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

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 via a monod expression, and the temperature: Then set

  • and multiply_by_mass = false

  • promoting_species_names = "H+ Ca++" and promoting_indices = "1.5 0.3" and promoting_monod_indices = "0 2"

  • appropriately

  • and

  • appropriately

  • one_over_T0 = 0

  • direction = both

Example 8

Suppose that a microbe is subject to mortality only, and no reaction products are produced: Then set

  • intrinsic_rate_constant = k

  • multiply_by_mass = true

  • direction = death

An example where this is used is the aquifer zoning model.

Example 9

Suppose that a microbe catalyses a reaction at rate (2) Here is a basis or secondary equilibrium species. Then set

  • intrinsic_rate_constant = k

  • multiply_by_mass = true

  • promoting_species_names = A, promoting_indices = 1, promoting_monod_indices = 2, promoting_half_saturation = KA

  • theta = 0.2

  • eta = 1

  • energy_captured = 45000

If, in addition, the 2 moles of microbe are created per 1 mole of reaction turnover, then

  • kinetic_biological_efficiency = 2

This is similar to the sulfate reducer model.

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)

  • directionbothDirection of reaction. Let Q = the activity product of the kinetic reaction, and K = the equilibrium constant of the reaction. Then direction means the following. both = dissolution and precipitation are allowed. (Specifically, if Q < K then dissolution will occur, that is, the kinetic species mass will decrease with time. If Q > K then precipitation will occur, that is, the kinetic species mass will increase with time.) dissolution = if Q < K then dissolution will occur, and when Q > K then the rate will be set to zero so that precipitation will be prevented. precipitation = if Q > K then precipitation will occur, and when Q < K then the rate will be set to zero so that dissolution will be prevented. raw = the rate will not depend on sgn(1 - (Q/K)), which means dissolution will occur if intrinsic_rate_constant > 0, and precipitation will occur when intrinsic_rate_constant < 0. death = the rate will not depend on sgn(1 - (Q/K)), which means dissolution will occur if intrinsic_rate_constant > 0, and precipitation will occur when intrinsic_rate_constant < 0, and, in addition, no reactants will be produced or consumed by this kinetic reaction (only the kinetic species mass will change).

    Default:both

    C++ Type:MooseEnum

    Options:both, dissolution, precipitation, raw, death

    Controllable:No

    Description:Direction of reaction. Let Q = the activity product of the kinetic reaction, and K = the equilibrium constant of the reaction. Then direction means the following. both = dissolution and precipitation are allowed. (Specifically, if Q < K then dissolution will occur, that is, the kinetic species mass will decrease with time. If Q > K then precipitation will occur, that is, the kinetic species mass will increase with time.) dissolution = if Q < K then dissolution will occur, and when Q > K then the rate will be set to zero so that precipitation will be prevented. precipitation = if Q > K then precipitation will occur, and when Q < K then the rate will be set to zero so that dissolution will be prevented. raw = the rate will not depend on sgn(1 - (Q/K)), which means dissolution will occur if intrinsic_rate_constant > 0, and precipitation will occur when intrinsic_rate_constant < 0. death = the rate will not depend on sgn(1 - (Q/K)), which means dissolution will occur if intrinsic_rate_constant > 0, and precipitation will occur when intrinsic_rate_constant < 0, and, in addition, no reactants will be produced or consumed by this kinetic reaction (only the kinetic species mass will change).

  • energy_captured0In biologically-catalysed kinetic reactions, this is the energy captured by the cell, per mol of reaction turnover. Specifically, for each mole of kinetic reaction, the microbe will produce m moles of ATP via a reaction such as ADP + PO4--- -> ATP + H2O, with free-energy change G (usually around 45 kJ/mol). Then, energy_captured = m * G. For non-biologically-catalysed reactions, this should be zero. The impact of energy_captured is that the reaction's equilibrium constant is K_database * exp(-energy_captured / R / T_in_Kelvin)

    Default:0

    C++ Type:double

    Controllable:No

    Description:In biologically-catalysed kinetic reactions, this is the energy captured by the cell, per mol of reaction turnover. Specifically, for each mole of kinetic reaction, the microbe will produce m moles of ATP via a reaction such as ADP + PO4--- -> ATP + H2O, with free-energy change G (usually around 45 kJ/mol). Then, energy_captured = m * G. For non-biologically-catalysed reactions, this should be zero. The impact of energy_captured is that the reaction's equilibrium constant is K_database * exp(-energy_captured / R / T_in_Kelvin)

  • 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 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, CUSTOM, ALWAYS.

    Default:TIMESTEP_END

    C++ Type:ExecFlagEnum

    Options: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, CUSTOM, ALWAYS

    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, CUSTOM, ALWAYS.

  • kinetic_biological_efficiency-1This is used when modelling biologically-catalysed reactions, when the biomass is treated as a kinetic species, and the reactants and reactant-products are in equilibrium in the aqueous solution. When one mole of reaction is catalysed, the biomass increases by kinetic_biological_efficiency moles

    Default:-1

    C++ Type:double

    Controllable:No

    Description:This is used when modelling biologically-catalysed reactions, when the biomass is treated as a kinetic species, and the reactants and reactant-products are in equilibrium in the aqueous solution. When one mole of reaction is catalysed, the biomass increases by kinetic_biological_efficiency moles

  • kinetic_half_saturation0The rate is multiplied by kinetic_species_molality^kinetic_molal_index / (kinetic_species_molality^kinetic_molal_index + kinetic_half_saturation^kinetic_molal_index)^kinetic_monod_index

    Default:0

    C++ Type:double

    Controllable:No

    Description:The rate is multiplied by kinetic_species_molality^kinetic_molal_index / (kinetic_species_molality^kinetic_molal_index + kinetic_half_saturation^kinetic_molal_index)^kinetic_monod_index

  • kinetic_molal_index0The rate is multiplied by kinetic_species_molality^kinetic_molal_index / (kinetic_species_molality^kinetic_molal_index + kinetic_half_saturation^kinetic_molal_index)^kinetic_monod_index

    Default:0

    C++ Type:double

    Controllable:No

    Description:The rate is multiplied by kinetic_species_molality^kinetic_molal_index / (kinetic_species_molality^kinetic_molal_index + kinetic_half_saturation^kinetic_molal_index)^kinetic_monod_index

  • kinetic_monod_index0The rate is multiplied by kinetic_species_molality^kinetic_molal_index / (kinetic_species_molality^kinetic_molal_index + kinetic_half_saturation^kinetic_molal_index)^kinetic_monod_index

    Default:0

    C++ Type:double

    Controllable:No

    Description:The rate is multiplied by kinetic_species_molality^kinetic_molal_index / (kinetic_species_molality^kinetic_molal_index + kinetic_half_saturation^kinetic_molal_index)^kinetic_monod_index

  • multiply_by_massFalseWhether the rate should be multiplied by the kinetic_species mass (in grams)

    Default:False

    C++ Type:bool

    Controllable:No

    Description:Whether the rate should be multiplied by the kinetic_species mass (in grams)

  • non_kinetic_biological_catalystH2OName of the primary or equilibrium species that acts as a biological catalyst.

    Default:H2O

    C++ Type:std::string

    Controllable:No

    Description:Name of the primary or equilibrium species that acts as a biological catalyst.

  • non_kinetic_biological_efficiency0When one mole of the kinetic species dissolves, non_kinetic_biological_efficiency moles of the non_kinetic_biological_catalyst is created

    Default:0

    C++ Type:double

    Controllable:No

    Description:When one mole of the kinetic species dissolves, non_kinetic_biological_efficiency moles of the non_kinetic_biological_catalyst is created

  • 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_half_saturationHalf-saturation constants for the monod expression. If not given, then the default is 0 for each promoting species

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

    Controllable:No

    Description:Half-saturation constants for the monod expression. If not given, then the default is 0 for each promoting species

  • promoting_indicesIndices of the promoting species

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

    Controllable:No

    Description:Indices of the promoting species

  • promoting_monod_indicesIndices of the monod denominators of the promoting species. If not given, then the default is 0 for each promoting species, meaning that there is no monod form

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

    Controllable:No

    Description:Indices of the monod denominators of the promoting species. If not given, then the default is 0 for each promoting species, meaning that there is no monod form

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

  • execution_order_group0Execution order groups are executed in increasing order (e.g., the lowest number is executed first). Note that negative group numbers may be used to execute groups before the default (0) group. Please refer to the user object documentation for ordering of user object execution within a group.

    Default:0

    C++ Type:int

    Controllable:No

    Description:Execution order groups are executed in increasing order (e.g., the lowest number is executed first). Note that negative group numbers may be used to execute groups before the default (0) group. Please refer to the user object documentation for ordering of user object execution within a group.

  • 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