mirror of
https://git.gfz-potsdam.de/naaice/iphreeqc.git
synced 2025-12-16 16:44:49 +01:00
git-svn-id: svn://136.177.114.72/svn_GW/phreeqc3/trunk@11251 1feff8c3-07ed-0310-ac33-dd36852eb9cd
5103 lines
185 KiB
Plaintext
5103 lines
185 KiB
Plaintext
Version 3.3.8: June 8, 2016
|
|
|
|
---------
|
|
svn 11152
|
|
---------
|
|
Added two new Basic functions related to KINETICS.
|
|
|
|
n$ = KINETICS_FORMULA$("Albite", count, elt$, coef)
|
|
|
|
This function searches for a kinetic reaction definition (Albite, in the example). If found, n$
|
|
is set equal to the first argument (Albite), otherwise an empty string is returned. The
|
|
function returns these values: count is the number of items in the arrays elt$ and coef; elt$
|
|
is a list of element names in the formula for the kinetic reaction; and coef is a numeric
|
|
array containing the number of atoms of each element in the kinetic-reaction formula, in the
|
|
order defined by elt$, which is alphabetical by element.
|
|
|
|
m = SYS("kin", count , name$ , type$ , moles)
|
|
|
|
This function identifies all of the kinetic reactants in the current KINETICS definition
|
|
and returns the sum of moles of all kinetic reactants. Count is number of kinetic
|
|
reactants. Name$ contains the kinetic reactant names. Type$ is “kin”. Moles contains the
|
|
moles of each kinetic reactant. The chemical formula used in the kinetic reaction can be
|
|
determined by using a reaction name from Name$ as the first argument of the
|
|
KINETICS_FORMULA$ Basic function.
|
|
|
|
---------
|
|
svn 11106
|
|
---------
|
|
Updated the online manual
|
|
(http://wwwbrr.cr.usgs.gov/projects/GWC_coupled/phreeqc/phreeqc3-html/phreeqc3.htm)
|
|
to have revisions noted in italic text and better graphics for figures.
|
|
|
|
Version 3.3.7 (11094): April 21, 2016
|
|
|
|
---------
|
|
svn 11091
|
|
---------
|
|
Cerussite misspelled in 5 databases (Amm, minteq, minteq.v4, phreeqc, and wateq4f.
|
|
Modified Calcite RATES to handle M0=0. Added rate for quartz to wateq4f.dat.
|
|
|
|
---------
|
|
svn 11073
|
|
---------
|
|
PhreeqcI: The selected-output file was missing headers under some conditions, for example
|
|
: SOLUTION;SELECTED_OUTPUT;END.
|
|
|
|
---------
|
|
svn 11072
|
|
---------
|
|
PhreeqcI: Fixed bug that overwrote selected output files when (re-)opening a .pqi file
|
|
|
|
Version 3.3.6 (11064): April 18, 2016
|
|
---------
|
|
svn 10952
|
|
---------
|
|
PhreeqcRM: InitialPhreeqcCell2Module method had incorrect indexing when using a mapping of model
|
|
cells to chemistry cells that was not 1-to-1. The result was incorrect values for porosity, rv, and
|
|
saturation.
|
|
|
|
---------
|
|
svn 10932
|
|
---------
|
|
PHREEQC: Additional error checking. In SOLUTION_MASTER_SPECIES the master species must contain the
|
|
element name.
|
|
|
|
---------
|
|
svn 10929
|
|
---------
|
|
PHREEQC: If an aqueous species lacked a molar volume parameter (Vm), then the change in molar volume
|
|
for reactions involving that species were not calculated correctly. Now summations of molar volumes,
|
|
including zero for the species, are calculated.
|
|
|
|
---------
|
|
svn 10892
|
|
---------
|
|
PHREEQC: Added Vm values for Gibbsite, Kaolinite, Albite, Anorthite, K-feldspar, Ca-Montmorillonite,
|
|
Talc, Illite, Chrysotile, Sepiolite, Hematite, Goethite, Pyrite, and Mackinawite for the phreeqc.dat
|
|
and Amm.dat databases.
|
|
|
|
---------
|
|
svn 10877
|
|
---------
|
|
PHREEQC and PhreeqcI: PhreeqcI has updated documentation through the Help menu. All entries in green
|
|
font are modifications, corrections, or new features.
|
|
|
|
Corrected description of "EQUI" option of the SYS function.
|
|
|
|
-porosities is now an option in TRANSPORT for defining a heterogeneous distribution of porosity for
|
|
-multi_d calculations.
|
|
|
|
RHO_0 is a new Basic function that gives the density of pure water at the current temperature.
|
|
|
|
EDL_SPECIES(surf$, count, name$, moles, area, thickness)
|
|
|
|
Returns the total number of moles of species in the diffuse layer. The arguments to the function are
|
|
as follows: surf$ is the name of a surface, such as "Hfo", excluding the site type (such as "_s");
|
|
count is the number of species in the diffuse layer; name$ is an array of size count that contains
|
|
the names of aqueous species in the diffuse layer of surface surf$; moles is an array of size count
|
|
that contains the number of moles of each aqueous species in the diffuse layer of surface surf$;
|
|
area is the area of the surface in m^2; thickness is the thickness of the diffuse layer in m. The
|
|
function applies when -donnan or -diffuse_layer is defined in SURFACE calculations.
|
|
|
|
Corrected description of "EQUI" option of the SYS function.
|
|
|
|
---------
|
|
svn 10874
|
|
---------
|
|
|
|
PHREEQC: Corrected description of "EQUI" option of the SYS function. PhreeqcI has updated
|
|
documentation through the help. All entries in green font are modifications, corrections, or new
|
|
features.
|
|
|
|
---------
|
|
svn 10844
|
|
---------
|
|
PhreeqcI: Changed the way the current working directory is set. Now, the current working directory
|
|
is not changed when browsing for and changing the database.
|
|
|
|
---------
|
|
svn 10843
|
|
---------
|
|
PhreeqcI: SOLUTION_SPREAD did not import correctly when using the P4W tab of PhreeqcI to generate
|
|
the an example problem.
|
|
|
|
---------
|
|
svn 10834
|
|
---------
|
|
PHREEQC: In converting units of mass to moles per kilogram of water, it is possible to calculate a negative
|
|
mass of water. This problem is now trapped, and an error message is issued.
|
|
|
|
Version 3.3.5 (10806): February 3, 2016
|
|
|
|
---------
|
|
svn 10804
|
|
---------
|
|
PHREEQC: Created an option to enter cell porosities in keyword TRANSPORT, which was
|
|
motivated by the need to define porosities for a variable-porosity multicomponent diffusion
|
|
problem. Previously the Basic function CHANGE_POR had to be used to allow variable porosity.
|
|
|
|
-porosities 0.3 0.29 0.28 # porosities of cells 1, 2, 3-n, used for calculating
|
|
# tortuosity in multicomponent diffusion calculations. The
|
|
# numbers entered here take precedence over the value given
|
|
# with -multi_D. If one stagnant layer is defined together with
|
|
# an exchange-factor > 0 ('-stagnant 1 4e-6 0.3 0.1'), the
|
|
# mobile (here = 0.3) and immobile (here = 0.1) porosities
|
|
# defined with -stagnant are used.
|
|
|
|
---------
|
|
svn 10770
|
|
---------
|
|
IPhreeqc: Added optional argument sl to GetSelectedOutputValue in Fortran. The revised method
|
|
is as follows, where sl is a new optional argument.
|
|
|
|
CHARACTER(LEN=40) :: sv
|
|
status = GetSelectedOutputValue(id, i, j, vt, dv, sv, sl)
|
|
|
|
In the example, if the character string generated in IPhreeqc and stored in sv is 40 characters or
|
|
less, the value of sl will be 0. If the character string generated in IPhreeqc was greater than
|
|
40 characters, the truncated string is stored in sv, but the value of sl will contain the length
|
|
of the string before truncation.
|
|
|
|
---------
|
|
svn 10668
|
|
---------
|
|
All programs: Now using Jenkins for continuous integration.
|
|
|
|
---------
|
|
svn 10664
|
|
---------
|
|
PHREEQC: Erroneous input could cause a segmentation fault for surfaces
|
|
related to minerals or kinetics.
|
|
|
|
---------
|
|
svn 10644
|
|
---------
|
|
PHREEQC: Minor format change for specific conductance.
|
|
|
|
---------
|
|
svn 10640
|
|
---------
|
|
PhreeqcRM: Advection example in C and C++ had wrong MPI type for integer transfers.
|
|
Example code in documentation also had wrong MPI type for some integer transfers.
|
|
Integer transfers in Fortran should use MPI_INTEGER, while integer transfers in
|
|
C and C++ should use MPI_INT.
|
|
|
|
---------
|
|
svn 10632
|
|
---------
|
|
PhreeqcRM: Revised transfer of data for MPI when rebalancing. Serializes lists of
|
|
characters, integers, and doubles, instead of writing full "dump" version of each
|
|
reaction. Is much faster for cell transfers when rebalancing among processes.
|
|
|
|
---------
|
|
svn 10630
|
|
---------
|
|
PhreeqcRM: Fixed bug when transferring data for MPI. Surface related to kinetics lost
|
|
concentrations of sorbed elements.
|
|
|
|
---------
|
|
svn 10585
|
|
---------
|
|
Phreeqc: New set of convergence parameters that delay the removal of an unstable
|
|
phase by 1 iteration. Also new KNOBS identifier, -equi_delay n, where n is the
|
|
number of iterations to retain an unstable phase.
|
|
|
|
---------
|
|
svn 10537
|
|
---------
|
|
Phreeqc: Comments for K-spar and Albite RATEs were incorrect for phreeqc.dat and
|
|
wateq4f.dat
|
|
|
|
---------
|
|
svn 10521
|
|
---------
|
|
PhreeqcRM: Provided better error message for CreateMapping errors.
|
|
|
|
Version 3.3.3 (10424): October 23, 2015
|
|
---------
|
|
svn 10409
|
|
---------
|
|
PhreeqcRM: C function clock() does not provide sufficient resolution. Efficiency calculation
|
|
generated NaN, and rebalancing was poor. Revised to use MPI and OpenMP timers when available.
|
|
|
|
---------
|
|
svn 10393
|
|
---------
|
|
PhreeqcRM: Efficiency calculation generated NaN for OpenMP calculations.
|
|
|
|
---------
|
|
svn 10385
|
|
---------
|
|
PHREEQC: Fixed formula for pressure dependence of B1, B2, F1, F2 in the Pitzer formulation.
|
|
Previously had a limit of -10C; temperatures less than -10 produced a floating point exception
|
|
and convergence failure.
|
|
|
|
---------
|
|
svn 10364
|
|
---------
|
|
IPhreeqc and PhreeqcRM: Debug version asserted when trying to write an error message to std::cerr.
|
|
|
|
---------
|
|
svn 10359
|
|
---------
|
|
PhreeqcRM: Added methods and documentation for RM_GetEndCell and RM_GetStartCell for C and Fortran.
|
|
C++ methods already existed. The methods give the range of chemistry cell numbers that are assigned
|
|
by each worker (OpenMP) or process (MPI). If rebalancing is enabled, these numbers may change as
|
|
cells are shifted among workers or processes.
|
|
|
|
Version 3.3.2 (10335): October 2, 2015
|
|
---------
|
|
svn 10332
|
|
---------
|
|
PhreeqcRM: Bug in configure scripts required developer zlib to be installed. Now
|
|
zlib is only needed if the --with-zlib option is given in order to write compressed
|
|
dump files (USE_GZ).
|
|
|
|
---------
|
|
svn 10327
|
|
---------
|
|
PHREEQC: Fixed bug with SOLUTION_SPREAD. Element names starting with "[" were
|
|
not handled correctly.
|
|
|
|
---------
|
|
svn 10317
|
|
---------
|
|
PHREEQC: Handled case where GAS_PHASE components were not defined in PHASES.
|
|
|
|
---------
|
|
svn 10311
|
|
---------
|
|
New R version submitted.
|
|
|
|
---------
|
|
svn 10255
|
|
---------
|
|
PhreeqcRM: Added new method SetScreenOn (RM_SetScreenOn) to control messages
|
|
about rebalancing and any messages written with ScreenMessage (RM_ScreenMessage).
|
|
|
|
Version 3.3.0: September 15, 2015
|
|
|
|
---------------
|
|
svn 10160-10244
|
|
---------------
|
|
PhreeqcRM: Revised code to minimize memory footprint for MPI. Revised the logic
|
|
so that some variables, like porosity and saturation, have only the values
|
|
related to the cells that are defined to each worker. Previously, each worker
|
|
had lists of these variables for all nxyz cells in the model. The changes
|
|
should decrease the total amount of memory needed for MPI runs using PhreeqcRM.
|
|
|
|
---------------
|
|
svn 10231&10237
|
|
---------------
|
|
IPhreeqc: Fixed a bug in the Fortran module, where logical variables (such as
|
|
print control) could be set to true, but not back to false.
|
|
|
|
---------
|
|
svn 10177
|
|
---------
|
|
PHREEQC: Additional print for Donnan layer.
|
|
|
|
---------
|
|
svn 10176
|
|
---------
|
|
Pitzer.dat: Updates to CO2 and CH4 in pitzer.dat affecting gas solubilities.
|
|
|
|
Version 3.2.2: August 24, 2015
|
|
---------
|
|
svn 10118
|
|
---------
|
|
PhreeqcRM: Fixed same "feature" in C RM_GetBackwardMapping that
|
|
resulted in very slow callback function response.
|
|
|
|
---------
|
|
svn 10112
|
|
---------
|
|
Modified exceptions IPhreeqcStop and PhreeqcRMStop to
|
|
compile on Linux.
|
|
|
|
---------
|
|
svn 10107
|
|
---------
|
|
Modified exceptions IPhreeqcStop and PhreeqcRMStop to
|
|
allow them to be caught with other std::exceptions.
|
|
|
|
---------
|
|
svn 10089
|
|
---------
|
|
Modified open_output_files and close_output_files so that
|
|
stderr, stdout, and stdlog cannot be closed.
|
|
|
|
---------
|
|
svn 10072
|
|
---------
|
|
PhreeqcRM: Fixed a "feature" in Fortran RM_GetBackwardMapping that
|
|
resulted in very slow callback function response.
|
|
|
|
|
|
---------
|
|
svn 10053
|
|
---------
|
|
Moved files to /common directory for files that are used in both
|
|
phreeqc and phastinput.
|
|
|
|
---------
|
|
svn 10047
|
|
---------
|
|
In PhreeqcRM, made default rebalance fraction 0.0.
|
|
|
|
---------
|
|
svn 10040
|
|
---------
|
|
Bug in solution constructor caused PhreeqcRM debug tests to fail.
|
|
|
|
---------
|
|
svn 10030
|
|
---------
|
|
Null pointer if K-Cl interaction parameters (b0, b1, c0) were not defined.
|
|
|
|
---------
|
|
svn 10013
|
|
---------
|
|
The enrichment factor for diffusion in the diffuse layer was incorrectly
|
|
implemented.
|
|
|
|
---------
|
|
svn 10006
|
|
---------
|
|
Fix rare instance where mu = 0 caused a divide by zero.
|
|
|
|
--------
|
|
svn 9998
|
|
--------
|
|
Pitzer.dat was adjusted to fit CO2 pressure and density by changing
|
|
Vm, analytical expression, and adding a CO2-CO2 iteraction parameter.
|
|
|
|
--------
|
|
svn 9995
|
|
--------
|
|
Pressure of a gas phase mixture was calculated incorrectly in some
|
|
elevated T,P cases.
|
|
|
|
--------
|
|
svn 9915
|
|
--------
|
|
New Basic function EDL_SPECIES returns the moles of
|
|
species in the electrical double layer. Applies when -DONNAN or
|
|
-DIFFUSE_LAYER are defined in SURFACE calculations.
|
|
|
|
|
|
EDL_SPECIES(surf$, count, name$, moles, area, thickness)
|
|
|
|
The function returns the total number of moles of species in the
|
|
diffuse layer. The arguments to the function are as follows:
|
|
|
|
surf$ is the name of a surface, such as "Hfo", excluding
|
|
the site type (such as "_s").
|
|
count is the number of species in the diffuse layer.
|
|
name$ is an array of size count that contains the
|
|
names of aqueous species in the diffuse layer
|
|
of surface surf$.
|
|
moles is an array of size count that contains the number
|
|
of moles of each aqueous species in the diffuse layer
|
|
of surface surf$.
|
|
area is the area of the surface in m^2.
|
|
thickness is the thickness of the diffuse layer in m.
|
|
|
|
The volume of the diffuse layer is area * thickness, and
|
|
the concentrations of the species in the diffuse layer are
|
|
the number of moles divided by the volume.
|
|
|
|
Example:
|
|
10 t = EDL_SPECIES("Hfo", count, name$, moles, area, thickness)
|
|
20 PRINT "Surface: Hfo"
|
|
30 PRINT "Area: ", area
|
|
40 PRINT "Thickness: ", thickness
|
|
45 PRINT "Volume: ", area * thickness
|
|
50 for i = 1 to count
|
|
60 PRINT PAD(name$(i),20), moles(i)
|
|
70 next i
|
|
|
|
Version 3.2.1: July 7, 2015
|
|
|
|
--------
|
|
svn 9930
|
|
--------
|
|
PhreeqcRM had a serious error in the convertion of units from transport
|
|
to themodule. The error occurred when using H2O as a component and mg/L
|
|
as the transport unit.
|
|
|
|
|
|
Version 3.2.0: June 10, 2015
|
|
|
|
--------
|
|
svn 9809
|
|
--------
|
|
Pitzer calculations were optimized. The etheta calculation was improved
|
|
thans to Wouter Falkena and the MoReS team. Inefficient loops were also
|
|
rewritten.
|
|
|
|
--------
|
|
svn 9665
|
|
--------
|
|
See README.IPhreeqc.TXT for additional information about the IPhreeqc Module.
|
|
|
|
The IPhreeqc module has been updated to use CMake (build process manager)
|
|
for Visual Studio builds. CMake can be downloaded from http://www.cmake.org.
|
|
|
|
Fortran, you will need to include the source file IPhreeqc_interface.F90
|
|
in your project files. This file defines the IPhreeqc Fortran module.
|
|
|
|
For example:
|
|
|
|
USE IPhreeqc
|
|
INTEGER(KIND=4) id
|
|
id = CreateIPhreeqc()
|
|
|
|
This replaces the need to use the include files IPhreeqc.f.inc/IPhreeqc.f90.inc.
|
|
|
|
You will need to link to the IPhreeqc(d).lib/libiphreeqc.a that is created
|
|
during the build process.
|
|
|
|
--------
|
|
svn 9639
|
|
--------
|
|
After reading a dumped surface (SURFACE_RAW), it was later processed
|
|
incorrectly, resulting in a mass loss of the elements that were attached
|
|
to the surface.
|
|
|
|
--------
|
|
svn 9639
|
|
--------
|
|
Revised SIT database from www.thermochimie-tdb.com (sit.dat). Version 9a,
|
|
released 7/28/2014.
|
|
|
|
--------
|
|
svn 9639
|
|
--------
|
|
Revised numerical method for SIT aqueous model. Optimized processing of lists
|
|
of SIT parameters, revised method to obtain initial values of master variables,
|
|
added basis switching.
|
|
|
|
--------
|
|
svn 9462
|
|
--------
|
|
RATES definitions were revised in all databases. The area parameter
|
|
was changed to specific area (area per mole of reactant). Also, for aqueous kinetic
|
|
reactions, the solution volume was added explicitly. The changes
|
|
were made to facilitate a new version of PHAST that uses a representative
|
|
volume that does not have one liter of water.
|
|
|
|
--------
|
|
svn 9434
|
|
--------
|
|
Basic function lk_phase did not account for pressure properly.
|
|
|
|
--------
|
|
svn 9424
|
|
--------
|
|
IPhreeqc Basic callback was modified to use ISO_C_BINDING. IPhreeqc
|
|
will ultimately be a Fortran module.
|
|
|
|
--------
|
|
svn 9386
|
|
--------
|
|
Basic function SYS was missing the "equi" option to return
|
|
the equilibrium phases in the current system.
|
|
|
|
USER_PRINT
|
|
10 t = SYS("equi", count, name$, type$, moles)
|
|
15 PRINT "Number of equilibrium phases: ", count
|
|
20 for i = 1 to count
|
|
30 PRINT PAD(name$(i),20), moles(i)
|
|
40 next i
|
|
END
|
|
|
|
t is the total number of moles of equilibrium phases
|
|
count is the number of equilibrium phases
|
|
name$ is an array with the names of the equilibrium phases
|
|
type$ is an array with "equi" for each equilibrium phase
|
|
moles is an array with the number of moles of each equilibrium phase
|
|
|
|
|
|
--------
|
|
svn 9386
|
|
--------
|
|
New frezchem.dat database from Jonathon Toner and the
|
|
developers of the frezchem code (Toner and Sletten (2013),
|
|
Marion and coworkers). Frezchem is a Pitzer model for temperatures
|
|
of 0 C and below.
|
|
|
|
--------
|
|
svn 9345
|
|
--------
|
|
Initial solution number for a reaction calculation is now assigned
|
|
for SOLUTION_SPREAD in all cases.
|
|
|
|
--------
|
|
svn 9345
|
|
--------
|
|
Adjustment to the Peng-Robinson calculation for example with SO2.
|
|
|
|
--------
|
|
svn 9324
|
|
--------
|
|
Fixed divide by zero if gas phase components had all zero partial
|
|
pressures.
|
|
|
|
--------
|
|
svn 9309
|
|
--------
|
|
The function SURF gave incorrect results for O and H if O and H
|
|
were in the master species (SurfOH, for example).
|
|
|
|
--------
|
|
svn 9308
|
|
--------
|
|
Bug with case dependence of mineral names when running transport. If
|
|
case differed in adjacent cells for an EQUILIBRIUM_PHASE name, it could
|
|
lead to a program failure. Revised to remove case dependence.
|
|
|
|
--------
|
|
svn 9302
|
|
--------
|
|
Fixed Visual Studio static checker warnings.
|
|
|
|
--------
|
|
svn 9250
|
|
--------
|
|
Revised parameters for pitzer.dat. Additional temperature dependence,
|
|
element Si was added, calcite parameters adjusted for higher temperature.
|
|
|
|
|
|
|
|
Version 3.1.7: February 10, 2015
|
|
--------
|
|
svn 9203
|
|
--------
|
|
Fixed IPhreeqc. An error occurred when an empty string was sent to
|
|
IPhreeqc from Fortran.
|
|
|
|
|
|
|
|
Version 3.1.6: January 21, 2015
|
|
--------
|
|
svn 9191
|
|
--------
|
|
IPhreeqc "any" distribution was missing file fimpl.h for Windows builds.
|
|
|
|
--------
|
|
svn 9084
|
|
--------
|
|
Fixed initialization of cxxPPassemblage.
|
|
|
|
--------
|
|
svn 9165
|
|
--------
|
|
Fixed initialization of NameDouble.
|
|
|
|
Version 3.1.5: December 18, 2014
|
|
--------
|
|
svn 9084
|
|
--------
|
|
Fixed warnings identified by CRAN.
|
|
|
|
--------
|
|
svn 9073
|
|
--------
|
|
Aqueous species H+ was missing from the list of species returned by
|
|
SYS("aq", count, name$, type$, moles).
|
|
|
|
--------
|
|
svn 9072
|
|
--------
|
|
Added Basic function diff_c, which returns the diffusion coefficient
|
|
for a species at 25 C.
|
|
|
|
For example,
|
|
d = DIFF_C("CO3-2")
|
|
|
|
--------
|
|
svn 9029
|
|
--------
|
|
In inverse modeling, the writing of input files for NetpathXL was
|
|
incorrect. Revisions to the program had eliminated a speciation
|
|
calculation necessary to provide the correct values.
|
|
|
|
--------
|
|
svn 9000
|
|
--------
|
|
Kinetic names were not saved correctly to allow unique retrival by name.
|
|
The error could have lead to misidentification of kinetic reactions for a
|
|
cell.
|
|
|
|
--------
|
|
svn 8957
|
|
--------
|
|
Uninitialized variable for commands of USER_PUNCH.
|
|
|
|
Version 3.1.4: August 20, 2014
|
|
--------
|
|
svn 8925
|
|
--------
|
|
|
|
Molar volume was not calculated correctly in mixing a gas.
|
|
|
|
--------
|
|
svn 8923
|
|
--------
|
|
|
|
Acentric factor for H2(g) had positive sign. Corrected to
|
|
negative for H2(g) and Hdg(g) in phreeqc.dat, Amm.dat, and pitzer.dat.
|
|
|
|
--------
|
|
svn 8919
|
|
--------
|
|
|
|
When a batch kinetic reaction was simulated, followed by a transport
|
|
simulation with kinetics, the time was not reset between the
|
|
two simulations.
|
|
|
|
|
|
Version 3.1.3: August 6, 2014
|
|
--------
|
|
svn 8895
|
|
--------
|
|
|
|
Missing initializations in class_main.
|
|
|
|
--------
|
|
svn 8879
|
|
--------
|
|
|
|
Pressure was incorrect in mix of GAS_PHASE. Also fixed
|
|
a NULL pointer when the element in a gas phase was missing
|
|
from the system.
|
|
|
|
--------
|
|
svn 8875
|
|
--------
|
|
|
|
Error reading dump of SURFACE when using no_edl option.
|
|
|
|
--------
|
|
svn 8847
|
|
--------
|
|
|
|
Series of changes to correct memory leaks, uninitialized
|
|
variables, variables set but not used, and other warnings
|
|
detected by Valgrind and Visual Studio.
|
|
|
|
--------
|
|
svn 8756
|
|
--------
|
|
|
|
Relative dielectric constant was not calculated correctly.
|
|
|
|
--------
|
|
svn 8755
|
|
--------
|
|
|
|
Basic function LK_SPECIES was changed to use the
|
|
the log K as found in the SOLUTION_SPECIES
|
|
definition. Previously, the log K was for the
|
|
equations rewritten to the current master species.
|
|
|
|
--------
|
|
svn 8741
|
|
--------
|
|
|
|
Handling of isotopes uncertainty was inconsistent with
|
|
documentation in INVERSE_MODELING. Also missing
|
|
defaults for O and H redox states.
|
|
|
|
--------
|
|
svn 8628
|
|
--------
|
|
|
|
Entities with negative user numbers are not dumped.
|
|
|
|
--------
|
|
svn 8622
|
|
--------
|
|
|
|
Modifications to meet R requirements.
|
|
|
|
--------
|
|
svn 8576
|
|
--------
|
|
|
|
Fixed error when Pitzer or SIT parameter was redefined.
|
|
|
|
Version 3.1.2: March 1, 2014
|
|
|
|
--------
|
|
svn 8532
|
|
--------
|
|
|
|
Changed the way the pressure is assigned to a fixed-pressure
|
|
gas phase in a reaction calculation. Previously, pressure
|
|
of the gas phase did not change (unless GAS_PHASE_MODIFY
|
|
was used). Now, if REACTION_PRESSURE is defined, it is
|
|
used for the fixed pressure of the gas.
|
|
|
|
|
|
--------
|
|
svn 8520
|
|
--------
|
|
|
|
Changes in MCD to accomodate unequal cell lengths.
|
|
|
|
--------
|
|
svn 8502
|
|
--------
|
|
|
|
Modified not to DUMP temporary entities with negative user numbers.
|
|
|
|
--------
|
|
svn 8484
|
|
--------
|
|
|
|
Modified to allow diffusion calculations in TRANSPORT with unequal
|
|
cell lengths.
|
|
|
|
--------
|
|
svn 8469
|
|
--------
|
|
|
|
Logic for connecting points in USER_GRAPH was revised.
|
|
|
|
--------
|
|
svn 8453
|
|
--------
|
|
|
|
Error where punch file was deleted twice if there was a Basic error.
|
|
No longer an error if you try to modify a non-existing entity (SOLUTION,
|
|
EXCHANGE, etc), only a warning.
|
|
|
|
--------
|
|
svn 8378
|
|
--------
|
|
|
|
Removed yellow from colors for graphing; it was sometimes hard to see.
|
|
Changed Li molar volume in pitzer.dat, Amm.dat, and phreeqc.dat.
|
|
|
|
-------------
|
|
svn 8371-8375
|
|
-------------
|
|
|
|
Multiple bug fixes pointed out by Marco De-Vroed. Set basic_interpreter
|
|
to NULL after deleting. Revised handling of initial data for initial-solution
|
|
calculations. Revised logic for switching to numerical derivatives for
|
|
high-pressure calculations, the variable switch_numerical was removed.
|
|
|
|
--------
|
|
svn 8356
|
|
--------
|
|
|
|
Fixed bug with solution volume in initial solutions
|
|
containing Alkalinity.
|
|
|
|
--------
|
|
svn 8301
|
|
--------
|
|
|
|
Density was not stored with the solution after a calculation.
|
|
|
|
--------
|
|
svn 8293
|
|
--------
|
|
|
|
Solution volume was not initialized in zero(), and pressure was not set correctly
|
|
when mixing solutions.
|
|
|
|
|
|
Version 3.1.1: December 6, 2013
|
|
|
|
--------
|
|
svn 8203
|
|
--------
|
|
|
|
Updated more molar volumes in phreeqc.dat, Amm.dat, and
|
|
pitzer.dat. Mn+2, Al+3, PO4-3, F-, Li+, Br-, Zn+2, Cd+2,
|
|
Cu+2, NH4+, HPO4-2, H2PO4-, and H3PO4, and other related
|
|
ion pairs or complexes. Also estimated more ion size parameters
|
|
for pairs and complexes. Molar volume approach is published
|
|
in Appelo, Parkhurst, and Post, 2013, Geochimica et Cosmochimica
|
|
Acta, v. 125, p. 49-67.
|
|
|
|
--------
|
|
svn 7997
|
|
--------
|
|
|
|
Modified chart handling for PhreeqcI to allow charts from
|
|
multiple runs to remain open for comparison. Charts will
|
|
remain visible until closed.
|
|
|
|
--------
|
|
svn 7992
|
|
--------
|
|
|
|
Identifier -high_precision was added to the PRINT data
|
|
block to allow higher precision for the PRINT Basic
|
|
command, which is generally used in USER_PRINT
|
|
definitions.
|
|
|
|
--------
|
|
svn 7987
|
|
--------
|
|
|
|
Now can have multiple SELECTED_OUTPUT n and USER_PUNCH n.
|
|
SELECTED_OUTPUT 1 has the same functionality as previous
|
|
versions of SELECTED_OUTPUT, with a set of default print
|
|
definitions. SELECTED_OUTPUT n, where n is not equal to 1,
|
|
has no fields initially defined; it is equivalent to an
|
|
automatic -reset false.
|
|
|
|
A file may be defined for each SELECTED_OUTPUT n that will
|
|
recieve the output from the data block. Using i to
|
|
represent a specific integer, USER_PUNCH i will write to
|
|
the file defined for SELECTED_OUTPUT i. If USER_PUNCH i is
|
|
defined, but SELECTED_OUTPUT i is not, then no data will
|
|
be written from USER_PUNCH i.
|
|
|
|
Printing to the selected-output files is controlled
|
|
by three identifiers. PRINT; -selected_output true/false
|
|
will enable/disable printing of all selected-output
|
|
files. For an individual SELECTED_OUTPUT i definition,
|
|
-active true/false will enable/disable both
|
|
SELECTED_OUTPUT i and USER_PUNCH i. Again for
|
|
SELECTED_OUTPUT i, -user_punch true/false will enable/
|
|
disable the USER_PUNCH i data (rarely used).
|
|
|
|
If SELECTED_OUTPUT i has been defined, a new data block
|
|
of SELECTED_OUTPUT i will retain the previous definition
|
|
if only -active and (or) -user_punch are defined. Defining
|
|
any other identifier will cause the old definiton
|
|
to be removed and its file closed; the data for
|
|
SELECTED_OUTPUT i will be defined entirely by the new
|
|
data block.
|
|
|
|
--------
|
|
svn 7962
|
|
--------
|
|
|
|
Database modifications:
|
|
|
|
pitzer.dat: Parameters have been reordered to alphabetical order.
|
|
|
|
phreeqc.dat and Amm.dat: Vm refit for aqueous species Na+, CO3-2, SO4-2, NO3-,
|
|
HCO3-, NaCO3-, NaHCO3, NaSO4, KSO4. Analytical expression adjusted for gypsum,
|
|
anhydrite, and sylvite (delta H).
|
|
|
|
--------
|
|
svn 7916
|
|
--------
|
|
|
|
Addition of a temperature-dependent pressure correction for the Debye-Hueckel term
|
|
for the Pitzer formulation. An empirical, temperature-dependent pressure correction
|
|
has been introduced in the Debye-Hueckel part of Pitzer's equation for gamma
|
|
(activity coefficient), which lets the factor B vary from 1.2 to 1. Pitzer defined
|
|
this number to be 1.2 for all pressures and temperatures.
|
|
|
|
For monovalent species the correction is:
|
|
pap = (7e-5 + 1.93e-9 * (TK - 250)^ 2.0) * patm_x
|
|
For divalent species the correction is:
|
|
pap = (9.65e-10 * (TK - 263)^ 2.773) * (patm_x^0.623)
|
|
In both cases, pap is limited to less than 0.2.
|
|
|
|
The factor B in the Debye-Hueckel factor is
|
|
B = 1.2 - pap
|
|
|
|
The Debye-Hueckel factor is
|
|
F = = -A0 * (DI / (1.0 + B * DI) + 2.0 * log(1.0 + B * DI) / B)
|
|
where DI is the square root of the ionic strength.
|
|
|
|
--------
|
|
svn 7972
|
|
--------
|
|
|
|
A revised version of the manual is now distributed as a
|
|
compiled HTML file (phreeqc3.chm). It has corrections and
|
|
new features highlighted in forest green.
|
|
|
|
--------
|
|
svn 7920
|
|
--------
|
|
|
|
GAS_PHASE processing was incorrect for fixe-volume gas with
|
|
multiple components. The wrong number of moles of gas
|
|
some gas components was calculated.
|
|
|
|
--------
|
|
svn 7896
|
|
--------
|
|
|
|
The manual wording was wrong or confusing in some places
|
|
regarding the difference between fugacity (F) and
|
|
(partial) pressure (P) of a gas. For ideal gases, P = F.
|
|
However for Peng-Robinson gases F = P * phi / 1 atm
|
|
(unitless).
|
|
|
|
In EQUILIBRIUM_PHASES, the target saturation index for a
|
|
gas is log10(P). In SELECTED_OUTPUT -saturation_index, for
|
|
gases, the value printed will be the fugacity. For Basic
|
|
functions SI and SR, the values are based on the fugacity.
|
|
P and phi can be obtained with the Basic functions
|
|
PR_P and PR_PHI.
|
|
|
|
For the Saturation Index block of the output file,
|
|
the SI for a gas is its fugacity. However, for
|
|
Peng-Robinson gases, P and phi are appended to the
|
|
output line.
|
|
|
|
--------
|
|
svn 7884
|
|
--------
|
|
IPHREEQC: added a Basic function, CALLBACK, which
|
|
allows data be passed to and from the calling
|
|
program. The new IPhreeqc method is
|
|
|
|
for C,
|
|
iresult = SetBasicCallback(ID, function name, cookie)
|
|
|
|
and for Fortran,
|
|
iresult = SetBasicFortranCallback(ID, function name)
|
|
|
|
The two methods are necessary because arguments
|
|
are handled differenctly between C and Fortran.
|
|
The void pointer cookie in the C callback can be
|
|
used to allow the user-defined callback function
|
|
to find necessary data.
|
|
|
|
The user-defined function for C must be of the form
|
|
double my_callback(double, double, const char *, void *)
|
|
|
|
For Fortran the function must be of the form
|
|
double precision my_callback(double precision,
|
|
double precision, character(*))
|
|
|
|
As an example, to get the current time for
|
|
a calculation, the callback could be used as follows:
|
|
|
|
Basic:
|
|
10 date = CALLBACK(dummy, dummy, "Year")
|
|
|
|
Fortran after registering my_callback by using
|
|
SetBasicFortranCallback
|
|
|
|
double precision function my_callback(x1, x2, string)
|
|
USE date_module, only: year
|
|
double precision x1, x2, my_callback
|
|
character(*) string
|
|
if (string .eq. "Year") then
|
|
return dble(year)
|
|
endif
|
|
end
|
|
|
|
A usage of the callback feature has been added to the
|
|
IPhreeqc example advect for Fortran, C, and C++.
|
|
Additional documentation is in the .chm documentation
|
|
files for IPhreeqc.
|
|
|
|
--------
|
|
svn 7867
|
|
--------
|
|
|
|
SOLUTION_MODIFY and SOLUTION_RAW were missing the
|
|
-pressure identifier. It has now been added.
|
|
|
|
--------
|
|
svn 7857
|
|
--------
|
|
|
|
Trapped error when solid-solution components were
|
|
not defined correctly.
|
|
|
|
--------
|
|
svn 7855
|
|
--------
|
|
|
|
Error in pressure dependence when Pitzer or SIT
|
|
aqueous model was used. The pressure dependence
|
|
was not calculated if the pressure was changed,
|
|
but the temperature was not.
|
|
|
|
--------
|
|
svn 7829
|
|
--------
|
|
|
|
Added Basic fuction EQUIV_FRAC that returns the
|
|
equivalent fraction of a surface or exchange
|
|
species. The three arguments are
|
|
(1) Species name (input),
|
|
(2) Equivalents of exchange or surface sites
|
|
per mole of the species (output),
|
|
(3) The name of the surface or exchange site
|
|
(output).
|
|
For example,
|
|
|
|
10 f = EQUIV_FRAC("AlX3", eq, x$)
|
|
|
|
f = equivlalent fraction of AlX3 relative to
|
|
total equivalents of X sites.
|
|
eq = 3.0
|
|
x$ = "X"
|
|
|
|
If the species name is not found to be a surface
|
|
or exchange species, the return value is 0,
|
|
the second argument is set to 0, and the third
|
|
argument is set to an empty string.
|
|
|
|
Also added synonyms for Basic functions
|
|
PHASE_FORMULA and SPECIES_FORMULA with trailing
|
|
$ signs--PHASE_FORMULA$ and SPECIES_FORMULA$.
|
|
To be consistent with Basic, the functions should
|
|
have $ signs because they return strings.
|
|
|
|
|
|
--------
|
|
svn 7828
|
|
--------
|
|
|
|
Added Basic fuction SPECIES_FORMULA that returns the
|
|
stoichiometry of an aqueous, exchange, or surface
|
|
species. The function returns a string: "aq" for
|
|
aqueous, "ex" for exchange, "surf" for surface,
|
|
and "none" if there is no species of that name.
|
|
The four arguments are
|
|
(1) the name of the species (input),
|
|
(2) the number of elements, including charge (output),
|
|
(3) an string array of element names (output),
|
|
(4) a number array of coefficients corresponding to the elements (output).
|
|
The following example:
|
|
|
|
10 name$ = "AlX3"
|
|
20 ty$ = SPECIES_FORMULA(name$, count_s, elt$, coef)
|
|
20 print pad(name$, 15), ty$
|
|
30 for j = 1 to count_s
|
|
40 print pad(blank$, 5), pad(elt$(j),5), str_f$(coef(j), 5, 0)
|
|
50 next j
|
|
|
|
Produces the following output:
|
|
|
|
AlX3 ex
|
|
Al 1
|
|
X 3
|
|
charge 0
|
|
|
|
--------
|
|
svn 7781
|
|
--------
|
|
|
|
Basic function SYS("phases",...) returned 0.0, rather
|
|
than the maximum saturation index if the maximum
|
|
saturation index was less than zero. Now returns the
|
|
maximum saturation index even if it is less than zero.
|
|
|
|
Added new Basic function STR_E$(x, w, d) that produces
|
|
a string with exponential format from a number with a
|
|
given width (w) and number of decimal places (d). w is
|
|
the minimum width of the string. The string is padded
|
|
with spaces to the left to produce a string of the
|
|
specified width (w); however, the string will be wider
|
|
than w characters, if the number does not fit in the
|
|
specified width. If x = 123456.789, then STR_E$(x,15,5)
|
|
produces the following on a Windows computer:
|
|
|
|
1.23457e+005
|
|
|
|
--------
|
|
svn 7766
|
|
--------
|
|
|
|
Added new Basic function STR_F$(x, w, d) that produces
|
|
a string from a number with a given width (w) and
|
|
number of decimal places (d). w is the minimum width of
|
|
the string. The string is padded with spaces to the
|
|
left to produce a string of the specified width (w);
|
|
however, the string will be wider than w characters, if
|
|
the number does not fit in the specified width. If x =
|
|
123456.789, then STR_F$(x,15,5) produces the following
|
|
on a Windows computer:
|
|
|
|
123456.78900
|
|
|
|
--------
|
|
svn 7763
|
|
--------
|
|
|
|
Fixed bug with isotopes. Moles and molalities were
|
|
incorrect if the mass of water in the SOLUTION was not
|
|
1.0.
|
|
|
|
|
|
Version 3.0.6: June 4, 2013
|
|
--------
|
|
svn 7757
|
|
--------
|
|
|
|
Fixed bug introduced in version 3.0.5 if two DELETE
|
|
keywords were used in a run. Fixed a bug with fixed-
|
|
pressure gas, where the volume was 1.0 even when no
|
|
moles of gas were present in the gas phase. Minor
|
|
optimizations for initialization of Peng-Robinson gas
|
|
data.
|
|
|
|
Version 3.0.5: May 31, 2013
|
|
--------
|
|
svn 7748
|
|
--------
|
|
|
|
Optimizations for equilibrium phases, using pointers
|
|
instead of lookup function. Other optimizations for
|
|
SURFACE calculations to limit uses of std::map find,
|
|
eliminate strcmps, and skip inverse setup when not
|
|
needed. Minor fix to Peng Robinson. Fixed bug with
|
|
SOLUTION_MODIFY when a concentration was set to zero.
|
|
Removed lower limit on ionic strength.
|
|
|
|
Version 3.0.4: May 14, 2013
|
|
--------
|
|
svn 7703
|
|
--------
|
|
Fixed bug in PhreeqcI that caused no warnings to be
|
|
included in the output file.
|
|
|
|
--------
|
|
svn 7677
|
|
--------
|
|
Gas-phase volume was not correct in SELECTED_OUTPUT
|
|
-gas printout for Peng-Robinson calculations.
|
|
|
|
--------
|
|
svn 7677
|
|
--------
|
|
Added KIN_TIME Basic function, which gives the
|
|
time interval in seconds of the last kinetic
|
|
integration. KIN_DELTA("xxx")/KIN_TIME will give
|
|
the average rate over the time interval for
|
|
reaction xxx.
|
|
|
|
For example,
|
|
|
|
KINETICS
|
|
Calcite
|
|
-m 1
|
|
-step 864 8640
|
|
|
|
KIN_TIME will return 864 after the first
|
|
step and 8640 after the second. The result of
|
|
KIN_TIME will be the same whether INCREMENTAL_
|
|
REACTIONS is true or false (although TOTAL_
|
|
TIME will differ).
|
|
|
|
|
|
|
|
Version 3.0.3: April 30, 2013
|
|
|
|
Fixed errors in GAS_PHASE, -fixed_pressure used the
|
|
sum of the input pressures instead of the defined
|
|
total pressure in some cases, set upper limits in PR
|
|
calculations; revised Basic function LK_SPECIES;
|
|
logic for printing status line revised; fixed bug in
|
|
SOLUTION_SPREAD, mass of water was not read properly;
|
|
fixed problem with spaces in output file name;
|
|
revised logic for checking if opening files was
|
|
successful, old C-style check was incorrect; revised
|
|
molar volume definitions and selected parameters in
|
|
databases phreeqc.dat, Amm.dat, and pitzer.dat
|
|
|
|
Version 3.0.2: April 4, 2013
|
|
|
|
Fixed an initialization error for activity of water
|
|
that caused slow convergence. Dump wrote a file that
|
|
caused read errors when some names exceeded 21
|
|
characters. Gas_phase_modify did not work correctly.
|
|
|
|
Version 3.0.1: March 21, 2013
|
|
|
|
Fixed bug in printing of solid solutions that caused
|
|
a crash. The pressure dependence of log K in the
|
|
printout of the equilibrium phases assemblage in the
|
|
saturation index list was incorrect.
|
|
|
|
Version 3.0.0: February 1, 2013
|
|
|
|
PHREEQC Version 3 is finally released. Major new
|
|
features include pressure dependence for geochemical
|
|
reactions, the nonideal gas formulation of Peng and
|
|
Robinson, and charting. All features of PHREEQC
|
|
Version 3 are documented in U.S. Geological Survey
|
|
Techniques and Methods 6-A43, “Description of input
|
|
and examples for PHREEQC Version 3--A computer
|
|
program for speciation, batch-reaction, one-
|
|
dimensional transport, and inverse geochemical
|
|
calculations”, available at
|
|
http://pubs.usgs.gov/tm/06/a43/. Features not
|
|
previously documented include Pitzer and SIT aqueous
|
|
models, CD-MUSIC surface complexation, isotopic
|
|
capabilities, and new keyword data blocks to
|
|
manipulate reactants, such as RUN_CELLS, DELETE,
|
|
COPY, _MODIFY, _RAW, and DUMP.
|
|
|
|
************************************************************
|
|
************************************************************
|
|
* All features of PHREEQC Version 3 are *
|
|
* documented in Techniques and Methods 6-A43. *
|
|
************************************************************
|
|
************************************************************
|
|
|
|
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
|
!!!!!!!!!!!!!!!!!!PREVIOUS RELEASE NOTES!!!!!!!!!!!!!!!!!!!!
|
|
!!!!!!!!!!!!!!!!!!PREVIOUS RELEASE NOTES!!!!!!!!!!!!!!!!!!!!
|
|
!!!!!!!!!!!!!!!!!!PREVIOUS RELEASE NOTES!!!!!!!!!!!!!!!!!!!!
|
|
!!!!!!!!!!!!!!!!!!PREVIOUS RELEASE NOTES!!!!!!!!!!!!!!!!!!!!
|
|
!!!!!!!!!!!!!!!!!!PREVIOUS RELEASE NOTES!!!!!!!!!!!!!!!!!!!!
|
|
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
|
|
|
************************************************************
|
|
* Features in PHREEQC++ Not in PHREEQC version 2 *
|
|
* PHREEQC++ is used only in IPhreeqc Modules *
|
|
* Revisions and Bug Fixes *
|
|
************************************************************
|
|
|
|
------------------------------------------------------------
|
|
Version 2.18.2: April 9, 2011
|
|
------------------------------------------------------------
|
|
--------
|
|
svn 5471
|
|
--------
|
|
Added PHASE_FORMULA and LIST_S_S Basic functions.
|
|
|
|
PHASE_FORMULA returns a string value with the
|
|
chemical formula for the phase as defined in
|
|
PHASES data. If 4 arguments are provide, a list
|
|
of the elements and stoichiometric coefficients for
|
|
elements are returned.
|
|
|
|
USER_PRINT
|
|
10 min$ = "Calcite"
|
|
20 form$ = PHASE_FORMULA(min$)
|
|
30 print min$, form$
|
|
40 form$ = PHASE_FORMULA(min$, count, elts$, coefs)
|
|
50 for i = 1 to count
|
|
60 print " ", PAD(elts$[i], 20), coefs[i]
|
|
70 next i
|
|
|
|
This example produces the following output:
|
|
|
|
Calcite CaCO3
|
|
C 1
|
|
Ca 1
|
|
O 3
|
|
|
|
LIST_S_S returns the sum of moles of all components
|
|
in a specified solid solution. Lists of the components
|
|
and the number of moles of each component are also
|
|
returned.
|
|
|
|
|
|
SOLID_SOLUTIONS 1
|
|
Calcite_s_s
|
|
-comp Calcite 0.01
|
|
-comp Smithsonite 0.001
|
|
-comp Strontianite 0.02
|
|
USER_PRINT
|
|
10 name$ = "Calcite_s_s"
|
|
20 total = LIST_S_S(name$, count, comp$, moles)
|
|
30 print PAD(name$, 20), total
|
|
40 for i = 1 to count
|
|
50 print " ", PAD(comp$[i], 20), moles[i], moles[i]/total
|
|
60 next i
|
|
|
|
This example produces the following output:
|
|
|
|
Calcite_s_s 3.0876e-002
|
|
Calcite 9.9316e-003 3.2166e-001
|
|
Smithsonite 9.6666e-004 3.1308e-002
|
|
Strontianite 1.9978e-002 6.4704e-001
|
|
|
|
--------
|
|
svn 5455
|
|
--------
|
|
REACTION_MODIFY keyword was added to the modules. Previously,
|
|
REACTION_MODIFY was not recognized as a keyword.
|
|
|
|
--------
|
|
svn 5453
|
|
--------
|
|
Fixed bug with in READ_SOLUTION_RAW. A read error occurred
|
|
when -isotopes was encountered.
|
|
|
|
--------
|
|
svn 5448
|
|
--------
|
|
Reading of default user number, but specified description
|
|
was in error under some conditions.
|
|
|
|
--------
|
|
svn 5431
|
|
--------
|
|
RUN_CELLS was rewritten to perform multiple calculations
|
|
if multiple steps are defined in REACTION, REACTION_TEMPERATURE,
|
|
or KINETICS. It now operates in the same way that a
|
|
series of USE and SAVES would operate. Previously, only
|
|
one step of a series of reaction steps was taken. If a
|
|
time step is provided in RUN_CELLS for kinetic reactions and
|
|
nmax is the maximum number of steps defined for REACTION,
|
|
REACTION_TEMPERATURE, and KINETICS, the time step is divided
|
|
into nmax equal increments. It is equivalent to the following
|
|
definition in kinetics: -step time_step in nmax steps.
|
|
|
|
--------
|
|
svn 5324
|
|
--------
|
|
Modified solution method for solid solutions so that
|
|
mole transfers were limited to the total amount
|
|
available in the system.
|
|
|
|
------------------------------------------------------------
|
|
Version 2.18.0: April 9, 2011
|
|
------------------------------------------------------------
|
|
|
|
--------
|
|
svn 5281
|
|
--------
|
|
If SOLUTION_MODIFY is used to change a total for an element,
|
|
the activities for the master species of the element are
|
|
automatically updated by the ratio of the new total to the
|
|
old total, unless activities are specifically set for the
|
|
element with -activities. All valence states of redox elements
|
|
are adjusted.
|
|
|
|
--------
|
|
svn 5270
|
|
--------
|
|
Added logic to update estimates of log activity when
|
|
modifying totals in SOLUTION_MODIFY. The initial
|
|
guesses for activities are adjusted proportionally
|
|
to the change in total moles of elements (as defined
|
|
by SOLUTION_MODIFY; -totals).
|
|
|
|
This automatic adjustment is suggested rather than
|
|
explicit definition of the initial guesses through
|
|
SOLUTION_MODIFY; -activities. However, the -activities
|
|
identifier may be used and will supercede the automatic
|
|
adjustment.
|
|
|
|
The adjustment of the initial guesses for activities
|
|
should reduce the number of iterations needed to solve
|
|
a given set of equations and, consequently, should
|
|
lessen the total CPU time for a simulation.
|
|
|
|
--------
|
|
svn 4897
|
|
--------
|
|
Added capability to include files within the input
|
|
file. Files included in include files are also
|
|
included. Files are included verbatim and need not
|
|
contain complete keyword datablocks; however, the
|
|
combination of included files must result in a
|
|
legal PHREEQC input file. Files are included as
|
|
simulations are proceeding, so it is possible to
|
|
write a file at one point of a run that is included
|
|
later in the same run. Included files can contain
|
|
INCLUDE$ directives.
|
|
|
|
SOLUTION
|
|
INCLUDE$ file_name
|
|
END
|
|
|
|
where "file_name" contains:
|
|
EQUILIBRIUM_PHASES
|
|
Calcite 0 10
|
|
|
|
is the same as a single file with
|
|
SOLUTION
|
|
EQUILIBRIUM_PHASES
|
|
Calcite 0 10
|
|
END
|
|
|
|
--------
|
|
svn 4856
|
|
--------
|
|
Revised logic of searching pitzer parameters so that
|
|
order of ions in a parameter definition does not
|
|
matter.
|
|
|
|
--------
|
|
svn 4823
|
|
--------
|
|
Added -cells to DUMP and DELETE; cell option to COPY.
|
|
Example:
|
|
|
|
COPY cell 1 4
|
|
COPY cell 1 5-10
|
|
DUMP
|
|
-cell 1 2-3 10
|
|
DELETE
|
|
-cell 1-3 4 8-10
|
|
|
|
COPY cell n range
|
|
|
|
The cell option of the COPY keyword causes all reactants
|
|
defined with identifying number n to be copied to a single
|
|
range of numbers. The range of numbers can be a single
|
|
number or a range of numbers given by an integer, a
|
|
hyphen, and an integer, with no intervening spaces.
|
|
|
|
DUMP
|
|
-cell list
|
|
|
|
The -cell option writes _RAW formatted output to a
|
|
specified file(see below for more details) for each
|
|
reactant that is defined in the list.
|
|
|
|
DUMP
|
|
-cell list
|
|
The -cell deletes from memory all reactants that are
|
|
defined with identifying numbers in the list.
|
|
|
|
The list of numbers for DUMP and DELETE are
|
|
more flexible than for COPY. A list of ranges can be
|
|
given for DUMP and DELETE, where each element of
|
|
the list can be a single number or a range of numbers
|
|
defined by an integer, a hyphen, and an ingeger, with
|
|
no intervening spaces.
|
|
|
|
--------
|
|
svn 4816
|
|
--------
|
|
Added compile capability to use #include file_name
|
|
in input and database files. PHREEQCPP process the
|
|
files at the start of the run, possibly following
|
|
multiple layers of include files, to produce a stream
|
|
that is then used as input. Compile define is
|
|
MERGE_INCLUDE_FILES; PHREEQC_CLASS also must be defined.
|
|
|
|
Input file:
|
|
SOLUTION 1
|
|
#INCLUDE t2
|
|
#include t4
|
|
END
|
|
|
|
File t2:
|
|
REACTION
|
|
NaCl
|
|
1 mmol
|
|
#include t3
|
|
|
|
File t3:
|
|
REACTION_TEMPERATURE
|
|
10 20 30
|
|
|
|
File t4:
|
|
SAVE solution 1
|
|
|
|
When compiled with the include file #defines, the above
|
|
set of files produces the following input for PHREEQC:
|
|
|
|
SOLUTION 1
|
|
REACTION
|
|
NaCl
|
|
1 mmol
|
|
REACTION_TEMPERATURE
|
|
10 20 30
|
|
SAVE solution 1
|
|
END
|
|
|
|
--------
|
|
svn 4800
|
|
--------
|
|
|
|
Added capability to dump REACTIONs, REACTION_TEMPERATUREs,
|
|
and MIXes.
|
|
|
|
DUMP
|
|
-mix 1 4 6
|
|
-reaction 1-5
|
|
-reaction_temperature 1 3-9
|
|
|
|
List of numbers may be formatted as described for DUMP.
|
|
Data are written in a format suitable for an input file
|
|
to PHREEQCPP.
|
|
|
|
Example of dumped keywords:
|
|
|
|
MIX 1
|
|
1 0.33
|
|
2 0.33
|
|
3 0.34
|
|
REACTION_RAW 1
|
|
-units Mol
|
|
-reactant_list
|
|
Ba 1
|
|
Br 2
|
|
-element_list
|
|
-steps
|
|
0.01
|
|
-equal_increments 1
|
|
-count_steps 2
|
|
REACTION_TEMPERATURE_RAW 1
|
|
-count_temps 3
|
|
-equal_increments 1
|
|
-temps
|
|
25 45
|
|
|
|
--------
|
|
|
|
Added -cells option to DUMP.
|
|
|
|
DUMP
|
|
-cells 1-19 20
|
|
|
|
This -cells option will dump any reactant with numbers
|
|
between 1 and 20, including SOLUTIONs, EXCHANGERs,
|
|
GAS_PHASEs, KINETICS, SOLID_SOLUTIONs, SURFACEs, REACTIONs,
|
|
REACTION_TEMPERATUREs, and MIXes.
|
|
|
|
|
|
--------
|
|
svn 3730
|
|
--------
|
|
|
|
Added keyword RUN_CELLS.
|
|
|
|
RUN_CELLS
|
|
-cells 1 2
|
|
5-6
|
|
7
|
|
-time_step 10000
|
|
-start_time 100
|
|
|
|
|
|
For each i listed in -cells
|
|
it is the equivalent of the following:
|
|
|
|
USE solution i
|
|
USE equilibrium_phases i
|
|
USE exchange i
|
|
USE surface i
|
|
USE solid_solution i
|
|
USE gas_phase i
|
|
USE kinetics i
|
|
USE reaction i
|
|
USE reaction_temperature i
|
|
SAVE solution i
|
|
SAVE equilibrium_phases i
|
|
SAVE exchange i
|
|
SAVE surface i
|
|
SAVE solid_solution i
|
|
SAVE gas_phase i
|
|
|
|
If MIX i is defined, it is used in place of USE solution i.
|
|
A MIX i or SOLUTION i must be defined to use RUN_CELLS; -cells i.
|
|
All other entities are used only if they are defined.
|
|
|
|
-start_time and -time_step are needed if any kinetic reactions
|
|
are calculated. -start_time is the time at the start of the
|
|
calculation, and -time_step is the length of time over which
|
|
to integrate the kinetic reactions.
|
|
|
|
--------
|
|
svn 3727
|
|
--------
|
|
Added keywords to allow modification of each reactant.
|
|
A reactant must have been defined previously, but then
|
|
each data item of the reactant can be changed and new
|
|
components added. Data items read are changed, all
|
|
other data items remain the same. Input format is the
|
|
same as the RAW formats produced by DUMP.
|
|
|
|
|
|
New keywords are as follows:
|
|
|
|
SOLUTION_MODIFY
|
|
EQUILIBRIUM_PHASES_MODIFY
|
|
EXCHANGE_MODIFY
|
|
SURFACE_MODIFY
|
|
SOLID_SOLUTIONS_MODIFY
|
|
GAS_PHASE_MODIFY
|
|
KINETICS_MODIFY
|
|
|
|
The example below is indented to indicate which
|
|
information is necessary to change a data item.
|
|
Working back through the indention levels for
|
|
and item, each heading of a lower order is
|
|
necessary to define the data item. In the example
|
|
below, to change the number of moles of barite from
|
|
10 to 5 in the equilibrium phase assemblage, it
|
|
is necessary to define EQUILIBRIUM_PHASES_MODIFY 1;
|
|
-component; -name Barite; -moles 5.
|
|
|
|
Items identified by an asterisk are most likely to
|
|
consider for redefinition. Items with (*) are
|
|
marked to indicate that care is needed to maintain
|
|
charge balance relations. Unwanted redox and pH
|
|
reactions may result from incorrect redefinition
|
|
of these quantities. Items not marked are either
|
|
initial estimates of variables calculated in the
|
|
simulation, or are parameters thought not likely
|
|
to be changed.
|
|
|
|
The MODIFY data blocks change the data in the
|
|
PHREEQC storage structures. They do not cause
|
|
any initial composition calculations. Neither
|
|
do they generate default reactions to be simulated.
|
|
USE statements are needed to specify explicitly
|
|
the desired reactions.
|
|
|
|
|
|
SOLUTION_MODIFY 1
|
|
-temp 25 *
|
|
-total_h 111.01243359981 (*)
|
|
-total_o 55.506216800086 (*)
|
|
-cb -3.6579285790756e-010 (*)
|
|
-totals
|
|
Cl 0.0010000000000003 (*)
|
|
H(0) 1.4155655514601e-025 (*)
|
|
Na 0.0010000000000003 (*)
|
|
-Isotopes
|
|
-pH 7
|
|
-pe 4
|
|
-mu 0.0010001035690258
|
|
-ah2o 0.99996599647757
|
|
-mass_water 1
|
|
-total_alkalinity 3.6579283856577e-010
|
|
-activities
|
|
Cl -3.0155266404974
|
|
E -4
|
|
H(0) -25.15
|
|
Na -3.0153891985103
|
|
O(0) -42.080029535586
|
|
-gammas
|
|
EQUILIBRIUM_PHASES_MODIFY 1
|
|
-eltList
|
|
Ba 1
|
|
O 4
|
|
S 1
|
|
-component *
|
|
-name Barite
|
|
-si 0 *
|
|
-moles 10 *
|
|
-delta 0
|
|
-initial_moles 0
|
|
-force_equality 0
|
|
-dissolve_only 0
|
|
-precipitate_only 0
|
|
EXCHANGE_MODIFY 1
|
|
-pitzer_exchange_gammas 1
|
|
-component
|
|
-formula X
|
|
-totals
|
|
Na 1.0000000058717 (*)
|
|
X 1.0000000058717 (*)
|
|
-charge_balance 0
|
|
-moles 0
|
|
-la 3.0000000302372
|
|
-phase_proportion 0
|
|
-formula_z 0
|
|
-formula_totals
|
|
X 1
|
|
SURFACE_MODIFY 1 .
|
|
-type 2
|
|
-dl_type 0
|
|
-sites_units 0
|
|
-only_counter_ions 0
|
|
-thickness 1e-008
|
|
-debye_lengths 0
|
|
-DDL_viscosity 1
|
|
-DDL_limit 0.8
|
|
-transport 0
|
|
-component
|
|
-formula Hfo_s
|
|
-formula_z 0
|
|
-moles 0
|
|
-la -0.11486188676541
|
|
-charge_balance 3.7853465372651e-005
|
|
-phase_proportion 0
|
|
-Dw 0
|
|
-formula_totals
|
|
Hfo_s 0.01
|
|
-totals
|
|
H 0.01003785346547 (*)
|
|
Hfo_s 0.010000000000097 (*)
|
|
O 0.010000000000097 (*)
|
|
-charge_component
|
|
-name Hfo
|
|
-specific_area 600
|
|
-grams 1
|
|
-charge_balance 3.7853465372651e-005 (*)
|
|
-mass_water 0
|
|
-la_psi 0.55146269389617
|
|
-la_psi1 0
|
|
-la_psi2 0
|
|
-capacitance0 1
|
|
-capacitance1 5
|
|
-diffuse_layer_totals
|
|
SOLID_SOLUTIONS_MODIFY 1
|
|
-solid_solution
|
|
-name Calcite
|
|
-a0 0
|
|
-a1 0
|
|
-ag0 0
|
|
-ag1 0
|
|
-miscibility 0
|
|
-xb1 0.0
|
|
-xb2 0.0
|
|
-component
|
|
calcite 0.1 *
|
|
siderite 0.001 *
|
|
GAS_PHASE_MODIFY 1
|
|
-type 0
|
|
-total_p 1
|
|
-volume 1
|
|
-component
|
|
CO2(g) 1.4305508698401e-005 *
|
|
KINETICS_MODIFY 1
|
|
-step_divide 1
|
|
-rk 1
|
|
-bad_step_max 500
|
|
-use_cvode 0
|
|
-cvode_steps 100
|
|
-cvode_order 5
|
|
-component
|
|
-rate_name Calcite
|
|
-tol 1e-008
|
|
-m 0.9999999999991 *
|
|
-m0 1
|
|
-moles 8.9805940461929e-013
|
|
-namecoef
|
|
CaCO3 1
|
|
-d_params
|
|
1 1 1 1 *
|
|
-totals
|
|
C 8.9801193858101e-013
|
|
Ca 8.9801193858101e-013
|
|
O 2.694035815743e-012
|
|
-steps
|
|
|
|
--------
|
|
svn 3719
|
|
--------
|
|
Added DELETE keyword to delete any numbered reactant, as
|
|
listed in the example below. A list of single numbers and
|
|
number ranges are used to define the reactants to delete
|
|
from PHREEQC memory. Lists may continue on subsequent
|
|
lines. Deletion occurs as the last step of simulation
|
|
calculations, after all other calculations (initial
|
|
compositions, reactions, transport, inverse modeling) and
|
|
COPYing have occurred.
|
|
|
|
|
|
DELETE
|
|
-solution 2 3
|
|
-equilibrium_phases 2-3
|
|
-exchange 2
|
|
3
|
|
-surface
|
|
2-3
|
|
-solid_solution
|
|
2 3
|
|
-gas_phase 2-3
|
|
-kinetics 3 2
|
|
-mix 2
|
|
-mix 3
|
|
-reaction 2-3
|
|
-temperature
|
|
2
|
|
3
|
|
--------
|
|
svn 3704
|
|
--------
|
|
Added DUMP keyword. Writes complete data for solution,
|
|
equilibrium_phases, exchange, surface, solid solution,
|
|
gas phase, and kinetics classes. The format of the
|
|
output is suitable for data input to the C++ version
|
|
of PHREEQC. This feature allows the chemical state
|
|
of a simulation to be saved and read back in as
|
|
initial conditions for subsequent model runs.
|
|
|
|
Examples:
|
|
DUMP
|
|
-all
|
|
-file myfile.dmp
|
|
END
|
|
DUMP
|
|
-file myfile.dmp
|
|
-append true
|
|
-solution 1-2 3
|
|
-equi 3 1-2
|
|
-exch 1 2 3
|
|
-surf 1
|
|
2
|
|
3
|
|
|
|
-s_s 1
|
|
2-3
|
|
-gas 1
|
|
-gas 2
|
|
-gas 3
|
|
-kin 1-3
|
|
END
|
|
|
|
Explanation:
|
|
The first DUMP datablock will write the compositions at
|
|
the end of the simulation (after all simulation calculations,
|
|
TRANSPORTs, SAVEs, and COPYs are complete) for
|
|
every solution, equilibrium_phases, exchange, surface,
|
|
solid solution, gas phase, and kinetics entities that have
|
|
been defined or produced in the run. This write includes
|
|
internally saved entities (usually assigned negative numbers).
|
|
|
|
The second DUMP data appends the compositions of items
|
|
numbered 1-3 to myfile.dmp, if they exist. The second example
|
|
shows multiple ways to define the entities to be dumped to
|
|
file.
|
|
|
|
------
|
|
Begin
|
|
------
|
|
PHREEQC++ has classes that are equivalent to the PHREEQC C
|
|
structures. Each class has a method to "dump_raw" the
|
|
entire set of class data. The lines generated by dump_raw
|
|
can be read as keyword data blocks in an input file. The following
|
|
keywords are available in PHREEQC++: SOLUTION_RAW,
|
|
EQUILIBRIUM_PHASES_RAW, EXCHANGE_RAW, SURFACE_RAW,
|
|
SOLID_SOLUTIONS_RAW, GAS_PHASE_RAW, and KINETICS_RAW.
|
|
PHAST uses these classes and data blocks to dump the chemical
|
|
state of a simulation and read it back in as a starting
|
|
point for subsequent simulations.
|
|
|
|
Examples of raw output are given below. Some of the fields
|
|
are required and some are not.
|
|
|
|
SOLUTION_RAW 1
|
|
-temp 25
|
|
-pH 7
|
|
-pe 4
|
|
-mu 0.0010001035690258
|
|
-ah2o 0.99996599647757
|
|
-total_h 111.01243359981
|
|
-total_o 55.506216800086
|
|
-cb -3.6579285790756e-010
|
|
-mass_water 1
|
|
-total_alkalinity 3.6579283856577e-010
|
|
-totals
|
|
Cl 0.0010000000000003
|
|
H(0) 1.4155655514601e-025
|
|
Na 0.0010000000000003
|
|
-activities
|
|
Cl -3.0155266404974
|
|
E -4
|
|
H(0) -25.15
|
|
Na -3.0153891985103
|
|
O(0) -42.080029535586
|
|
-gammas
|
|
-Isotopes
|
|
EQUILIBRIUM_PHASES_RAW 1
|
|
-eltList
|
|
Ba 1
|
|
O 4
|
|
S 1
|
|
-component
|
|
-name Barite
|
|
-si 0
|
|
-moles 10
|
|
-delta 0
|
|
-initial_moles 0
|
|
-force_equality 0
|
|
-dissolve_only 0
|
|
-precipitate_only 0
|
|
EXCHANGE_RAW 1 Exchange assemblage after simulation 3.
|
|
-pitzer_exchange_gammas 1
|
|
-component
|
|
-formula X
|
|
-moles 0
|
|
-la 3.0000000302372
|
|
-charge_balance 0
|
|
-phase_proportion 0
|
|
-formula_z 0
|
|
-totals
|
|
Na 1.0000000058717
|
|
X 1.0000000058717
|
|
-formula_totals
|
|
X 1
|
|
SURFACE_RAW 1 Surface assemblage after simulation 4.
|
|
-type 2
|
|
-dl_type 0
|
|
-sites_units 0
|
|
-only_counter_ions 0
|
|
-thickness 1e-008
|
|
-debye_lengths 0
|
|
-DDL_viscosity 1
|
|
-DDL_limit 0.8
|
|
-transport 0
|
|
-component
|
|
-formula Hfo_s
|
|
-formula_z 0
|
|
-moles 0
|
|
-la -0.11486188676541
|
|
-charge_balance 3.7853465372651e-005
|
|
-phase_proportion 0
|
|
-Dw 0
|
|
-formula_totals
|
|
Hfo_s 0.01
|
|
-totals
|
|
H 0.01003785346547
|
|
Hfo_s 0.010000000000097
|
|
O 0.010000000000097
|
|
-charge_component
|
|
-name Hfo
|
|
-specific_area 600
|
|
-grams 1
|
|
-charge_balance 3.7853465372651e-005
|
|
-mass_water 0
|
|
-la_psi 0.55146269389617
|
|
-la_psi1 0
|
|
-la_psi2 0
|
|
-capacitance0 1
|
|
-capacitance1 5
|
|
-diffuse_layer_totals
|
|
SOLID_SOLUTIONS_RAW 1
|
|
-solid_solution
|
|
-name Calcite
|
|
-a0 0
|
|
-a1 0
|
|
-ag0 0
|
|
-ag1 0
|
|
-miscibility 0
|
|
-xb1 -6.2774385622042e+066
|
|
-xb2 -6.2774385622042e+066
|
|
-component
|
|
calcite 0.1
|
|
siderite 0.001
|
|
GAS_PHASE_RAW 1
|
|
-type 0
|
|
-total_p 1
|
|
-volume 1
|
|
-component
|
|
CO2(g) 1.4305508698401e-005
|
|
KINETICS_RAW 1
|
|
-step_divide 1
|
|
-rk 3
|
|
-bad_step_max 500
|
|
-use_cvode 0
|
|
-cvode_steps 100
|
|
-cvode_order 5
|
|
-component
|
|
-rate_name Calcite
|
|
-tol 1e-008
|
|
-m 1
|
|
-m0 1
|
|
-moles 0
|
|
-namecoef
|
|
CaCO3 1
|
|
-d_params
|
|
1 1 1 1
|
|
-totals
|
|
-steps
|
|
|
|
|
|
|
|
|
|
|
|
************************************************************
|
|
* Features in PHREEQC version 2 not *
|
|
* documented in WRIR 99-4259. *
|
|
************************************************************
|
|
|
|
------------------------------------------------------------
|
|
Version 2.18.3: April 10, 2011
|
|
------------------------------------------------------------
|
|
--------
|
|
svn 5570
|
|
--------
|
|
If -high_precision is set to true in SELECTED_OUTPUT,
|
|
convergence tolerance is set to 1e-12. If
|
|
-high_precision is set to false, convergence tolerance
|
|
is not changed. KNOBS; -convergence_tolerance sets the
|
|
convergence tolerance to a specified number. The last
|
|
definition (-high_precision true or
|
|
-convergence_tolerance) takes precedence for a
|
|
calculation.
|
|
|
|
------------------------------------------------------------
|
|
Version 2.18.0: April 9, 2011
|
|
------------------------------------------------------------
|
|
--------
|
|
svn 5212
|
|
--------
|
|
Added gfm (gram formula mass) as a synonym to gfw in
|
|
reading concentration data for SOLUTION.
|
|
|
|
S(6) 1 gfm 96
|
|
|
|
is equivalent to
|
|
|
|
S(6) 1 gfw 96.
|
|
|
|
--------
|
|
svn 5170
|
|
--------
|
|
Added ceil and floor Basic functions. Ceil(x) is the
|
|
smallest integer greater than or equal to x. Floor(x)
|
|
is the largest integer less than or equal to x. Note
|
|
that all numbers in Basic are of type double in C.
|
|
|
|
USER_PRINT
|
|
10 print ceil(2.8), floor(2.8), ceil(-2.8), floor(-2.8)
|
|
|
|
This USER_PRINT Basic program has the following output:
|
|
|
|
3 2 -2 -3
|
|
|
|
|
|
--------
|
|
svn 4988
|
|
--------
|
|
Added EOL$ Basic function. EOL$ is the end of line
|
|
character for whatever operating system you are
|
|
running.
|
|
|
|
USER_PRINT
|
|
10 PRINT "line 1"+EOL$+"line 2"+EOL$
|
|
|
|
The result of this USER_PRINT is
|
|
|
|
line 1
|
|
line 2
|
|
|
|
--------
|
|
svn 4942
|
|
--------
|
|
Added additional parameter in PRINT for status. Writing
|
|
the status line to the screen can slow calculations
|
|
substantially under some conditions.
|
|
|
|
PRINT
|
|
-status (t|f|n)
|
|
|
|
t--Print status line.
|
|
f--Do not print status line.
|
|
n--Print status line every n milliseconds.
|
|
|
|
-status 1000 would print the status line every
|
|
second.
|
|
|
|
--------
|
|
svn 4830
|
|
--------
|
|
Changed default for exchange species activty
|
|
coefficients to be equal to the Pitzer
|
|
aqueous activity coefficients when using Pitzer
|
|
aqueous model. Default is
|
|
-pitzer_exchange_gammas true.
|
|
|
|
|
|
------------------------------------------------------------
|
|
Version 2.17.5: September 7, 2010
|
|
------------------------------------------------------------
|
|
|
|
------------------------------------------------------------
|
|
Version 2.17.4: September 2, 2010
|
|
------------------------------------------------------------
|
|
|
|
--------
|
|
svn 4771
|
|
--------
|
|
Added synonyms to TOTMOLE: TOTMOL, TOTMOLES
|
|
|
|
------------------------------------------------------------
|
|
Version 2.17.3: August 12, 2010
|
|
------------------------------------------------------------
|
|
|
|
--------
|
|
svn 4191
|
|
--------
|
|
Added new Basic functions:
|
|
|
|
10 total_Ca_in_moles = TOTMOLE("Ca")
|
|
|
|
TOTMOLE provides the total number of moles of an element
|
|
or element valence state in solution. Special values are
|
|
"water", which gives number of moles of water, and
|
|
"charge", which gives total equivalents of charge
|
|
imbalance in solution (same as Basic function
|
|
CHARGE_BALANCE). In contrast, the Basic function TOT
|
|
returns moles per kilogram of water, or equivalents per
|
|
kilogram of water for TOT("charge").
|
|
|
|
10 O18_permil = ISO("[18O]")
|
|
|
|
|
|
ISO gives an isotopic composition in the input units for
|
|
an isotope--permil, pmc, or TU in current version of
|
|
iso.dat. The string argument can be an isotope name, or
|
|
any item defined in the ISOTOPE_RATIOS data block, For
|
|
example, ISO("R(13C)_Calcite") will return the carbon-13
|
|
composition of the calcite solid solution in permil
|
|
because of the definitions in iso.dat.
|
|
|
|
10 D_units$ = ISO_UNITS("D")
|
|
|
|
ISO_UNITS gives the input units for the isotope, D_units$ =
|
|
"permil" in the example. The string argument can be an
|
|
isotope name or an item defined in the ISOTOPE_RATIOS data
|
|
block as explained for the Basic function ISO.
|
|
|
|
------------------------------------------------------------
|
|
Version 2.17.0: February 25, 2010
|
|
------------------------------------------------------------
|
|
|
|
--------
|
|
svn 4006
|
|
--------
|
|
|
|
Changed the calculation of Specific Conductance (SC, uS/cm)
|
|
to be for the actual temperature of the SOLUTION (in output
|
|
and in BASIC function SC).
|
|
Previous versions calculated SC for 25 oC, whereas the
|
|
complexation model is done at the actual temperature.
|
|
To obtain SC at 25 oC, use keyword REACTION_TEMPERATURE,
|
|
for example:
|
|
|
|
SOLUTION 1; K 1; Cl 1; -temp 99
|
|
REACTION_TEMPERATURE; 25
|
|
END
|
|
|
|
The following example prints to the selected output
|
|
file the equivalent conductance in (mmho/cm / eq/L) at
|
|
20 degrees C for a 1:1 chloride salt solution:
|
|
|
|
USER_PUNCH
|
|
-head conc eq_EC_20
|
|
-start
|
|
10 punch tot("Cl"), SC / tot("Cl") * 1e-3
|
|
-end
|
|
|
|
where 1e-3 converts from microSiemens/cm to mmho/cm.
|
|
(The example given with svn 2448 multiplies SC's incorrectly
|
|
with the ratio of the temperatures.)
|
|
--------
|
|
svn 3986
|
|
--------
|
|
Added an option for time-substepping in multicomponent
|
|
diffusion (-multi_D true), keyword TRANSPORT:
|
|
|
|
-time_step 3600 3.0 # 3 time-substeps of 1200 seconds
|
|
|
|
This option is useful to avoid a warning about negative
|
|
concentrations that may occur in MCD simulations.
|
|
|
|
--------
|
|
svn 3902
|
|
--------
|
|
Added four basic functions for use only with PHAST. The
|
|
functions are related to the volume, porosity, and
|
|
water saturation of a PHAST finite-difference cell:
|
|
|
|
CELL_VOLUME--The total volume of the cell in liters.
|
|
CELL_PORE_VOLUME--The void volume of the cell in liters.
|
|
CELL_SATURATION--The fraction of the void volume filled
|
|
with water, unitless.
|
|
CELL_POROSITY--The porosity of the cell, equal to
|
|
CELL_PORE_VOLUME / CELL_VOLUME, unitless.
|
|
|
|
|
|
For example, in a USER_PUNCH program for a PHAST run,
|
|
the number of moles of dissolved chloride in a cell is
|
|
TOT("Cl")*CELL_PORE_VOLUME for confined flow simulations.
|
|
More generally, the number of moles of dissolved chloride
|
|
is TOT("Cl")*CELL_SATURATION*CELL_PORE_VOLUME, for confined
|
|
or unconfined flow.
|
|
|
|
For solids, the number of moles of calcite in the
|
|
saturated part of a cell is
|
|
EQUI("Calcite")*CELL_SATURATION*CELL_PORE_VOLUME. For
|
|
unconfined flow, the solid reactants are distributed
|
|
between the saturated and unsaturated part of a water-
|
|
table cell. It is a limitation of PHAST that it is not
|
|
possible to determine the amounts of solid reactants
|
|
in the unsaturated part of a cell. Note that for
|
|
steady-state, unconfined flow, the saturation of cells is
|
|
constant and the unsaturated part of a water-table cell
|
|
is never part of the active domain.
|
|
|
|
--------
|
|
svn 3600
|
|
--------
|
|
A new 1/T^2 term (A5 coefficient) was added for all Pitzer-parameter
|
|
temperature expressions.
|
|
|
|
P = A0 + A1*(1/TK - 1/TR) + A2log(TK/TR) + A3*(TK-TR) +
|
|
A4*(TK*TK - TR*TR) + A5*(1/(TK*TK) - 1/(TR*TR))
|
|
|
|
where TK is temperature in Kelvin. The optional A5 parameter
|
|
is read following A4.
|
|
|
|
--------
|
|
svn 3591
|
|
--------
|
|
Added T^2 term to analytical expressions for log k. A T^2 term
|
|
can now be used in the analytical expressions for any log K.
|
|
The analytical expression is as follows:
|
|
|
|
log10(K) = A1 + A2*TK + A3/TK + A4*log10(TK) + A5/TK^2 + A6*TK^2,
|
|
|
|
where TK is in Kelvin. The A6 term is the new addition. The optional
|
|
A6 parameter is read following A5.
|
|
|
|
--------
|
|
svn 3485
|
|
--------
|
|
Added the active fraction model for calculating exchanger
|
|
compositions described by Appelo (1994), Water Resour. Res. 30,
|
|
2793-2805. The active fraction model is useful for calculating
|
|
the decrease of selectivity when concentrations increase (more
|
|
specific sites being filled first). In the active fraction model,
|
|
log(K) of an exchange-half reaction depends on the equivalent
|
|
fraction on the exchanger:
|
|
|
|
log(K) = log_k + a_f * (1 - ß_i)
|
|
|
|
where log_k is the log of the equilibrium constant when all the
|
|
sites are occupied by ion i,
|
|
a_f is an empirical coefficient, and
|
|
ß_i is the equivalent fraction of i.
|
|
|
|
a_f can be defined in EXCHANGE_SPECIES with -gamma after the WATEQ
|
|
Debye-Hueckel parameters.
|
|
Example:
|
|
|
|
EXCHANGE_SPECIES
|
|
Na+ + X- = NaX; log_k -0.5
|
|
-gamma 4.0 0.075 0.50
|
|
|
|
The association constant for NaX becomes:
|
|
log(K) = -0.5 + 0.50 * (1 - ß_Na)
|
|
|
|
--------
|
|
svn 3453
|
|
--------
|
|
Added Specific ion Interaction Theory (SIT) activity coefficient
|
|
model as described in Grenthe, Ingmar, Plyasunov, A.V., and
|
|
Spahiu, Kastriot, 1997, Estimations of medium effects on
|
|
thermodynamic data, in Modelling in Aquatic Chemistry,
|
|
Grenthe, Ingmar, and Puigdomenech, Inasi, eds, OECD
|
|
Publications, ISBN 92-64-15569-4, 724 p.
|
|
|
|
Implementation is similar to the PITZER implementation, a
|
|
database with the SIT keyword invokes the SIT activity
|
|
coefficient model. Currently, No database is provided.
|
|
|
|
The SIT keyword has two identifiers,
|
|
-epsilon and -epsilon1, where -epsilon gives the pairwise
|
|
interaction parameters and -epsilon1 gives the linear ionic
|
|
strength dependency of epsilon, if available. Both parameters
|
|
allow for temperature dependence with the same expression used
|
|
in PITZER. The five-term expression for temperature dependence is
|
|
as follows:
|
|
|
|
P = A0 + A1*(1/TK - 1/TR) + A2log(TK/TR) + A3*(TK-TR) +
|
|
A4*(TK*TK - TR*TR),
|
|
|
|
where TK is Kelvin and TR is 298.15.
|
|
|
|
Example:
|
|
SIT
|
|
-epsilon
|
|
Na+ Br- 0.05 # 0.01
|
|
Na+ Cl- 0.03 # 0.01
|
|
|
|
-epsilon1 # not currently used
|
|
|
|
|
|
--------
|
|
svn 3288
|
|
--------
|
|
|
|
Additional arguments for the EDL function for the CD_MUSIC
|
|
surface complexation model. The values of charge, sigma, and psi
|
|
for the 0, 1, and 2 planes can be obtained from the EDL function.
|
|
|
|
EDL("element", "surface") gives the amount of
|
|
element in the diffuse layer for "surface".
|
|
not including sorbed species. "surface" should
|
|
be the surface name, not the surface-site name
|
|
(that is, no underscore).
|
|
|
|
Special values for "element" include:
|
|
"charge" - surface charge, equivalents.
|
|
For CD_MUSIC "charge" refers to plane 0.
|
|
"charge1"- surface charge on plane 1, equivalents
|
|
(CD_MUSIC only).
|
|
"charge2"- surface charge on plane 2, equivalents
|
|
(CD_MUSIC only).
|
|
"sigma" - surface charge density, C/m**2.
|
|
For CD_MUSIC "sigma" refers to plane 0.
|
|
"sigma1" - surface charge density on plane 1,
|
|
equivalents (CD_MUSIC only).
|
|
"sigma2" - surface charge density on plane 2,
|
|
equivalents (CD_MUSIC only).
|
|
"psi" - potential at the surface, Volts.
|
|
For CD_MUSIC "psi" refers to plane 0.
|
|
"psi1" - surface charge density on plane 1,
|
|
equivalents (CD_MUSIC only).
|
|
"psi2" - surface charge density on plane 2,
|
|
equivalents (CD_MUSIC only).
|
|
"water" - mass of water in the diffuse layer, kg.
|
|
--------
|
|
svn 3189
|
|
--------
|
|
Density of solutions is now calculated from the concentrations
|
|
of dissolved species. The algorithm has been described by Millero
|
|
(1974), Millero (2000), Millero (2001) and has been used
|
|
successfully by Millero and Lepple (1973), Millero et al (1976),
|
|
Fernendez et al. (1982) and Millero (2000) to calculate the
|
|
density of seawater, estuaries, lagoons and lakes.
|
|
|
|
The calculation relies on apparent molar volumes phi(i),
|
|
for individual aqueous species according to the following formula:
|
|
|
|
phi(i) = phi(i,inf) + s(t)I^0.5 + beta(i)I
|
|
|
|
where phi(i,inf) is the apparent molar volume of species i at
|
|
infinite dilution, s(t) is the Debije-Huckel limiting slope, beta(i)
|
|
is an empirical constant, and I is the ionic strength.
|
|
|
|
s(t) is calculated as a function of temperature. Parameterizations of
|
|
phi(i,inf) and beta(i) use the following formulas:
|
|
|
|
phi(i,inf) = a + bt +ct^2
|
|
beta(i) = d + et + ft^2
|
|
|
|
where a, b, c, d, e, and f are empirical constants and t in Celcius.
|
|
Data input of the constants are in the keyword data block SOLUTION_SPECIES
|
|
using the new identifier -millero.
|
|
|
|
Example:
|
|
|
|
SOLUTION_SPECIES
|
|
Na+ = Na+
|
|
log k 0.0
|
|
-gamma 4.0 0.075
|
|
-dw 1.33e-9
|
|
-millero -3.46 0.1092 -0.000768 2.698 -0.106 0.001651
|
|
|
|
Apparent molar volume parameters have been included in the database
|
|
phreeqd.dat. Calculations made with this database will include
|
|
the calculated density in the "Description of solution".
|
|
|
|
A new basic function, RHO, can be used to obtain the density in
|
|
USER_PRINT, USER_PUNCH, and RATES data blocks.
|
|
|
|
Example:
|
|
|
|
USER_PUNCH
|
|
-heading density
|
|
10 PUNCH RHO
|
|
|
|
--------
|
|
svn 3183
|
|
--------
|
|
Added option for an equilibrium-phase to precipitate only,
|
|
parallel to dissolve_only option.
|
|
"pre" is added at the end of a line defining an equilibrium-
|
|
phase. No data fields may be omitted. Should not
|
|
be used when adding an alternative reaction.
|
|
Example:
|
|
EQUILIBRIUM_PHASES
|
|
Dolomite 0 0.1 dissolve_only
|
|
Quartz 0 1.5 precipitate_only
|
|
|
|
--------
|
|
svn 3160
|
|
--------
|
|
|
|
Surface charge must be higher than -3000 equivalents,
|
|
when the diffuse double layer composition is
|
|
calculated with option -donnan.
|
|
|
|
--------
|
|
svn 3149
|
|
--------
|
|
|
|
Diffusion through DDL water is multiplied with c_DDL,i / c_i
|
|
with option -only_counter false. c_DDL,i is the concentration in
|
|
DDL water, c_i is the concentration in free porewater. (Previous
|
|
versions used a multiplier of 1).
|
|
|
|
Added -erm_ddl as parameter for aqueous species, to be defined
|
|
with keyword SOLUTION_SPECIES. erm_ddl (> 0) is an
|
|
enrichment factor in DDL water calculated with option -donnan:
|
|
c_DDL,i = c_i * Boltzmann_factor * erm_ddl
|
|
Example:
|
|
SOLUTION_SPECIES; Cs+ = Cs+; log_k 0; -erm_ddl 2.1
|
|
Default: erm_ddl = 1.0.
|
|
|
|
Added optional multicomponent diffusion of cations in interlayer
|
|
space of montmorillonite to keyword TRANSPORT.
|
|
In the example,
|
|
interlayer diffusion is true (default = false),
|
|
interlayer porosity is 0.09 (default = 0.1),
|
|
the porosity where interlayer diffusion stops is 0.01
|
|
(default is 0),
|
|
the tortuosity factor is 150 (default = 100).
|
|
|
|
TRANSPORT
|
|
-interlayer_D true 0.09 0.01 150
|
|
|
|
With interlayer_D true, also -multi_D true (and other
|
|
parameters) must be set, for example:
|
|
-multi_d true 1e-9 0.3 0.05 1.0
|
|
Interlayer diffusion is calculated for the cations associated with X-,
|
|
defined with keyword EXCHANGE.
|
|
Mass_transfer = -A * (Dw' / t_f) * c_CEC * grad(beta)
|
|
A is surface area, A_porewater * (interlayer porosity / free
|
|
porewater porosity),
|
|
Dw' is the temperature corrected diffusion coefficient of the
|
|
aqueous species (defined in SOLUTION_SPECIES),
|
|
corrected to zero charge transfer,
|
|
t_f is the interlayer tortuosity factor (-),
|
|
c_CEC is concentration of total X-, mol(X-) / (L interlayer
|
|
water). L interlayer water = (L porewater + L DDL-
|
|
water) * (interlayer porosity / free porewater porosity),
|
|
grad(beta) is the gradient of the equivalent fraction.
|
|
|
|
--------
|
|
svn 2969
|
|
--------
|
|
Added basic functions that return the activity coefficient of
|
|
an aqueous species (gamma) and the log base 10 of the activity
|
|
coefficient of an aqueous species (lg).
|
|
|
|
USER_PUNCH
|
|
-start
|
|
10 punch gamma("H+") # activity coefficient
|
|
20 punch lg("H+") # log base 10 activity coefficient
|
|
-end
|
|
|
|
The functions return zero if the species is not defined for
|
|
the aqueous model or if the species is an exchange or surface
|
|
species.
|
|
|
|
------------------------------------------------------------
|
|
Version 2.15.0: February 5, 2008
|
|
------------------------------------------------------------
|
|
|
|
--------
|
|
svn 2680
|
|
--------
|
|
|
|
Identifiers for paramaters controlling the integration by
|
|
CVODE have been added in the KINETICS data block.
|
|
|
|
-bad_step_max bad_steps
|
|
-cvode_steps steps
|
|
-cvode_order order
|
|
|
|
-bad_step_max bad_steps--This option was used only in the
|
|
Runge-Kutta method. Now, the value of this option is used for
|
|
CVODE as well. The value entered is the number of times that
|
|
PHREEQC will invoke CVODE to try to integrate a set of
|
|
rates over a time interval. Default is 500.
|
|
|
|
-cvode_steps steps--The value given is the maximum number of
|
|
steps that will taken during one invocation of CVODE.
|
|
Default is 100.
|
|
|
|
-cvode_order order--CVODE uses a specified number of terms in
|
|
an extrapolation of rates using the BFD method. Legal values
|
|
are 1 through 5. A smaller value (2) may be needed if the rate
|
|
equations are poorly behaved. The default is 5.
|
|
|
|
--------
|
|
svn 2457
|
|
--------
|
|
Added options to inverse modeling to translate current
|
|
solution definitions in PHREEQC to a Netpath .lon file and
|
|
(or) to .pat and model files.
|
|
|
|
INVERSE_MODELING
|
|
-lon_netpath prefix
|
|
|
|
At the beginning of the inverse modeling calculation, each
|
|
solution that has been defined (or saved) to PHREEQC, is
|
|
written to the file prefix.lon in a format readable by
|
|
DBXL (NetpathXL distribution).
|
|
|
|
INVERSE_MODELING
|
|
-pat_netpath prefix
|
|
|
|
A NETPATH model file is written for each inverse model that is
|
|
found. The model files are named prefix-n.mod, where n refers
|
|
to the sequence number of the model. In addition, a file named
|
|
prefix.pat is written that contains the solutions associated
|
|
with each model. The solutions are adjusted in accordance with
|
|
the deltas calculated for the inverse model. Thus, a solution
|
|
could be used for model 1 and model 2, but the concentrations
|
|
could be slightly different for the two models. The solutions
|
|
are identified by an initial integer corresponding to the
|
|
sequence number of the model, followed by the solution description.
|
|
|
|
--------
|
|
svn 2448
|
|
--------
|
|
Added calculation of specific conductance. Requires the
|
|
use of phreeqd.dat, which contains the diffusion coefficients
|
|
of aqueous species. If phreeqd.dat is used, the specific
|
|
conductance (uS/cm at 25 C) is printed in the
|
|
"Description of solution".
|
|
|
|
The Basic function SC returns the value of the specific
|
|
conductance for the solution at 25 C. The following example
|
|
would print to the selected output file the equivalent conductance
|
|
in (mmho/cm / eq/L) at 20 degrees C for a 1:1 chloride salt
|
|
solution:
|
|
|
|
USER_PUNCH
|
|
-head conc eq_EC_20
|
|
-start
|
|
10 punch tot("Cl"), SC / tot("Cl") / 1e3 * .89 * 298 / 293
|
|
-end
|
|
|
|
where 1e-3 converts from microSiemens/cm to mmho/cm, .89
|
|
accounts for the viscosity at 20 C, and 298/293
|
|
accounts for the temperature of 20 C.
|
|
|
|
------------------------------------------------------------
|
|
Version 2.14.3: November 17, 2007
|
|
------------------------------------------------------------
|
|
--------
|
|
svn 2312
|
|
--------
|
|
Added new option to PITZER datablock, use_etheta t/f.
|
|
If true, the nonsymmetric mixing terms--cation/cation and
|
|
anion/anion of different charge--are included; if false
|
|
these terms are excluded from all equations. Default is true.
|
|
|
|
PITZER
|
|
-use_etheta true
|
|
|
|
|
|
--------
|
|
svn 2270
|
|
--------
|
|
Added additional parameters Pitzer activity formulation for
|
|
neutral species, MU and ETA. MU applies to nnn, nnn', nn'n'',
|
|
nna, nn'a, nnc, nn'c interactions, where n, n', and n'' are
|
|
neutral species, a is an anion and c is a cation. ETA applies
|
|
to ncc' and naa' interactions. Also modified LAMDA for the
|
|
special case of nn interactions (coefficients in osmotic and
|
|
ln equations are different than other interaction types).
|
|
Source of equations is Clegg and Whitfield, 1991, Activity
|
|
coefficients in natural waters, Chapter 6, in Pitzer, K.S.
|
|
(Ed.) Activity Coefficients in Electrolyte Solutions, 2nd
|
|
Ed. CRC Press, Boca Raton. Removal of the 6 coefficient in
|
|
last two terms of eq 35 and 36 (p. 2404) per Cleg and
|
|
Whitfield, 1995, Geochimica et Cosmochemica Acta, v. 59,
|
|
no. 12, pp 2403-2421. Order of species in definitions should
|
|
not matter.
|
|
|
|
PITZER
|
|
-MU
|
|
CO2 CO2 CO2 ? # nnn
|
|
CO2 CO2 NH3 ? # nnn'
|
|
CO2 B(OH)3 NH3 ? # nn'n''
|
|
CO2 CO2 Ca+2 ? # nnc
|
|
CO2 CO2 Cl- ? # nna
|
|
CO2 NH3 Ca+2 ? # nn'c
|
|
CO2 NH3 Cl- ? # nn'a
|
|
-ETA
|
|
CO2 Ca+2 Mg+2 ? # ncc'
|
|
CO2 Cl- SO4-2 ? # naa'
|
|
|
|
As with all other Pitzer parameters, a five-term expression
|
|
for temperature dependence is available:
|
|
|
|
P = A0 + A1*(1/TK - 1/TR) + A2log(TK/TR) + A3*(TK-TR) +
|
|
A4*(TK*TK - TR*TR),
|
|
|
|
where TK is Kelvin and TR is 298.15. A0 through A4 are
|
|
defined in order. Any undefined values are assumed to
|
|
be zero.
|
|
|
|
-MU
|
|
CO2 CO2 CO2 ? ? ? ? ? # nnn
|
|
|
|
------------------------------------------------------------
|
|
Version 2.14.2: September 17, 2007
|
|
------------------------------------------------------------
|
|
|
|
Fixed logic of memory checking for PhreeqcI. This serious
|
|
bug makes versions 2.14.0 and 2.14.1 unusable.
|
|
|
|
------------------------------------------------------------
|
|
Version 2.14.1: September 5, 2007
|
|
------------------------------------------------------------
|
|
|
|
No new features.
|
|
|
|
------------------------------------------------------------
|
|
Version 2.14.0: August 30, 2007
|
|
------------------------------------------------------------
|
|
|
|
No new features.
|
|
|
|
------------------------------------------------------------
|
|
Version 2.13.3: February 15, 2007
|
|
------------------------------------------------------------
|
|
|
|
No new features.
|
|
|
|
------------------------------------------------------------
|
|
Version 2.13.2: February 1, 2007
|
|
------------------------------------------------------------
|
|
|
|
No new features.
|
|
|
|
------------------------------------------------------------
|
|
Version 2.13.1: January 16, 2007
|
|
------------------------------------------------------------
|
|
|
|
No new features.
|
|
|
|
------------------------------------------------------------
|
|
Version 2.13.0: November 3, 2006
|
|
------------------------------------------------------------
|
|
|
|
--------
|
|
svn 1368
|
|
--------
|
|
(1) Added multicomponent diffusion (MCD) to transport
|
|
capabilities. MCD allows different tracer diffusion
|
|
coefficients for species, but calculates charge balanced
|
|
transport. In the example, MCD is specified to be true,
|
|
default tracer diffusion coefficient for species (Dw) is 1e-9,
|
|
porosity is set to 0.3, porosity limit is set to 0.05, and an
|
|
exponent of porosity (n) is set to 1.0. Effective diffusion
|
|
coefficient is defined by the equation: De = Dw * porosity^n.
|
|
Diffusion stops when the porosity falls below the porosity
|
|
limit.
|
|
|
|
TRANSPORT
|
|
-multi_d true 1e-9 0.3 0.05 1.0
|
|
|
|
Added tracer diffusion coefficient to SOLUTION_SPECIES
|
|
definitions, -dw identifier.
|
|
|
|
SOLUTION_SPECIES
|
|
H+ = H+
|
|
log_k 0.0
|
|
-gamma 9.0 0.0
|
|
-dw 9.31e-9
|
|
|
|
(2) Added phreeqd.dat database with diffusion coefficients (-dw)
|
|
defined for aqueous species in database directory.
|
|
|
|
(3) Added BASIC functions to obtain and modify the porosity
|
|
in a cell. The functions can be used in BASIC programs
|
|
defined with keyword RATES, USER_PRINT, USER_PUNCH and
|
|
USER_GRAPH.
|
|
|
|
get_por(cell_no) # returns the porosity in cell
|
|
# 'cell_no'
|
|
|
|
change_por(0.21, cell_no) # porosity of cell 'cell_no'
|
|
# becomes 0.21
|
|
|
|
(4) Mobile surface and Donnan option in SURFACE. Mobile surfaces
|
|
are meant for modeling transport of colloids. Only surfaces with
|
|
a diffuse double layer can be transported (the ensemble must be
|
|
electrically neutral). Surfaces related to equilibrium-phases
|
|
and kinetics cannot be transported.
|
|
|
|
Example 1: Use donnan assumption to calculate the explicit
|
|
composition of the diffuse layer of surfaces. Thickness of the
|
|
diffuse layer is defined to be 1e-7 meters. (Default thickness
|
|
is 1e-8 meters.) Hfo (both sites Hfo_w and Hfo_s) is a surface
|
|
that is transported with advection and dispersion. The diffusion
|
|
coefficient of 1e-13 m^2/s is used with option -multi_d true in
|
|
TRANSPORT. Sfo is an immobile surface (Dw = 0).
|
|
|
|
SURFACE
|
|
-donnan 1e-7
|
|
Hfo_w 97.5e-5 600 88e-3 Dw 1e-13
|
|
Hfo_s 2.5e-5
|
|
Sfo_w 97.5e-5 600 88e-3 Dw 0
|
|
Sfo_s 2.5e-5
|
|
|
|
|
|
Example 2: Define Donnan calculation information. Thickness
|
|
of the diffuse layer is 1e-8 meters, and relative viscosity is
|
|
0.5. Relative viscosity only applies to multicomponent diffusion
|
|
of solutes in the diffuse layer. (Default viscosity is 1.0.)
|
|
|
|
SURFACE
|
|
-donnan 1e-8 viscosity 0.5
|
|
|
|
Example 3: Define Donnan calculation information. Thickness
|
|
of the diffuse layer is 1.5 Debye lengths, maximum fraction of
|
|
water that can be in the diffuse layer is 0.9. (Default
|
|
thickness in Debye lengths is 1, default limit is 0.8.)
|
|
|
|
SURFACE
|
|
-donnan debye_lengths 1.5 limit_ddl 0.9
|
|
|
|
When option '-only_counter_ions' is used in conjunction with
|
|
with '-donnan', all the co-ions (with the same sign of charge as
|
|
the surface) will be excluded from the DDL, and will be given a
|
|
concentration of (near) zero in the DDL.
|
|
|
|
(5) Added special BASIC function to change the diffusion
|
|
coefficient of (part of) a SURFACE, and hence to change the
|
|
status from mobile to immobile or immobile to mobile.
|
|
|
|
Example 1: take a fraction 0.2 of 'Hfo', rename it to
|
|
'Sorbedhfo', with a diffusion coefficient of 0, in cell 'cell_no'
|
|
|
|
USER_PRINT
|
|
10 print 'Changing surface in cell ', cell_no
|
|
20 change_surf("Hfo", 0.2, "Sorbedhfo", 0, cell_no)
|
|
|
|
|
|
Example 2: change the diffusion coefficient of 'Hfo' to 1e-12
|
|
m2/s in cell 'cell_no'
|
|
|
|
10 change_surf("Hfo", 1, "Hfo", 1e-12, cell_no)
|
|
|
|
This function can be used in BASIC programs defined with keywords
|
|
RATES, USER_PRINT, USER_PUNCH and USER_GRAPH. For correct
|
|
operation of 'change_surf', the surface components must have
|
|
been defined with the same surface species (the association
|
|
constants may differ) and the same diffuse layer thickness or
|
|
Debye length. The surfaces will be adapted at the end of a
|
|
calculation step. The result of change_surf does not show up in
|
|
print or punch results of that step, but the reformatting is
|
|
effective in the next timestep calculations.
|
|
|
|
|
|
--------
|
|
svn 1337
|
|
--------
|
|
Added -add_logk to NAMED_EXPRESSIONS keyword.
|
|
|
|
NAMED_EXPRESSIONS
|
|
Log_alpha_14C_CO3-2/CO2(aq)
|
|
-add_logk Log_alpha_14C_CO3-2/CO2(g) 1
|
|
-add_logk Log_alpha_14C_CO2(aq)/CO2(g) -1
|
|
|
|
--------
|
|
svn 1281
|
|
--------
|
|
Added new option to PITZER data block to allow definition of
|
|
alpha1 and alpha2 for specific electrolytes. Entries are
|
|
following -ALPHAS are Ion1, Ion2, alpha1, alpha2. Both
|
|
alpha1 and alpha2 should be defined. Default is 0.0 for
|
|
undefined values following Ion1 and Ion2.
|
|
|
|
Example:
|
|
|
|
PITZER
|
|
-ALPHAS
|
|
#
|
|
# Defaults for ion valences in salts
|
|
#
|
|
# 1-N (only B1): alpha1 = 2
|
|
# 2-2: alpha1 = 1.4 alpha2 = 12.0
|
|
# 3-2, 4-2: alpha1 = 2 alpha2 = 50
|
|
#
|
|
#Ion1 Ion2 Alpha1 Alpha2
|
|
Fe+2 Cl- 2 1
|
|
Fe+2 SO4-2 1.559 5.268
|
|
|
|
--------
|
|
svn 1279
|
|
--------
|
|
Added new Basic function OSMOTIC that returns the
|
|
osmotic coefficient if the Pitzer model (PITZER keyword data
|
|
block) is used or 0.0 if the ion-association model is used.
|
|
|
|
Example:
|
|
|
|
USER_PRINT
|
|
10 PRINT "Osmotic coefficient: ", OSMOTIC
|
|
|
|
|
|
--------
|
|
svn 1245
|
|
--------
|
|
Enabled redox in Pitzer model with option in
|
|
PITZER keyword. Typically, the option will be included
|
|
in the pitzer database file.
|
|
|
|
Example:
|
|
|
|
PITZER
|
|
-redox TRUE
|
|
|
|
The default database for the Pitzer model does not contain
|
|
any redox definitions and the default value for the option
|
|
is FALSE. At a minimum, species O2 and H2 must be defined
|
|
in the database or input file to allow redox calculations.
|
|
|
|
--------
|
|
svn 1207
|
|
--------
|
|
Added option to force an equilibrium phase to be
|
|
included in the equality constraints. Normally, the SIs of
|
|
equilibrium phases are optimized to be negative and the
|
|
sum of SIs is minimized. If -force_equality is used, then
|
|
the phase must reach its target SI or the calculation fails
|
|
with an error.
|
|
|
|
Example:
|
|
|
|
EQUILIBRIUM_PHASES
|
|
Fix_pH -7 NaOH
|
|
-force_equality
|
|
Calcite 0
|
|
Dolomite 0
|
|
CO2 -3.5
|
|
|
|
One example of using the new option would be to ensure that
|
|
a target pH is attained, as in the example above.
|
|
|
|
--------
|
|
svn 1179
|
|
--------
|
|
New option (-sites_units or -sites) allows alternative
|
|
units (sites/nm^2) for definition of number of sites for a
|
|
surface. This approach requires better consistency among the
|
|
parameters as both the number of sites and the surface area
|
|
are based on the mass. It makes more sense than the default,
|
|
which requires the number of sites (first numeric item in a
|
|
line) to be defined in units of moles, independently of the
|
|
number of grams of sorbent. Units descriptor is either DENSITY,
|
|
for defining number sites/nm^2, or ABSOLUTE, for defining
|
|
number of sites in moles. Optionally, sites, sites_units, or
|
|
-s[ites_units]. ABSOLUTE is the default for backward
|
|
compatibility with input files.
|
|
|
|
Example:
|
|
|
|
SURFACE 1
|
|
-sites_units DENSITY
|
|
SurfOH 2.6 600. 1.0
|
|
SurfaOH 2.6 30. 2.0
|
|
|
|
Explanation:
|
|
|
|
In this example, Surf has a site density of 2.6 sites per
|
|
nanometer squared, a specific area of 600 meters squared per
|
|
gram, and a mass of 1 gram. Surfa has a site density of 2.6
|
|
sites per nanometer squared, a specific area of 30 meters
|
|
squared per gram, and mass of 2 grams.
|
|
|
|
|
|
--------
|
|
svn 1096
|
|
--------
|
|
|
|
Allows solids and gases in the equations for PHASES. This
|
|
capability simplifies the definitions for gas and solid
|
|
isotopic components. Solids must be identified with "(s)" and
|
|
gases with "(g)". The first entity on the left- hand-side of
|
|
the equation must be the stoichiometric formula of the solid
|
|
or gas component being defined, optionally with (g) or (s). In
|
|
turn gases and solids included in the equation must be defined
|
|
with reactions that ultimately allow the defined species
|
|
(C[18O]2(g) in this case) in terms of aqueous species.
|
|
|
|
Example:
|
|
|
|
PHASES
|
|
C[18O]2(g)
|
|
C[18O]2(g) + CO2(g) = 2CO[18O](g)
|
|
log_k 0.602059991327962396 # log10(4)
|
|
|
|
--------
|
|
svn 1092
|
|
--------
|
|
CD_MUSIC sorption model has been implemented.
|
|
Still missing logic for surfaces related to equilibrium-
|
|
phases and kinetics. Has explicit calculation of diffuse
|
|
layer composition with Donnan assumption. Old diffuse-layer
|
|
calculation will not be implemented.
|
|
|
|
Example:
|
|
|
|
SURFACE
|
|
Goe_uniOH .000552 96.387 1
|
|
-capacitance 1.1 5
|
|
Goe_triO .000432
|
|
-cd_music
|
|
-donnan
|
|
|
|
Explanation:
|
|
|
|
1.1 5 are capacitances for the cd-music model for 0-1 and 1-2
|
|
planes, respectively.
|
|
-cd_music specifies that the surface is a cd-music surface.
|
|
-donnan optionally calculates the diffuse layer composition
|
|
with the Donnan model.
|
|
|
|
Example:
|
|
|
|
SURFACE_SPECIES
|
|
Goe_uniOH-0.5 + H+ + AsO4-3 = Goe_uniOAsO3-2.5 + H2O
|
|
log_k 20.1 # eq 7 K1, Kin1
|
|
-cd_music -1 -6 0 0.25 5
|
|
|
|
Explanation:
|
|
|
|
-cd_music--this option is used to specify the change in charge
|
|
by the reaction for three planes, 0 (specific sorption at the
|
|
surface), 1 (Stern layer), and 2 (or d, the diffuse layer).
|
|
The five numbers in the form above are (1) the change
|
|
in charge for plane 0 due to loss or gain of hydrogen and
|
|
oxygen at plane 0, (2) the change in charge for plane 1 due to
|
|
the hydrogen and oxygen in the ligand that are located at
|
|
plane 1, (3) the change in charge in diffuse layer, plane 2,
|
|
(4) the fraction of the central ion charge that is
|
|
associated with plane 0, and (5) the charge on the central
|
|
ion.
|
|
|
|
In this example the change in charge at plane 0 is (delta z0) =
|
|
-1 (loss of one hydrogen) + 0.25*5 (contribution from As+5) =
|
|
0.25. The charge at plane 0 becomes -0.5 + 0.25 = -0.25.
|
|
The change in charge at plane 1 is (delta z1) = -6 (3 oxygens of
|
|
the ligand are located at plane 1) + (1-0.25)*5 (contribution
|
|
from As+5) = -2.25. The charge at plane 1 becomes 0 + (-2.25) =
|
|
-2.25. There is no change in charge associated with plane 2.
|
|
The total charge of the species is -0.25 (plane 0) + -2.25
|
|
(plane 1) + 0 (plane 2) = -2.5.
|
|
|
|
Alternatively to the form above, the changes in charge
|
|
on the three planes can be entered directly as the first
|
|
three numbers in the option, followed by two zeros. Thus, the
|
|
following is equivalent to the -cd_music definition above, and
|
|
consistent with more recent papers which would list
|
|
delta z0 = 0.25, delta z1 = -2.25 and delta z2 = 0:
|
|
|
|
SURFACE_SPECIES
|
|
Goe_uniOH-0.5 + H+ + AsO4-3 = Goe_uniOAsO3-2.5 + H2O
|
|
log_k 20.1 # eq 7 K1, Kin1
|
|
-cd_music 0.25 -2.25 0 0 0
|
|
|
|
--------
|
|
svn 675:
|
|
--------
|
|
Added PRINT option to print the species that contribute
|
|
to alkalinity. Alkalinity distribution is printed in
|
|
the output file following the distribution of species.
|
|
Default at program startup is false.
|
|
|
|
Example:
|
|
|
|
PRINT
|
|
-alkalinity true
|
|
|
|
------------------------------------------------------------
|
|
Version 2.12:
|
|
------------------------------------------------------------
|
|
|
|
* Made aqueous activity coefficients the default activity
|
|
coefficients for exchange species when using the
|
|
Pitzer formulation. New option in EXCHANGE is
|
|
-pitzer_exchange_gammas T/F, default is true;
|
|
defining "false" sets exchange activity coefficients
|
|
to 1.0. Option has no effect for ion-association
|
|
model (non-Pitzer).
|
|
|
|
|
|
* Added multiplier format to REACTION steps and KINETICS steps,
|
|
which simplifies definition of multiple equal reaction increments.
|
|
|
|
This definition:
|
|
|
|
INCREMENTAL_REACTIONS true
|
|
REACTION
|
|
H2O 1
|
|
-36 3*-4 2*-.25 -0.19 4*-0.1 3*-0.05 moles
|
|
|
|
is equivalent to this definition:
|
|
|
|
INCREMENTAL_REACTIONS true
|
|
REACTION
|
|
H2O 1
|
|
-36 -4 -4 -4 -.25 -.25 -0.19 -0.1 -0.1 -0.1
|
|
-0.1 -0.05 -0.05 -0.05 moles
|
|
|
|
|
|
|
|
* Added Pitzer activity formulation. Use pitzer.dat database
|
|
to invoke the Pitzer model. Should have same capabilities
|
|
as ion-association model except explicit diffuse layer
|
|
calculation is not implemented with the Pitzer model.
|
|
New keyword is PITZER with following options:
|
|
|
|
PITZER
|
|
-MacInnes T/F # uses MacInnes assumption or unscaled for
|
|
# individual activities and activity coefficients
|
|
-B0
|
|
Na+ Cl- 0.0765 -777.03 -4.4706 0.008946 -3.3158E-6
|
|
-B1
|
|
Na+ Cl- 0.2664 0 0 6.1608E-5 1.0715E-6
|
|
-B2
|
|
Mg+2 SO4-2 -37.23 0 0 -0.253
|
|
-C0
|
|
Na+ Cl- 0.00127 33.317 0.09421 -4.655E-5
|
|
-THETA
|
|
K+ Na+ -0.012
|
|
-LAMDA
|
|
Na+ CO2 0.1
|
|
-ZETA
|
|
H+ Cl- B(OH)3 -0.0102
|
|
-PSI
|
|
Na+ K+ Cl- -0.0018
|
|
|
|
A five-term expression for temperature dependence is available
|
|
for all Pitzer parameter values:
|
|
P = A0 + A1*(1/TK - 1/TR) + A2log(TK/TR) + A3*(TK-TR) +
|
|
A4*(TK*TK - TR*TR),
|
|
where TK is Kelvin and TR is 298.15.
|
|
|
|
* Cl1mp is a new multiple precision version of routine cl1,
|
|
a simplex-based optimization routine. Cl1mp was develeped
|
|
by using the Gnu Multiple Precision package (gmp).
|
|
Calculations are carried out to about 30 significant
|
|
digits. Cl1mp may help in some situations where roundoff
|
|
errors are a problem, but it is still possible that roundoff
|
|
errors will cause cl1mp to fail to find a solution to an
|
|
optimization problem. The mp version has the following
|
|
options in INVERSE_MODELING:
|
|
|
|
-multiple_precision T/F--causes the mp version
|
|
to be used in inverse modeling calculations.
|
|
-mp_tolerance 1e-12--tolerance for mp version of
|
|
cl1. As in cl1, numbers less than the
|
|
tolerance are considered to be zero.
|
|
1e-12 is the default.
|
|
-censor_mp 1e-20--as calculations occur in the
|
|
linear equation array, elements less
|
|
than this value are set to zero. Default
|
|
is 1e-20. A value of 0.0 causes no
|
|
censoring to occur.
|
|
|
|
------------------------------------------------------------
|
|
Version 2.11:
|
|
------------------------------------------------------------
|
|
|
|
* A new database, minteq.v4.dat, has been translated from
|
|
version 4.02 of MINTEQA2 and is included in all
|
|
distributions. The database minteq.dat from earlier
|
|
version of MINTEQA2 has been slightly revised and is
|
|
also included.
|
|
|
|
------------------------------------------------------------
|
|
Version 2.10:
|
|
------------------------------------------------------------
|
|
|
|
No new features.
|
|
|
|
------------------------------------------------------------
|
|
Version 2.9:
|
|
------------------------------------------------------------
|
|
* Added new keyword COPY that allows a data entity
|
|
to be copied from one index to a new index
|
|
or to a range of indicies. Format is
|
|
|
|
COPY keyword index index_start[-index_end]
|
|
|
|
where keyword may be SOLUTION
|
|
EQUILIBRIUM_PHASES
|
|
EXCHANGE
|
|
GAS_PHASE
|
|
KINETICS
|
|
MIX
|
|
REACTION
|
|
REACTION_TEMPERATURE
|
|
SOLID_SOLUTION
|
|
SURFACE
|
|
|
|
* Added new Basic functions
|
|
b$ = PAD(a$, 20) pads a$ to a total of 20 characters
|
|
with spaces and stores result in b$. PAD returns
|
|
a copy of a$ if a$ is more than 20 characters.
|
|
i = INSTR(a$, b$) sets i to the character position of
|
|
string b$ in a$, 0 in not found.
|
|
b$ = LTRIM(a$) trims white space from beginning of
|
|
string a$ and stores result in b$.
|
|
b$ = RTRIM(a$) trims white space from end of string
|
|
a$ and stores result in b$.
|
|
b$ = TRIM(a$) trims white space from beginning and
|
|
end of string a$ and stores result in b$.
|
|
|
|
|
|
* Added new Basic function SYS that calculates the
|
|
total amount of an element in all phases (solution,
|
|
equilibrium_phases, surfaces, exchangers, solid solutions,
|
|
and gas phase). KINETIC reactions are not included.
|
|
The function has two forms: (1) one element name as an
|
|
argument (variable names are user specified)
|
|
|
|
10 t = SYS("As")
|
|
|
|
the function will return the total arsenic in the system.
|
|
(2) 5 argumens
|
|
|
|
10 t = SYS("As", count_species, names$, types$, moles)
|
|
|
|
will return the total arsenic in the system to t; count_species--
|
|
the number of species that contain arsenic, including
|
|
solution, equilibrium_phases, surfaces, exchangers, solid solutions,
|
|
and gas phase species; names$--a character array that has the
|
|
name of each species; type$--a character array that specifies the
|
|
type of phase for the species, aq, equi, surf, ex, s_s, gas, diff.
|
|
Diff refers to the amount of the element in the diffuse layer of
|
|
a surface when the explicit diffuse layer calculation is used;
|
|
moles--an array containing the number of moles of the element in
|
|
the species. The sum of moles(i) is equal to tot.
|
|
|
|
SYS has several special arguments for the form
|
|
SYS("arg", count, names$, types$, values)
|
|
arg is one of the options listed below.
|
|
count is a single numeric value and is the number of elements
|
|
in the following arrays.
|
|
name$ is an array of string values.
|
|
type$ is an array of string values.
|
|
values is an array of numeric values.
|
|
|
|
Values of arg:
|
|
|
|
elt_name returns total number of moles of element in system.
|
|
count is the number of species for the element in
|
|
the system, including aqueous, exchange, surface,
|
|
equilibrium_phase, solid solution component, and
|
|
gas phase "species".
|
|
Arrays are filled for each "species"; values are moles.
|
|
"elements" returns total number of moles of dissolved elements other
|
|
than H and O.
|
|
count is number of elements, valence states,
|
|
exchangers, and surfaces.
|
|
Arrays are filled for each element and valence state,
|
|
type is "dis"; exchanger, type is "ex",
|
|
and surface, type is "surf". Values are moles.
|
|
"phases" returns maximum saturation index of all phases.
|
|
count is number of phases in system.
|
|
Arrays are filled for each phase; values are
|
|
saturation indexes.
|
|
"aq" returns sum of moles of all aqueous species.
|
|
count is number of aqueous species in system.
|
|
Arrays are filled with each aqueous species;
|
|
values are moles.
|
|
"ex" returns sum of moles of all exchange species.
|
|
count is number of exchange species in system.
|
|
Arrays are filled with each exchange species;
|
|
values are moles.
|
|
"surf" returns sum of moles of all surface species.
|
|
count is number of surface species in system.
|
|
Arrays are filled with each surface species;
|
|
values are moles.
|
|
"s_s" returns sum of moles of all solid solution components.
|
|
count is number of solid solution components in system.
|
|
Arrays are filled with each solid solution component;
|
|
values are moles.
|
|
"gas" returns sum of moles of all gas components.
|
|
count is number of gas components in system.
|
|
Arrays are filled with each gas component;
|
|
values are moles.
|
|
|
|
* Added new Basic function, DESCRIPTION, that has the value
|
|
defined for the description field of the SOLUTION keyword line.
|
|
|
|
* Added alternative ordinary differential equation solver
|
|
called CVODE, a set of C routines from the Lawrence
|
|
Livermore National Labs. CVODE is part of the SUNDIALS
|
|
package. CVODE is used in place of the Runge Kutta method
|
|
when "-cvode true" is used within a KINETICS data block.
|
|
|
|
KINETICS
|
|
-cvode true
|
|
|
|
------------------------------------------------------------
|
|
Version 2.8:
|
|
------------------------------------------------------------
|
|
|
|
No new features.
|
|
|
|
------------------------------------------------------------
|
|
Version 2.7:
|
|
------------------------------------------------------------
|
|
Changed format of selected output file:
|
|
Removed quotations surrounding strings in headings.
|
|
Removed quotations surrounding strings in state variable.
|
|
All fields are 12 or 20 places depending on
|
|
-high_precision.
|
|
Headings are not truncated even if longer than
|
|
specified precision.
|
|
For isotopes, missing value is -9999.9
|
|
Selected output is updated each simulation.
|
|
If a species or phase is defined
|
|
subsequent to the simulation where SELECTED_OUTPUT
|
|
was defined it will appear in the selected output
|
|
file in the simulation in which it is defined and
|
|
in subsequent simulations.
|
|
|
|
Added strings for each file, which can be extracted from the
|
|
executable file with the "ident" command.
|
|
|
|
Fixed null pointer for isotope_ratios if Basic routine
|
|
was undefined.
|
|
|
|
Fixed problem in C++ if structure name is same as member name.
|
|
logk member of logk structure was renamed to log_k.
|
|
|
|
Added identifier -add_constant to PHASES, EXCHANGE_SPECIES,
|
|
SOLUTION_SPECIES, and SURFACE_SPECIES.
|
|
|
|
-add_constant -0.301
|
|
|
|
log K is augmented by the specified constant.
|
|
|
|
|
|
Theory and implementation of isotopes in PHREEQC is documented in:
|
|
|
|
Thorstenson, D.C., and Parkhurst, D.L., 2002, Calculation of
|
|
individual isotope equilibrium constants for implementation in
|
|
geochemical models: U.S. Geological Survey Water-Resources
|
|
Investigations Report 02-4172, 129 p.
|
|
|
|
Added KEYWORDS:
|
|
|
|
ISOTOPES
|
|
Element
|
|
-isotope isotope_name units standard_ratio
|
|
-total_is_major T/F (OPTION IS DISABLED!!)
|
|
|
|
CALCULATE_VALUES
|
|
Name
|
|
-start
|
|
Basic statements, must have SAVE
|
|
-end
|
|
|
|
ISOTOPE_RATIOS (for printing)
|
|
Name=Calculate_values_name Isotope_name
|
|
|
|
ISOTOPE_ALPHAS (for printing)
|
|
Name=Calculate_values_name Named_logk=named_expression_name
|
|
|
|
Basic functions:
|
|
calc_value("calc_value_name") evaluates a definition of CALCULATE_VALUES
|
|
lk_named("name") log10(K) of definition in NAMED_EXPRESSIONS
|
|
lk_phase("name") log10(K) of definition in PHASES
|
|
lk_species("name") log10(K) of definition in (SOLUTION, EXCHANGE, SURFACE)_SPECIES
|
|
sum_gas("template","element") Sum of element in gases with specified template, moles.
|
|
Example:
|
|
template="{C,[13C],[14C]}{O,[18O]}2" includes all CO2 gases
|
|
sum_species("template","element") Sum of element in aqueous, exchange, and surface species with
|
|
specified template (moles)
|
|
sum_s_s("s_s_name","element") Sum of element in a specified solid solution (moles)
|
|
|
|
PRINT keyword:
|
|
-initial_isotopes T/F
|
|
-isotope_ratios T/F
|
|
-isotope_alphas T/F
|
|
-censor_species 1e-8 # omit species from Distribution of Species if less than
|
|
# relative minimum of an element or element redox state
|
|
# total concentration
|
|
|
|
SELECTED_OUTPUT keyword:
|
|
-calculate_values name1 name2 ...
|
|
-isotopes minor_isotope1 minor_isotope2 ....
|
|
|
|
Added functions LK_SPECIES, LK_NAMED, LK_PHASE for Basic
|
|
interpreter. LK_SPECIES("CaHCO3+") returns the
|
|
log k for the association reaction for the ion pair
|
|
CaHCO3+ at the current temperature. The log K is
|
|
for the reaction as defined in the database or
|
|
input file. Similarly,
|
|
LK_NAMED("Log_alpha_18O_CO2(aq)/CO2(g)") returns the
|
|
value for the log K at the current temperature using
|
|
expressions defined in NAMED_LOG_K data block;
|
|
LK_PHASE("Calcite") returns the value of log K
|
|
for calcite at the current temperature for the
|
|
dissociation reaction defined in the database or
|
|
input file. Values are "log10" values.
|
|
Example for Basic program:
|
|
10 PRINT "Log10 KCalcite: ", LK_PHASE("Calcite")
|
|
20 PRINT "Log10 KCaHCO3+: ", LK_SPECIES("CaHCO3+")
|
|
30 PRINT " 1000ln(alpha): ", LK_NAMED("Log_alpha_18O_CO2(aq)/CO2(g)")*LOG(10)*1000
|
|
|
|
NAMED_EXPRESSION--New keyword data block.
|
|
|
|
This data block was implemented to facilitate isotopic
|
|
calculations. It allows analytical expressions that
|
|
are functions of temperature to be defined. The purpose
|
|
is to separate the fractionation factors from the log
|
|
K, so that the fractionation factor or its temperature
|
|
dependence can be easily modified. The named expression
|
|
can be added to a log K for a species or phase by the
|
|
-add_logk identifier in SOLUTION_SPECIES
|
|
EXCHANGE_SPECIES, SURFACE_SPECIES, or PHASES data
|
|
block. Log K, Delta H, and analytical expressions for a
|
|
log K can be defined with identifiers -log_k, -delta_h,
|
|
and -analytical_expression as described in SOLUTION_SPECIES
|
|
in WRIR 99-4259. Fractionation factors are often defined
|
|
as 1000*ln(alpha). The identifier -ln_alpha1000 can be used
|
|
to enter data in this form. The analytical expression is the
|
|
same as defined in SOLUTION_SPECIES, but the result of the
|
|
expression is converted to log10(alpha) by dividing by
|
|
1000*ln(10) before it is summed into log K values.
|
|
|
|
NAMED_EXPRESSIONS
|
|
Log_K_calcite # CaCO3 + 2H3O+ = Ca+2 + 3H2O + CO2
|
|
log_k 8.201
|
|
delta_h -8.035 kcal
|
|
-analytic 292.29 0.015455 -24146.841 -94.16451 2248628.9
|
|
|
|
Log_alpha_18O_CO2(aq)/Calcite
|
|
-ln_alpha1000 3.8498 0.0 10.611e3 0.0 -1.8034e6
|
|
|
|
Log_alpha_13C_CO2(aq)/Calcite
|
|
-ln_alpha1000 2.72 0.0 0.0 0.0 -1.1877e6
|
|
|
|
------------------------------------------------------------
|
|
Added identifier -add_logk to SOLUTION_SPECIES
|
|
EXCHANGE_SPECIES, SURFACE_SPECIES, and PHASES data
|
|
block.
|
|
|
|
Allows a named expression to be added to the definition
|
|
of the log K for a species or phase. In the following
|
|
example, the log K for the phase Ca[14C][18O]3 is summed from
|
|
four parts, one defined with the log_k identifier and the
|
|
other three parts from expressions defined in NAMED_EXPRESSIONS.
|
|
The named expression is multiplied by the coefficient at the
|
|
end of the line before it is summed into the log K. A missing
|
|
coefficient is 1.0 by default.
|
|
|
|
PHASES
|
|
Ca[13C][18O]3
|
|
Ca[13C][18O]3 + 3CO2 + 2H3O+ = Ca+2 + 3H2O + 3CO[18O] + [13C]O2
|
|
log_k 0.903089986991 # 3*log10(2)
|
|
-add_logk Log_K_calcite 1.0
|
|
-add_logk Log_alpha_13C_CO2(aq)/Calcite 1.0
|
|
-add_logk Log_alpha_18O_CO2(aq)/Calcite 3.0
|
|
|
|
|
|
SOLUTION keyword:
|
|
At present, can only define isotopes in the units defined in ISOTOPES.
|
|
|
|
------------------------------------------------------------
|
|
Version 2.6:
|
|
------------------------------------------------------------
|
|
|
|
No new features.
|
|
|
|
------------------------------------------------------------
|
|
Version 2.5:
|
|
------------------------------------------------------------
|
|
Added the capability to use square brackets to define an
|
|
"element" name. The brackets act like quotation marks
|
|
in that any character string can be used within the
|
|
brackets as an element name. For example, [Fe3], [13C],
|
|
and [N5] are now legal "element" names. All element
|
|
names without brackets must begin with a capital letter,
|
|
followed by zero or more lower case letters and underscores.
|
|
|
|
Added identifier -activity_water for a species in SOLUTION_SPECIES
|
|
data block. This identifier has been added for future updates
|
|
that will allow isotopic calculations. It is intended to be
|
|
used only for isotopic variations of H2O, like D2O or
|
|
H2[O18]. It forces the activity coefficient for the
|
|
species to be activity(water)/55.5. This effectively sets
|
|
the activity of the species to the mole fraction in
|
|
solution.
|
|
|
|
Added identifier -bad_step_max to KINETICS data block.
|
|
An integer following -bad_step_max gives the maximum number
|
|
of times a rate integration may fail before execution of the
|
|
program is terminated. Default is 500.
|
|
|
|
------------------------------------------------------------
|
|
Version 2.4:
|
|
------------------------------------------------------------
|
|
|
|
------------------------------------------------------------
|
|
Added identifier -warnings to PRINT keyword.
|
|
|
|
An integer following -warnings gives the maximum number
|
|
of warnings to print into the output file. A negative
|
|
number allows all warnings to be printed.
|
|
|
|
Example: -warnings 20
|
|
|
|
------------------------------------------------------------
|
|
Changed the results of the function CELL_NO in Basic programs.
|
|
|
|
Function cell_no in Basic now prints a number equivalent
|
|
to -solution in SELECTED_OUTPUT data block. It gives the
|
|
solution number for initial solution calculations and the
|
|
solution being used in batch reaction calculations.
|
|
Result is the same as previous versions for ADVECTION or
|
|
TRANSPORT calculations.
|
|
|
|
------------------------------------------------------------
|
|
Version 2.3:
|
|
------------------------------------------------------------
|
|
DATABASE--New keyword data block
|
|
|
|
It must be the first keyword in the input file.
|
|
The character string following the keyword is
|
|
the pathname for the database file to be used
|
|
in the calculation. The file that is specified
|
|
takes precedence over any default database
|
|
name, including environmental variable
|
|
PHREEQC_DATABASE and command line arguments.
|
|
|
|
LLNL_AQUEOUS_MODEL_PARAMETERS--New keyword data block
|
|
|
|
Added new keyword to make aqueous model similar to
|
|
EQ3/6 and Geochemists Workbench when using
|
|
llnl.dat as the database file. Values
|
|
of Debye-Huckel a and b and bdot (ionic strength
|
|
coefficient) are read at fixed temperatures.
|
|
Linear interpolation occurs between temperatures.
|
|
|
|
New options for SOLUTION_SPECIES are
|
|
-llnl_gamma a , where a is the ion-size parameter.
|
|
-co2_llnl_gamma , indicates the temperature dependent
|
|
function for the bdot term given in
|
|
-co2_coefs of LLNL_AQUEOUS_MODEL_PARAMETERS
|
|
will be used. Applies to uncharged
|
|
species only.
|
|
|
|
LLNL_AQUEOUS_MODEL_PARAMETERS
|
|
-temperatures
|
|
0.0100 25.0000 60.0000 100.0000
|
|
150.0000 200.0000 250.0000 300.0000
|
|
#debye huckel a (adh)
|
|
-dh_a
|
|
0.4939 0.5114 0.5465 0.5995
|
|
0.6855 0.7994 0.9593 1.2180
|
|
#debye huckel b (bdh)
|
|
-dh_b
|
|
0.3253 0.3288 0.3346 0.3421
|
|
0.3525 0.3639 0.3766 0.3925
|
|
-bdot
|
|
0.0394 0.0410 0.0438 0.0460
|
|
0.0470 0.0470 0.0340 0.0000
|
|
#cco2 (coefficients for the Drummond (1981) polynomial)
|
|
-co2_coefs
|
|
-1.0312 0.0012806
|
|
255.9 0.4445
|
|
-0.001606
|
|
|
|
------------------------------------------------------------
|
|
Added function SURF to Basic.
|
|
|
|
SURF("element", "surface") gives the amount of element
|
|
sorbed on "surface". "surface" should be the surface
|
|
name, not the surface-site name (that is, no underscore).
|
|
|
|
------------------------------------------------------------
|
|
Allow decimals in definition of secondary master species.
|
|
|
|
Some redox states do not average to integers,
|
|
for convenience in identifying them, decimal numbers
|
|
may be used within the parentheses that define the
|
|
redox state, example S(0.3) could be used in the
|
|
MASTER_SPECIES data block for the valence state of
|
|
aqueous species S6-2.
|
|
|
|
------------------------------------------------------------
|
|
Eliminate echo of input file in PRINT data block.
|
|
|
|
-echo_input T/F turns echoing on and off.
|
|
Default is true, initial value is true.
|
|
|
|
------------------------------------------------------------
|
|
Added option for an equilibrium-phase to dissolve only.
|
|
"dis" is added at the end of a line defining an equilibrium-
|
|
phase. No data fields may be omitted. Should not
|
|
be used when adding an alternative reaction.
|
|
Example:
|
|
EQUILIBRIUM_PHASES
|
|
Dolomite 0.0 0.001 dis
|
|
|
|
------------------------------------------------------------
|
|
Version 2.2:
|
|
------------------------------------------------------------
|
|
Added function EDL to Basic.
|
|
EDL("element", "surface") gives the amount of
|
|
element in the diffuse layer for "surface", not
|
|
including sorbed species. "surface" should be
|
|
the surface name, not the surface-site name
|
|
(that is, no underscore).
|
|
|
|
Special values for "element" include:
|
|
"charge" - gives surface charge, equivalents.
|
|
"sigma" - surface charge density, C/m**2.
|
|
"psi" - potential at the surface, Volts.
|
|
"water" - mass of water in the diffuse layer, kg.
|
|
|
|
------------------------------------------------------------
|
|
End of Features not documented in WRIR 99-4259.
|
|
------------------------------------------------------------
|
|
|
|
|
|
|
|
************************************************************
|
|
************************************************************
|
|
* Revisions and Bug Fixes *
|
|
************************************************************
|
|
************************************************************
|
|
|
|
------------------------------------------------------------
|
|
Version 3.3.8: June 8, 2016
|
|
------------------------------------------------------------
|
|
--------
|
|
svn 5570
|
|
--------
|
|
In SELECTED_OUTPUT; -totals, a redox state defined
|
|
with a "+" sign, such as Fe(+3), was not recognized
|
|
("Fe(3)" worked correctly). Now Fe(+3) is
|
|
synonymous with Fe(3).
|
|
|
|
------------------------------------------------------------
|
|
Version 2.18.0: April 9, 2011
|
|
------------------------------------------------------------
|
|
--------
|
|
svn 5212
|
|
--------
|
|
Subscript error in solver (ineq) when reseting deltas
|
|
after optimization failed.
|
|
|
|
--------
|
|
svn 4996
|
|
--------
|
|
Had conversion conversion to Kelvin as 273.16 in Basic
|
|
function TK, should be 273.15.
|
|
|
|
--------
|
|
svn 4955
|
|
--------
|
|
Changed O2(g) constant in Amm.dat and iso.dat to
|
|
definition from llnl.dat.
|
|
|
|
--------
|
|
svn 4954
|
|
--------
|
|
Added two more parameter sets in series of attempts
|
|
to converge: tolerance/100 and tolerance/1000.
|
|
|
|
--------
|
|
svn 4943
|
|
--------
|
|
Added separate As(3) in sit.dat.
|
|
|
|
--------
|
|
svn 4854
|
|
--------
|
|
Added two additional convergence parameter sets:
|
|
ineq_tol/100 and ineq_tol/1000.
|
|
|
|
--------
|
|
svn 4840
|
|
--------
|
|
Added missing -dw parameters to MgCO3, MgHCO3, and
|
|
MgSO4 aqueous species in phreeqc.dat.
|
|
|
|
------------------------------------------------------------
|
|
Version 2.17.5: September 7, 2010
|
|
------------------------------------------------------------
|
|
--------
|
|
svn 4793
|
|
--------
|
|
Revised fix for exponential of negative number
|
|
in Basic. Error message for negative number raised
|
|
to a fractional power.
|
|
|
|
|
|
------------------------------------------------------------
|
|
Version 2.17.4: September 2, 2010
|
|
------------------------------------------------------------
|
|
--------
|
|
svn 4771
|
|
--------
|
|
Added synonyms to TOTMOLE: TOTMOL, TOTMOLES
|
|
Fixed bug with negative exponential in basic,
|
|
for example -0.006^0.9
|
|
|
|
------------------------------------------------------------
|
|
Version 2.17.3: August 12, 2010
|
|
------------------------------------------------------------
|
|
|
|
--------
|
|
svn 4727
|
|
--------
|
|
Increased maximum iterations in cl1 solver. One test
|
|
case failed after new compiler was installed.
|
|
|
|
--------
|
|
svn 4700
|
|
--------
|
|
Initialized (nearly) all variables in class.
|
|
|
|
--------
|
|
svn 4697
|
|
--------
|
|
Fixed bug with second PITZER data block, parameters
|
|
were not updated if temperature was not changed.
|
|
|
|
--------
|
|
svn 4698
|
|
--------
|
|
Modified PHRQ_malloc and PHRQ_free logic. These routines
|
|
are used in almost all cases.
|
|
|
|
--------
|
|
svn 4694
|
|
--------
|
|
Initialized variables for V_M structure, rxn->dz (for CD_MUSIC),
|
|
Fixed problem where definitions in second SIT data block were
|
|
not added to model.
|
|
|
|
--------
|
|
svn 4677
|
|
--------
|
|
Renamed all variables that "shadowed" class variables.
|
|
|
|
--------
|
|
svn 4643
|
|
--------
|
|
Made isfinite a macro.
|
|
|
|
--------
|
|
svn 4539
|
|
--------
|
|
Fixed bug with long file names in inverse modeling files
|
|
netpath.fil or model.fil.
|
|
|
|
--------
|
|
svn 4490
|
|
--------
|
|
Redox had never been enabled for the SIT formulation.
|
|
Added the switch to include the hydrogen balance
|
|
equation for SIT.
|
|
|
|
--------
|
|
svn 4458
|
|
--------
|
|
Tweaked the convergence parameters for Pitzer log
|
|
gamma unknowns. Set a maximum step size for these
|
|
unknowns. Also changed usage of internal flags
|
|
for Pitzer calculations related to initial solution
|
|
calculations. Corrected print of Gamma iterations.
|
|
|
|
--------
|
|
svn 4399
|
|
--------
|
|
Error in PHRQ_calloc. Size of allocated block was
|
|
not set. Under some situations, could cause serious
|
|
errors and a crash.
|
|
|
|
--------
|
|
svn 4376
|
|
--------
|
|
Error in logic for removing unstable phases for Pitzer
|
|
and SIT.
|
|
|
|
--------
|
|
svn 4233
|
|
--------
|
|
Removed duplicate parameter for Na+ -- Cl- in sit.dat.
|
|
Value of 0.03 was entered erroneously for both Na/Cl and Cl/Na.
|
|
|
|
------------------------------------------------------------
|
|
Version 2.17.0: February 25, 2010
|
|
------------------------------------------------------------
|
|
--------
|
|
svn 4115
|
|
--------
|
|
Fixed bugs with unititialized strings in Basic, which
|
|
caused an error in renumbering with PhreeqcI. Tested
|
|
most Basic functions. Fixed bugs with LG and GAMMA
|
|
functions, which did not return the correct values
|
|
for H+. GET_POR now returns 0 if it is not a TRANSPORT
|
|
calculation.
|
|
|
|
|
|
--------
|
|
svn 4066
|
|
--------
|
|
Fixed bug with SIT calculations (and Pitzer). The
|
|
number of solver iterations was too few (200). With
|
|
SIT and Pitzer, each species has an unknown, so the
|
|
number of unknowns is large for a system with many
|
|
elements. Now set the maximum iterations to be
|
|
equal to the number of unknows plus the number of
|
|
equations/inequalities.
|
|
|
|
--------
|
|
svn 4023
|
|
--------
|
|
Trapped error when -mole_balance option was used in
|
|
SOLUTION_SPECIES and one of the stated elements was
|
|
not defined.
|
|
|
|
--------
|
|
svn 4022
|
|
--------
|
|
Redefined CN- and SCN- to be new elements Cyanide and
|
|
thiocyanate in llnl.dat. Former definitions were not
|
|
useful because cyanide and thiocyanate were never
|
|
stable and defining a master species as CN- caused
|
|
problems with mole balances, appearing in solutions
|
|
without any carbon.
|
|
|
|
--------
|
|
svn 3901
|
|
--------
|
|
Error with equations that included (s) or (g). The
|
|
equation and log K were correct only for the simulation
|
|
when initially read. Now equations an log Ks are correct
|
|
for all simulations. Calculates saturation index from
|
|
the equation after (s) and (g) are eliminated.
|
|
|
|
|
|
--------
|
|
svn 3695
|
|
--------
|
|
For transport calculations, fixed step_fraction when
|
|
nmix == 1 and ishift == 0.
|
|
|
|
--------
|
|
svn 3684
|
|
--------
|
|
Added more precision in writing dump file fields.
|
|
|
|
Multiple REACTIONS were not sorted correctly. Added sort
|
|
routine to tidy.c.
|
|
|
|
--------
|
|
svn 3640
|
|
--------
|
|
Print correct temperature for gas phase dump.
|
|
|
|
Correct total moles of exchanger for function sys("X").
|
|
|
|
--------
|
|
svn 3568
|
|
--------
|
|
minteq.dat: Changing log K of gypsum to minteq version
|
|
4 value (-4.61). Old value (-4.848) is too stable.
|
|
|
|
--------
|
|
svn 3483
|
|
--------
|
|
Alkalinity is now printed to the selected output file
|
|
when the Alkalinity is used with -totals.
|
|
|
|
SELECTED_OUTPUT; -totals Alkalinity
|
|
|
|
Modified numerical method to attempt to produce a numerical
|
|
solution when complexes are extremely strong. llnl.dat As and F
|
|
complexes caused PHREEQC to fail on an initial solution
|
|
calculation. The terms of the As and F mass balance equations
|
|
were identical to machine precision. One unknown log activity
|
|
was adjusted but the other was not. Now attempts an adjustment
|
|
for the unadjusted log activity.
|
|
|
|
|
|
--------
|
|
svn 3463
|
|
--------
|
|
Modified handling of not-a-number in places that
|
|
affected the adjustment of log activities (reset and
|
|
revise guesses). Uses isfinite function that is available
|
|
on Linux and is ifdef'd in global.h for Visual Studio.
|
|
The NaN problem occurred rarely and was related to
|
|
bad results from the solver and when poor estimates were
|
|
available in revise_guesses. Also insured that log activity
|
|
for new master species was well defined in switch_bases.
|
|
|
|
--------
|
|
svn 3446
|
|
--------
|
|
Fixed errors in casting for long double version.
|
|
|
|
--------
|
|
svn 3440
|
|
--------
|
|
Adjusted numerical calculation to avoid extremely large
|
|
calculated specific conductances in high ionic strength
|
|
waters.
|
|
|
|
--------
|
|
svn 3433
|
|
--------
|
|
-dw and -millero added to phreeqc.dat, which allows
|
|
calculation of specific conductance and density.
|
|
phreeqd.dat is now redundant and removed from distribution.
|
|
|
|
--------
|
|
svn 3425
|
|
--------
|
|
Added error message to require -multi_d for transport of
|
|
surfaces.
|
|
|
|
--------
|
|
svn 3424
|
|
--------
|
|
Checked for misspellings in EXCHANGE definitions, which
|
|
previously caused crash.
|
|
|
|
--------
|
|
svn 3423
|
|
--------
|
|
-dw and -millero added to pitzer.dat, which allows
|
|
calculation of specific conductance and density.
|
|
|
|
--------
|
|
svn 3292
|
|
--------
|
|
Removed redundant warnings related to transport of exchanger
|
|
and surface.
|
|
|
|
--------
|
|
svn 3287
|
|
--------
|
|
Fixed error in CD_MUSIC surface complexation model.
|
|
If reaction equation for a surface species was not
|
|
written with the primary surface species, the calculation
|
|
was incorrect. The logic to accumulate the change in
|
|
charges on the planes was erroneously not included when
|
|
rewriting the equations to the master species.
|
|
|
|
--------
|
|
svn 3247
|
|
--------
|
|
Revised donnan layer calculation with CD_MUSIC. Fixed
|
|
a bug related to moles versus concentration and stream
|
|
lined calculation. Minor differences in relevant test
|
|
cases.
|
|
|
|
--------
|
|
svn 3207
|
|
--------
|
|
Modifications to convergence criteria for surfaces
|
|
related to minerals, when moles of mineral is near
|
|
zero (<= 1e-14).
|
|
|
|
--------
|
|
svn 3100
|
|
--------
|
|
Error when multiple surfaces were used. Sometimes the
|
|
surface area from one surface was used for another.
|
|
Results were probably incorrect if the surfaces were
|
|
not in alphabetical order in their definition in
|
|
SURFACE.
|
|
|
|
--------
|
|
svn 2711
|
|
--------
|
|
Cleaned up compiler warnings for functions called
|
|
with constant strings.
|
|
------------------------------------------------------------
|
|
Version 2.15.0: February 5, 2008
|
|
------------------------------------------------------------
|
|
--------
|
|
svn 2386
|
|
--------
|
|
Fixed bug for SELECTED_OUTPUT; -activities H2O. The
|
|
resulting value was -30; now produces the correct
|
|
result.
|
|
|
|
------------------------------------------------------------
|
|
Version 2.14.3: November 17, 2007
|
|
------------------------------------------------------------
|
|
|
|
--------
|
|
svn 2386
|
|
--------
|
|
Fixed bug in routine find_Jstag. Incorrect index (cell_no)
|
|
caused segmentation violation in rare instances.
|
|
|
|
--------
|
|
svn 2312
|
|
--------
|
|
Added new option to PITZER datablock, use_etheta t/f.
|
|
|
|
--------
|
|
svn 2279
|
|
--------
|
|
Error lost 200 moles of mineral. Should only be a problem
|
|
in some cases where moles of mineral is greater than 200.
|
|
|
|
--------
|
|
svn 2270
|
|
--------
|
|
Added additional parameters Pitzer activity formulation for
|
|
neutral species, MU and ETA.
|
|
|
|
--------
|
|
svn 2269
|
|
--------
|
|
Fixed buffer overrun in SOLUTION_SPREAD when pasting.
|
|
|
|
--------
|
|
svn 2268
|
|
--------
|
|
Fixed error in prep.c where realloc was called instead
|
|
of PHRQ_realloc, which eliminated a memory leak.
|
|
|
|
------------------------------------------------------------
|
|
Version 2.14.2: September 17, 2007
|
|
------------------------------------------------------------
|
|
|
|
--------
|
|
svn 2267
|
|
--------
|
|
Fixed logic of memory checking for PhreeqcI. This serious
|
|
bug makes versions 2.14.0 and 2.14.1 unusable.
|
|
|
|
------------------------------------------------------------
|
|
Version 2.14.1: September 5, 2007
|
|
------------------------------------------------------------
|
|
--------
|
|
svn 2219
|
|
--------
|
|
Updated transport.c to adjust transport in diffuse
|
|
layer to be charge balanced for MCD calculation.
|
|
|
|
------------------------------------------------------------
|
|
Version 2.14.0: August 30, 2007
|
|
------------------------------------------------------------
|
|
-------------
|
|
svn 2203-2204
|
|
-------------
|
|
Revised logic for using phqalloc memory checker. Compiler
|
|
option USE_PHRQ_ALLOC now turns on memory checker. If
|
|
USE_PHRQ_ALLOC is defined and NDEBUG is not defined, file name
|
|
and line number are also used in memory checking. Model.c
|
|
now uses same compile options as all other files.
|
|
|
|
--------
|
|
svn 2199
|
|
--------
|
|
Initialized variables that caused problems when rerunning
|
|
simulations in PfW and PhreeqcI.
|
|
|
|
--------
|
|
svn 2138
|
|
--------
|
|
Fixed bugs in MCD calculation related to saving solutions
|
|
after initialization.
|
|
|
|
--------
|
|
svn 2055
|
|
--------
|
|
Profiled and optimized of code. Automatic string in Basic
|
|
factor saves many mallocs. Reordered to minimize call to
|
|
strcmp_nocase in basicsubs.c and xsolution_save. Minimized
|
|
mallocs for solver.
|
|
|
|
--------
|
|
svn 2051
|
|
--------
|
|
Fixed bugs in MCD calculation.
|
|
|
|
--------
|
|
svn 2040
|
|
--------
|
|
Fixed warnings for type-punned with new gcc.
|
|
|
|
Reverted to 2.12 for infilling solutions for transport.
|
|
Only solutions are used, not additional reactants for solution
|
|
0 and n+1.
|
|
|
|
Added digits to printout of REACTION stoichiometry.
|
|
|
|
--------
|
|
svn 1852
|
|
--------
|
|
Fixed error in CDMUSIC surface related to a phase.
|
|
Stoichiometry of H was calculated incorrectly.
|
|
|
|
--------
|
|
svn 1837
|
|
--------
|
|
Initialize flag for MCD calculation. PhreeqcI would
|
|
do MCD calculation after TRANSPORT was redefined not
|
|
to do MCD calculation.
|
|
|
|
------------------------------------------------------------
|
|
Version 2.13.2: February 1, 2007
|
|
------------------------------------------------------------
|
|
--------
|
|
svn 1700
|
|
--------
|
|
Fixed bug with redox elements in multi_diffusion
|
|
stagnant zones.
|
|
|
|
--------
|
|
svn 1683
|
|
--------
|
|
Worked on convergence problems when optimizer fails to
|
|
find a solution. Censored values greater than 1e8.
|
|
|
|
--------
|
|
svn 1637
|
|
--------
|
|
Fixed bug with dissolve only in ADVECTION calculations.
|
|
|
|
--------
|
|
svn 1629
|
|
--------
|
|
Fixed bug with redox elements in multi_diffusions. Added
|
|
Phreeqc For Windows changes from 2.13.1.
|
|
|
|
------------------------------------------------------------
|
|
Version 2.13.1: January 16, 2007
|
|
------------------------------------------------------------
|
|
--------
|
|
svn 1600
|
|
--------
|
|
Fixed logic error that required rebuilding aqueous model
|
|
when not necessary. Now runs faster (sometimes 3X) than
|
|
version 2.13.0.
|
|
|
|
--------
|
|
svn 1590
|
|
--------
|
|
Removed porosity from one statement to eliminate oscillations
|
|
in multicomponent diffusion calculation.
|
|
|
|
--------
|
|
svn 1558
|
|
--------
|
|
Dissolve-only option did not work correctly for stagnant cells
|
|
in TRANSPORT calculations. The moles of equilibrium phases,
|
|
kinetics, gas_phase, and solid solutions were not initialized
|
|
at the beginning of each transport step. Thus, the printed values
|
|
for delta moles for the step in the output and punch file were
|
|
incorrect for stagnant-zone cells. "Dissolve only" was
|
|
always tested relative to the number of moles initially in the
|
|
cells, not the amount remaining at a given time step.
|
|
|
|
--------
|
|
svn 1485
|
|
--------
|
|
Pitzer version with gas_phase did not work. Added
|
|
gas_phase and cd_music to numerical derivative routine.
|
|
|
|
|
|
|
|
svn 1368: (1) Added multicomponent diffusion in transport and
|
|
SOLUTION_SPECIES. (2) Added BASIC functions to obtain and
|
|
modify the porosity in a cell. (3) Aded mobile surface and Donnan
|
|
option in SURFACE. (4) Added special BASIC function to change
|
|
the diffusion coefficient of a SURFACE, and hence to
|
|
change the status from mobile to immobile or immobile to
|
|
mobile.
|
|
|
|
svn 1337: Added -add_logk to NAMED_EXPRESSIONS keyword.
|
|
|
|
svn 1306: Revised printing of distribution of species,
|
|
pure phase assemblages, and solid solutions to use
|
|
longer fields for names. More revisions to logic
|
|
for using gases and solids in equations for phases.
|
|
Revised logic for solid solutions with small (1e-25) amounts
|
|
of component.
|
|
|
|
svn 1282: Fixed bug when gas phase had no gas components.
|
|
Looked the same as not having a gas phase at all.
|
|
|
|
svn 1245: Enabled redox in Pitzer model with option in
|
|
PITZER keyword. Typically, the option will be included
|
|
in the pitzer database file.
|
|
|
|
PITZER
|
|
-redox TRUE
|
|
|
|
The default database for the Pitzer model does not contain
|
|
any redox definitions and the default value for the option
|
|
is FALSE. At a minimum, species O2 and H2 must be defined
|
|
in the database or input file to allow redox calculations.
|
|
|
|
svn 1179: New option (-sites_units density) allows alternative
|
|
units (sites/nm^2) for definition of number of sites for a
|
|
surface. This approach requires better consistency among the
|
|
parameters as both the number of sites and the surface area
|
|
are based on the mass. It makes more sense than the default,
|
|
which requires the number of sites (first numeric item in a
|
|
line) to be defined in units of moles, independently of the
|
|
number of grams of sorbent.
|
|
|
|
SURFACE 1
|
|
-sites DENSITY
|
|
SurfOH 2.6 600. 1.0
|
|
SurfaOH 2.6 30. 2.0
|
|
|
|
In this example, Surf has a site density of 2.6 sites per
|
|
nanometer squared, a specific area of 600 meters squared per
|
|
gram, and a mass of 1 gram. Surfa has a site density of 2.6
|
|
sites per nanometer squared, a specific area of 30 meters
|
|
squared per gram, and mass of 2 grams.
|
|
|
|
svn 1128: Fixed bug with value of time printed to selected
|
|
output file when using cvode. Value printed was an
|
|
intermediate integration time step, not time at end
|
|
of integration.
|
|
|
|
svn 1096: Allows solids and gases in the equations for
|
|
PHASES. This capability simplifies the definitions for
|
|
gas and solid isotopic components. Solids must be identified
|
|
with "(s)" and gases with "(g)". The first entity on the left-
|
|
hand-side of the equation must be the stoichiometric formula
|
|
of the solid of gas component being defined, optionally with
|
|
(g) or (s). In turn gases and solids included in the equation
|
|
must be defined with reactions that ultimately allow the
|
|
defined species (C[18O]2(g) in this case) in terms of aqueous
|
|
species.
|
|
|
|
C[18O]2(g)
|
|
C[18O]2(g) + CO2(g) = 2CO[18O](g)
|
|
log_k 0.602059991327962396 # log10(4)
|
|
|
|
svn 1092: CD_MUSIC sorption model has been implemented.
|
|
Still missing logic for surfaces related to equilibrium-
|
|
phases and kinetics. Has explicit calculation of diffuse
|
|
layer composition with Donnan assumption. Old diffuse-layer
|
|
calculation will not be implemented.
|
|
|
|
Example:
|
|
|
|
SURFACE
|
|
Goe_uniOH .000552 96.387 1
|
|
-capacitance 1.1 5
|
|
Goe_triO .000432
|
|
-cd_music
|
|
-donnan
|
|
|
|
1.1 5 are capacitances for the cd-music model for 0-1 and 1-2
|
|
planes, respectively.
|
|
-cd_music specifies that the surface is a cd-music surface.
|
|
-donnan optionally calculates the diffuse layer composition
|
|
with the Donnan model.
|
|
|
|
SURFACE_SPECIES
|
|
Goe_uniOH-0.5 + H+ + AsO4-3 = Goe_uniOAsO3-2.5 + H2O
|
|
log_k 20.1 # eq 7 K1, Kin1
|
|
-cd_music -1 -6 0 0.25 5
|
|
|
|
-cd_music gives the charge contribution of the surface
|
|
species to the three planes. Plane 0 is
|
|
-1 + 0.25*5; Plane 1 is -6 + (1-0.25)*5;
|
|
Plane 2 (or d) is 0.
|
|
|
|
|
|
svn 1030: Fixed bug in tranport. Mixing was not printed
|
|
when using -cvode in kinetics.
|
|
|
|
svn 984: Fixed bug in transport when cell without a
|
|
surface followed a cell with a diffuse-layer surface.
|
|
Fixed bug in TOTAL function; code ran of the end of
|
|
the list of master species; changed logic to recognize
|
|
the end of the list.
|
|
|
|
svn 874: Fixed bug in check_same_model. Thought surface
|
|
calculation was the same even though -edl switch was
|
|
different, which gave irratic results and possible
|
|
crash. Now checks more carefully to make sure calculation
|
|
for surfaces is really the same and reinitializes if
|
|
not.
|
|
|
|
svn 847: Fixed bug with DESCRIPTION function. Did not
|
|
give correct solution description for reactions.
|
|
|
|
svn 826: Update tally.c to avoid conflicts in C++
|
|
version of phast.
|
|
|
|
svn 801: Wrote around underflow in fabs in subroutine
|
|
reset.
|
|
|
|
svn 794: Errors in minteq.v4.dat database. Several redox
|
|
reactions had delta H listed as kcal instead of kJ. kcal
|
|
is correct only for the following species H2, NO2-, and
|
|
NH4+.
|
|
|
|
svn 675:
|
|
Added PRINT option to print the species that contribute
|
|
to alkalinity. Alkalinity distribution is printed in
|
|
the output file following the distribution of species.
|
|
Default at program startup is false.
|
|
|
|
PRINT
|
|
-alkalinity true
|
|
|
|
svn 655:
|
|
IAP and log K printed in Phase assemblage data
|
|
block were calculated from reactions rewritten to
|
|
new master species. Now the original data base
|
|
reaction is used to calculate IAP and log K.
|
|
Also fixed check that ensured all elements of
|
|
phase in are in solution before SI is calculated.
|
|
|
|
svn 631:
|
|
Fixed bug with alternate formula for equilibrium phase,
|
|
nothing happened if all other equations were satisfied
|
|
at beginning of reaction calculation.
|
|
|
|
svn 603:
|
|
Link gmp library statically.
|
|
|
|
svn 601:
|
|
Fixed statement on multiprecision.
|
|
|
|
svn 581:
|
|
Fixed bug in PhreeqcI that did not reinitialize
|
|
Chebyschev parameters leading to incorrect results
|
|
with Pitzer activity coefficients. Results were
|
|
correct on first run, but erroneous on subsequent
|
|
runs.
|
|
|
|
Added statement to identify multiprecision or
|
|
standard solver for inverse modeling.
|
|
|
|
svn 578:
|
|
|
|
Distribution changes. Fixed names in README file.
|
|
Modified Makefile to use specified version. Split
|
|
Linux and source distribution procedure.
|
|
|
|
------------------------------------------------------------
|
|
Version 2.12 Date: Wed September 28, 2005
|
|
------------------------------------------------------------
|
|
|
|
Executables and output files for Sun operating systems
|
|
are no longer provided.
|
|
|
|
Limited log activities of master species to be greater
|
|
than the smallest machine precision exponential number.
|
|
Avoids a matherr exception and allows trial of additional
|
|
parameter sets to attempt to solve the system of
|
|
equations.
|
|
|
|
Made aqueous activity coefficients the default activity
|
|
coefficients for exchange species when using the
|
|
Pitzer formulation. New option in EXCHANGE is
|
|
-pitzer_exchange_gammas T/F, default is true;
|
|
defining "false" sets exchange activity coefficients
|
|
to 1.0. Option has no effect for ion-association
|
|
model (non-Pitzer).
|
|
|
|
Edited phreeqc.dat to add -gamma expression for
|
|
CdX2 and PbX2.
|
|
|
|
Replaced O2(g) log K in phreeqc.dat and wateq4f.dat
|
|
with data from llnl.dat, which appears to be better.
|
|
|
|
Added multiplier format to REACTION increments, which
|
|
simplifies definition of multiple equal reaction increments.
|
|
|
|
REACTION
|
|
H2O 1
|
|
-36 3*-4 2*-.25 -0.19 4*-0.1 3*-0.05 moles
|
|
|
|
Added Pitzer activity formulation. Use pizer.dat database
|
|
to invoke the Pitzer model. Should have same capabilities
|
|
as ion-association model except explicit diffuse layer
|
|
calculation is not implemented with the Pitzer model.
|
|
|
|
|
|
Fixed bug in surface sites related to mineral and exchange
|
|
sites related to mineral. Did not have complete logic to
|
|
handle redox valence states in formula for species.
|
|
|
|
Modified to remove non standard usage of va_list.
|
|
|
|
Removed exchange master species from SYS("ex",..)
|
|
list of species. This species is fictive and should
|
|
not be included in the list.
|
|
|
|
Changed -redox in SOLUTION so that if one of the
|
|
redox states of a couple is not defined, then
|
|
redox defaults to pe.
|
|
|
|
Fixed buffer overrun in PhreeqcI with SOLUTION_SPREAD,
|
|
caused segmenatation fault with lines greater than
|
|
500 characters.
|
|
|
|
Added bigger string for some error messages to avoid
|
|
access violation in cvode.
|
|
|
|
Changed output_msg to warning_msg for combinations
|
|
of convergence parameters so that message would
|
|
be controlled by -warnings identifier.
|
|
|
|
Carriage returns are now stripped from Basic program
|
|
statements. Switching files from Windows to Unix sometimes
|
|
leaves extra carriage returns at the ends of lines, which
|
|
caused a syntax error for some Basic commands.
|
|
|
|
Two bugs were fixed in inverse modeling. (1) Potential
|
|
models are now checked for all equality and inequality
|
|
constraints. Previously some constraints were not checked.
|
|
(2) One loop of cl1 did not include the last row when
|
|
checking for the pivot element. Also printing of headers
|
|
was slightly modified for inverse modeling.
|
|
|
|
A new multiple precision version of cl1 was develeped by
|
|
using the Gnu Multiple Precision package (gmp). Calculations
|
|
are carried out to about 30 significant digits. The mp
|
|
version may help in some situations where roundoff errors are
|
|
a problem, but it is still possible that roundoff errors will
|
|
cause cl1mp to fail to find a solution to the optimization
|
|
problem. The mp version has the following options in
|
|
INVERSE_MODELING:
|
|
-multiple_precision T/F--causes the mp version
|
|
to be used in inverse modeling calculations.
|
|
-mp_tolerance 1e-12--tolerance for mp version of
|
|
cl1. As in cl1, numbers less than the
|
|
tolerance are considered to be zero.
|
|
1e-12 is the default.
|
|
-censor_mp 1e-20--as calculations occur in the
|
|
linear equation array, elements less
|
|
than this value are set to zero. Default
|
|
is 1e-20. A value of 0.0 causes no
|
|
censoring to occur.
|
|
|
|
------------------------------------------------------------
|
|
Version 2.11 Date: Mon February 7, 2005
|
|
------------------------------------------------------------
|
|
|
|
Fixed error in selected output file with mixing reaction.
|
|
MIX number was written to two columns, should be one.
|
|
|
|
Fixed memory leak with PAD function.
|
|
|
|
New database minteq.v4.dat has been translated from version
|
|
4.02 of MINTEQA2. An older version of the MINTEQA2 database is
|
|
retained in file minteq.dat.
|
|
|
|
Switched version control to subversion. Simplified,
|
|
reorganized makefiles.
|
|
|
|
Fixed bug with PRINT; -warnings n. Use of this option
|
|
generally eliminated all warning messages instead of
|
|
all messages after the nth. Default number of warning
|
|
messages printed in now 100 per simulation.
|
|
|
|
Fixed memory leaks in cvode that caused phreeqci to crash.
|
|
Now uses PHRQ_malloc in case of other memory leaks. Also
|
|
fixed potential memory error with PAD Basic function.
|
|
|
|
Saturation index phases that included water had wrong
|
|
value if distribution of species, exchange, or surface
|
|
not written also.
|
|
|
|
Fixed error message in cvode, if max iterations exceeded
|
|
the error caused a segmentation fault.
|
|
|
|
Made printing of parameter combination message a warning
|
|
message so that it could be turned off.
|
|
|
|
------------------------------------------------------------
|
|
Version 2.10 Date: Tue November 2, 2004
|
|
------------------------------------------------------------
|
|
|
|
Rearranged i/o for PHREEQC and reorganized driver
|
|
subroutine. The object of these changes is to make
|
|
the program more functional as a module for other
|
|
programs (PHAST) and eventually to produce a callable
|
|
C and Fortran module.
|
|
|
|
Fixed a problem with surface related to a phase, when
|
|
phase was not part of system (for example, Fe(OH)3a when
|
|
there is no iron in system.
|
|
|
|
Added convergence parameter set that requires mineral
|
|
transfers to produce positive concentrations in the
|
|
event that negative concentrations have been produced in
|
|
the prior Newton-Raphson iteration. (Fluorite example).
|
|
|
|
Fixed bug with kinetics formulas; did not account for
|
|
stoichiometric coefficient correctly when using
|
|
phase names. Generalized to allow multiple phase
|
|
names in the -formula definition.
|
|
|
|
------------------------------------------------------------
|
|
Version 2.9 Date: Wed September 15, 2004
|
|
------------------------------------------------------------
|
|
|
|
In inverse modeling, program terminates if sum of initial
|
|
solutions and phases is > 32.
|
|
|
|
Fixed bug with isotopes. Log activity estimate after initial
|
|
solution calculation was inf under some conditions. An initial
|
|
surface calculation failed when using D.
|
|
|
|
Changed saturation index print out to use reaction and log K
|
|
defined in PHASES definition. Previously, reaction could be
|
|
rewritten to predominant redox species.
|
|
|
|
Fixed incorrect print of elapsed time for kinetics in advection.
|
|
|
|
Added phrqproto.h prototype file and phrqtype.h for
|
|
switching compilation to long double.
|
|
|
|
Fixed incorrect printout of kinetics delta moles with
|
|
advection.
|
|
|
|
Added convergence parameter set that skips mineral
|
|
equations for first 5 iterations.
|
|
|
|
Added entity_exists for module.
|
|
|
|
Tried to fix bug with mix index incorrect (-2) for
|
|
mixing with kinetics.
|
|
|
|
Added new keyword COPY that allows a data entity
|
|
to be copied from one index to a new index
|
|
or to a range of indicies. Format is
|
|
|
|
COPY keyword index index_start[-index_end]
|
|
|
|
where keyword is one of the following:
|
|
SOLUTION
|
|
EQUILIBRIUM_PHASES
|
|
EXCHANGE
|
|
GAS_PHASE
|
|
KINETICS
|
|
MIX
|
|
REACTION
|
|
REACTION_TEMPERATURE
|
|
SOLID_SOLUTION
|
|
SURFACE
|
|
|
|
Numerical method had a bug with ionic strength, if
|
|
mass of water was not approximately 1. Routine
|
|
revise_guesses did not divide by the mass of
|
|
water. Also changed check in routine molalities
|
|
to check by molality, not moles.
|
|
|
|
Fixed a null pointer when surface was related to a
|
|
mineral and mineral was not in database.
|
|
|
|
Added new Basic functions
|
|
i = INSTR(a$, b$) sets i to the character position of
|
|
string b$ in a$, 0 in not found.
|
|
b$ = LTRIM(a$) trims white space from beginning of
|
|
string a$ and stores result in b$.
|
|
b$ = RTRIM(a$) trims white space from end of string
|
|
a$ and stores result in b$.
|
|
b$ = LTRIM(a$) trims white space from beginning and
|
|
end of string a$ and stores result in b$.
|
|
|
|
Added new Basic function SYS that calculates the to
|
|
total amount of an element in all phases (solution,
|
|
equilibrium_phases, surfaces, exchangers, solid solutions,
|
|
and gas phase). KINETIC reactions are not included.
|
|
The function has two forms: (1) one element name as an
|
|
argument (variable names are user specified)
|
|
|
|
10 t = SYS("As")
|
|
|
|
the function will return the total arsenic in the system.
|
|
(2) 5 argumens
|
|
|
|
10 t = SYS("As", count_species, names$, types$, moles)
|
|
|
|
will return the total arsenic in the system to tot; count_species--
|
|
the number of species that contain arsenic, including
|
|
solution, equilibrium_phases, surfaces, exchangers, solid solutions,
|
|
and gas phase species; names$--a character array that has the
|
|
name of each species; type$--a character array that specifies the
|
|
type of phase for the species, aq, equi, surf, ex, s_s, gas, diff.
|
|
Diff refers to the amount of the element in the diffuse layer of
|
|
a surface when the explicit diffuse layer calculation is used;
|
|
moles--an array containing the number of moles of the element in
|
|
the species. The sum of moles(i) is equal to tot.
|
|
|
|
SYS has several special arguments for the form
|
|
SYS("arg", count, names$, types$, values)
|
|
arg is one of the options listed below.
|
|
count is a single numeric value and is the number of elements
|
|
in the following arrays.
|
|
name$ is an array of string values.
|
|
type$ is an array of string values.
|
|
values is an array of numeric values.
|
|
|
|
Values of arg:
|
|
|
|
elt_name returns total number of moles of element in system.
|
|
count is the number of species for the element in
|
|
the system, including aqueous, exchange, surface,
|
|
equilibrium_phase, solid solution component, and
|
|
gas phase "species".
|
|
Arrays are filled for each "species"; values are moles.
|
|
"elements" returns total number of moles of all elements,
|
|
valence states, exchangers, and surfaces.
|
|
count is number of elements, valence states,
|
|
exchangers, and surfaces.
|
|
Arrays are filled for each element, valence state,
|
|
exchanger, and surface; values are moles.
|
|
"phases" returns maximum saturation index of all phases.
|
|
count is number of phases in system.
|
|
Arrays are filled for each phase; values are
|
|
saturation indexes.
|
|
"aq" returns sum of moles of all aqueous species.
|
|
count is number of aqueous species in system.
|
|
Arrays are filled with each aqueous species;
|
|
values are moles.
|
|
"ex" returns sum of moles of all exchange species.
|
|
count is number of exchange species in system.
|
|
Arrays are filled with each exchange species;
|
|
values are moles.
|
|
"surf" returns sum of moles of all surface species.
|
|
count is number of surface species in system.
|
|
Arrays are filled with each surface species;
|
|
values are moles.
|
|
"s_s" returns sum of moles of all solid solution components.
|
|
count is number of solid solution components in system.
|
|
Arrays are filled with each solid solution component;
|
|
values are moles.
|
|
"gas" returns sum of moles of all gas components.
|
|
count is number of gas components in system.
|
|
Arrays are filled with each gas component;
|
|
values are moles.
|
|
|
|
Added new Basic function, DESCRIPTION, that has the value
|
|
defined for the description field of the SOLUTION keyword line.
|
|
|
|
Added alternative ordinary differential equation solver
|
|
called CVODE, a set of C routines from the Lawrence
|
|
Livermore National Labs. CVODE is part of the SUNDIALS
|
|
package. CVODE is used in place of the Runge Kutta method
|
|
when "-cvode true" is used within a KINETICS data block.
|
|
|
|
KINETICS
|
|
-cvode true
|
|
|
|
Fixed error in SOLUTION_SPREAD, defining -redox
|
|
did not set the default redox for the solutions
|
|
that were defined; pe was always used as default.
|
|
|
|
Modified code to allocate space differently for
|
|
pp_assemblage, exchange, surface, gas_phase,
|
|
kinetics, and s_s_assemblage. Enough space is allocated
|
|
at beginning of distribute_initial_conditions.
|
|
May speed up phast initialization and make better
|
|
use of available memory.
|
|
|
|
Changed gfw of water to 18 if isotopes of water are
|
|
included. Solvent is [1H]2[16O].
|
|
|
|
Fixed a bug in surface integration where order of ions
|
|
in the list of g's was incorrect.
|
|
|
|
Pyrite rate was not 0 if supersaturated in phreeqc.dat
|
|
and wateq4f.dat
|
|
|
|
Segmentation error if a surface species was not
|
|
defined with an equation that contained another surface
|
|
species. In this case, the surface master species
|
|
had been redefined to be an aqueous species (SOLUTION_SPECIES).
|
|
|
|
------------------------------------------------------------
|
|
Version 2.8 Date: Tue April 15, 2003
|
|
------------------------------------------------------------
|
|
|
|
Updated arsenic data in wateq4f.dat to be consistent with
|
|
Archer and Nordstrom (2002).
|
|
|
|
Revised Basic interpreter to allow lines of any length
|
|
and character strings of any length.
|
|
|
|
Renumbering basic statement that included the function
|
|
SURF in PhreeqcI caused SURF to be omitted and generated
|
|
a syntax error. SURF and other functions had not been
|
|
implemented in PhreeqcI.
|
|
|
|
Fixed a bug in the Basic Interpreter. If elements of
|
|
a dimensioned variable (character or number) were used on
|
|
both sides of an equation, the result was erroneously
|
|
stored in the last element of the variable used on the
|
|
right-hand side instead of the element specified on the
|
|
left-hand side.
|
|
|
|
Using comma in some fields caused an infinite loop.
|
|
|
|
Fixed bug with SOLUTION_SPREAD, Phreeqc was not
|
|
calculating solution numbers for solution_spread
|
|
solutions without solution numbers.
|
|
|
|
Fixed bug with stagnant zone calculations. If solutions
|
|
not defined for stagnant cells, PhreeqcI crashed.
|
|
|
|
Added new state for calculations, PHAST. Previously
|
|
phast used the state TRANSPORT, which caused some
|
|
erroneous results with temperature when TRANSPORT was
|
|
used in the PHREEQC part of the calculation.
|
|
|
|
Trying to define dump file in TRANSPORT caused a file
|
|
opening error. Fixed logic so now can open a file
|
|
and the name can include blanks.
|
|
|
|
------------------------------------------------------------
|
|
Version 2.7 Date: Fri February 14, 2003
|
|
------------------------------------------------------------
|
|
|
|
Initialized gfw in elements structure.
|
|
|
|
Fixed bug where "time" would be wrong for initial
|
|
solution calculation. Needed to initialize
|
|
rate variables for PhreeqcI.
|
|
|
|
Added print of simulation number to error file for
|
|
phreeqci
|
|
|
|
Limited printing of cell numbers to output file in advection
|
|
calculations. Cell numbers only printed if results
|
|
for cell are going to be printed.
|
|
|
|
PhreeqcI captured status messages for kinetics, which
|
|
made a very large error file in some cases and
|
|
a long wait to view the output file in PhreeqcI.
|
|
Now PhreeqcI does not capture these intermediate
|
|
status messages.
|
|
|
|
Removed old code related to redirecting error file
|
|
|
|
|
|
Corrected error in transport where wrong time step was used
|
|
for integration.
|
|
|
|
Changes to speed up transport algorithm.
|
|
|
|
Allow file names with spaces in selected_output file name and
|
|
dump_file name.
|
|
|
|
Modifications to work with RC1 phast log file.
|
|
|
|
Allow any characters in square brackets for element name.
|
|
- and + and perhaps others caused problems before.
|
|
|
|
Fixed log molality of water in species printout, was
|
|
equal to log activity of water. Also fixed
|
|
basic function for LM.
|
|
|
|
Changed solid solution prints to print 0 if solid solution
|
|
is not present.
|
|
|
|
Fixed bug if no rate name was defined before options
|
|
in RATES.
|
|
|
|
Fixed warning on Mac compilation in fpunchf.
|
|
|
|
Fixed bug if isotopes were used but H and O isotopes
|
|
were not defined.
|
|
|
|
Fixed bug where special initial solution calculations
|
|
were done at later calculation stages.
|
|
Needed to set initial_solution_isotopes = FALSE;
|
|
|
|
Fixed problem in C++ if structure name is same as member name.
|
|
logk member of logk structure was renamed to log_k.
|
|
|
|
Added identifier -add_constant to PHASES, EXCHANGE_SPECIES,
|
|
SOLUTION_SPECIES, and SURFACE_SPECIES.
|
|
|
|
-add_constant -0.301
|
|
|
|
log K is augmented by the specified constant.
|
|
|
|
|
|
Added punch_isotopes and punch_calculate_values to allow
|
|
printing isotope ratios and any CALCULATE_VALUES result.
|
|
|
|
Added KEYWORDS:
|
|
|
|
ISOTOPES
|
|
Element
|
|
-isotope isotope_name units standard_ratio
|
|
-total_is_major T/F (OPTION IS DISABLED!!)
|
|
|
|
CALCULATE_VALUES
|
|
Name
|
|
-start
|
|
Basic statements, must have SAVE
|
|
-end
|
|
|
|
ISOTOPE_RATIOS (for printing)
|
|
Name=Calculate_values_name Isotope_name
|
|
|
|
ISOTOPE_ALPHAS (for printing)
|
|
Name=Calculate_values_name Named_logk=named_expression_name
|
|
|
|
Basic functions:
|
|
calc_value("calc_value_name") evaluates a definition of CALCULATE_VALUES
|
|
lk_named("name") log10(K) of definition in NAMED_EXPRESSIONS
|
|
lk_phase("name") log10(K) of definition in PHASES
|
|
lk_species("name") log10(K) of definition in (SOLUTION, EXCHANGE, SURFACE)_SPECIES
|
|
sum_gas("template","element") Sum of element in gases with specified template
|
|
template="{C,[13C],[14C]}{O,[18O]}2" includes all CO2 gases
|
|
sum_species("template","element") Sum of element in aqueous, exchange, and surface species with
|
|
specified template
|
|
sum_s_s("s_s_name","element") Sum of element in a specified solid solution
|
|
|
|
PRINT keyword:
|
|
-initial_isotopes T/F
|
|
-isotope_ratios T/F
|
|
-isotope_alphas T/F
|
|
-censor_species 1e-8 # Omits print of species if less than relative criterion
|
|
|
|
SELECTED_OUTPUT keyword:
|
|
-calculate_values name1 name2 ...
|
|
-isotopes minor_isotope1 minor_isotope2 ....
|
|
|
|
Added functions LK_SPECIES, LK_NAMED, LK_PHASE for Basic
|
|
interpreter. LK_SPECIES("CaHCO3+") returns the
|
|
log k for the association reaction for the ion pair
|
|
CaHCO3+ at the current temperature. The log K is
|
|
for the reaction as defined in the database or
|
|
input file. Similarly,
|
|
LK_NAMED("Log_alpha_18O_CO2(aq)/CO2(g)") returns the
|
|
value for the log K at the current temperature using
|
|
expressions defined in NAMED_LOG_K data block;
|
|
LK_PHASE("Calcite") returns the value of log K
|
|
for calcite at the current temperature for the
|
|
dissociation reaction defined in the database or
|
|
input file. Values are "log10" values.
|
|
Example for Basic program:
|
|
|
|
10 PRINT "Log10 KCalcite: ", LK_PHASE("Calcite")
|
|
20 PRINT "Log10 KCaHCO3+: ", LK_SPECIES("CaHCO3+")
|
|
30 PRINT " 1000ln(alpha): ", LK_NAMED("Log_alpha_18O_CO2(aq)/CO2(g)")*LOG(10)*1000
|
|
|
|
Added NAMED_EXPRESSIONS data block. This data block was
|
|
implemented to facilitate isotopic calculations.
|
|
It allows analytical expressions that are functions
|
|
of temperature to be defined. The purpose is to
|
|
separate the fractionation factors from the log K,
|
|
so that the fractionation factor or its temperature
|
|
dependence can be easily modified. The named
|
|
expression can be added to a log K for a species
|
|
or phase by the -add_logk identifier in SOLUTION_SPECIES
|
|
EXCHANGE_SPECIES, SURFACE_SPECIES, or PHASES data
|
|
block.
|
|
|
|
------------------------------------------------------------
|
|
Version 2.6 Date: Mon April 22, 2002
|
|
------------------------------------------------------------
|
|
|
|
PhreeqcI released.
|
|
|
|
All selected_output is routed through a single routine.
|
|
|
|
Allow "_" inside square brackets, [A_bcd].
|
|
|
|
Fixed bug match_elts_in_species, check for "e-" was wrong.
|
|
|
|
Modified minteq.dat to put CuS4S5-3, Cu(S4)2-3 in
|
|
in Cu(1) mole balance equations instead of
|
|
Cu(2). Before the change, the program would
|
|
not converge if Cu(2) were defined in an
|
|
initial solution.
|
|
|
|
Made revisions hopefully to improve SOLID_SOLUTIONS
|
|
convergence with small numbers of moles of
|
|
solids.
|
|
|
|
Made changes related to dump file and PhreeqcI.
|
|
|
|
Iterations now sums iterations in all kinetics calculations
|
|
|
|
Fixed bug with LA("H2O"), which was returning natural log
|
|
of activity of water.
|
|
|
|
|
|
------------------------------------------------------------
|
|
Version 2.5 Date: Mon October 1, 2001
|
|
------------------------------------------------------------
|
|
|
|
In llnl.dat, fixed sign errors in RRE (rare earth elements)
|
|
for some redox reactions and removed some redundant
|
|
species, generally ReeO2- was retained and Ree(OH)4-
|
|
was removed.
|
|
|
|
Added the capability to use square brackets to define an
|
|
"element" name. The brackets act like quotation marks
|
|
in that any character string can be used within the
|
|
brackets as an element name. This was introduced to
|
|
simplify expansion of the model to isotopic species.
|
|
[13C], [14C], and [18O] are legal element names.
|
|
|
|
Added identifier -activity_water for a species in
|
|
SOLUTION_SPECIES data block. This identifier has been
|
|
added for future updates that will allow isotopic
|
|
calculations. It is intended to be used only for
|
|
isotopic variations of H2O, like D2O or H2[O18]. It
|
|
forces the activity coefficient for the species to be
|
|
activity(water)/55.5. This effectively sets the activity
|
|
of the species to the mole fraction in solution.
|
|
|
|
Fixed bug in checking solid solutions for presence or
|
|
absence of elements in the system. Programming
|
|
error caused segmentation fault if an error
|
|
was detected under certain conditions.
|
|
|
|
Changed return value of MOL to be molality of water
|
|
if argument is "H2O". Also changed return value
|
|
of LA to be activity of water if argument is
|
|
"H2O".
|
|
|
|
Diffuse layer calculation was incorrect if aqueous phase did not
|
|
have 1 kilogram of water. Eq. 74 of manual has molality,
|
|
but code used moles. The code was corrected by adding
|
|
the mass of water to the formulation.
|
|
|
|
Stagnant zones with first-order exchange approximation (1 stagnant
|
|
cell, exchange factor, and porosities defined) did not work
|
|
correctly if mobile and immobile cells did not have equal
|
|
volumes of water. The mixing factors were revised to account
|
|
for the masses of water in the stagnant and mobile zones.
|
|
|
|
A fatal error was erroneously detected if the database file
|
|
had a DATABASE data block. DATABASE data block is
|
|
now ignored while reading the database file.
|
|
|
|
Added identifier -bad_step_max to KINETICS data block.
|
|
An integer following -bad_step_max gives the maximum number
|
|
of times a rate integration may fail before execution of the
|
|
program is terminated. Default is 500.
|
|
|
|
------------------------------------------------------------
|
|
Version 2.4.2: Date: Fri June 15, 2001
|
|
------------------------------------------------------------
|
|
|
|
Fixed spreadsheet bug. Program was not ignoring columns
|
|
that could not be identified as either element
|
|
names or allowed data (ph, pe, number, description,
|
|
etc). Also, the program failed if a spreadsheet solution
|
|
number was negative.
|
|
|
|
------------------------------------------------------------
|
|
Version 2.4.1: Date: Mon June 4, 2001
|
|
------------------------------------------------------------
|
|
|
|
Fixed spreadsheet bugs with isotopes.
|
|
|
|
------------------------------------------------------------
|
|
Version 2.4: Date: Fri June 1, 2001
|
|
------------------------------------------------------------
|
|
|
|
Added structure for spreadsheet for use by PhreeqcI.
|
|
|
|
Isotope value initialized incorrectly if only an -uncertainty was
|
|
defined in SOLUTION_SPREAD.
|
|
|
|
Fixed segmentation violation when primary and secondary master
|
|
species were defined improperly.
|
|
|
|
Corrected enthalpies of reaction in llnl.dat. Previous release had
|
|
erroneously had enthalpies of formation in -delta_H
|
|
parameter; the values should be enthalpies of reaction.
|
|
Enthalpies of reaction were calculated from the
|
|
enthalpies of formation and these values are now included
|
|
in the -delta_H parameter. This change will have very
|
|
little impact on calculations because the analytical
|
|
expression has precedence over -delta_H in calculating
|
|
temperature dependence of log K, and nearly all species
|
|
and minerals have an analytical expression or lack both
|
|
an analytical expression and an enthalpy of reaction.
|
|
|
|
Corrected bugs in punch of solid solution components that caused
|
|
both selected output and output file errors: moles
|
|
were incorrect in selected output, and total moles and
|
|
mole fraction were incorrect in output file.
|
|
|
|
Added surface complexation constants for Fe+2; two complexes for
|
|
weak sites and one complex for strong sites. phreeqc.dat
|
|
and wateq4f.dat modified.
|
|
|
|
Comment for units of parameters for calcite rate equation was
|
|
wrong. Rate equation now uses cm^2/L for area parameter.
|
|
Previously the correct units would have been 1/decimeter.
|
|
phreeqc.dat and wateq4f.dat modified.
|
|
|
|
Fixed a bug when rates were equal within tolerance, but negative
|
|
concentrations occurred because of small initial
|
|
concentrations.
|
|
|
|
Added -warnings to PRINT keyword for specification of maximum
|
|
number of warnings to print. Negative number allows
|
|
all warnings to be printed.
|
|
|
|
Function CELL_NO in Basic now prints a number equivalent to
|
|
-solution in SELECTED_OUTPUT data block. This does not
|
|
change printing for ADVECTION or TRANSPORT calculations.
|
|
|
|
Kinetics time is halved for advective part of reaction in
|
|
transport; time incorrectly accounted for before.
|
|
|
|
-punch_ identifiers printed -1 instead of the correct solution
|
|
number for batch-reaction calculations.
|
|
|
|
-high_precision is no longer reset to false with every
|
|
SELECTED_OUTPUT data block.
|
|
|
|
SELECTED_OUTPUT file name stored for use by PhreeqcI.
|
|
|
|
Alkalinity for NH3 corrected to 1.0 in llnl.dat.
|
|
|
|
Fixed bug with USER_PRINT of kinetics. Did not find correct
|
|
kinetics information in some cases.
|
|
|
|
Fixed bug in default values for SOLUTION_SPREAD. Cannot use phase
|
|
name and SI for pH or pe, and bug did not allow PHREEQC
|
|
to run. Now PHREEQC runs, but warns that this is not
|
|
allowed.
|
|
|
|
------------------------------------------------------------
|
|
Version 2.3: Date: Tue January 2, 2001
|
|
------------------------------------------------------------
|
|
|
|
Added new keyword DATABASE. It must be the first keyword in
|
|
the input file. The character string following the
|
|
keyword is the pathname for the database file to
|
|
be used in the calculation. The file that is
|
|
specified takes precedence over any default
|
|
database name, including environmental variable
|
|
PHREEQC_DATABASE and command line arguments.
|
|
|
|
Fixed bug in SOLUTION_SPREAD. If first heading in
|
|
the spread-sheet input was an identifier--pH,
|
|
pe, units, etc--then the headings were interpreted
|
|
as an identifier and bad things happened.
|
|
|
|
Added new keyword to make aqueous model similar to
|
|
LLNL and Geochemists Workbench when using
|
|
llnl.dat as the database file. Values
|
|
of Debye-Huckel a and b and bdot (ionic strength
|
|
coefficient) are read at fixed temperatures.
|
|
Linear interpolation occurs between temperatures.
|
|
|
|
New options for SOLUTION_SPECIES are
|
|
-llnl_gamma a , where a is the ion-size parameter.
|
|
-co2_llnl_gamma , indicates the temperature dependent
|
|
function for the bdot term given in
|
|
-co2_coefs of LLNL_AQUEOUS_MODEL_PARAMETERS
|
|
will be used. Applies to uncharged
|
|
species only.
|
|
|
|
LLNL_AQUEOUS_MODEL_PARAMETERS
|
|
-temperatures
|
|
0.0100 25.0000 60.0000 100.0000
|
|
150.0000 200.0000 250.0000 300.0000
|
|
#debye huckel a (adh)
|
|
-dh_a
|
|
0.4939 0.5114 0.5465 0.5995
|
|
0.6855 0.7994 0.9593 1.2180
|
|
#debye huckel b (bdh)
|
|
-dh_b
|
|
0.3253 0.3288 0.3346 0.3421
|
|
0.3525 0.3639 0.3766 0.3925
|
|
-bdot
|
|
0.0394 0.0410 0.0438 0.0460
|
|
0.0470 0.0470 0.0340 0.0000
|
|
#cco2 (coefficients for the Drummond (1981) polynomial)
|
|
-co2_coefs
|
|
-1.0312 0.0012806
|
|
255.9 0.4445
|
|
-0.001606
|
|
|
|
|
|
Fixed bug in basic interpreter. A number like "..524" would
|
|
cause an infinite loop.
|
|
|
|
Added function SURF to Basic.
|
|
SURF("element", "surface") gives the amount of
|
|
element sorbed on "surface". "surface"
|
|
should be the surface name, not the
|
|
surface-site name (that is, no underscore).
|
|
|
|
Fixed option to "runge_kutta" from "runge-kutta" to match
|
|
documentation for KINETICS.
|
|
|
|
Fixed UO2+2 and Mn+2 reaction stoichiometry for Hfo surface complexation
|
|
in wateq4f.dat.
|
|
|
|
Added option for an equilibrium-phase to dissolve only.
|
|
"dis" is added at the end of a line defining an equilibrium-
|
|
phase. No data fields may be omitted. Should not
|
|
be used when adding an alternative reaction.
|
|
Example:
|
|
EQUILIBRIUM_PHASES
|
|
Dolomite 0.0 0.001 dis
|
|
R-K integration failed when only the final rate generated
|
|
negative concentrations.
|
|
Allow decimals in definition of secondary master species, for
|
|
example S(0.3).
|
|
Fixed bug if description was more than about 85 characters;
|
|
now allows about 400 characters.
|
|
Fixed bug for surface/exchange sites related to phases. Was
|
|
checking internal copies of surfaces/exchange with negative
|
|
numbers.
|
|
Fixed bug in quick prep that did not set the correct pointer
|
|
for gas phases.
|
|
Fixed segmentation fault that occurred if all elements for
|
|
phase-boundary mineral were not in the solution.
|
|
Only applied to a phase used to define concentration
|
|
in an initial solution calculation.
|
|
Added option to eliminate echo of input file in PRINT
|
|
data block. -echo_input T/F turns echoing on
|
|
and off. Default is on.
|
|
|
|
|
|
------------------------------------------------------------
|
|
Release 2.2: Date: Wed March 1, 2000
|
|
------------------------------------------------------------
|
|
|
|
Fixed bug in MIX if no solutions are defined.
|
|
Changed printout for surface.
|
|
Only gives net surface charge for diffuse layer
|
|
calculation.
|
|
Prints correct value for the surface charge and
|
|
surface charge density for diffuse-layer
|
|
calculation.
|
|
|
|
Added function EDL to Basic.
|
|
EDL("element", "surface") gives the amount of
|
|
element in the diffuse layer for "surface".
|
|
not including sorbed species. "surface" should
|
|
be the surface name, not the surface-site name
|
|
(that is, no underscore).
|
|
|
|
Special values for "element" include:
|
|
"charge" - gives surface charge, equivalents.
|
|
"sigma" - surface charge density, C/m**2.
|
|
"psi" - potential at the surface, Volts.
|
|
"water" - mass of water in the diffuse layer, kg.
|
|
Changed distribution to be more consistent with other USGS
|
|
water-resources applications.
|
|
|
|
------------------------------------------------------------
|
|
Release 2.1: Date: Wed January 19, 2000
|
|
------------------------------------------------------------
|
|
|
|
Added additional #ifdef's for PhreeqcI.
|
|
Fixed problem with formats for USER_PUNCH and
|
|
others with Microsoft C++ 3 digit
|
|
exponents.
|
|
|
|
Initial Release 2.0: Date: Wed December 15, 1999
|
|
|
|
Version: C_54 = Version 2.0
|
|
|