rxn
¶
Chemical reactions between components are invoked with this control statement.
It is used in conjunction with control statement trac
.
For facilitating the construction of the rxn input, a header describing the
input is required before each group whether data is entered for that group or
not (see examples) unless otherwise noted.
The header is an arbitrary text string that must be contained on a single line.
Note that for components that do not react with other components, rxn
is unnecessary.
Specifically, conservative tracers or tracers that follow the equilibrium sorption
isotherms can be modeled with just the trac
macro.
Note the parameters NCPNT, NIMM, NVAP (used as indices for input) are determined
by the code using information input for the trac
macro.
NCPNT is equal to the number of liquid components, NIMM is equal to the number
of immobile components, and NVAP is equal to the number of vapor components
specified in the trac
macro.
- Group 1 - NCPLX, NUMRXN
- Group 2 - NGROUPS
- GROUP (ICPNT), ICPNT = 1, NCPNT (repeated NGROUPS times, once for each group).
- Group 3 - IDCPNT, CPNTNAM, IFXCONC, CPNTPRT, CPNTGS (repeated NCPNT times)
- Group 4 - IDCPLX, CPLXNAM, CPLXPRT (repeated NCPLX times)
- Group 5 - IDIMM, IMMNAM, IMMPRT (repeated NIMM times;)
- Group 6 - IDVAP, VAPNAM, VAPPRT (repeated NVAP times)
- Group 7 - ISKIP
- Group 8 - RSDMAX
- HEADING
Note that this is an additional heading line that precedes the LOGKEQ heading.
- Group 9 - LOGKEQ
- Group 10 - CKEQ, HEQ (NCPLX times)
or
- Group 10 - KEYWORD, NUM_TEMPS
- EQTEMP(I), I = 1, NUM_TEMPS
- LKEQ(I), I = 1, NUM_TEMPS
For group 10, the keyword ‘lookup’ can be used in place of CKEQ and HEQ. LOOKUP allows a lookup table to be used to describe the equilibrium constant (K) as a function of temperature. After the keyword, the user must specify the number of values of temperature and K that will be used to describe K as a function of temperature. On the next lines the temperatures, and then the K values are entered. FEHM performs a piecewise linear interpolation between the values given.
- Group 11 - STOIC(ICPNT), ICPNT = 1, NCPNT (repeated NCPLX times, once for each aqueous complex)
Input for groups 9, 10 and 11 is omitted if NCPLX, the number of aqueous complexes, is zero.
The remaining groups are entered as a unit for each kinetic reaction. If there are no kinetic reactions specified, none of the following groups (or their headers) are input. The input for groups 14 and on, depend on the kinetic reaction type specified in group 12. The input for each kinetic reaction type is described below.
- Group 12 - IDRXN
- Group 13 - JA, JB, JC (JA, JB, JC - defined on page 22)
- IDRXN = 1: Linear kinetic reaction
- Group 14 - IAQUEOUS, IIMMOBILE
- Group 15 - KD
or
- Group 15 - KEYWORD, NUM_TEMPS
- EQTEMP(I), I = 1, NUM_TEMPS
- TCOEFF(I), I = 1, NUM_TEMPS
Note
The distribution coefficient can be replaced with the keyword ‘lookup’ for temperature dependent coefficients. The keyword is described in Group 10.
- Group 16 - RATE
- IDRXN = 2: Langmuir kinetic reaction
- Group 14 - IAQUEOUS, IIMMOBILE
- Group 15 - DISTCOEEF
or
- Group 15 - KEYWORD, NUM_TEMPS
- EQTEMP(I), I = 1, NUM_TEMPS
- TCOEFF(I), I = 1, NUM_TEMPS
Note
The distribution coefficient can be replaced with the keyword ‘lookup’ for temperature dependent coefficients. The keyword is described in Group 10.
- Group 16 - RATE
- Group 17 - MAXCONC
- IDRXN = 3: General reaction
- Group 14 - NIMMOBILE, NAQUEOUS, NVAPOR
- Group 15 - KFOR, KREV
- Group 16 - IIMMOBILE (I = 1, NIMMOBILE)
- Group 17 - IMSTOIC (I = 1, NIMMOBILE)
Omit groups 16 and 17 (including headers) if NIMMOBILE is zero.
- Group 18 - IAQUEOUS (I = 1, NAQUEOUS)
- Group 19 - AQSTOIC (I = 1, NAQUEOUS)
Omit groups 18 and 19 (including headers) if NAQUEOUS is zero.
- Group 20 - IVAPOR (I = 1, NVAPOR)
- Group 21 - IVSTOIC (I = 1, NVAPOR)
Omit groups 20 and 21 (including headers) if NVAPOR is zero.
- IDRXN = 4: Dual Monod kinetics biodegradation reaction
- Group 14 - NAQUEOUS (must be >2 and < 5), NIMMOBILE
- Group 15 - SUBSTRATE, ELECACC, COMP3, COMP4, COMP5
Note
The users choice of NAQUEOUS determines whether COMP3, COMP4, and COMP5 need to be entered. NIMMOBILE must be 1. NAQUEOUS also determines whether the COMP3, COMP4, and COMP5 stoichiometries are to be used by the code. However values must always be entered for groups 21-23 regardless of the value of NAQUEOUS.
- Group 16 - BIOMASS
- Group 17 - KS
- Group 18 - KA
- Group 19 - DECAY
- Group 20 - ELECACCSTOIC
- Group 21 - COMP3STOIC
- Group 22 - COMP4STOIC
- Group 23 - COMP5STOIC
- Group 24 - PHTHRESH
- Group 25 - QM
- Group 26 - YIELD
- Group 27 - XMINIT
- Group 28 - NBIOFRM
Omit Group 29 if NBIOFRM = 0
- Group 29 - ICBIO (I = 1, NBIOFRM)
- IDRXN=5: Radioactive Decay Reaction
- Group 14 - HALFLIFE
- Group 15 - RXNTYPE
- Group 16 - PARENT, DAUGHTER
- IDRXN=6: Kinetic Henry’s Law reaction
- Group 14 - IAQUEOUS, IVAPOR
- Group 15 - KH
- Group 16 - RATE
- IDRXN = 7: Kinetic precipitation/dissolution reaction for total component concentrations
- Group 14 - IIMMOBILE
- Group 15 - NAQUEOUS
- Group 16 - IAQUEOUS (I = 1, NAQUEOUS)
- Group 17 - IMSTOIC
- Group 18 - AQSTOIC (I = 1, NAQUEOUS)
- Group 19 - SOLUBILITY
or
- Group 19 - KEYWORD, NUM_TEMPS
- EQTEMP(I), I = 1, NUM_TEMPS
- TCOEFF(I), I = 1, NUM_TEMPS
Note
Solubility can be replaced with the keyword ‘lookup’ for temperature dependent solubilities. The keyword is described in Group 10.
- Group 20 - RATE
- Group 21 - SAREA
- IDRXN = 8: Kinetic precipitation/dissolution reaction for total component concentrations with rates based on free-ion concentrations
Note
The input is identical to that for reaction model 7.
Input Variable | Format | Description | |
---|---|---|---|
NCPLX | integer | Number of aqueous complexes (equal to number of equilibrium reactions) | |
NUMRXN | integer | Number of kinetic reactions | |
NGROUPS | integer | Number of groups. See GROUP to determine how to set this parameter. | |
GROUP | integer | This variable controls the selective coupling solution method employed by FEHM. NCPNT values are entered for each line of input, and NGROUPS lines of input are required, one for each group. If a value is non-zero, then that aqueous component is present in the group. A value of zero denotes that the species is not present in the group. Grouping of aqueous components that take part in rapid kinetic reactions is required for convergence. However, memory requirements increase as the square of the maximum number of aqueous components in a group. | |
IDCPNT | integer | For each total aqueous component, the number identifying each total aqueous component (e.g. 1, 2, etc.) | |
CPNTNAM | character*20 | For each total aqueous component, the name of the total aqueous component (e.g. Sulfate) | |
IFXCONC | integer | For each total aqueous component, the Flag denoting the type of total aqueous component1 - total aqueous concentration is specified in TRAC macro2 - specify log of free ion concentration in TRAC macro (use for pH). For example, if H+ is the component, IFXCONC of 2 allows for pH to be directly input in place of concentration values in the TRAC macro. | |
CPNTPRT | integer | For each total aqueous component, the Flag denoting which total aqueous component concentrations are printed to the “.trc” file and the AVS files.0 - Print to file1 - Do not print to file | |
CPNTGS | real | Guess for the initial uncomplexed component concentration used in speciation reactions. We recommend 1.0e-9. On rare occasions, the chemical speciation solver may have trouble converging. Choosing more representative values for CPNTGS will help convergence. | |
IDCPLX | integer | For each aqueous complex, the number identifying each aqueous complex. By convention, the first complex should be given the number 101, the second, 102, etc. | |
CPLXNAM | character*20 | For each aqueous complex, the name of the aqueous complex (e.g. H2SO4) | |
CPLXPRT | integer | For each aqueous complex, the Flag denoting which aqueous complex concentrations are printed to the “.trc” file and the AVS files.0 - Print to file1 - Do not print to file | |
IDIMM | integer | For each immobile component, the number identifying each immobile component (e.g. 1, 2, etc.) | |
IMMNAM | character*20 | For each immobile component, the name of the immobile component (e.g. Calcite, Co[adsorbed] ) | |
IMMPRT | integer | For each immobile component, the Flag denoting which immobile component concentrations are printed to the “.trc” file and the AVS files.0 - Print to file1 - Do not print to file | |
IDVAP | integer | Fore each vapor component, the number identifying each vapor component (e.g. 1, 2, etc.) | |
VAPNAM | character*20 | For each vapor component, the name of the vapor component (e.g. CO2[gas]) | |
VAPPRT | integer | For each vapor component, the Flag denoting which vapor component concentrations are printed to the “.trc” file and the AVS files.0 - Print to file1 - Do not print to file | |
ISKIP | integer | Flag denoting whether chemical speciation calculations should be done at nodes which have already converged in a previous transport iteration0 - Do chemical speciation calculations at each node for every iteration (recommended option) | |
1 - To save computational time, this options tells FEHM to do equilibrium speciation calculations only at nodes which have not converged during the previous transport iteration. Sometimes, this option can lead to mass balance errors (mass balances can be checked in the “.out” file to see if results are satisfactory). This option is only recommended for very large problems. | |||
RSDMAX | real | The tolerance for the equilibrium speciation calculations. We recommend 1x10-9 for most problems. | |
HEADING | character | One line descriptive comment which precedes the LOGKEQ heading | |
LOGKEQ | integer | Flag denoting the whether K or log K is entered by the user0 - constants are given as K1 - constants are given as log K | |
CKEQ | real | For each aqueous complex, the equilibrium constant | |
HEQ | real | For each aqueous complex, the enthalpy of the equilibrium reaction. The Van Hoff equation is used to determine the value of the equilibrium constant as a function of temperature. Note the keyword ‘lookup’ (see [[wiki:Macro14037 | See For group 10, the keyword ‘lookup’ can be used in place of CKEQ and HEQ. LOOKUP allows a lookup table to be used to describe the equilibrium constant (K) as a function of temperature. After the keyword, the user must specify the number of values of temperature and K that will be used to describe K as a function of temperature. On the next lines the temperatures, and then the K values are entered. FEHM performs a piecewise linear interpolation between the values given.]]) can be used in the place of CKEQ and HEQ. |
KEYWORD | character | Keyword ‘lookup’ designating a lookup table will be used to describe the equilibrium constant as function of temperature. | |
NUM_TEMPS | integer | Number of values of temperature and K that will be used to describe K as a function of temperature. | |
EQTEMP | real | Temperatures for K function (oC) | |
LKEQ | real | Equilibrium constants for K function | |
STOIC | real | For each aqueous complex, the stoichiometry describing how to “make” the complex from the total aqueous components must be entered. If positive, the solute is a reactant; if negative, the solute is a product; and if 0, the solute is not present in the reaction. | |
IDRXN | integer | For each kinetic reaction, this parameter specifies kinetic reaction model. Currently, the following reaction models are available. Additional kinetic formulations can be added without significant code development.1 - linear kinetic reaction2 - langmuir kinetic reaction3 - general kinetic reaction4 - dual Monod biodegradation reaction5 - radioactive decay reaction6 - kinetic Henry’s law reaction7 - precipitation/dissolution reaction8 - precipitation/dissolution reaction with rates based on free-ion concentration | |
JA, JB, JC | integer | JA, JB, JC are described on page 22. Here these parameters are used to specify the nodes at which the current kinetic reaction takes place. If the reaction takes place throughout the problem domain simply enter 1 0 0. | |
IDRXN = 1: Linear Kinetic Reaction | |||
IAQUEOUS | integer | The aqueous component number (e.g. 1, 2, etc.) or the aqueous complex number (e.g. 101, 102, etc.) which corresponds to the sorbing component | |
IIMMOBILE | integer | The immobile component number (e.g. 1, 2, etc.) which corresponds to the sorbed component | |
KD | real | Distribution coefficient (kg water / kg rock) | |
KEYWORD | character | Keyword ‘lookup’ designating a lookup table will be used to describe the distribution coefficient as a function of temperature. | |
NUM_TEMPS | integer | Number of values (temperatures and distribution coefficients) that will be used to describe KD as a function of temperature. | |
EQTEMP | real | Temperatures for distribution coefficient function (oC) | |
TCOEFF | real | Distribution coefficients corresponding to temperatures. | |
RATE | real | Reaction rate parameter (1/hr) | |
IDRXN = 2: Langmuir Kinetic Reaction | |||
IAQUEOUS | integer | The aqueous component number (e.g. 1, 2, etc.) or the aqueous complex number (e.g. 101, 102, etc.) which corresponds to the sorbing component | |
IIMMOBILE | integer | The immobile component number (e.g. 1, 2, etc.) which corresponds to the sorbed component | |
DISTCOEFF | real | Distribution coefficient (kg water/ moles) | |
KEYWORD | character | Keyword ‘lookup’ designating a lookup table will be used to describe the distribution coefficient as a function of temperature. | |
NUM_TEMPS | integer | Number of values (temperatures and distribution coefficients) that will be used to describe DISTCOEFF as a function of temperature. | |
EQTEMP | real | Temperatures for distribution coefficient function (oC) | |
TCOEFF | real | Distribution coefficients for DISTCOEFF as a function of temperature. | |
RATE | real | Reaction rate parameter (1/hr) | |
MAXCONC | real | Maximum concentration (moles/kg rock) | |
IDRXN = 3: General Kinetic Reaction | |||
NIMMOBILE | integer | The number of immobile components which participate in the reaction | |
NAQUEOUS | integer | The number of aqueous components and complexes which participate in the reaction | |
NVAPOR | integer | The number of vapor species which participate in the reaction | |
KFOR | real | The forward reaction rate parameter. [(concentration units)p x s]-1, where p is the sum of the exponents of all concentrations in the forward reaction minus 1. Thus the units of the reaction rate are (concentration units)/hr. | |
KREV | real | The reverse reaction rate parameter. [(concentration units)p x s]-1, where p is the sum of the exponents of all concentrations in the reverse reaction minus 1. Thus the units of the reaction rate are (concentration units)/hr. | |
IIMMOBILE | integer | The immobile component numbers which correspond to the immobile reactants and products in the reaction | |
IMSTOIC | real | The stoichiometry corresponding to each immobile component participating in the reaction. If positive, the solute is a reactant; if negative, the solute is a product; and if 0, the solute is not present in the reaction. | |
IAQUEOUS | integer | The aqueous component or aqueous complex numbers which correspond to the aqueous reactants and products in the reaction | |
AQSTOIC | real | The stoichiometry corresponding to each aqueous component or aqueous complex participating in the reaction. If positive, the solute is a reactant; if negative, the solute is a product; and if 0, the solute is not present in the reaction. | |
IVAPOR | integer | The vapor component numbers which correspond to the vapor reactants and products in the reaction. | |
IVSTOIC | real | The stoichiometry corresponding to each vapor component participating in the reaction. If positive, the solute is a reactant; if negative, the solute is a product; and if 0, the solute is not present in the reaction. | |
IDRXN = 4: Dual Monod Biodegradation Reaction | |||
NAQUEOUS | integer | The number of aqueous species which participate in the reaction. At least 2 aqueous species must participate, the substrate (e.g. organic carbon) and the electron acceptor (e.g. Oxygen). Up to 5 aqueous species can participate. The third, fourth and fifth aqueous components are either reactants or products of the biodegradation reaction. The value entered for NAQUEOUS determines whether COMP3, COMP4, and COMP5 stoichiometries are to be used by the code. | |
NIMMOBILE | integer | The number of immobile components which participate in the reaction. For the biodegradation reaction this value is 1. | |
SUBSTRATE | integer | The aqueous component number which corresponds to the substrate (a.k.a the electron donor) for the biodegradation reaction | |
ELECACC | integer | The aqueous component number which corresponds to the electron acceptor for the biodegradation reaction | |
COMP3 | integer | The aqueous component number which corresponds to a reactant or product in the biodegradation reaction (e.g. CO2, NH3, H+, etc.). Note that this parameter is optional. COMP3 should only be entered if NAQUEOUS>2. | |
COMP4 | integer | The aqueous component number which corresponds to a reactant or product in the biodegradation reaction (e.g. CO2, NH3, H+, etc.).Note that this parameter is optional. COMP4 should only be entered if NAQUEOUS>3. | |
COMP5 | integer | The aqueous component number which corresponds to a reactant or product in the biodegradation reaction (e.g. CO2, NH3, H+, etc.)Note that this parameter is optional. COMP5 should only be entered if NAQUEOUS>4. | |
BIOMASS | real | The solid component number which corresponds to the biomass (this is the immobile component). | |
KS | real | The Monod half-maximum-rate concentration for the substrate (moles/ kg water) | |
KA | real | The Monod half-maximum-rate concentration for the electron acceptor (moles/ kg water) | |
DECAY | real | First order microbial decay coefficient (hr-1) | |
ELECACCSTOIC | real | The stoichiometry corresponding to the electron acceptor. Note that the stoichiometry of the substrate is 1 by definition. | |
COMP3STOIC | real | The stoichiometry corresponding to COMP3. A value is always entered whether or not it is used. | |
COMP4STOIC | real | The stoichiometry corresponding to COMP4. A value is always entered whether or not it is used. | |
COMP5STOIC | real | The stoichiometry corresponding to COMP5. A value is always entered whether or not it is used. | |
PHTHRESH | real | In many systems, the biodegradation reaction will stop as the pH becomes either too acidic or basic. This parameter can be used to stop the biodegradation reaction once the simulated pH approaches a certain value. For example, if PHTHRESH = 10, the biodegradation reaction will cease if the pH is above 10 in the simulation. Note that PHTHRESH is an upper threshold for pH. | |
QM | real | The maximum specific rate of substrate utilization (moles/kg biomass/hr) | |
YIELD | real | The microbial yield coefficient (kg biomass/mole substrate) | |
XMINIT | real | In many systems, biomass does not decay below a certain concentration. The biomass concentration is not allowed to fall below XMINIT (moles/ kg rock). | |
NBIOFRM | integer | Depending on the problem setup, many aqueous complexes can be formed from a total aqueous component. Only some of these complexes may be biodegradable. This parameter is used to specify which forms (the total aqueous concentration, the free ion concentration, or various complex concentrations) of the component degrade. If NBIOFRM = 0, the total aqueous concentration of the component will degrade and the next parameter ICBIO should be omitted.If NBIOFRM = 2, then two forms of this component degrade. These forms are specified using ICBIO. | |
ICBIO | integer | Specify the aqueous component numbers (e.g. 1) or aqueous complex numbers (e.g. 101, 102, etc.) corresponding to the biodegradable form of the substrate. | |
IDRXN = 5: Radioactive Decay Reaction | |||
HALFLIFE | real | Half life (years) | |
RXNTYPE | integer | Flag denoting the type of component participating in the reaction: 0 - Solid 1 - Liquid -1 - Vapor | |
PARENT | integer | The number of the component which corresponds to the parent in the radioactive decay reaction | |
DAUGHTER | integer | The number of the component which corresponds to the daughter in the radioactive decay reaction. If the simulation does not model the daughter product set daughter = 0. | |
IDRXN = 7: Kinetic Precipitation/Dissolution Reaction | |||
IIMMOBILE | integer | The immobile component number (e.g. 1, 2, etc.) which corresponds to the dissolving mineral | |
NAQUEOUS | integer | The number of aqueous species which participate in the reaction | |
IAQUEOUS | integer | The aqueous component numbers which correspond to the aqueous components which enter into the solubility product expression. Note that the total aqueous concentration of the component will dissolve. | |
IMSTOIC | real | The stoichiometry corresponding to the immobile component participating in the reaction. If positive, the solute is a reactant; if negative, the solute is a product; and if 0, the solute is not present in the reaction. | |
AQSTOIC | real | The stoichiometry corresponding to the aqueous components participating in the reaction. If positive, the solute is a reactant; if negative, the solute is a product; and if 0, the solute is not present in the reaction. | |
SOLUBILITY | real | The solubility product. The units of the solubility product depend on the number of aqueous components participating in the reaction. For example, if there are two aqueous components participating the units would be (moles2/[kg water] 2) | |
KEYWORD | character | Keyword ‘lookup’ designating a lookup table will be used to describe the solubility as a function of temperature. | |
NUM_TEMPS | integer | Number of values of temperature and solubility that will be used to describe solubility as a function of temperature. | |
EQTEMP | real | Temperatures for solubility function (oC) | |
TCOEFF | real | Solubilities for solubility as a function of temperature. | |
RATE | real | Reaction rate parameter (moles/[m2s]) | |
SAREA | real | Surface area of the mineral (m2/m3 rock) | |
IDRXN = 8: Kinetic Precipitation/Dissolution Reaction (rates based on free-ion concentrations) This model and its input are the same as for IDRXN = 7 except that the rates are based on the free-ion concentration instead of the total concentration. |
In general, the following examples illustrate only portions of the rxn macro and
putting all of these example inputs together will not result in a working FEHM rxn
macro. However, the dissolution example (the last example in this section)
provides an example of a complete rxn macro and corresponds to the first example
given for the trac macro.
In addition, the Reactive Transport Example and the Validation Test Plan for the
FEHM Application Version 2.30 (10086-VTP-2.30-00) include full example problems
with input files which demonstrate the use of rxn. These input files can
be used to see how rxn fits in with the other macros.
Specifically, the information in rxn must be consistent with the trac macro. For example, if a linear kinetic sorption reaction is invoked by rxn, a liquid component and solid component must be specified in the trac macro.
General Reaction Parameters. In the following example two aqueous complexes and four kinetic reactions are specified. Three liquid components, Co, Fe, and EDTA, two complexes, CoEDTA and FeEDTA, and three immobile species, Co, CoEDTA and FeEDTA, are identified. Aqueous components 1 and 3 are coupled during solution while 2 is solved independently. Note that group 6 data has been omitted since there are no vapor species in this example.
[example]
Equilibrium Reaction Parameters. Equilibrium speciation reactions modeled by FEHM can be written in the following general form:
\(\sum_{j=1}^{N_c} a_{ij}\hat{C_j} \Leftrightarrow \hat{X_i} \;\;\;\; i = 1,...,N_x\)
where \(\hat{C_j}\) is the chemical formula for the aqueous component j, and \(\hat{X_i}\) is the cchemical formula for the aqueous complex i, \(a_{ij}\) is a stoichiometric coefficient {STOIC} giving the number of moles of component j in complex i, and \(N_x\) is the number of aaqueous components.
Here is a simple example of an equilibrium speciation reaction:
\(aA + bB \Leftrightarrow A_aB_b\)
where a and b are the stoichiometric coefficients of components A and B, respectively. At equilibrium, the concentrations of A, B, and \(A_aB_b\) must satisfy the law of mass action for this reaction:
\(K = \frac{[A_aB_b]}{[A]^a[B]^b}\)
where K is the equilibrium constant {CKEQ} for the reaction and [X] is the molar concentration of species X. The total aqueous concentrations of components A and B are given by:
\(U_A = [A] + a[A_aB_b]\)
\(U_b = [B] + b[A_aB_b]\)
Therefore, the total aqueous concentrations, U, are functions of the uncomplexed component concentrations and the complex concentrations. Note that the kinetic reactions discussed in the next section are functions of the uncomplexed component concentrations and complex concentrations with the exception of the radioactive decay and precipitation/dissolution reaction in which the total aqueous concentration is used in the reaction rate law.
The following input describes the equilibrium speciation relations between the total aqueous components and aqueous complexes. Recall that the names of the components and aqueous complexes are given in Groups 3-6. The skip node option, ISKIP, is turned off and the tolerance for the speciation solver, RSDMAX, is set to 1e-9 which is the recommended value. The stoichiometry, STOIC, is specified so that the components Co and EDTA make up the first complex CoEDTA, and the components Fe and EDTA make up the second complex FeEDTA. The equilibrium constants, CKEQ, for CoEDTA and FeEDTA are 1.e18 and 6.31e27, respectively. The enthalpy change is 0.
** ISKIP 0 RSDMAX1e-9** Chemical ** LOGKEQ0** CKEQ 1.0e186.31e27** STOIC **1.00.0 | ** Information ** HEQ **00 0.01.0 | ** 1.01.0 | Group 7 Group 8 Group 9 Group 10 Group 11 |
Below is an example of using the ‘lookup’ keyword in place of CKEQ and HEQ. This example describes the temperature dependence of the equilibrium constant of complex HCO3-. Note that LOGKEQ = 1 in this example, so log K is specified in the input rather than K.
** LOGKEQ1** KEYWORDlookup |
---|
6.5 |
** NUM_TEMPS |
6.344 |
6.268 |
0 |
6.388 |
5 |
6.723 |
0 |
7.2 |
Group 9 Group 10 |
General Kinetic Parameters. In FEHM, eight kinetic reaction models are supported. Additional kinetic subroutines can be added without significant code development. The following is an example of input for the general kinetic parameters. A linear kinetic reaction, IDRXN = 1, is specified as occurring at each node in the problem (JA = 1, JB and JC = 0).
** IDRXN 1 JA1 | JB0 | JC **0 | Group 12 Group 13 |
IDRXN = 1: Linear Kinetic Reaction. The retardation of contaminants due to adsorption/desorption can be modeled with a linear kinetic sorption/desorption expression. The rate of adsorption/desorption of component j is given by:
\(R_j = -k_m \left( c_j - \frac{m_j}{K_D} \right)\)
where \(c_j\) denotes the uncomplexed aqueous concentration of j {IAQUEOUS}, \(m_j\) denotes the adsorbed concentration of species j {IIMMOBILE}, \(k_m\) is the mass transfer coefficient {RATE}, and \(K_D\) is the distribution coefficient {KD}.
As \(k_m \rightarrow \infty\), this expression reduces to the linear equilibrium isotherm. The following example illustrates input for a linear kinetic reaction.
In this kinetic reaction, aqueous component 1 adsorbs to form the immobile component 3. The \(K_D\) for the reaction is 5.07 and the mass transfer coefficient is 1.0.
** IDRXN 1 JA1** IAQ1** KD 5.07 RATE **1.0 | JB0IMMOBILE3 | JC 0 | Group 12 Group 13 Group 14 Group 15 Group 16 |
IDRXN = 2: Langmuir Kinetic Reaction. The Langmuir kinetic reaction rate law is given by:
\(R_j = -k_m \frac{\rho}{\theta} \left( K_L c_j \left( m_j^{MAX} - m_j \right) - m_j \right)\)
where \(k_m\) is the rate constant for desorption {RATE}, \(\rho\) is the bulk rock density {DENR}, \(\theta\) is the porosity {POR}. \(K_L\) is the distribution coefficient {DISTCOEFF}, and \(m_j^{MAX}\) is the maximum concentration that can adsorb onto the j solid {MAXCONC}. Ask \(k_m \rightarrow \infty\), this expression reduces to the Langmuir equilibrium isotherm. Example input for a Langmuir kinetic reaction follows. In this kinetic reaction, aqueous complex 101 sorbs to form immobile component 1. The distribution coefficient for the reaction is 2.e5 and the mass transfer coefficient is 0.05. The maximum sorbed concentration is 1.69e-5.
** IDRXN 2 JA1** IAQ101** DISTCO 2.0e5 RATE 0.05 MAXCO **1.69e-5 | JB0IMMOBILE1 | JC 0 | Group 12 Group 13 Group 14 Group 15 Group 16 Group 17 |
IDRXN = 3: General Kinetic Reaction. Many reactions fall under the category of the general kinetic reaction. The reaction is described by a forward rate constant {KFOR}, a reverse rate constant {KREV}, and a set of stoichiometric coefficients. The form of the general reversible reaction is given by:
\(\sum_{j=1}^{N_c+N_x+N_m+N_v} \eta_j \hat{Z}_j \Leftrightarrow \sum_{k=1}^{N_c+N_x+N_m+N_v} \eta_k' \hat{z}_k\)
where \(N_c\) is the number of aqueous components, \(N_x\) is the number of aqueous complexes { NAQUEOUS = Nc + Nx }, \(N_m\) is the number of immobile components {NIMMOBILE}, \(N_v\) is the number of vapor components {NVAPOR}, \(\eta_j\) are reactant stoichiometric coefficients, \(\eta_k'\) are product stoichiometric coefficients, and \(\hat{z}_i\) is the chemical formula for species i, which may be an uncomplexed aqueous component, aqueous complex, immobile component or vapor component.
The rate law for a general reversible reaction is given by the following expression:
\(R(z_i) = (\eta_i - \eta_i') \left[ k_f \prod_{j=1}^{N_c+N_x+N_m+N_v} z_j^{\eta_j} - k_r \prod_{k=1}^{N_c+N_x+N_m+N_v} z_k^{\eta_k'} \right]\)
where \(z_i\) is the concentration of species i.
The following is example input for a general kinetic reaction. Solid component 1 reacts to form solid components 2 and 3. The forward reaction rate is 1.26e-2 and the reverse reaction rate is 0. Therefore, this is an irreversible reaction. Note also that only solid components are reacting so groups 18-21 have been omitted.
** IDRXN 3 JA1** NIMM3** KFOR1.26e-2** IIMM 1 IMSTOIC1.0 | JB0NAQSP0KREV 0.0 2-1.0 | JC **0NVAPOR0 3 -1.0 | ** | Group 12 Group 13 Group 14 Group 15 Group 16 Group 17 |
IDRXN = 4: Dual Monod Biodegradation Reaction. Biodegradation is an irreversible process in which bacteria oxidize an organic substrate to produce energy and biomass. In addition to biomass, the biodegradation process requires the presence of an electron acceptor (e.g. oxygen, nitrate, etc.) and nutrients (e.g. nitrogen and phosphorous). An example of a biodegradation reaction is given by the following reaction:
\(\mathrm{Substrate} + \mathrm{Electron Acceptor} + H^+ + \mathrm{Nutrients} \rightarrow \mathrm{cells} + CO_2 + H_2O + NH_3\)
FEHM models the rate of biodegradation of a substrate with a multiplicative Monod model, which is given by:
\(R_s = -q_m m_b \frac{[S]}{K_s + [S]K_A} \frac{[A]}{K_A + [A]}\)
where [S] is the aqueous concentration of substrate (a.k.a the electron donor) {SUBSTRATE}, [A] is the aqueous concentration of the electron acceptor {ELECACC}, and \(m_b\) is the concentration of the immobile biomass {BIOMASS}.
The parameter qm is the maximum specific rate of substrate utilization {QM}, which represents the maximum amount of substrate that can be consumed per unit mass of bacteria per unit time. The parameters \(K_S\) {KS} and \(K_A\) {KA} are the Monod half-maximum-rate concentrations for the electron donor and electron acceptor, respectively. The rate of microbial growth is given by the synthesis rate (which is proportional to the rate of substrate degradation) minus a first-order decay rate.
\(R_{cells} = -YR_s - b(m_b - m_{b,init})\)
where Y is the microbial yield coefficient {YIELD} and b is the first-order microbial decay coefficient {DECAY}. In the above equation, the assumption is made that the background conditions are sufficient to sustain a microbial population of a given size; therefore, the biomass concentration is not allowed to fall below its initial background concentration (\(m_{b,init}\)) {XMINIT}. In the following example of input for a dual monod biodegradation reaction, aqueous component 3 is the substrate and aqueous component 4 is the electron acceptor. Note that there are only two entries in Group 15 and Groups 21-23 are omitted since NAQUEOUS = 2. In addition Group 29 data is left out since NBIOFRM = 0.
** IDRXN 4 JA1** NAQSP 2** SUBSTRA3** BIOMASS4** KS 0.201e-3 KA ** 0.00625e-3** DECAY 0.0020833 EASTOIC3.10345 | JB0NIMMOBILE1ELECACC 4 ** | JC 0 | Group 12 Group 13 Group 14 Group 15 Group 16 Group 17 Group 18 Group 19 Group 20 | |||
---|---|---|---|---|---|---|
** COMP3STOIC 0 COMP4STOIC 0 COMP5STOIC 0 PHTHRSH **8 | Group 21 Group 22 Group 23 Group 24 | |||||
** QM **8.0226 e-4 ** YIELD **44.8732 | Group 25 Group 26 | |||||
** XMINIT 0.0 NBIOFRM0** ICBIO ** | ** | Group 27 Group 28 Group 29 |
IDRXN = 5: Radioactive Decay Reaction. Radioactive decay is a simple first order decay process given by:
\(A \rightarrow B\)
where A is the parent {PARENT} and B is the daughter product {DAUGHTER}. The half life of the reaction is defined as the time it takes for the concentration of A to decrease by a factor of 2. In the following example of input for a radioactive decay reaction, aqueous component 2, the parent, reacts to form aqueous component 3, the daughter product. The half life for the reaction is 432.0 years.
** IDRXN 5 JA1** HALFLIFE432.0** RXNTYPE1** PARENT2 | JB0** ** DAUGHTER3 | JC **0 ** | Group 12 Group 13 Group 14 Group 15 Group 16 |
IDRXN = 7: Kinetic Precipitation/Dissolution Reaction. A general reaction describing the precipitation/dissolution of a mineral p {IIMMOBILE} can be written in the following form:
\(m_p \Leftrightarrow \mu_{p1}c_1 + \mu_{p1}c_2 + ... + \mu_{p1}c_{N_c}\)
where the \(c_j\) are the aqueous concentrations {IAQUEOUS} and the \(\mu_{pj}\) are stoichiometric coefficients {AQSTOIC}. The equilibrium constant for this reaction is known as the solubility product. Since the activity of a pure solid is equal to one, the reaction quotient \(Q_p\) is defined as follows:
\(Q_p = \prod_{j=1}^{N_c} c_j^{\mu_{pj}}\)
At equilibrium, \(Q_p\) is equal to the solubility product. The surface-controlled rate of precipitation/dissolution of a mineral is given by:
\(R(m_p) = sign\left(\log\frac{Q_p}{K_{sp}} \right) A_p k_p \left| \frac{Q_p}{K_{sp}} -1 \right|\)
where Ap is reactive surface area of the mineral {AREA}, \(k_p\) is the precipitation rate constant {RATE}, and \(K_{sp}\) is the solubility product {SOLUBILITY}. Currently, this precipitation/dissolution subroutine only allows for the total aqueous concentration of a component to dissolve. The dissolution of uncomplexed aqueous concentration and complex concentrations is not currently supported.
The following is example input for a kinetic precipitation/dissolution reaction (calcite dissolution). This example corresponds to the example used for the trac macro (See In the following example of trac, calcite dissolution is simulated. The input groups are given to the right of the table to facilitate review of the example. The initial solute concentration is set to 0 (but is later overwritten by group 14 input), the implicitness factor is 1 resulting in a 1st order solution, the equation tolerance is 1.e-7, and the upstream weighting is set to 0.5. The solute transport solution is turned on as the heat and mass solution is turned off at day 1. The heat and mass solution resumes on day 1000. Two solutes are simulated in this example. Solute 1 is a nonsorbing (conservative) liquid species (a1 = a2 = 0., b = 1.) with a molecular diffusion coefficient of 1.e-9 m2/s, and dispersivity of 0.0067 m in the X-direction. This transport model applies over the entire problem domain. The initial solute concentration for solute 1 is 6.26e-5 mol/kg-water. Solute 2 is a solid species with an initial solute concentration of 2.e-5 mol/kg-solid. There is no solute source for either solute. The corresponding data for the rxn macro, that would complete this example, is given on page 159.). A single kinetic reaction is specified with no aqueous complexes. The liquid and immobile components are identified. Aqueous component 1 participates in the precipitation/dissolution reaction with immobile component 1. No data is input for groups 4, 6, 9, 10, and 11. The solubility product for the reaction is 6.26e-5 and the reaction rate constant is 100.
rxn** NCPLX0** GROUP 11 IDCPNT1** IDCPLX** IDIMM1** IDVAP | NUMRXN **1 CPNTNAMCa[aq]CPLXNAMIMMNAMCa[s]VAPNAM | IFXCONC0CPLXPRT IMMPRT **0VAPPRT | CPNTPRT 0** | CPNTGS 1.0e-9 | ** | Group 1 Group 2 Group 3 Group 4Group 5 Group 6 |
** ISKIP 0 RSDMAX1e-13** Chemical ** LOGKEQ** CKEQ ** STOIC ** | ** reaction**HEQ ** | information | ** | Group 7 Group 8 Group 9Group 10Group 11 | ||
** IDRXN 7 JA1 | JB0 | JC **0 | Group 12 Group 13 | |||
** IIMMOBLE1** NAQSP 1 IAQ 1 IMSTOIC1** AQSTOIC1** SOLPROD6.26e-5 | ** ** ** ** | Group 14 Group 15 Group 16 Group 17 Group 18 Group 19 | ||||
** RATE 100 AREA **1.0 | Group 20 Group 21 |
IDRXN = 8: Kinetic Precipitation/Dissolution Reaction (rates based on free-ion concentrations). The reaction modeled is analogous to that for IDRXN =7, except that rates are based on the uncomplexed (free-ion) concentration of the species. The total concentration is equal to the free ion concentration + all of the complex concentrations. For a more detailed discussion of the differences between total aqueous and free-ion concentration, see the “Models and Methods Summary” of the FEHM Application [Zyvoloski et al. 1999, [[FEHM-MMS.htm#14829|]], [[FEHM-MMS.htm#14829|]]].
For example, for a species such as Cobalt from the multisolute problem (see [[FEHM-UM.9.5.htm#76956|See Reactive Transport Example]]), the free ion concentration is simply the concentration of Cobalt in it’s uncomplexed state. The total Cobalt would be Free Ion Cobalt + all Cobalt Complexes (e.g. CoEDTA from the multisolute verification problem). Using IDRXN = 7 allows the total Cobalt to dissolve, while IDRXN= 8 allows only the free ion Cobalt to dissolve.
© Copyright 2018, Los Alamos National Laboratory