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.

Line 0:KINETICS1 Define 3 explicit time steps Line 1a: Pyrite Line 2a:-formulaFeS2 1.0 FeAs2 0.001 Line 3a:-m1e-3 Line 4a:-m01e-3 Line 5a:-parms3.0 0.67 .5 -0.11 Line 6a:-tol1e-9 Line 1b: Calcite Line 3b:-m7.e-4 Line 4b:-m07.e-4 Line 5b:-parms5.0 0.3 Line 6b:-tol1.e-8 Line 1c: Organic_C Line 2c:-formulaCH2O(NH3)0.1 0.5 Line 3c:-m5.e-3 Line 4c:-m05.e-3 Line 6c:-tol1.e-8 Line 7:-steps100 200 300 # seconds Line 8:-step_divide100 Line 9:-runge_kutta6

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.

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

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

*
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**].

*
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**].

Line 0:KINETICS1 Define 3 equal time steps Line 1a: Calcite Line 3a:-m7.e-4 Line 5a:-parms5 0.3 Line 7:-steps300in3 steps # seconds

Line 0: **
KINETICS** [*
number*
] [*
description*
]

Line 5: **
-parms ***
list of parameters*

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.