| Next|| Previous || Top |


This keyword data block is used to identify kinetic reactions and specify reaction parameters for batch-reaction, and transport calculations. Mathematical expressions for the rates of the kinetic reactions are defined with the RATES data block. The rate equations are integrated over a time step by a Runge-Kutta method that estimates the error of the integration and uses appropriate time subintervals to maintain the errors within specified tolerances for each time interval.

Example data block 1

Line 0:  KINETICS 1 Define 3 explicit time steps
Line 1a: Pyrite
Line 2a:     -formula FeS2 1.0 FeAs2 0.001
Line 3a:     -m       1e-3
Line 4a:     -m0      1e-3
Line 5a:     -parms   3.0   0.67   .5   -0.11 
Line 6a:     -tol     1e-9
Line 1b: Calcite 
Line 3b:     -m       7.e-4
Line 4b:     -m0      7.e-4
Line 5b:     -parms   5.0      0.3
Line 6b:     -tol     1.e-8
Line 1c: Organic_C 
Line 2c:     -formula CH2O(NH3)0.1 0.5 
Line 3c:     -m       5.e-3
Line 4c:     -m0      5.e-3
Line 6c:     -tol     1.e-8
Line 7:  -steps       100 200 300  # seconds
Line 8:  -step_divide 100
Line 9:  -runge_kutta 6

Explanation 1

Line 0: KINETICS [ number ] [ description ]

KINETICS is the keyword for the data block.

number --Positive number to designate the following set of kinetic reactions. A range of numbers may also be given in the form m-n , where m and n are positive integers, m is less than n , and the two numbers are separated by a hyphen without intervening spaces. Default is 1.

description --Optional comment that describes the kinetic reactions.

Line 1: rate name

rate name --Name of a rate expression. The rate name and its associated rate expression must be defined within a RATES data block, either in the default database file or in the current or previous simulations of the run. The name must be spelled identically to the name used in RATES input (except for case).

Line 2: -formula list of formula, [ stoichiometric coefficient ]

By default, the rate name is assumed to be the name of a phase that has been defined in a PHASES data block and the formula for that phase is then used for the stoichiometry of the reaction (for example, calcite in case "b" above). However, kinetic reactions are not restricted to mineral phases, any set of elements produced or consumed by the kinetic reaction (relative to the aqueous phase) can be specified through a list of doublets formula and stoichiometric coefficient (lines 2a and 2c). Optionally, formula or -f[ ormula].

formula --Chemical formula or the name of a phase to be added by the kinetic reaction. If a chemical formula is used, it must begin with a capital letter and contain element symbols and stoichiometric coefficients (line 2a). A phase name may be entered independent of case. Each formula must be a charge-balanced combination of elements. (An exception may be for defining exchangers or surfaces related to kinetic reactants).

stoichiometric coefficient --Defines the mole transfer coefficient for formula per mole of reaction progress (evaluated by the rate expression in RATES). The product of the coefficient times the moles of reaction progress gives the mole transfer for formula relative to the aqueous solution; a negative stoichiometric coefficient and a positive value for reaction progress gives a negative mole transfer, which removes reactants from the aqueous solution. In line 2a, each mole of reaction dissolves 1.0 mole of FeS 2 and 0.001 moles of FeAs 2 into the aqueous solution; in line 2c, each mole of reaction (as calculated by the rate expression) adds 0.5 mole of CH 2 O and 0.05 mole of NH 3 to the aqueous solution to simulate the degradation of nitrogen-containing organic matter. Default is 1.0.

Line 3: -m moles

moles --Current moles of reactant. As reactions occur, the moles will increase or decrease. Default is equal to initial moles if initial moles is defined, or 1.0 mol if initial moles is not defined. Optionally, m or -m.

Line 4: -m0 initial moles

initial moles --Initial moles of reactant. This identifier is useful if the rate of reaction is dependent on grain size. Formulations for this dependency often include the ratio of the amount of reactant remaining to the amount of reactant initially present. The quantity initial moles does not change as the kinetic reactions proceed. Frequently, the quantity initial moles is equal to moles at the beginning of a kinetic reaction. Default is equal to moles if moles is defined, or 1.0 if moles is not defined. Optionally, m0 or -m0

Line 5: -parms list of parameters

list of parameters --A list of numbers may be entered that can be used in the rate expressions, for example constants, exponents, or half saturation constants. In the rate expression defined with the RATES keyword, these numbers are available to the Basic interpreter in the array PARM ; PARM(1) is the first number entered, PARM(2) the second, and so on. Optionally, parms, -p[ arms], parameters, or -p[ arameters].

Line 6: -tol tolerance

tolerance --Tolerance for integration procedure (moles). For each integration time interval, the difference between the fifth-order and the fourth-order integrals of the rate expression must be less than this tolerance or the time interval is automatically reduced. The value of tolerance is related to the concentration differences that are considered significant for the elements in the reaction. Smaller concentration differences that are considered significant require smaller tolerances. Numerical accuracy of the kinetic integration can be tested by decreasing the tolerance to determine if results change significantly. Default is 1e-8. Optionally, tol or -t[ ol].

Line 7: -steps list of time steps

list of time steps --Time steps over which to integrate the rate expressions (seconds). The -steps identifier is used only during batch-reaction calculations; it is not needed for transport calculations. By default, the list of time steps are considered to be independent times all starting from zero. The example data block would produce results after 100, 200, and 300 seconds of reaction. However, the INCREMENTAL_REACTIONS keyword can be used to make the time steps incremental so that the results of the previous time step are the starting point of the new time step. For incremental time steps, the example data block would produce results after 100, 300, and 600 seconds. Default is 1.0 second. Optionally, steps or -s[ teps].

Line 8: -step_divide step_divide

step_divide --If step_divide is greater than 1.0, the first time interval of each integration is set to time step / step_divide ; at least two time intervals must be integrated to reach the total time of time step --0 to time step / step_divide and time step / step_divide to time step . If step_divide is less than 1.0, then step_divide is the maximum moles of reaction that can be added during a kinetic integration subinterval. Frequently reaction rates are fast initially, thus requiring small time intervals to produce an accurate integration of the rate expressions. The Runge-Kutta method will adapt to these fast rates when the integration fails the -tolerance criterion, but it may require several reductions in the length of the initial time interval for the integration to meet the criterion; step_divide > 1 can be used to make the initial time interval of each integration sufficiently small to satisfy the criterion, which may speed the overall calculation time. However, the smaller time interval will apply to all integrations throughout the simulation, even if reaction rates are slow later in the simulation. Using an appropriate step_divide < 1 can also cause sufficiently small initial time intervals when rates are fast, but will not require small time intervals later in the simulation if rates are slow; however, the appropriate value for step_divide < 1 is not easily known and usually must be found by trial and error. The default maximal reaction is 0.1 moles during a time subinterval. Normally, -step_divide is not used unless run times are long and it is apparent that each integration requires several time intervals. The status line, which is printed to the screen, notes the number of integration intervals that fail the -tolerance criterion as "bad" and the number of integration intervals that pass the criterion as "OK". Optionally, step_divide or -step_[ divide].

Line 9: -runge_kutta ( 1, 2, 3, or 6)

( 1, 2, 3, or 6)--Designates the preferred number of time subintervals to use when integrating rates and is related to the order of the integration method. A value of 6 specifies that a 5th order embedded Runge-Kutta method, which requires 6 intermediate rate evaluations, will be used for all integrations. For values of 1, 2, or 3, the program will try to limit the rate evaluations to this number. If the -tolerance criterion is not satisfied among the evaluations or over the full integration interval, the method will automatically revert to the Runge-Kutta method of order 5. A value of 6 will exclusively use the 5th order method. Values of 1 or 2 are mainly expedient when it is known that the rate is nearly constant in time. Default is 3. Optionally, rk, -r[ k], runge_kutta, or -r[ unge_kutta].

Example data block 2

Line 0:  KINETICS 1 Define 3 equal time steps
Line 1a: Calcite 
Line 3a:     -m       7.e-4
Line 5a:     -parms   5      0.3
Line 7:  -steps       300 in 3 steps # seconds

Explanation 2

Line 0: KINETICS [ number ] [ description ]

Same as example data block 1.

Line 1: rate name

Same as example data block 1.

Line 3: -m moles

Same as example data block 1.

Line 5: -parms list of parameters

Same as example data block 1.

Line 7: -steps total time [ in steps ]

total time --Total time over which to integrate kinetic reactions, in seconds. The total time may be divided into a number of calculations given by steps. The -steps identifier is used only in batch-reaction calculations; it is not needed for transport calculations. Default is 1.0 second. Optionally, steps or -s[ teps].

in steps --" in" indicates that the total time will be divided into steps number of steps. INCREMENTAL_REACTIONS has no effect on the output for example data block 2, results will be printed after 100, 200, and 300 seconds of reaction. However, INCREMENTAL_REACTIONS does affect the computational method. If INCREMENTAL_REACTIONS is false the reactions will be integrated over the time intervals from 0 to 100, 0 to 200, and 0 to 300 seconds. If INCREMENTAL_REACTIONS is true the reactions will be integrated over the time intervals from 0 to 100, 100 to 200, and 200 to 300 seconds.


Both KINETICS and REACTION data blocks are used to model irreversible reactions. REACTION can only be used to define specified amounts of stoichiometric reactions; essentially the rates of the reactions are constant. KINETICS is used to define truly kinetic reactions. To use KINETICS, a mathematical rate expression based on the solution composition must be defined and this expression is used to calculate the rate of reaction at any point in time. The RATES data block is used to define a set of general rate expressions that may apply over the entire modeling domain. The KINETICS data block is used to identify the subset of general rate expressions that apply to a given batch-reaction or to specified cells of transport calculations. The data block also is used to define specific parameters for the rate expression, such as the moles of reactant initially present in a cell, spatially varying coefficients, or cell-specific exponents for the rate equation. In advective ( ADVECTION data block) and advective-dispersive transport ( TRANSPORT data block) calculations, the number(s) assigned with the KINETICS keyword defines the cell(s) to which the kinetic reactions apply.

For a batch-reaction calculation, the number of reaction steps is the maximum number of steps defined in any of the following keyword data blocks: KINETICS, REACTION, and REACTION_TEMPERATURE. When the maximum number of steps is greater than the number of steps defined in KINETICS, then if INCREMENTAL_REACTIONS is false (cumulative reaction steps), the reactions are integrated for the time specified by the final time step for each of the additional steps; if INCREMENTAL_REACTIONS is true (incremental reaction steps), kinetic reactions are not included in the additional steps.

Example problems

The keyword KINETICS is used in example problems 6C, 9 and 15.

Related keywords


| Next|| Previous || Top |