In reaction-path calculations, PHREEQC is oriented more toward system equilibrium than just aqueous equilibrium. Essentially, all of the moles of each element in the system are distributed among the aqueous phase, pure-phases, exchange sites, and surface sites to attain system equilibrium. Mole balances on hydrogen and oxygen allow the calculation of pe and the mass of water in the aqueous phase, which obviates the need for the special redox convention used in PHREEQE and allows water-producing or -consuming reactions to be modeled correctly. The diffuse double-layer model (Dzombak and Morel, 1990) and a non-electrostatic model (Davis and Kent, 1990) have been incorporated for modeling surface-complexation reactions. Surface complexation constants from Dzombak and Morel (1990) are included in the default databases for the program. The capability to model ion exchange reactions has been added and exchange reactions using the Gaines-Thomas convention are included in the default databases of the program. Exchange modeling with the Gapon convention is also possible. It is possible to define independently any number of solution compositions, gas phases, or pure-phase, gas-phase, exchange, or surface-complexation assemblages. During reaction calculations, any combination of these solutions, gas phases, and assemblages can be brought together to define a system and can react to system equilibrium.
The determination of reaction paths and the stable phase assemblage has been simplified, but the capability to solve for individual phase boundaries has been retained. A new equation solver, that allows both equality and inequality constraints is used to determine the stable phases among a list of candidate phases. Mole transfers occur until each candidate phase is in equilibrium with the aqueous phase or is undersaturated with the solution and the total number of moles of the phase have been removed. Conceptually, it is not possible to produce a Gibbs' phase rule violation. A more complete Newton-Raphson formulation, master-species switching, and numerical scaling have been included in PHREEQC to eliminate some, if not all, of the convergence problems in PHREEQE.
The ability to define multiple solutions and assemblages combined with the capability to determine the stable phase assemblage, leads naturally to 1-dimensional, advective transport modeling. PHREEQC provides a simple method for simulating the movement of solutions through a column. The initial composition of the aqueous, gas, and solid phases within the column may be specified and the changes in composition due to advection of an infilling solution and chemical reaction within the column can be modeled.
A completely new capability added to PHREEQC allows calculation of inverse models. Inverse modeling attempts to account for the chemical changes that occur as a water evolves along a flow path (Plummer and Back, 1980; Parkhurst and others, 1982; Plummer and others, 1991, Plummer and others, 1994). Assuming two water analyses represent starting and ending water compositions along a flow path, inverse modeling is used to calculate the moles of minerals and gases that must enter or leave solution to account for the differences in composition. PHREEQC allows uncertainties in the analytical data to be defined, such that inverse models are constrained to satisfy mole balance for each element and valence state and charge balance for the solution, but only within specified uncertainties. One mode of operation finds minimal inverse models, that is, sets of minerals such that no mineral can be eliminated and still find mole transfers with the remaining minerals that satisfy all of the constraints; another mode of operation finds all sets of minerals that can satisfy the constraints, even if they are not minimal. Optionally, for each inverse model, minimum and maximum mole transfers that are consistent with the uncertainties are computed individually for each mineral in the inverse model.
The input to PHREEQC is completely free format and is based on chemical symbolism. Balanced equations, written in chemical symbols, are used to define aqueous species, exchange species, surface-complexation species, and pure phases, which eliminates all use of indices. At present, no interactive version of the program is available. However, the free-format structure of the data, the use of order-independent keyword data blocks, and the relatively simple syntax make it easy to generate input data sets with a standard editor. The C programing language allows dynamic allocation of computer memory, so there are very few limitations on array sizes, string lengths, or numbers of entities, such as solutions, phases, sets of phases, exchangers, or surface complexers that can be defined to the program.