RATES

This keyword data block is used to define mathematical rate expressions for kinetic reactions. General rate formulas are defined in the RATES data block and specific parameters for batch-reaction or transport kinetics are defined in KINETICS data blocks.

Annotation (Details)

Keyword Explanation
Rate expressionAn alphanumeric character string that identifies the rate expression, no spaces are allowed.
Numbered Basic statementA valid Basic language statement that must be numbered. The statements are evaluated in numerical order. The sequence of statements must extrapolate the rate of reaction over the time subinterval given by the internally defined variable TIME. The last statement must be " SAVE expression ", where the value of the expression is the moles of reaction that occur during time subinterval TIME. Statements and functions that are available through the Basic interpreter are listed in tables 8 and 9. Parameters defined in the KINETICS data block are also available through the array PARM.

Rates

Rate expression Numbered Basic statement Database Reference Note
Quartz

-start
1 REM Specific rate k from Rimstidt and Barnes, 1980, GCA 44,1683
2 REM k = 10^-13.7 mol/m2/s (25 C), Ea = 90 kJ/mol
3 REM sp. rate * parm(2) due to salts (Dove and Rimstidt, MSA Rev. 29, 259)
4 REM PARM(1) = Specific area of Quartz, m^2/mol Quartz
5 REM PARM(2) = salt correction: (1 + 1.5 * c_Na (mM)), < 35
10 dif_temp = 1/TK - 1/298
20 pk_w = 13.7 + 4700.4 * dif_temp
40 moles = PARM(1) * M0 * PARM(2) * (M/M0)^0.67 * 10^-pk_w * (1 - SR("Quartz"))
50 SAVE moles * TIME
-end

Phreeqc_default Phreeqc

K-feldspar

-start
1 REM Sverdrup and Warfvinge, 1995, mol m^-2 s^-1
2 REM PARM(1) = Specific area of Kspar m^2/mol Kspar
3 REM PARM(2) = Adjusts lab rate to field rate
4 REM temp corr: from A&P, p. 162. E (kJ/mol) / R / 2.303 = H in H*(1/T-1/281)
5 REM K-Feldspar parameters
10 DATA 11.7, 0.5, 4e-6, 0.4, 500e-6, 0.15, 14.5, 0.14, 0.15, 13.1, 0.3
20 RESTORE 10
30 READ pK_H, n_H, lim_Al, x_Al, lim_BC, x_BC, pK_H2O, z_Al, z_BC, pK_OH, o_OH
40 DATA 3500, 2000, 2500, 2000
50 RESTORE 40
60 READ e_H, e_H2O, e_OH, e_CO2
70 pk_CO2 = 13
80 n_CO2 = 0.6
100 REM Generic rate follows
110 dif_temp = 1/TK - 1/281
120 BC = ACT("Na+") + ACT("K+") + ACT("Mg+2") + ACT("Ca+2")
130 REM rate by H+
140 pk_H = pk_H + e_H * dif_temp
150 rate_H = 10^-pk_H * ACT("H+")^n_H / ((1 + ACT("Al+3") / lim_Al)^x_Al * (1 + BC / lim_BC)^x_BC)
160 REM rate by hydrolysis
170 pk_H2O = pk_H2O + e_H2O * dif_temp
180 rate_H2O = 10^-pk_H2O / ((1 + ACT("Al+3") / lim_Al)^z_Al * (1 + BC / lim_BC)^z_BC)
190 REM rate by OH-
200 pk_OH = pk_OH + e_OH * dif_temp
210 rate_OH = 10^-pk_OH * ACT("OH-")^o_OH
220 REM rate by CO2
230 pk_CO2 = pk_CO2 + e_CO2 * dif_temp
240 rate_CO2 = 10^-pk_CO2 * (SR("CO2(g)"))^n_CO2
250 rate = rate_H + rate_H2O + rate_OH + rate_CO2
260 area = PARM(1) * M0 *(M/M0)^0.67
270 rate = PARM(2) * area * rate * (1-SR("K-feldspar"))
280 moles = rate * TIME
290 SAVE moles
-end

Phreeqc_default Phreeqc

Albite

-start
1 REM Sverdrup and Warfvinge, 1995, mol m^-2 s^-1
2 REM PARM(1) = Specific area of Albite m^2/mol Albite
3 REM PARM(2) = Adjusts lab rate to field rate
4 REM temp corr: from A&P, p. 162. E (kJ/mol) / R / 2.303 = H in H*(1/T-1/281)
5 REM Albite parameters
10 DATA 11.5, 0.5, 4e-6, 0.4, 500e-6, 0.2, 13.7, 0.14, 0.15, 11.8, 0.3
20 RESTORE 10
30 READ pK_H, n_H, lim_Al, x_Al, lim_BC, x_BC, pK_H2O, z_Al, z_BC, pK_OH, o_OH
40 DATA 3500, 2000, 2500, 2000
50 RESTORE 40
60 READ e_H, e_H2O, e_OH, e_CO2
70 pk_CO2 = 13
80 n_CO2 = 0.6
100 REM Generic rate follows
110 dif_temp = 1/TK - 1/281
120 BC = ACT("Na+") + ACT("K+") + ACT("Mg+2") + ACT("Ca+2")
130 REM rate by H+
140 pk_H = pk_H + e_H * dif_temp
150 rate_H = 10^-pk_H * ACT("H+")^n_H / ((1 + ACT("Al+3") / lim_Al)^x_Al * (1 + BC / lim_BC)^x_BC)
160 REM rate by hydrolysis
170 pk_H2O = pk_H2O + e_H2O * dif_temp
180 rate_H2O = 10^-pk_H2O / ((1 + ACT("Al+3") / lim_Al)^z_Al * (1 + BC / lim_BC)^z_BC)
190 REM rate by OH-
200 pk_OH = pk_OH + e_OH * dif_temp
210 rate_OH = 10^-pk_OH * ACT("OH-")^o_OH
220 REM rate by CO2
230 pk_CO2 = pk_CO2 + e_CO2 * dif_temp
240 rate_CO2 = 10^-pk_CO2 * (SR("CO2(g)"))^n_CO2
250 rate = rate_H + rate_H2O + rate_OH + rate_CO2
260 area = PARM(1) * M0 *(M/M0)^0.67
270 rate = PARM(2) * area * rate * (1-SR("Albite"))
280 moles = rate * TIME
290 SAVE moles
-end

Phreeqc_default Phreeqc

Calcite

-start
1 REM PARM(1) = specific surface area of calcite, cm^2/mol calcite
2 REM PARM(2) = exponent for M/M0
10 si_cc = SI("Calcite")
20 IF (M <= 0 and si_cc < 0) THEN GOTO 200
30 k1 = 10^(0.198 - 444.0 / TK )
40 k2 = 10^(2.84 - 2177.0 /TK )
50 IF TC <= 25 THEN k3 = 10^(-5.86 - 317.0 / TK)
60 IF TC > 25 THEN k3 = 10^(-1.1 - 1737.0 / TK )
80 IF M0 > 0 THEN area = PARM(1)*M0*(M/M0)^PARM(2) ELSE area = PARM(1)*M
110 rate = area * (k1 * ACT("H+") + k2 * ACT("CO2") + k3 * ACT("H2O"))
120 rate = rate * (1 - 10^(2/3*si_cc))
130 moles = rate * 0.001 * TIME # convert from mmol to mol
200 SAVE moles
-end

Phreeqc_default Phreeqc

Pyrite

-start
1 REM Williamson and Rimstidt, 1994
2 REM PARM(1) = log10(specific area), log10(m^2 per mole pyrite)
3 REM PARM(2) = exp for (M/M0)
4 REM PARM(3) = exp for O2
5 REM PARM(4) = exp for H+
10 REM Dissolution in presence of DO
20 if (M <= 0) THEN GOTO 200
30 if (SI("Pyrite") >= 0) THEN GOTO 200
40 log_rate = -8.19 + PARM(3)*LM("O2") + PARM(4)*LM("H+")
50 log_area = PARM(1) + LOG10(M0) + PARM(2)*LOG10(M/M0)
60 moles = 10^(log_area + log_rate) * TIME
200 SAVE moles
-end

Phreeqc_default Phreeqc

Organic_C

-start
1 REM Additive Monod kinetics for SOC (sediment organic carbon)
2 REM Electron acceptors: O2, NO3, and SO4
10 if (M <= 0) THEN GOTO 200
20 mO2 = MOL("O2")
30 mNO3 = TOT("N(5)")
40 mSO4 = TOT("S(6)")
50 k_O2 = 1.57e-9 # 1/sec
60 k_NO3 = 1.67e-11 # 1/sec
70 k_SO4 = 1.e-13 # 1/sec
80 rate = k_O2 * mO2/(2.94e-4 + mO2)
90 rate = rate + k_NO3 * mNO3/(1.55e-4 + mNO3)
100 rate = rate + k_SO4 * mSO4/(1.e-4 + mSO4)
110 moles = rate * M * (M/M0) * TIME
200 SAVE moles
-end

Phreeqc_default Phreeqc

Pyrolusite

-start
10 if (M <= 0) THEN GOTO 200
20 sr_pl = SR("Pyrolusite")
30 if (sr_pl > 1) THEN GOTO 100
40 REM sr_pl <= 1, undersaturated
50 Fe_t = TOT("Fe(2)")
60 if Fe_t < 1e-8 then goto 200
70 moles = 6.98e-5 * Fe_t * (M/M0)^0.67 * TIME * (1 - sr_pl)
80 GOTO 200
100 REM sr_pl > 1, supersaturated
110 moles = 2e-3 * 6.98e-5 * (1 - sr_pl) * TIME
200 SAVE moles * SOLN_VOL
-end

Phreeqc_default Phreeqc


References

RefID Reference
Phreeqc https://wwwbrr.cr.usgs.gov/projects/GWC_coupled/phreeqc/index.html

Databases

DatabaseID Notes
Phreeqc_default Default database from phreeqc-3.4.0-12927