diff --git a/phreeqc3-doc/CMakeLists.txt b/phreeqc3-doc/CMakeLists.txt new file mode 100644 index 00000000..6b87c033 --- /dev/null +++ b/phreeqc3-doc/CMakeLists.txt @@ -0,0 +1,23 @@ +SET(phreeqc_ROOT +NOTICE +README +RELEASE +) + +SET(phreeqc_DOC +Phreeqc_2_1999_manual.pdf +Phreeqc_3_2013_manual.pdf +phreeqc3.chm +phreeqc.txt +wrir02-4172.pdf +) + +IF(WIN32) + foreach(file ${phreeqc_ROOT}) + install (FILES ${file} DESTINATION ${CMAKE_INSTALL_PREFIX} RENAME ${file}.txt) + endforeach() +ELSE() + install (FILES ${phreeqc_ROOT} DESTINATION ${CMAKE_INSTALL_DOCDIR}) +ENDIF() + +install (FILES ${phreeqc_DOC} DESTINATION ${CMAKE_INSTALL_DOCDIR}) diff --git a/phreeqc3-doc/Makefile.am b/phreeqc3-doc/Makefile.am new file mode 100644 index 00000000..7c58db47 --- /dev/null +++ b/phreeqc3-doc/Makefile.am @@ -0,0 +1,16 @@ +EXTRA_DIST = CMakeLists.txt + +# Docs +# + +dist_doc_DATA = $(DOCS) + +DOCS= \ + NOTICE \ + Phreeqc_2_1999_manual.pdf \ + Phreeqc_3_2013_manual.pdf \ + phreeqc.txt \ + phreeqc3.chm \ + README \ + RELEASE \ + wrir02-4172.pdf diff --git a/phreeqc3-doc/NOTICE.TXT b/phreeqc3-doc/NOTICE.TXT new file mode 100644 index 00000000..cba2cf48 --- /dev/null +++ b/phreeqc3-doc/NOTICE.TXT @@ -0,0 +1,51 @@ + User Rights Notice + +This software and related material (data and (or) documentation), +contained in or furnished in connection with PHREEQC, are made available +by the U.S. Geological Survey (USGS) to be used in the public interest +and in the advancement of science. You may, without any fee or cost, +use, copy, modify, or distribute this software, and any derivative works +thereof, and its supporting documentation, subject to the following +restrictions and understandings. + +If you distribute copies or modifications of the software and related +material, make sure the recipients receive a copy of this notice and +receive or can get a copy of the original distribution. If the software +and (or) related material are modified and distributed, it must be +made clear that the recipients do not have the original and they must +be informed of the extent of the modifications. For example, modified +files must include a prominent notice stating the modifications made, the +author of the modifications, and the date the modifications were made. +This restriction is necessary to guard against problems introduced in the +software by others, reflecting negatively on the reputation of the USGS. + +The software is public property and you therefore have the right to +the source code, if desired. + +You may charge fees for distribution, warranties, and services provided +in connection with the software or derivative works thereof. The name +USGS can be used in any advertising or publicity to endorse or promote +any products or commercial entity using this software if specific +written permission is obtained from the USGS. + +The user agrees to appropriately acknowledge the authors and the USGS +in publications that result from the use of this software or in products +that include this software in whole or in part. + +Although this software program has been used by the U.S. Geological +Survey (USGS), no warranty, expressed or implied, is made by the USGS +or the U.S. Government as to the accuracy and functioning of the +program and related program material nor shall the fact of distribution +constitute any such warranty, and no responsibility is assumed by the +USGS in connection therewith. + +The authors, the USGS, and the United States Government are not +obligated to provide the user with any support, consulting, training or +assistance of any kind with regard to the use, operation, and +performance of this software nor to provide the user with any updates, +revisions, new versions, or "bug fixes." + +The user assumes all risk for any damages whatsoever resulting from +loss of use, data, or profits arising in connection with the access, +use, quality, or performance of this software. + diff --git a/phreeqc3-doc/Phreeqc_2_1999_manual.pdf b/phreeqc3-doc/Phreeqc_2_1999_manual.pdf new file mode 100644 index 00000000..6e40e056 Binary files /dev/null and b/phreeqc3-doc/Phreeqc_2_1999_manual.pdf differ diff --git a/phreeqc3-doc/Phreeqc_3_2013_manual.pdf b/phreeqc3-doc/Phreeqc_3_2013_manual.pdf new file mode 100644 index 00000000..ab6fac82 Binary files /dev/null and b/phreeqc3-doc/Phreeqc_3_2013_manual.pdf differ diff --git a/phreeqc3-doc/README.IPhreeqc.TXT b/phreeqc3-doc/README.IPhreeqc.TXT new file mode 100644 index 00000000..685d41b5 --- /dev/null +++ b/phreeqc3-doc/README.IPhreeqc.TXT @@ -0,0 +1,425 @@ +README + + IPhreeqc--Modules Based on the Geochemical Model PHREEQC for Use + in Scripting and Programming Languages + +This file describes how to compile the IPhreeqc library and use +it in C++, C, and Fortran programs. The library may be compiled +after generating either a Visual Studio solution for Windows with +CMake or a Makefile for Linux with configure. All source and +compilation-related files are available at the following web site: + +http://wwwbrr.cr.usgs.gov/projects/GWC_coupled/phreeqc/index.html. + +----------------------------------------------------------------------------------- +TABLE OF CONTENTS +----------------------------------------------------------------------------------- + + A. Distribution file + B. Documentation + C. Installing Windows COM versions + D. Downloading and unzipping the distribution file + E. Linux compiling, testing, and installing the IPhreeqc library + F. Windows compiling, testing, and installing the IPhreeqc library + G. Using the library + H. Contacts + +----------------------------------------------------------------------------------- +A. Distribution file +----------------------------------------------------------------------------------- + + The following distribution packages (containing the software, + compilation-related files, and an advection example in + C++, C, and Fortran) are available for Linux and Windows: + + IPhreeqcCOM-@VERSION@-@REVISION@-win32.msi Windows + IPhreeqcCOM-@VERSION@-@REVISION@-x64.msi Windows + iphreeqc-@VERSION@-@REVISION@.zip Windows + iphreeqc-@VERSION@-@REVISION@.tar.gz Linux + +----------------------------------------------------------------------------------- +B. Documentation +----------------------------------------------------------------------------------- + + Descriptions and examples of IPhreeqc methods for C++, C, and Fortran + are available in HTML format in the doc directory of the distribution. + + Charlton, S.R., and Parkhurst, D.L., 2011, Modules based on the geochemical model + PHREEQC for use in scripting and programming languages: Computers & Geosciences, + vol. 37, no. 10, p. 1653-1663. + + *The following two user's guides are available in electronic format. Portable + Document Format (PDF) files are included in the doc subdirectory of all + PHREEQC program distributions. + + Parkhurst, D.L., and Appelo, C.A.J., 2013, Description of input and examples + for PHREEQC version 3--A computer program for speciation, batch-reaction, + one- dimensional transport, and inverse geochemical calculations: U.S. + Geological Survey Techniques and Methods, book 6, chap. A43, 497 p. + http://pubs.usgs.gov/tm/06/a43/. + + Parkhurst, D.L., and Appelo, C.A.J., 1999, User's guide to PHREEQC (Version + 2)-- A computer program for speciation, batch-reaction, one-dimensional + transport, and inverse geochemical calculations: U.S. Geological Survey + Water-Resources Investigations Report 99-4259, 312 p. + http://pubs.er.usgs.gov/publication/wri994259. + + *The following two reports document the theory and implementation of + isotopes in PHREEQC. Portable Document Format (PDF) of Thorstenson and + Parkhurst (2002) is included in the doc subdirectory of the PHREEQC program + distribution. + + 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. + http://pubs.er.usgs.gov/publication/wri024172. + + Thorstenson, D.C., and Parkhurst, D.L., 2004, Calculation of individual isotope + equilibrium constants for geochemical reactions: Geochimica et Cosmochimica + Acta, v. 68, no. 11, p. 2449-2465. + + *Brief description of the program PhreeqcI. + + Charlton, S.R., and Parkhurst, D.L., 2002, PhreeqcI--A graphical user interface + to the geochemical model PHREEQC: U.S. Geological Survey Fact Sheet + FS-031-02, 2 p. + +----------------------------------------------------------------------------------- +C. Installing Windows COM versions +----------------------------------------------------------------------------------- + + For 64-bit computers, download both 32- and 64-bit versions: + + IPhreeqcCOM-@VERSION@-@REVISION@-win32.msi + IPhreeqcCOM-@VERSION@-@REVISION@-x64.msi + + Double click on each .msi file and follow the instructions. + + IPhreeqcCOM is installed and ready to use for 32- and 64-bit applications. + + To test the COM, you can open the Excel file and run the "runphreeqc" macro + (view->macros): + C:\Program Files\USGS\IPhreeqcCOM 3.2.0-9755\examples\com\excel\runphreeqc.xls + +----------------------------------------------------------------------------------- +D. Downloading and unzipping the distribution file +----------------------------------------------------------------------------------- + + Follow the steps using gunzip, 7zip, or other compression program that can unzip a tar.gz/zip file: + + Steps in extracting files Explanation + ---------------------------------------- ----------------------------------- + gunzip iphreeqc-@VERSION@-@REVISION@.tar.gz Uncompress the tar.gz file. + tar -xvpof iphreeqc-@VERSION@-@REVISION@.tar Extract files from the tar file. + + The directory iphreeqc-@VERSION@-@REVISION@ is created when the files are + extracted; if this directory already exists, you may want to delete or rename + it before extracting the files. The following directory structure is created + (the contents of each directory are shown to the right): + + iphreeqc-@VERSION@-@REVISION@ Source code and configure/CMake files + ./config More configure files + ./database Database files for PHREEQC + ./doc Documentation files + ./examples Advection example for Fortran, C++, and C + ./src Source code for IPhreeqc + ./tests Tests that check that C++, C, and Fortran(optional) + are able to compile, link and run. + + Note: A compiled executable is not included in the distribution. + +----------------------------------------------------------------------------------- +E. Linux compiling, testing, and installing the IPhreeqc library +----------------------------------------------------------------------------------- + + In general, to compile the software, you will need: + + (a) a C++ compiler, and + (b) knowledge of configure, Make, + the compiler, and the Linux operating system. + + A Makefile is generated by configure, and the Makefile is used to + compile, test, and install the software. + + E.1. Change directory to the directory that was extracted from the tar file. + + cd iphreeqc-@VERSION@-@REVISION@ + + E.2. Make a directory, for example, build. + + mkdir build + + E.3. Change directory to build. + + cd build + + E.4. Run configure + + Many of the options for configure can be seen by typing: + + ../configure --help + + Most common options: + --prefix=dir specifies the directory for installation of the + library. Default is /usr/local, $HOME would install + to your home directory. + --enable-fortran-test=yes specifies that you do want to include the Fortran test + files during "make check", which compiles, links, and runs programs + that use IPhreeqc. + + Run configure as follows: + + ../configure [options] + + E.5. Compile the IPhreeqc library + + make [-j 4] + + Optionally, use -j n--where n is the number of compilations make runs in parallel. + + E.6. Compile and run the test cases. The files in the directory tests are compiled + and linked to the IPhreeqc library. The Fortran files are optionally included + (--enable-fortran-test configure option). + + make check + + E.7. Install the IPhreeqc library. By default the program is installed in /usr/local/bin + and /usr/local/share/doc/iphreeqc. Alternatively, the directory defined by --prefix + in the configure command is used. + + make install + + The locations of various files are given for default installation (no + --prefix definition). + + Libraries: + /usr/local/lib/libiphreeqc.a (Static library) + /usr/local/lib/libiphreeqc.so (Shared object library) + /usr/local/lib/libiphreeqc.la (libtool library file) + + Include files: + C++ and C headers for user's code: + /usr/local/include/IPhreeqc.h (C header) + /usr/local/include/IPhreeqc.hpp (C++ header) + + Optionally, user's code may need one or more of the following: + /usr/local/include/Var.h + /usr/local/include/IPhreeqcCallbacks.h + /usr/local/include/Keywords.h + /usr/local/include/PHRQ_io.h + + Documentation: + /usr/local/share/doc/iphreeqc/IPhreeqc.pdf + /usr/local/share/doc/iphreeqc/html/index.html (IPhreeqc API) + /usr/local/share/doc/iphreeqc/RELEASE (Release notes) + /usr/local/share/doc/iphreeqc/README (this readme file) + /usr/local/share/doc/iphreeqc/NOTICE (User rights notice) + + Databases: + /usr/local/share/doc/iphreeqc/database + Amm.dat + frezchem.dat + iso.dat + llnl.dat + minteq.dat + minteq.v4.dat + phreeqc.dat + pitzer.dat + sit.dat + wateq4f.dat + + Advection example for Fortran, C++, and C: + /usr/local/share/doc/iphreeqc/examples + + Fortran interface + /usr/local/share/doc/iphreeqc/src/IPhreeqc_interface.F90 + + +----------------------------------------------------------------------------------- +F. Windows compiling, testing, and installing the IPhreeqc library +----------------------------------------------------------------------------------- + + In general, to compile the IPhreeqc library, you will need: + + (a) CMake (build process manager) + (b) a C++ compiler, + (c) familiarity with the compiler and the Windows operating system. + + F.1. Download and install CMake + + CMake can be downloaded from http://www.cmake.org/. If you download + the executable, CMake is installed when you execute it. + + F.2 Generate a Visual Studio solution + + CMake has many options other than Visual Studio, but here we assume + that you are using some version of Visual Studio. On the first use + of CMake, it may be necessary to close all Visual Studio instances. + + Open CMake. Fill in the top two lines. + Where is the source code: + The top level directory (ie c:/iphreeqc-@VERSION@-@REVISION@). + Where to build the binaries: + A new directory. It is suggested that the name + of the directory include the characteristics of + the library that is built, including the VS + version, 32/64 bit, dll/lib. + for example, vs2012_64_dll. + + Click Configure. From the pulldown menu select the 64-bit version + for your Visual Studio. Normally, the default radio button should + be sufficient. Click Finish. + + Options in the top panel: + (1) BUILD_SHARED_LIBS--If checked, .dll files will be + created. If not checked, a .lib file will be created. + Note that .dll files have a .lib file associated with them, + but it is not the same .lib generated when + BUILD_SHARED_LIBS is not checked. + (2) CMAKE_INSTALL_PREFIX--Sets the the install directory where the + library and header files will be saved. It is suggested that + an INSTALL directory be defined inside the directory chosen + for the binaries. + (3) BUILD_CLR_LIBS--If checked, will compile the CLR version of the + library. This will enable the charting capabilities of + phreeqc through the use of Zedgraph. This option is only + available if BUILD_SHARED_LIBS is checked. + (4) IPHREEQC_ENABLE_MODULE--Uncheck if you want to + use the deprecated (old-style) include file (IPhreeqc.f90.inc + or IPhreeqc.f.inc) to define IPhreeqc in Fortran files. + Leave checked to use IPhreeqc as a Fortran module (USE IPhreeqc), + which is recommended. Leave checked if not using Fortran. + (5) IPHREEQC_FORTRAN_TESTING--Sets whether the test calculations + (tests directory) will include Fortran test files. A Fortran + compiler is required. + + Click Configure until the screen is not red. If the screen remains + red, you will have to deal with the CMake error messages. + + Click Generate. + + You should now have a Visual Studio solution file (.sln) in the + directory chosen for the binaries (second line of CMake screen). + At any point, you can delete the contents of the directory and + start over. You can make solutions for different Visual Studios, + or different options in other directories. + + F.3. Compile and install IPhreeqc + + Open the Visual Studio solution in the build directory defined in CMake. + + The default configuration is "Debug". If you want a release libraries + (or dlls) and examples, change the configuration to "Release". + + Build ALL_BUILD. IPhreeqc is compiled. + + Build RUN_TESTS. Programs that test IPhreeqc are compiled and run, + and optionally (CMake IPHREEQC_FORTRAN_TESTING option) the Fortran test + project. + + + Build INSTALL. The libraries, header files, Fortran module source + files, phreeqc database files, and documentation are installed in the + install directory selected in CMake. + + Install\library directory (lib or dll) may include: + IPhreeqc.lib (Release) + IPhreeqcd.lib (Debug) + IPhreeqcmsr.lib (MinSizeRel) + IPhreeqcrwdi.lib (RelWithDebInfo) + IPhreeqc.dll (Release Shared) + IPhreeqcd.dll (Debug Shared) + IPhreeqcmsr.dll (MinSizeRel Shared) + IPhreeqcrwdi.dll (RelWithDebInfo Shared) + ZedGraph.dll (CLR/Charting) + + Install\include files: + C++ and C headers for user's code: + IPhreeqc.hpp (C++ header) + IPhreeqc.h (C header) + + Optionally, you may need one or more of the following: + Var.h + IPhreeqcCallbacks.h + Keywords.h + PHRQ_io.h + + Install\src files: + To use IPhreeqc in Fortran: + IPhreeqc_interface.F90 + + Install\Database files: + Amm.dat + frezchem.dat + iso.dat + llnl.dat + minteq.dat + minteq.v4.dat + phreeqc.dat + pitzer.dat + sit.dat + wateq4f.dat + + Install\doc files: + IPhreeqc.pdf IPhreeqc journal article + html\index.html IPhreeqc API documentation + NOTICE User rights notice + README This readme file + RELEASE Release notes + + Install\examples files: + c, cpp, fortran Advection example + + + Note: In order to use the CLR version (Charting) the Zedgraph.dll file + must be registered either by installing the Phreeqc or the PhreeqcI MSI, + or through the use of the Visual Studio Tool gacutil. + +----------------------------------------------------------------------------------- +G. Using the library +----------------------------------------------------------------------------------- + + G.1. C++ + + In C++, you will include the IPhreeqc.hpp header file and + create an IPhreeqc instance: + + #include "IPhreeqc.hpp" + IPhreeqc iphreeqc; + + or + + IPhreeqc *iphreeqc = new IPhreeqc(); + + You will need to link to the IPhreeqc.lib that you installed. + + G.2. C + + In C, you will include the C interface header, IPhreeqc.h, and + create an IPhreeqc instance. + + #include "IPhreeqc.h" + int id; + id = CreateIPhreeqc(); + + You will need to link to the IPhreeqc.lib that you installed. + + G.3. Fortran + + In Fortran, you will need to include the source file IPhreeqc_interface.F90 + in your project files. This file defines the IPhreeqc Fortran module. + + USE IPhreeqc + INTEGER(KIND=4) id + id = CreateIPhreeqc() + + You will need to link to the IPhreeqc.lib that you installed. + +----------------------------------------------------------------------------------- +H. CONTACTS +----------------------------------------------------------------------------------- + +Inquiries about this software distribution should be directed to: + +e-mail: h2osoft@usgs.gov or dlpark@usgs.gov + diff --git a/phreeqc3-doc/README.Linux.txt.xxx b/phreeqc3-doc/README.Linux.txt.xxx new file mode 100644 index 00000000..65428961 --- /dev/null +++ b/phreeqc3-doc/README.Linux.txt.xxx @@ -0,0 +1,458 @@ +README.TXT + + PHREEQC + + A program for speciation, batch-reaction, one-dimensional + transport, and inverse geochemical calculations + +This file describes batch versions of PHREEQC version 3 for Linux. The @M32@ +(32-bit) and @M64@ (64-bit) versions, referred to as "Linux" versions, contain +an executable file compiled for Linux, whereas the plain .tar.gz version, +referred to as the "source" version, has no executable file, but has the files +necessary to configure and compile PHREEQC on any Unix operating system. + +Instructions for installing, executing, and testing on Linux operating +systems are provided below. After installation, see the root or doc directory +of the PHREEQC installation for summary information on PHREEQC in phreeqc.txt +and the new features and bug fixes in RELEASE.TXT. + +No graphical user interface exits for Linux. (For Windows, a graphical user +interface, PhreeqcI, is available at +http://wwwbrr.cr.usgs.gov/projects/GWC_coupled/phreeqc/index.html and a +Notepad++ interface is available at http://www.hydrochemistry.eu/downl.html.) + + + TABLE OF CONTENTS + + A. Distribution files + B. Documentation + C. Linux versions (with executable) + C.1. Extracting files + C.2. Running + C.2. Testing + D. Source version (for Unix compilation) + D.1. Extracting files + D.2. Compiling, testing, installing + D.3. Running + E. Description of test cases + F. Contacts + + +A. Distribution files + + The following distribution packages (containing the software, test data + sets, and information files) are currently available for Linux systems: + +phreeqc-@VERSION@-@REVISION@.@M32@.tar.gz--Compiled with @GCC_VER@ + kernel @KERNEL_VER@ +phreeqc-@VERSION@-@REVISION@.@M64@.tar.gz--Compiled with @GCC_VER_64@ + kernel @KERNEL_VER_64@ +phreeqc-@VERSION@-@REVISION@.tar.gz --Source code, but no executable + + +B. Documentation + + *The following two user's guides are available in electronic format. Portable + Document Format (PDF) files are included in the doc subdirectory of the + PHREEQC program distribution. + +Parkhurst, D.L., and Appelo, C.A.J., 2013, Description of input and examples + for PHREEQC version 3--A computer program for speciation, batch-reaction, + one- dimensional transport, and inverse geochemical calculations: U.S. + Geological Survey Techniques and Methods, book 6, chap. A43, 497 p. + http://pubs.usgs.gov/tm/06/a43/. + +Parkhurst, D.L., and Appelo, C.A.J., 1999, User's guide to PHREEQC (Version + 2)-- A computer program for speciation, batch-reaction, one-dimensional + transport, and inverse geochemical calculations: U.S. Geological Survey + Water-Resources Investigations Report 99-4259, 312 p. + http://pubs.er.usgs.gov/publication/wri994259. + + + *The following two reports document the theory and implementation of + isotopes in PHREEQC. Portable Document Format (PDF) of Thorstenson and + Parkhurst (2002) is included in the doc subdirectory of the PHREEQC program + distribution. + +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. + http://pubs.er.usgs.gov/publication/wri024172. + +Thorstenson, D.C., and Parkhurst, D.L., 2004, Calculation of individual isotope + equilibrium constants for geochemical reactions: Geochimica et Cosmochimica + Acta, v. 68, no. 11, p. 2449-2465. + + *Brief description of the program PhreeqcI. + +Charlton, S.R., and Parkhurst, D.L., 2002, PhreeqcI--A graphical user interface + to the geochemical model PHREEQC: U.S. Geological Survey Fact Sheet + FS-031-02, 2 p. + + +C. Linux versions (with executable) + +Compressed tar files, phreeqc-@VERSION@-@REVISION@.Linux.tar.gz and +phreeqc-@VERSION@-@REVISION@.Linux.x86_64.tar.gz, are used to distribute the +source code and the compiled executable for Linux operating systems. The 32-bit +Linux executable file is compiled with +@GCC_VER@ kernel @KERNEL_VER_64@ +and the 64-bit Linux executable file is compiled with +@GCC_VER_64@ kernel @KERNEL_VER@. +All of the files needed to run and test PHREEQC are contained in each tar file. +(If you want to compile the program yourself, the file +phreeqc-@VERSION@-@REVISION@.tar.gz contains all of the files needed to +configure, compile, test, and install PHREEQC. See Section D for details.) + + +C.1. Extracting files + +Follow the steps below to extract the files from a distribution tar +file. + + Steps in extracting files Explanation + ---------------------------------------- ----------------------------------- + For the 32-bit version: + + gunzip phreeqc-@VERSION@-@REVISION@.i686.tar.gz Uncompress the tar.gz file. + + tar -xvpof phreeqc-@VERSION@-@REVISION@.i686.tar Extract files from the tar file. + + or, for the 64-bit version: + + gunzip phreeqc-@VERSION@-@REVISION@.x86_64.tar.gz Uncompress the tar.gz file. + + tar -xvpof phreeqc-@VERSION@-@REVISION@.x86_64.tar Extract files from the tar file. + +The directory phreeqc-@VERSION@-@REVISION@ is created when the files are +extracted; if this directory already exists, you may want to delete or rename +it before extracting the files. + +The following directory structure is created (the contents of each +directory are shown to the right): + + phreeqc-@VERSION@-@REVISION@ Files NOTICE.TXT, RELEASE, and (this file) README + `--bin Compiled executable + `--database Database files (one is required for execution) + `--doc Documentation files + `--examples Examples from user's guide--used in verification tests + `--test Scripts to run verification tests + +Notes: It is recommended that no user files be kept in the PHREEQC directory + structure. If you plan to put files in the PHREEQC directory + structure, do so only by creating subdirectories. + + +C.2. Running + +If PHREEQC has been installed in a directory included in the users' PATH, the +program can be executed with any of the commands below. + + command to execute PHREEQC explanation + ----------------------------- ----------------------------------------- + phreeqc The program will query for each of the + needed files. + + phreeqc input The input file is named input, the output + file will be named input.out and the + default database file will be used. + + phreeqc input output The input file is named input, the output + file is named output, and the default + database file will be used. + + phreeqc input output database All file names are specified explicitly. + + phreeqc input output database screen_output + + All file names are specified explicitly, + and screen output is directed to the + file screen_output. + +If the directory containing the executable file is not included in the PATH +environmental variable, you can (1) use the complete path name to the +executable in place of "phreeqc" above, or (2) copy the executable to the +current directory. The executable is phreeqc-@VERSION@-@REVISION@/bin/phreeqc. +In addition a database file may need to be in the current directory. +Phreeqc.dat is generally used by default and is found at +phreeqc-@VERSION@-@REVISION@/database/phreeqc.dat. + +The shell variable PHREEQC_DATABASE can be used to specify the default database. +In the C shell, this variable can be set (assuming the tar file was extracted in +the directory /home/jdoe) with a command such as: + + setenv PHREEQC_DATABASE /home/jdoe/phreeqc-@VERSION@-@REVISION@/database/phreeqc.dat + +In the Bourne or Korn shell, this variable can be set with the command: + + export PHREEQC_DATABASE=/home/jdoe/phreeqc-@VERSION@-@REVISION@/database/phreeqc.dat + +The shell variable can be set permanently by including the appropriate command +in a file that is read when the shell is initiated, frequently $HOME/.login or +$HOME/.profile. If this shell variable is not set, the default database is +assumed to be phreeqc.dat in the current directory. + + +C.3. Testing + +Input files are provided to verify that the program is correctly installed and +running on the system. The tests execute the examples presented in the user's +guide, which demonstrate most of the program's capabilities. The directory +phreeqc-@VERSION@-@REVISION@/examples contains the input data for each test. + +Provided that the directory phreeqc-@VERSION@-@REVISION@/test is a directory where +you have write access; the examples can be run from that directory. +Change to the directory and type the command: + + ./test.sh [start [stop]] + +where: start = the number of the first test to perform, default = 1 + stop = the number of the last test to perform, default = 22 + +For example: + + command what happens + ---------------------------------- -------------------------------- + ./test.sh runs all of the tests + ./test.sh 1 1 runs the first test + ./test.sh 2 3 runs tests 2 and 3 + ./test.sh 4 runs test 4 through the last test + + +After the tests are completed, the results can be found in the test directory. + +To clean up after the tests, type the command: + + ./clean.sh + + +D. Source version (for compilation) + +A compressed tar file, phreeqc-@VERSION@-@REVISION@.tar.gz, is used to +distribute the source code and other files necessary to compile, test, install, +and run PHREEQC on Unix operating systems. (A compiled executable for Linux is +distributed in the Linux versions. See section C.) + +D.1. Extracting files + +Follow the steps below to extract the files from a distribution tar +file. + + Steps in extracting files Explanation + ---------------------------------------- ----------------------------------- + gunzip phreeqc-@VERSION@-@REVISION@.source.tar.gz Uncompress the tar.gz file. + + tar -xvpof phreeqc-@VERSION@-@REVISION@.source.tar Extract files from the tar file. + +The directory phreeqc-@VERSION@-@REVISION@ is created when the files are +extracted; if this directory already exists, you may want to delete or rename +it before extracting the files. + +The following directory structure is created (the contents of each directory +are shown to the right): + + phreeqc-@VERSION@-@REVISION@ Files related to configure + `--config More configure files + `--database Database files required during execution + `--doc Documentation files + `--examples Examples from user's guide--used in verification tests + `--src Source code + `--test Files used to test the compilation + +Notes: (a) A compiled executable is not included in the source + distribution. + (b) It is recommended that no user files be kept in the PHREEQC + directory structure. + +D.2. Compiling, testing, installing + +No support beyond this README file is provided for users compiling their own +versions of the software. In general, to compile the software, you will need: + + (a) a C++ compiler, and + (b) a minimal level of knowledge of configure, Make, the compiler, and + the Linux operating system. + +A Makefile can be generated by configure, and the Makefile can be used to +compile, test, and install the software. + +To compile, test, and install PHREEQC, do the following: + +1. Change directory to the directory that was extracted from the tar file. + + cd phreeqc-@VERSION@-@REVISION@ + +2. Make a directory, for example, Release. + + mkdir Release + +3. Change directory to Release. + + cd Release + +4. Run configure + + ../configure + + Many of the options for configure can be seen by typing: + + ../configure --help + +5. Compile the program + + make + +6. Check that compiled version runs the test cases. Check may take several + minutes. + + make check + + Results of running the test cases are stored in the directory + + Release/test + +7. Install the program. By default the program is installed in /usr/local/bin + and /usr/local/share/doc/phreeqc. You can specify an installation prefix + other than "/usr/local" by using the prefix option, prefix=$HOME for + example. + + make install + + The locations of various files are given (a) for default installation (make + install), and (b) if prefix is defined to be $HOME (make install prefix= + $HOME). $HOME is used to represent your home directory in the following + pathnames. + + Executable: + (a) /usr/local/bin/phreeqc + (b) $HOME/bin/phreeqc + + Documentation (PDFs, README, NOTICE, phreeqc.txt): + + (a) /usr/local/share/doc/phreeqc + (b) $HOME/share/doc/phreeqc + + Databases: + + (a) /usr/local/share/doc/phreeqc/database + (b) $HOME/share/doc/phreeqc/database + + Example input files: + + (a) /usr/local/share/doc/phreeqc/examples + (b) $HOME/share/doc/phreeqc/examples + + +D.3. Running + +If PHREEQC has been installed in a directory included in the users' PATH, the +program can be executed with any of the commands below. + + command to execute PHREEQC explanation + ----------------------------- ----------------------------------------- + phreeqc The program will query for each of the + needed files. + + phreeqc input The input file is named input, the output + file will be named input.out and the + default database file will be used. + + phreeqc input output The input file is named input, the output + file is named output, and the default + database file will be used. + + phreeqc input output database All file names are specified explicitly. + + phreeqc input output database screen_output + + All file names are specified explicitly, + and screen output is directed to the + file screen_output. + +For Linux, if the "make install" command described above has not been executed, +the executable may be copied to the current directory. In addition the default +database file, phreeqc.dat, may need to be in the current directory. +Phreeqc.dat is in phreeqc-@VERSION@-@REVISION@/database/phreeqc.dat. + +The shell variable PHREEQC_DATABASE can be used to specify the default +database. In the C shell, this variable can be set (assuming your database +is named /home/jdoe/local/project/mydata.dat) with the command: + + setenv PHREEQC_DATABASE /home/jdoe/local/project/mydata.dat + +In the Bourne or Korn shell, this variable can be set with the command: + + export PHREEQC_DATABASE=/home/jdoe/local/project/mydata.dat + +The shell variable can be set permanently by including the appropriate command +in a file that is read when the shell is initiated, frequently $HOME/.login or +$HOME/.profile. If this shell variable is not set, the default database is +assumed to be phreeqc.dat in the current directory. + + +E. Description of test cases + +The tests are described in the table below, where 'test' corresponds +to the example number in the PHREEQC manual. + +test description of test and files +---- -------------------------------------------- + 1 Add uranium and speciate seawater + + 2 Temperature dependence of solubility + of gypsum and anhydrite + + 3 Mixing seawater and groundwater + + 4 Evaporation and solution volume + + 5 Add oxygen, equilibrate with pyrite, calcite, and goethite. + + 6 Reaction path calculations with K-feldspar to phase boundaries + + 7 Organic decomposition with fixed-pressure and + fixed-volume gas phases + + 8 Sorption of zinc on hydrous iron oxides + + 9 Kinetically controlled oxidation of ferrous iron. + Decoupled valence states of iron. + + 10 Solid solution of strontianite and aragonite. + + 11 Transport and ion exchange. + + 12 Advective and diffusive transport of heat and solutes. Constant boundary + condition at one end, closed at other. The problem is designed so that + temperature should equal Na-conc (in mmol/kgw) after diffusion. + + 13 1D Transport in a Dual Porosity Column With Cation Exchange + + 14 Transport with equilibrium_phases, exchange, and surface reactions + + 15 1D Transport: Kinetic Biodegradation, Cell Growth, and Sorption + + 16 Inverse modeling of Sierra springs + + 17 Inverse modeling of Black Sea water evaporation + + 18 Inverse modeling of Madison aquifer + + 19 Modeling Cd+2 sorption with Linear, Freundlich, and Langmuir isotherms, + and with a deterministic distribution of sorption sites for organic + matter, clay minerals, and iron oxyhydroxides + + 20 Distribution of isotopes between water and calcite + + 21 Modeling diffusion of HTO, 36Cl-, 22Na+, and Cs+ in a radial diffusion + cell + + 22 Modeling gas solubilities: CO2 at high pressures + + +F. CONTACTS + +Inquiries about this software distribution should be directed to: + +e-mail: h2osoft@usgs.gov or dlpark@usgs.gov + diff --git a/phreeqc3-doc/README.Phreeqc.TXT b/phreeqc3-doc/README.Phreeqc.TXT new file mode 100644 index 00000000..5223bb15 --- /dev/null +++ b/phreeqc3-doc/README.Phreeqc.TXT @@ -0,0 +1,461 @@ +README.TXT + + PHREEQC + + A program for speciation, batch-reaction, one-dimensional + transport, and inverse geochemical calculations + +This file describes three batch versions of PHREEQC for Windows and Linux: (1) A +Windows version with a compiled executable, (2) A Windows version that has source +code that can be compiled with Visual Studio solutions that are generated by CMake, +and (3) A Linux version with source code that can be compiled by a Makefile generated +by configure. For Linux, there is no version with an executable, and compilation is +required. + +No graphical user interface exists for Linux. (For Windows, a graphical user +interface, PhreeqcI, is available at +http://wwwbrr.cr.usgs.gov/projects/GWC_coupled/phreeqc/index.html and a +Notepad++ interface is available at http://www.hydrochemistry.eu/downl.html.) + + + TABLE OF CONTENTS + + A. Distribution files + B. Documentation + C. Installing the Windows batch version of PHREEQC with executable + D. Compiling and installing the Windows batch version of PHREEQC without executable + E. Compiling and installing the Linux batch version of PHREEQC + F. Running PHREEQC + G. Description of test cases + H. Contacts + +----------------------------------------------------------------------------------- +A. Distribution files +----------------------------------------------------------------------------------- + + The following distribution packages of the batch version of PHREEQC are available + for Windows and Linux: + +phreeqc-@VERSION@-@REVISION@.msi 64-bit batch version with executable + compiled by using Microsoft Visual C++ 2005 +phreeqc-@VERSION@-@REVISION@.zip For compilation on Windows +phreeqc-@VERSION@-@REVISION@.tar.gz For compilation on Linux + +----------------------------------------------------------------------------------- +B. Documentation +----------------------------------------------------------------------------------- + + *The following two user's guides are available in electronic format. Portable + Document Format (PDF) files are included in the doc subdirectory of the + PHREEQC program distribution. + +Parkhurst, D.L., and Appelo, C.A.J., 2013, Description of input and examples + for PHREEQC version 3--A computer program for speciation, batch-reaction, + one- dimensional transport, and inverse geochemical calculations: U.S. + Geological Survey Techniques and Methods, book 6, chap. A43, 497 p. + http://pubs.usgs.gov/tm/06/a43/. + +Parkhurst, D.L., and Appelo, C.A.J., 1999, User's guide to PHREEQC (Version + 2)-- A computer program for speciation, batch-reaction, one-dimensional + transport, and inverse geochemical calculations: U.S. Geological Survey + Water-Resources Investigations Report 99-4259, 312 p. + http://pubs.er.usgs.gov/publication/wri994259. + + + *The following two reports document the theory and implementation of + isotopes in PHREEQC. Portable Document Format (PDF) of Thorstenson and + Parkhurst (2002) is included in the doc subdirectory of the PHREEQC program + distribution. + +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. + http://pubs.er.usgs.gov/publication/wri024172. + +Thorstenson, D.C., and Parkhurst, D.L., 2004, Calculation of individual isotope + equilibrium constants for geochemical reactions: Geochimica et Cosmochimica + Acta, v. 68, no. 11, p. 2449-2465. + + *Brief description of the program PhreeqcI. + +Charlton, S.R., and Parkhurst, D.L., 2002, PhreeqcI--A graphical user interface + to the geochemical model PHREEQC: U.S. Geological Survey Fact Sheet + FS-031-02, 2 p. + +----------------------------------------------------------------------------------- +C. Installing the Windows batch version of PHREEQC with executable +----------------------------------------------------------------------------------- + +Note: the person installing the software generally must have administrator +rights. + +To install the batch version, double-click phreeqc-@VERSION@-@REVISION@.msi to +execute the installation program and follow the directions on the screen. The batch +version is completely independent from the GUI version. + +Default installation is in the directory: +C:\Program Files\USGS\phreeqc-@VERSION@-@REVISION@-x64 + +which includes subdirectories: + bin\ + database\ + doc\ + examples\ + src\ + test\ + +The installation sets environmental variables PATH, PATH_PHREEQC, and PHREEQC_ROOT. + +----------------------------------------------------------------------------------- +D. Compiling and installing the Windows batch version of PHREEQC without executable +----------------------------------------------------------------------------------- + +In general, to compile the IPhreeqc library, you will need: + + (a) CMake (build process manager) + (b) a C++ compiler, + (c) familiarity with the compiler and the Windows operating system. + + +D.1. Download and install CMake + + CMake can be downloaded from http://www.cmake.org/. If you download the + executable, CMake is installed when you execute it. + +D.2. Unzip the distribution file phreeqc-@VERSION@-@REVISION@.zip + + The directory phreeqc-@VERSION@-@REVISION@ is created when the files are + extracted; if this directory already exists, you may want to delete or rename it + before extracting the files. + + The following directory structure is created (the contents of each directory are + shown to the right): + + phreeqc-@VERSION@-@REVISION@ Files related to CMake + `--database Database files required during execution + `--doc Documentation files + `--examples Examples from user's guide--used in verification tests + `--src Source code + `--test Files used to test the compilation + +D.3. Generate a Visual Studio solution + + CMake has many options other than Visual Studio, but here we assume that you are + using some version of Visual Studio. On the first use of CMake, it may be + necessary to close all Visual Studio instances. + + Open CMake. + + Fill in the top two lines: + Where is the source code: + The top level directory (ie c:/phreeqc-@VERSION@-@REVISION@). + Where to build the binaries: + A new directory. It is suggested that the name of the directory include + the characteristics of the library that is built, including the VS + version, and 32/64 bit, such as VS2012_x64. + + Click Configure. + From the pulldown menu of the cmake-gui popup, select the 64-bit version + for your Visual Studio. Normally, the default radio button should be + sufficient. Click Finish. + + Options in the top panel: + (1) CMAKE_INSTALL_PREFIX--Sets the the install directory where the + library and header files will be saved. It is suggested that + an INSTALL directory be defined inside the directory chosen + for the binaries. + + Click Configure until the screen is not red. If the screen remains red, you will + have to deal with the CMake error messages. + + Click Generate. + + You should now have a Visual Studio solution file (.sln) in the directory chosen + for the binaries (second line of CMake screen). At any point, you can delete the + contents of the directory and start over. You can make solutions for different + Visual Studios, or different options in other directories. + +D.4. Compile and install PHREEQC + + Open the Visual Studio solution in the build directory defined in CMake. + + The default configuration is "Debug". If you want a release libraries + (or dlls) and examples, change the configuration to "Release". + + Build ALL_BUILD. + IPhreeqc is compiled. + + Build RUN_TESTS. Programs that test IPhreeqc are compiled and run, and optionally + (CMake IPHREEQC_FORTRAN_TESTING option) the Fortran test project. + + Build INSTALL. + The executables, PHREEQC database files, and documentation are installed in the + install directory selected in CMake (denoted "install" in the following + descriptions). + + Install: + RELEASE.txt Release notes + README.txt this readme file + NOTICE.txt User rights notice + + Install\bin directory: + Subdirectories with executables + + Install\Database files: + Amm.dat + frezchem.dat + iso.dat + llnl.dat + minteq.dat + minteq.v4.dat + phreeqc.dat + pitzer.dat + sit.dat + wateq4f.dat + + Install\doc files: + Phreeqc_3_2013_manual.pdf Manual for PHREEQC version 3 + Phreeqc_2_1999_manual.pdf Manual for PHREEQC version 2 + phreeqc.txt Short explanation for PHREEQC + phreeqc3.chm Latest PHREEQC documentation + wrir02-4172.pdf Documenation of isotope calculations + + Install\examples files: + Input files for the 22 examples described in the version 3 manual + + Note: In order to use the CLR version (Charting) the Zedgraph.dll file must be + registered either by installing the Phreeqc batch version with executable or the + PhreeqcI MSI, or through the use of the Visual Studio Tool gacutil. + +----------------------------------------------------------------------------------- +E. Compiling and installing the Linux batch version of PHREEQC +----------------------------------------------------------------------------------- + +No support beyond this README file is provided for users compiling their own +versions of the software. In general, to compile the software, you will need: + + (a) a C++ compiler, and + (b) a minimal level of knowledge of configure, Make, the compiler, and + the Linux operating system. + +A Makefile can be generated by configure, and the Makefile can be used to +compile, test, and install the software. + +E.1. Extracting the files + + Follow the steps below to extract the files from a distribution tar file. + + Steps in extracting files Explanation + ---------------------------------------- ----------------------------------- + gunzip phreeqc-@VERSION@-@REVISION@.source.tar.gz Uncompress the tar.gz file. + + tar -xvpof phreeqc-@VERSION@-@REVISION@.source.tar Extract files from the tar file. + + The directory phreeqc-@VERSION@-@REVISION@ is created when the files are + extracted; if this directory already exists, you may want to delete or rename it + before extracting the files. + + The following directory structure is created (the contents of each directory are + shown to the right): + + phreeqc-@VERSION@-@REVISION@ Files related to configure + `--config More configure files + `--database Database files required during execution + `--doc Documentation files + `--examples Examples from user's guide--used in verification tests + `--src Source code + `--test Files used to test the compilation + +Notes: (a) A compiled executable is not included in the source distribution. + + (b) It is recommended that no user files be kept in the PHREEQC directory + structure. + +E.2. Change directory to the directory that was extracted from the tar file. + + cd phreeqc-@VERSION@-@REVISION@ + +E.3. Make a directory, for example, Release. + + mkdir Release + +E.4. Change directory to Release. + + cd Release + +E.5. Run configure + + Many of the options for configure can be seen by typing: + + ../configure --help + + The most common option: --prefix=dir specifies the directory for installation of + the library. Default is /usr/local, $HOME would install to your home directory. + + Run configure as follows: + + ../configure [options] + +E.6. Compile the program + + make [-j n] + + Optionally, use -j n--where n is the number of compilations make runs in parallel. + +E.7. Check that compiled version runs the test cases. + Check may take several minutes. + + make check + + Results of running the test cases are stored in the directory Release/test + +E.8. Install the program. + + By default the program is installed in /usr/local/bin and + /usr/local/share/doc/phreeqc. You can specify an installation prefix other than + "/usr/local" by using the prefix option, prefix=$HOME for example. + + make install + + The locations of various files are given below, where "install" is the + installation directory, /usr/local by default, or the value given by the --prefix + option to configure. + + Executable: + install/bin/phreeqc + + Documentation: + + install/share/doc/phreeqc + Phreeqc_3_2013_manual.pdf Manual for Phreeqc version 3 + Phreeqc_2_1999_manual.pdf Manual for Phreeqc version 2 + wrir02-4172.pdf Documenation of isotope calculations + phreeqc.txt Short explanation for Phreeqc + RELEASE Release notes + README this readme file + NOTICE User rights notice + phreeqc3.chm Compiled HTML documentation + + Databases: + + install/share/doc/phreeqc/database + Amm.dat + frezchem.dat + iso.dat + llnl.dat + minteq.dat + minteq.v4.dat + phreeqc.dat + pitzer.dat + sit.dat + wateq4f.dat + + Example input files: + + install/share/doc/phreeqc/examples + Input files for 22 examples documented in the Phreeqc 3 manual + +----------------------------------------------------------------------------------- +F. Running PHREEQC +----------------------------------------------------------------------------------- + +If PHREEQC has been installed in a directory included in the users' PATH, the +program can be executed from a command line with any of the commands below. + + command to execute PHREEQC explanation + ----------------------------- ----------------------------------------- + phreeqc The program will query for each of the + needed files. + + phreeqc input The input file is named input, the output + file will be named input.out and the + default database file will be used. + + phreeqc input output The input file is named input, the output + file is named output, and the default + database file will be used. + + phreeqc input output database All file names are specified explicitly. + + phreeqc input output database screen_output + + All file names are specified explicitly, + and screen output is directed to the + file screen_output. + +If phreeqc is not located in a directory in PATH, the executable may be copied to the +current directory. In addition the default database file, phreeqc.dat, or another +desired database may need to be in the current directory. + +PHREEQC is run by a script on Linux and a batch file on Windows. The environmental +variable PHREEQC_DATABASE can be used to specify a default database. + +----------------------------------------------------------------------------------- +G. Description of test cases +----------------------------------------------------------------------------------- + +The tests are described in the table below, where 'test' corresponds +to the example number in the PHREEQC manual. + +test description of test and files +---- -------------------------------------------- + 1 Add uranium and speciate seawater + + 2 Temperature dependence of solubility + of gypsum and anhydrite + + 3 Mixing seawater and groundwater + + 4 Evaporation and solution volume + + 5 Add oxygen, equilibrate with pyrite, calcite, and goethite. + + 6 Reaction path calculations with K-feldspar to phase boundaries + + 7 Organic decomposition with fixed-pressure and + fixed-volume gas phases + + 8 Sorption of zinc on hydrous iron oxides + + 9 Kinetically controlled oxidation of ferrous iron. + Decoupled valence states of iron. + + 10 Solid solution of strontianite and aragonite. + + 11 Transport and ion exchange. + + 12 Advective and diffusive transport of heat and solutes. Constant boundary + condition at one end, closed at other. The problem is designed so that + temperature should equal Na-conc (in mmol/kgw) after diffusion. + + 13 1D Transport in a Dual Porosity Column With Cation Exchange + + 14 Transport with equilibrium_phases, exchange, and surface reactions + + 15 1D Transport: Kinetic Biodegradation, Cell Growth, and Sorption + + 16 Inverse modeling of Sierra springs + + 17 Inverse modeling of Black Sea water evaporation + + 18 Inverse modeling of Madison aquifer + + 19 Modeling Cd+2 sorption with Linear, Freundlich, and Langmuir isotherms, + and with a deterministic distribution of sorption sites for organic + matter, clay minerals, and iron oxyhydroxides + + 20 Distribution of isotopes between water and calcite + + 21 Modeling diffusion of HTO, 36Cl-, 22Na+, and Cs+ in a radial diffusion + cell + + 22 Modeling gas solubilities: CO2 at high pressures + +----------------------------------------------------------------------------------- +H. Contacts +----------------------------------------------------------------------------------- + +Inquiries about this software distribution should be directed to: + +e-mail: h2osoft@usgs.gov or dlpark@usgs.gov + diff --git a/phreeqc3-doc/README.PhreeqcI.TXT b/phreeqc3-doc/README.PhreeqcI.TXT new file mode 100644 index 00000000..8736294e --- /dev/null +++ b/phreeqc3-doc/README.PhreeqcI.TXT @@ -0,0 +1,187 @@ +README.PhreeqcI.txt + + PhreeqcI Version @VERSION@ @VER_DATE@ + + A graphical user interface to: + + PHREEQC--A program for speciation, batch-reaction, one-dimensional + transport, and inverse geochemical calculations + +This file describes installing the GUI PhreeqcI on Windows operating systems. +The GUI can be downloaded from +http://wwwbrr.cr.usgs.gov/projects/GWC_coupled/phreeqc/index.html. +PhreeqcI has screens for most PHREEQC keywords and allows input files that use any +of PHREEQC version 3 capabilities. Alternatively, a Notepad++ interface for +PHREEQC version 3 is available at http://www.hydrochemistry.eu/downl.html. + + + TABLE OF CONTENTS + + A. Distribution file + B. Documentation + C. Installing and running the GUI PhreeqcI + D. Testing and examples + E. Contacts + + +----------------------------------------------------------------------------------- +A. Distribution files +----------------------------------------------------------------------------------- + +The following distribution file (containing the software, databases, examples and +documentation) are available at +http://wwwbrr.cr.usgs.gov/projects/GWC_coupled/phreeqc/index.html. + +phreeqci-@VERSION@-@REVISION@.msi--GUI compiled by using Microsoft Visual C++ 2005 + +----------------------------------------------------------------------------------- +B. Documentation +----------------------------------------------------------------------------------- + +*Brief description of the program PhreeqcI. + +Charlton, S.R., and Parkhurst, D.L., 2002, PhreeqcI--A graphical user + interface to the geochemical model PHREEQC: U.S. Geological Survey + Fact Sheet FS-031-02, 2 p. + + +*The following two user's guides are available in electronic format. Portable + Document Format (PDF) files are included in the doc subdirectory of the + PHREEQC program distribution. Latest documentationis available from + the Help menu of PhreeqcI. + +Parkhurst, D.L., and Appelo, C.A.J., 2013, Description of input and examples + for PHREEQC version 3--A computer program for speciation, batch-reaction, + one- dimensional transport, and inverse geochemical calculations: U.S. + Geological Survey Techniques and Methods, book 6, chap. A43, 497 p. + http://pubs.usgs.gov/tm/06/a43/. + +Parkhurst, D.L., and Appelo, C.A.J., 1999, User's guide to PHREEQC (Version 2)-- + A computer program for speciation, batch-reaction, one-dimensional transport, + and inverse geochemical calculations: U.S. Geological Survey Water-Resources + Investigations Report 99-4259, 312 p. + http://pubs.er.usgs.gov/publication/wri994259. + + +*The following two reports document the theory and implementation of isotopes + in PHREEQC. Portable Document Format (PDF) of Thorstenson and Parkhurst + (2002) is included in the doc subdirectory of the PHREEQC program + distribution. + +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. + http://pubs.er.usgs.gov/publication/wri024172. + +Thorstenson, D.C., and Parkhurst, D.L., 2004, Calculation of individual isotope + equilibrium constants for geochemical reactions: Geochimica et Cosmochimica + Acta, v. 68, no. 11, p. 2449-2465. + + +----------------------------------------------------------------------------------- +C. Installing and running the GUI PhreeqcI +----------------------------------------------------------------------------------- + +Note: the person installing the software generally must have administrator +rights. + +To install the GUI, double-click phreeqci-@VERSION@-@REVISION@.msi to execute +the installation program and follow the directions on the screen. The GUI is +completely independent from the batch version. + +To execute the GUI, access the program through the start menus of Windows. + +By default, PhreeqcI is installed in the directory +C:\Program Files (x86)\USGS\phreeqci-@VERSION@-@REVISION@. +This is the recommended installation directory, but you may use other +directories or disk drives. + +Note that program components not installed initially can be installed later, +and any components damaged (for example, by inadvertently overwriting the +directory) can be reinstalled by double-clicking +phreeqci-@VERSION@-@REVISION@.msi--a maintenance version of the installation +program will be executed. + + +----------------------------------------------------------------------------------- +D. Testing and examples +----------------------------------------------------------------------------------- + +Input files are provided to verify that the program is correctly installed and +running on your system. The input files execute the examples presented in the +2013 user's guide, which demonstrate most of the program's capabilities. The +PHREEQC "examples" directory contains the input files. + +To run the examples, copy the "examples" directory (C:\Program Files (x86)\USGS\ +Phreeqc Interactive 3.1.4-8929\examples) to a location where you have +read/write access. The examples can be run from the new directory either by +double clicking one of the .pqi files from Windows Explorer or by the +File->Open menu of PhreeqcI. + +The examples are described in the table below, where 'Num' corresponds +to the example number in the PHREEQC manual. Charts can be compared to charts +in the manual (Techniques and Methods 6-A43). + +Num Description of example +---- -------------------------------------------- + 1 Add uranium species and speciate seawater + + 2 Temperature dependence of solubility + of gypsum and anhydrite + + 3 Mixing seawater and groundwater + + 4 Evaporation and solution volume + + 5 Add oxygen, equilibrate with pyrite, calcite, and goethite. + + 6 Reaction path calculations with K-feldspar to phase boundaries + + 7 Organic decomposition with fixed-pressure and + fixed-volume gas phases + + 8 Sorption of zinc on hydrous iron oxides + + 9 Kinetically controlled oxidation of ferrous iron. + Decoupled valence states of iron. + + 10 Solid solution of strontianite and aragonite. + + 11 Transport and ion exchange. + + 12 Advective and diffusive transport of heat and solutes. Constant boundary + condition at one end, closed at other. The problem is designed so that + temperature should equal Na-conc (in mmol/kgw) after diffusion. + + 13 1D Transport in a Dual Porosity Column With Cation Exchange + + 14 Transport with equilibrium_phases, exchange, and surface reactions + + 15 1D Transport: Kinetic Biodegradation, Cell Growth, and Sorption + + 16 Inverse modeling of Sierra springs + + 17 Inverse modeling of Black Sea water evaporation + + 18 Inverse modeling of Madison aquifer + + 19 Modeling Cd+2 sorption with Linear, Freundlich, and Langmuir isotherms, + and with a deterministic distribution of sorption sites for organic + matter, clay minerals, and iron oxyhydroxides + + 20 Distribution of isotopes between water and calcite + + 21 Modeling diffusion of HTO, 36Cl-, 22Na+, and Cs+ in a radial diffusion + cell + + 22 Modeling gas solubilities: CO2 at high pressures + + +----------------------------------------------------------------------------------- +E. CONTACTS +----------------------------------------------------------------------------------- + +Inquiries about this software distribution should be directed to: + +e-mail: h2osoft@usgs.gov or dlpark@usgs.gov + diff --git a/phreeqc3-doc/README.Win.txt.xxx b/phreeqc3-doc/README.Win.txt.xxx new file mode 100644 index 00000000..7d0e161f --- /dev/null +++ b/phreeqc3-doc/README.Win.txt.xxx @@ -0,0 +1,344 @@ +README.TXT + + PHREEQC + + A program for speciation, batch-reaction, one-dimensional + transport, and inverse geochemical calculations + +NOTE: This file describes installing the GUI PhreeqcI and installing, compiling, +and testing the batch version of PHREEQC version 3 on Windows operating systems. +The GUI and batch version can be downloaded from +http://wwwbrr.cr.usgs.gov/projects/GWC_coupled/phreeqc/index.html. PhreeqcI has +screens for most PHREEQC keywords and allows input files that use any of PHREEQC +version 3 capabilities. Alternatively, a Notepad++ interface for PHREEQC version +3 is available at http://www.hydrochemistry.eu/downl.html. + + + PHREEQC - Version @VERSION@ @VER_DATE@ + +Instructions for installing, executing, and testing on Windows operating +systems are provided below. After installation, see the phreeqc.txt file in the +doc directory of the PHREEQC installation for summary information on PHREEQC +and the RELEASE.TXT file in the root directory for new features and bug fixes. + + + TABLE OF CONTENTS + + A. Distribution files + B. Documentation + C. Installing and running the GUI PhreeqcI + D. Installing the batch version of PHREEQC + E. Compiling the batch version (optional) + F. Running the batch version + G. Testing and examples + H. Contacts + + +A. Distribution files + +The following distribution files (containing the software, test data sets, and +information files) are available at +http://wwwbrr.cr.usgs.gov/projects/GWC_coupled/phreeqc/index.html. + +phreeqci-@VERSION@-@REVISION@.msi--GUI compiled by using Microsoft Visual C++ + 2005 + + phreeqc-@VERSION@-@REVISION@.msi--Batch version compiled by using Microsoft + Visual C++ 2005, includes source code + +B. Documentation + +*Brief description of the program PhreeqcI. + +Charlton, S.R., and Parkhurst, D.L., 2002, PhreeqcI--A graphical user + interface to the geochemical model PHREEQC: U.S. Geological Survey + Fact Sheet FS-031-02, 2 p. + + +*The following two user's guides are available in electronic format. Portable + Document Format (PDF) files are included in the doc subdirectory of the + PHREEQC program distribution. + +Parkhurst, D.L., and Appelo, C.A.J., 2013, Description of input and examples + for PHREEQC version 3--A computer program for speciation, batch-reaction, + one- dimensional transport, and inverse geochemical calculations: U.S. + Geological Survey Techniques and Methods, book 6, chap. A43, 497 p. + http://pubs.usgs.gov/tm/06/a43/. + +Parkhurst, D.L., and Appelo, C.A.J., 1999, User's guide to PHREEQC (Version 2)-- + A computer program for speciation, batch-reaction, one-dimensional transport, + and inverse geochemical calculations: U.S. Geological Survey Water-Resources + Investigations Report 99-4259, 312 p. + http://pubs.er.usgs.gov/publication/wri994259. + + +*The following two reports document the theory and implementation of isotopes + in PHREEQC. Portable Document Format (PDF) of Thorstenson and Parkhurst + (2002) is included in the doc subdirectory of the PHREEQC program + distribution. + +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. + http://pubs.er.usgs.gov/publication/wri024172. + +Thorstenson, D.C., and Parkhurst, D.L., 2004, Calculation of individual isotope + equilibrium constants for geochemical reactions: Geochimica et Cosmochimica + Acta, v. 68, no. 11, p. 2449-2465. + + +C. Installing and running the GUI PhreeqcI + +Note that if the software is to be installed on a server system, +the person installing the software generally must have administrator +rights. + +To install the GUI, double-click phreeqci-@VERSION@-@REVISION@.msi to execute +the installation program and follow the directions on the screen. The GUI is +completely independent from the batch version. + +To execute the GUI, access the program through the start menus of Windows. + +By default, the software is installed in the directory C:\Program +Files\USGS\phreeqci-@VERSION@-@REVISION@ for 32-bit operating systems or +C:\Program Files (x86)\USGS\phreeqci-@VERSION@-@REVISION@ for 64-bit operating +systems. This is the recommended installation directory, but you may use other +directories or disk drives. + +Note that program components not installed initially can be installed later, +and any components damaged (for example, by inadvertently overwriting the +directory) can be quickly reinstalled by double-clicking +phreeqci-@VERSION@-@REVISION@.msi--a maintenance version of the installation +program will be executed. + + +D. Installing and running the batch version of PHREEQC + +Note that if the software is to be installed on a server system, the person +installing the software generally must have administrator rights. + +To install the software, double-click phreeqc-@VERSION@-@REVISION@.msi to execute +the installation program and follow the directions on the screen. The +installation program will modify the PATH environment variable so that +the PHREEQC program can be executed from a command prompt window from any +directory without needing to type the full pathname of the program's location. +The batch version is completely independent from the GUI version. + +By default, the software is installed in the directory C:\Program +Files\USGS\phreeqc-@VERSION@-@REVISION@ (32-bit operating system) or C:\Program +Files (x86)\USGS\phreeqc-@VERSION@-@REVISION@ (64-bit operating system). This is +the recommended installation directory, but you may use other directories or +disk drives. The following documentation assumes default installation for a 64- +bit operating system. + +Note that program components not installed initially can be installed later, +and any components damaged (for example, by inadvertently overwriting the +directory) can be quickly reinstalled by double-clicking +phreeqc-@VERSION@-@REVISION@.msi--a maintenance version of the installation +program will be executed. + +The following directory structure will be created (the contents of each +directory are shown to the right): + +C:\Program Files (x86)\USGS\phreeqc-@VERSION@-@REVISION@ + Files NOTICE.TXT, RELEASE.TXT, this file + (README.TXT), and Visual Studio project files + + --bin phreeqc.bat, batch file for executing PHREEQC + --ClrRelease phreeqc.exe, executable with charting + --Release phreeqc.exe, executable without charting (runs faster) + --database Database files + --doc Documentation files + --examples Examples from user's guide--used in verification tests + --src Source code + --test Batch files to run verification tests + +Note: It is recommended that no user files be kept in the PHREEQC + directory structure. If you plan to put files in the PHREEQC + directory structure, do so only by creating subdirectories. + + +E. Compiling the batch version + +The source code is provided so that users can generate an executable +themselves. Little or no support is provided for users generating +their own versions of the software. In general, to compile a new +version of PHREEQC, you will need: + + (a) a C++ compiler, + (b) familiarity with the compiler and the Windows operating system. + +A Visual Studio project (phreeqc.sln) is included in the top-level directory + for compilation on Windows operating systems. + + +F. Running the batch version + +The batch program can be executed from a command-prompt window with any of the +commands below. + + command to execute PHREEQC explanation + ----------------------------- ----------------------------------------- + phreeqc The program will query for each of the + needed files. + + phreeqc input The input file is named input, the output + file will be named input.out and the + default database file will be used. + + phreeqc input output The input file is named input, the output + file is named output, and the default + database file will be used. + + phreeqc input output database All file names are specified explicitly. + + phreeqc input output database screen_output + + All file names are specified explicitly, + and screen output is directed to the + file screen_output. + +Three alternative options exist for running the program: (1) the full pathname to +the batch file can be used in place of "phreeqc" in the above commands +("C:\Program Files (x86)USGS\phreeqc-@VERSION@-@REVISION@\bin\phreeqc.bat"). +Note that because of the space present in "Program Files", quotation marks must +be used to enter the full pathname); (2) the full path to one of the executable +files can be used in place of "phreeqc" in the above commands +("C:\Program Files (x86)USGS\phreeqc-@VERSION@-@REVISION@\bin\Release\phreeqc.exe", +for example); or (3) an executable ("C:\Program Files (x86)\USGS\ +phreeqc-@VERSION@-@REVISION@\bin\ClrRelease\phreeqc.exe, for example) may be +copied to the current directory and executed with .\phreeqc. The database file +may need to be in the current directory. The default database file is installed +in C:\Program Files (x86)\USGS\phreeqc-@VERSION@-@REVISION@\database\phreeqc.dat. + +Two executables are distributed in subdirectories of the bin directory. The +executable (phreeqc.exe) in \bin\ClrRelease has charting capabilities. The +executable in \bin\Release does not have charting capabilities. The version +without charting will run up to two times faster than the charting version and +may be preferred for long calculations that do not require charting. + +The environmental variable PHREEQC_DATABASE can be used to specify the +default database for a DOS window session. This environmental variable +can be set with the command: + + set PHREEQC_DATABASE=C:\mydirectory\myproject\mydata.dat + +When using the batch file, phreeqc.bat, this environmental variable takes +precedence over any default definition of the database file. If PHREEQC is +invoked with at least three arguments, the third argument is the database file +and it takes precedence over the environmental variable or the default +database. + + +G. Testing and examples + +Input files are provided to verify that the program is correctly installed and +running on the system. The tests execute the examples presented in the user's +guide, which demonstrate most of the program's capabilities. The PHREEQC +"examples" directory contains the input data and the expected results for each +test. + +To run the examples, copy the "test" directory (C:\Program Files (x86) +\USGS\phreeqc-@VERSION@-@REVISION@\test) to a location where you have +read/write access. The examples can be run from the new directory either by +double clicking the test.bat file from Windows Explorer or by changing +directories to the new directory in a command-prompt window and typing the +following: + +test.bat [start [stop [no_chart]]] + +where: start is the number of the first test to perform, default = 1 + stop is the number of the last test to perform, default = 22 + no_chart is any alphanumeric string, which causes no charts to be + generated. + +For example: + + command what happens + --------------------------------- -------------------------------- + test.bat runs all of the tests + test.bat 1 1 runs the first test + test.bat 2 3 runs tests 2 and 3 + test.bat 4 runs test 4 through the last test + test.bat 1 10 no runs tests 1 through 10 without charts + +You will have to close chart windows after each chart has completed to proceed +to the remaining examples. After the tests are completed, the results can be +compared to the expected results (found in the examples directory) by executing +the check.bat batch file. See the file check.log for differences. Differences +in path names and run times are insignificant. The results in the directory +examples were calculated with the charting version of PHREEQC. Comparing non- +charting results to charting results may produce a large number of differences +in check.log; however, in almost all cases, the differences are related to the +calculated pe. The pe may differ significantly and many aqueous species +concentrations may differ, but the concentrations of aqueous species should +differ by less than 1e-8 mol/kgw. + +To clean up after the tests, double click on clean.bat in Windows Explorer or +type the command clean.bat from a command prompt. + +The tests are described in the table below, where 'test' corresponds +to the example number in the PHREEQC manual. Charts can be compared to charts +in the manual (Techniques and Methods 6-A43). + +test description of test and files +---- -------------------------------------------- + 1 Add uranium and speciate seawater + + 2 Temperature dependence of solubility + of gypsum and anhydrite + + 3 Mixing seawater and groundwater + + 4 Evaporation and solution volume + + 5 Add oxygen, equilibrate with pyrite, calcite, and goethite. + + 6 Reaction path calculations with K-feldspar to phase boundaries + + 7 Organic decomposition with fixed-pressure and + fixed-volume gas phases + + 8 Sorption of zinc on hydrous iron oxides + + 9 Kinetically controlled oxidation of ferrous iron. + Decoupled valence states of iron. + + 10 Solid solution of strontianite and aragonite. + + 11 Transport and ion exchange. + + 12 Advective and diffusive transport of heat and solutes. Constant boundary + condition at one end, closed at other. The problem is designed so that + temperature should equal Na-conc (in mmol/kgw) after diffusion. + + 13 1D Transport in a Dual Porosity Column With Cation Exchange + + 14 Transport with equilibrium_phases, exchange, and surface reactions + + 15 1D Transport: Kinetic Biodegradation, Cell Growth, and Sorption + + 16 Inverse modeling of Sierra springs + + 17 Inverse modeling of Black Sea water evaporation + + 18 Inverse modeling of Madison aquifer + + 19 Modeling Cd+2 sorption with Linear, Freundlich, and Langmuir isotherms, + and with a deterministic distribution of sorption sites for organic + matter, clay minerals, and iron oxyhydroxides + + 20 Distribution of isotopes between water and calcite + + 21 Modeling diffusion of HTO, 36Cl-, 22Na+, and Cs+ in a radial diffusion + cell + + 22 Modeling gas solubilities: CO2 at high pressures + + +H. CONTACTS + +Inquiries about this software distribution should be directed to: + +e-mail: h2osoft@usgs.gov or dlpark@usgs.gov + diff --git a/phreeqc3-doc/RELEASE.TXT b/phreeqc3-doc/RELEASE.TXT new file mode 100644 index 00000000..d663071f --- /dev/null +++ b/phreeqc3-doc/RELEASE.TXT @@ -0,0 +1,5480 @@ +Version @PHREEQC_VER@: @PHREEQC_DATE@ + + ----------------- + March 9, 2018 + ----------------- + Bug fix in TRANSPORT: solutions were not updated when mixing was not + defined for the highest number of the stagnant cells. + + Bug fix in TRANSPORT: a SURFACE without any charged-surface component + could give a segmentation fault. + + ----------------- + March 7, 2018 + ----------------- + Input files with experimental data obtained at high T, P, and + salinity are installed by the phreeqc-installer in c:\phreeqc\high_P_T. + + Multicomponent diffusion in stagnant zones now uses the harmonic mean of + the cell properties, where earlier versions took the average. If the + properties are equal, the results will be identical; if the properties + vary, the cells with slow diffusion are now given stronger weight. + In Example 21 (radial diffusion of tracers through Opalinus Clay), the + clay has other properties than the filters that hold the sample. For + matching the experimental results, the fit parameters were adapted + (CEC, EDL enrichment of 22Na+ and Cs+, tortuosity of 36Cl-, and the + geometrical factor for interlayer diffusion). For neutral species like + HTO, the calculations are not affected. + + The multicomponent diffusion function was rewritten to include diffusion + through the EDL's of differently charged surfaces. (Earlier versions + calculated diffusion through one EDL only, of the first surface in + alphabetical order.) + + Bug fix with pitzer database, when running with McInnes scaling, but without + Cl in the solution. + + ----------------- + February 20, 2018 + ----------------- + Phreeqc: Fixed a segmentation fault when Cl was absent from a + Pitzer calculation, but MacInnes scaling was used; further, + the calculation was a redox calculation. + + ----------------- + February 17, 2018 + ----------------- + PhreeqcRM: + + Removed obsolete header malloc.h from example + files advection_c.c and species_c.c. + + Fixed bug in InitialPhreeqc2Module that did not properly + account for representative volume not equal to one. + + Fixed pointer error in RMF_GetComponent. + + ----------------- + February 17, 2018 + ----------------- + PHREEQC: + + Bug fix for calculating density of initial solution. + + Eliminated prints of Total Carbon and Total CO2 in + "Description of solution" when values are zero. + + Pring and punch of cells in transport calculations with + stagnant zones follows the order of the cell numbers. + + Enabled multicomponent diffusion among boundary and stagnant + cells, and of cells within a stagnant layer. + For example, with 2 cells in the column, 1 stagnant layer: + MIX 0; 4 0.5; MIX 4; 5 0.1 + + Bug fix for electro-migration through a column (membrane) + that contains pure water. + + ----------------- + February 15, 2018 + ----------------- + + PHREEQC: In agreement with IAPWS data 0-250 C, changed + the temperature damping coefficient of Dw for H+ to 1000 in + SOLUTION_SPECIES for Amm.dat, phreeqc3.dat, and pitzer.dat. + -dw 9.31e-9 1000 0.46 1e-10 + + Added Hfo CO3-2 species to Pitzer.dat. + + Added new database for organic-ligand binding approximating WHAM by Tipping + and Hurley. + + +Version 3.4.0: November 9, 2017 (svn 12927) + + The effect of an electrical field on multicomponent diffusion (electro-migration) is + calculated with the Nernst-Planck equation if one of the 2 column end-cell solutions has + a potential different from 0 (SOLUTION 0, SOLUTION cells + 1). For examples of electro- + migration, see http://www.hydrochemistry.eu/exmpls/electro_dif.html. + + A number of new features have been implemented for electro-migration. + + (1) The electric potential can be defined in keyword SOLUTION: + + SOLUTION 1 + -potential 3 # Volt + + + (2) The electric current in a column experiment can be defined in keyword TRANSPORT: + + TRANSPORT + -current 1e-3 # Ampere + + (3) When using -multi_d and -interlayer_d in TRANSPORT, the + porosity for calculating interlayer diffusion is added to the porosity + defined with -porosities or -multi_d. For example: + + -porosities 0.3 0.29 0.28 ... + -multi_d true 1e-9 0.3 0.05 1.0 false + -interlayer_d true 0.07 0.01 250 + + The total porosities will be 0.37, 0.36, 0.35, ... in cells 1, 2, 3, ... + In previous versions, the interlayer porosity was subtracted from the porosity + defined with -multi_d. + + (4) If the properties in a regular column (surface areas, lengths, double layers, + tortuosities, diffusion coefficients) are different for the two cells, the harmonic mean + is used for calculating the mass transfer (Appelo et al., 2010, Geochim. Cosmochim. Acta + 74, 1201-1219). + + (5) The following Basic functions have been added: + + CURRENT_A # the current through the column, amps. + POT_V # potential in a cell, volts. + T_SC("Cl-") # The transport- or transference-number of the ion, equal to the + # fraction of the specific conductance contributed by the species(-). + VISCOS # At present, returns the viscosity of a pure water solution, same as + # VISCOS_0, milliPascal second. + VISCOS_0 # Returns the viscosity of a pure water solution at current conditions + # milliPascal second. + + + (6) A temperature damping factor and two parameters for ionic strength dependence were added for + the calculation of the diffusion coefficient of a solute species: + + SOLUTION_SPECIES + H+ = H+ + -dw 9.31e-9 763 0.46 1e-10 + + where the first number is the diffusion coeficient at 25 C, and the second number is a damping + factor for the temperature correction, as proposed by Smolyakov, according to Anderko and Lencka, + 1997, Ind. Chem. Eng. Res. 36, 1932–1943: + + Dw(TK) = 9.31e-9 * exp(763 / TK - 763 / 298.15) * TK * 0.89 / (298.15 * viscos). + + The ionic strength correction is as follows: + Dw(I) = Dw(TK) * exp(-0.46 * DH_A * |z_H+| * I^0.5 / (1 + DH_B * I^0.5 * 1e-10 / (1 + I^0.75))) + + + --------- + svn 12839 + --------- + PHREEQC: ColdChem.dat database has been expanded to include sulfate and sulfate + salts. The database is described in a new journal article by Toner and Catling: + Journal of Chemical & Engineering Data, 2017, + http://pubs.acs.org/doi/full/10.1021/acs.jced.7b00265. + + --------- + svn 12814 + --------- + PHREEQC: Error in dist_x function and in counting of cells for some transport + problems. + + --------- + svn 12774 + --------- + Added new database, core10.dat, contributed by Marc Neveu. The database + is derived from phreeqc.dat and llnl.dat, with careful data checking, + use of SUPCRT for temperature dependence, and addition of molar volumes + for pressure dependence. + + Downloaded July 18, 2017 from the following URL + https://github.com/MarcNeveu/IcyDwarf/blob/master/IcyDwarf/PHREEQC-3.1.2/core10.dat + + Please see the following report for details: + Neveu, Marc, Desch, S.J., and Castillo-Rogez, J.C., 2017, Aqueous geochemistry in + icy world interiors: Equilibrium fluid, rock, and gas compositions, + and fate of antifreezes and radionuclides, Geochimica et Cosmochimica Acta, + v. 212, p. 324-371, http://dx.doi.org/10.1016/j.gca.2017.06.023 + + --------- + svn 12758 + --------- + PHREEQC: Changed the first parameter in the analytical expression for ethane C2H6. + The negative sign was apparently omitted. + + --------- + svn 12712 + --------- + PHREEQC: GAMMA and LG functions were not correct + for exchange species. + + --------- + svn 12702 + --------- + PHREEQC: Bug fix for when -no_check followed mineral + name in PHASES. Now catches error if equation does not + the next line following the mineral name. + + --------- + svn 12683 + --------- + PHREEQC: Bug fix for -donnan, -debye, and surface related + to mineral that has zero moles. + + --------- + svn 12623 + --------- + PHREEQC: Added a new option for a density calculation to SOLUTION + and SOLUTION_SPREAD. The speciation calculation for a solution is + iterated until the density used in the conversion of units is the + same as the density calculated for the solution. It affects solutions + with concentrations defined as per liter (mg/L, for example). + + Here are three examples for specifying the calculation, where \t + indicates a tab. + + SOLUTION + -density 1.1 calculate + + SOLUTION_SPREAD + -density 1.2 calculate + + SOLUTION_SPREAD + pH\t density\t + charge\t calculate\t + 7.0\t 1.03\t + + If the calculation is performed, the density in the description of + solution part of the output will be identified with "(Iterated)". + + --------- + svn 12540 + --------- + PHREEQC: Added new Basic function TITLE, which returns the last + definition by a TITLE keyword data block. + +Version 3.3.11: March 10, 2017 (svn 12535) + --------- + svn 12480 + --------- + PHREEQC: Added the ColdChem.dat database developed by Toner and + Catling, Journal of Chemical & Engineering Data, 2017, DOI: 10.1021/ + acs.jced.6b00812. It is a comprehensive Pitzer model in the Na-K-Ca-Mg- + Cl system valid for low temperature, from 298.15 to < 200 K. + PHREEQC was modified to allow definition of the temperature dependence + of A(phi) in the Pitzer formulation through a new option, -APHI, in + the PITZER keyword. The coefficients of the APHI expression are the + same as the temperature dependence of other Pitzer parameters. + A new Basic function, APHI, has been added to give the value of + the parameter in the current calculation. + + --------- + svn 12475 + --------- + PHREEQC: Added logic to limit the range of the fugacity coefficient. + + --------- + svn 12462 + --------- + PHREEQC: Change to avoid potential NULL pointer in -multi_D + calculations. + + --------- + svn 12439 + --------- + PHREEQC: Error check that the same element name was not used for + both a SURFACE and and EXCHANGEr, which caused a NULL pointer. + Some variables in the unknown structure are now initialized. + + --------- + svn 12319 + --------- + PhreeqcRM: The Fortran version of RM_SpeciesConcentrations2Module did + not provide the correct return value. Generally, -3 was returned + (IRM_INVALIDARG), even if the method worked properly and should have + returned 0 (IRM_OK). + +Version 3.3.10: January 12, 2017 (svn 12220) + --------- + svn 12204 + --------- + PHREEQC: Updated Basic function SYS("equi"...). The function now gives + the correct amounts of equilibrium phases at the end of a reaction. + Previously, the function erroneously gave the amounts of equilibrium + phases before reactions. + +Version 3.3.9: November 15, 2016 (svn 11951) + --------- + svn 11942 + --------- + PHREEQC: Updated sit.dat to version 9b0 from www.thermochimie-tdb.com. Changed + documentation of some RATES definitions in Amm.dat to have the correct diameter + assumed for mineral grains. + + --------- + svn 11915 + --------- + Phreeqc: Bug when surface was related to kinetics and the proportion of sites to + kinetic reactant was zero (not common). The bug caused a segmentation-fault crash. + + --------- + svn 11914 + --------- + PhreeqcRM: Previously, the guess for the unknown for mass of water was the value + from the last time step. For widely varying saturaations, the old value + caused nonconvergence for the cell. Now the mass of water is estimated from the + updated value of the moles of oxygen in the cell. + +Version 3.3.8: September 13, 2016 (svn 11728) + + --------- + svn 11559 + --------- + PhreeqcRM: Added comment to output that user-grid cell numbers are 0 based (C-like). + + --------- + svn 11471 + --------- + PhreeqcRM: Removed tabs from RM_interface.F90. + + --------- + svn 11412 + --------- + PHREEQC: Fixed a potential bug where memcpy target and source locations + overlapped. + + --------- + svn 11408 + --------- + PHREEQC: Implemented some changes for redox calculations with the Pitzer model. + Revising master variable values when large concentrations occur, and basis + switching between redox environments. Algorithm for initial estimates of + variables was also changed, as well as removing activity coefficient equations + when not needed. + + --------- + svn 11304 + --------- + PHREEQC: The file dw.cpp was removed from the source code. It contained obsolete + code inherited from PHRQPITZ to calculate the density of water. + + --------- + svn 11284 + --------- + PhreeqcRM: Order of header files was changed to put mpi.h first to avoid potential header + conflicts with some MPI implementations. + + --------- + svn 11255 + --------- + PHREEQC: The Peng-Robinson gas calculation failed with very smally gas partial pressures. + Code was modified to set a minimum of 1e-10 atm for the calculation. + + --------- + svn 11255 + --------- + PhreeqcI: File/registry virtualization was disabled. Windows allowed users to write into + system directories (Program Files for instance) even though they did not have sufficient + permissions. The files were actually stored in another directory in the user's profile. + The files are difficult to find, and, under some conditions, PhreeqcI would fail. Now, + it is not allowed to write into directories for which the user does not have write + permission. + + --------- + svn 11201 + --------- + PHREEQC: Added new Basic function PHASE_VM("Calcite"). The function returns the molar volume + for a mineral. The molar volume is defined for the mineral in PHASES with the -vm option. + Use the Basic function GAS_VM for gas components. + + --------- + svn 11152 + --------- + PHREEQC: 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 @PHREEQC_VER@: @PHREEQC_DATE@ +------------------------------------------------------------ + -------- + 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 + diff --git a/phreeqc3-doc/phreeqc.txt b/phreeqc3-doc/phreeqc.txt new file mode 100644 index 00000000..fc6a2f4e --- /dev/null +++ b/phreeqc3-doc/phreeqc.txt @@ -0,0 +1,227 @@ + + + +U.S. Geological Survey phreeqc(1) + + + +NAME + phreeqc - A program for speciation, batch-reaction, one- + dimensional transport, and inverse geochemical calculations + +SYNOPSIS + phreeqc [infile [outfile [database [screen_output]]] + +OPTIONS + infile the name of the PHREEQC input file + + outfile the name of the file to which PHREEQC output + will be written + + database the name of the PHREEQC database + + screen_output the name of the file to which screen output + will be directed + + If no arguments are specified, the program prompts for the + input, output, and database file names. + + If only infile is specified, then outfile defaults to + infile.out. If no database file is specified, the + phreeqc.dat database distributed with PHREEQC will be used. + +ABSTRACT PHREEQC is a computer program written in the C + programming language that is designed to perform a wide + variety of low- temperature aqueous geochemical calculations. + PHREEQC is based on an ion-association aqueous model and has + capabilities for (1) speciation and saturation-index + calculations; (2) batch-reaction and one-dimensional (1D) + transport calculations involving reversible reactions, which + include aqueous, mineral, gas, solid-solution, surface- + complexation, and ion-exchange equilibria, and irreversible + reactions, which include specified mole transfers of + reactants, kinetically controlled reactions, mixing of + solutions, and pressure and temperature changes; and (3) + inverse modeling, which finds sets of mineral and gas mole + transfers that account for differences in composition between + waters, within specified compositional uncertainty limits. + +METHOD + For speciation and batch-reaction calculations, PHREEQC + solves sets of nonlinear mole-balance and mass-action + equations that define an ion-association model. A Newton- + Raphson formulation is used to iteratively arrive at a + solution to the equations. A robust numerical method is + provided by using an optimizing solver that allows both + equality and inequality equations. The solver is used to + obtain the intermediate estimates of changes in the unknowns + at each iteration. + + For inverse modeling, a set of linear mole-balance equations + are solved. The equations contain additional unknowns that + account for uncertainty in the analytical data. The + optimizing solver is used to solve the linear equations + while maintaining the uncertainty terms within specified + limits. + + For transport modeling, the partial differential equations + of transport are solved by an operator splitting scheme that + sequentially solves for advective and dispersive transport, + followed by chemical equilibration that is equivalent to + batch-reaction calculations for each cell. Time steps are + selected to maintain numerical accuracy. If kinetic + reactions are modeled, yet another splitting of operators is + implemented and a 5th order Runge-Kutta method is used to + integrate the ordinary differential equations of the kinetic + reactions. + +HISTORY--See RELEASE.TXT + +DATA REQUIREMENTS + Proper use of the program requires adequate knowledge of + geochemistry and a proper formulation of the problem. Input + is arranged in keyword data blocks, which can appear in any + order. Data fields for a keyword are read in a free format, + thus they are not column dependent. + + For speciation modeling, analytical data for a solution + composition (SOLUTION keyword) are needed. + + For batch-reaction modeling, the initial solution composition + is required (SOLUTION or MIX data block). Other equilibrium + reactants may be defined with EQUILIBRIUM_PHASES, EXCHANGE, + SURFACE, GAS_PHASE, and SOLID_SOLUTION data blocks. + Nonequilibrium reactions may be defined with KINETICS and + RATES, REACTION, REACTION_PRESSURE, and REACTION_TEMPERATURE + data blocks. + + For 1D transport modeling, the data for batch-reaction + modeling are needed for each cell in the modeled system. In + addition, physical information is needed about column + dimensions, time steps, boundary conditions, and + dispersivity. + + For inverse modeling, the solution composition of the final + solution and one or more initial solutions are needed + (SOLUTION data block). Uncertainty limits must be defined + explicitly or by default for each element and element redox + state in the solutions. In addition, the identity and + composition of a set of plausible reactants and products are + needed. + + Three default databases are included that contain the + definition of aqueous species, exchange species, surface + species, and mineral and phases for a set of elements. The + database phreeqc.dat contains information for Al, B, Ba, Br, + C, Ca, Cd, Cl, Cu, F, Fe, H, K, Li, Mg, Mn, N, Na, O, P, S, + Si, Sr, Zn. The database wateq4f.dat contains the + additional constituents Ag, As, Cs, Fulvate, Humate, I, Ni, + Rb, Se, and U. The database minteq.dat is derived from the + thermodynamic data of the program MINTEQA2. If additional + elements, species, or phases are needed, then chemical + reactions, log K, and data for the temperature dependence of + log K are needed for each additional species and phase. + +SYSTEM REQUIREMENTS + PHREEQC is written in ANSI C. Generally, the program is + easily installed on most computer systems. The code has + been used on UNIX-based computers and on IBM-compatible + computers with processors running at 100 megahertz or + faster. + +DOCUMENTATION + + Parkhurst, D.L., and Appelo, C.A.J., 2012, Description of + input and examples for PHREEQC version 3--A computer + program for speciation, batch-reaction, one- dimensional + transport, and inverse geochemical calculations: U.S. + Geological Survey Techniques and Methods, book 6, chap. + A43, 497 p. http://pubs.usgs.gov/tm/06A43/. + + Parkhurst, D.L., and Appelo, C.A.J., 1999, User's guide to + PHREEQC (Version 2)--a computer program for speciation, + batch-reaction, one-dimensional transport, and inverse + geochemical calculations: U.S. Geological Survey Water- + Resources Investigations Report 99-4259, 312 p. + + 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. + + Thorstenson, D.C., and Parkhurst, D.L., 2004, Calculation of + individual isotope equilibrium constants for geochemical + reactions: Geochimica et Cosmochimica Acta, v. 68, no. + 11, p. 2449-2465. + +RELATED DOCUMENTATION + + Charlton, S.R., Macklin, C.L. and Parkhurst, D.L., 1997, + PHREEQCI--a graphical user interface for the geochemical + computer program PHREEQC: U.S. Geological Survey Water- + Resources Investigations Report 97-4222, 9 p. + + Charlton, S.R., and Parkhurst, D.L., 2002, PhreeqcI--A graphical user + interface to the geochemical model PHREEQC: U.S. Geological Survey + Fact Sheet FS-031-02, 2 p. + + Parkhurst, D.L., Thorstenson, D.C., and Plummer, L.N., 1980, + PHREEQE--a computer program for geochemical calculations: + U.S. Geological Survey Water-Resources Investigations + Report 80-96, 195 p. (Revised and reprinted, 1990.) + + Plummer, L.N., Parkhurst, D.L., Fleming, G.W., and Dunkle, + S.A., 1988, A computer program incorporating Pitzer's + equations for calculation of geochemical reactions in + brines: U.S. Geological Survey Water-Resources + Investigations Report 88-4153, 310 p. + + Plummer, L.N., Prestemon, E.C., and Parkhurst, D.L., 1991, + An interactive code (NETPATH) for modeling NET + geochemical reactions along a flow PATH: U.S. + Geological Survey Water-Resources Investigations Report + 91-4078, 227 p. + + Plummer, L.N., Prestemon, E.C., and Parkhurst, D.L., 1994, + An interactive code (NETPATH) for modeling NET + geochemical reactions along a flow PATH--version 2.0: + U.S. Geological Survey Water-Resources Investigations + Report 94-4169, 130 p. + +REFERENCES + + Appelo, C.A.J., and Postma, D., 2005, Geochemistry, + groundwater and pollution (2nd ed.): Rotterdam, + Netherlands, and Brookfield, Vermont, A.A. Balkema. + + Appelo, C.A.J., and Willemsen, A., 1987, Geochemical + calculations and observations on salt water intrusions. + I: A combined geochemical/mixing cell model: Journal of + Hydrology, v. 94, p. 313-330. + + Parkhurst, D.L., and Plummer, L.N., 1993, Geochemical + models, in Alley, W.M., ed., Regional ground-water + quality: New York, Van Nostrand Reinhold, chap. 9, p. + 199-225. + + Plummer, L.N., 1984, Geochemical modeling: A comparison of + forward and inverse methods, in Hitchon, B., and Wallick, + E.I., eds., Proceedings First Canadian/American + Conference on Hydrogeology--Practical Applications of + Ground Water Geochemistry, Banff, Alberta, Canada: + Worthington, Ohio, National Water Well Association, p. + 149-177. + +TRAINING + PHREEQC is taught as part of the courses Geochemistry for + Ground-Water Systems (GW3021TC) at the USGS National + Training Center. + +CONTACTS + Operation: + U.S. Geological Survey + David Parkhurst + Denver Federal Center, MS 413 + Lakewood, CO 80225 + + dlpark@usgs.gov diff --git a/phreeqc3-doc/wrir02-4172.pdf b/phreeqc3-doc/wrir02-4172.pdf new file mode 100644 index 00000000..dd442e4b Binary files /dev/null and b/phreeqc3-doc/wrir02-4172.pdf differ