pyEQL 1.3.2__tar.gz → 1.4.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (526) hide show
  1. pyeql-1.4.0/.github/workflows/docs.yml +33 -0
  2. pyeql-1.4.0/.github/workflows/lint.yml +22 -0
  3. pyeql-1.4.0/.github/workflows/release.yml +93 -0
  4. pyeql-1.4.0/.github/workflows/testing-pinned.yaml +46 -0
  5. pyeql-1.4.0/.github/workflows/testing.yaml +56 -0
  6. {pyeql-1.3.2 → pyeql-1.4.0}/.gitignore +3 -0
  7. {pyeql-1.3.2 → pyeql-1.4.0}/.pre-commit-config.yaml +2 -7
  8. {pyeql-1.3.2 → pyeql-1.4.0}/AUTHORS.md +1 -0
  9. {pyeql-1.3.2 → pyeql-1.4.0}/CHANGELOG.md +42 -1
  10. pyeql-1.4.0/CMakeLists.txt +61 -0
  11. {pyeql-1.3.2/src/pyEQL.egg-info → pyeql-1.4.0}/PKG-INFO +8 -9
  12. pyeql-1.4.0/cibuildwheel.toml +10 -0
  13. pyeql-1.4.0/docs/authors.md +1 -0
  14. pyeql-1.4.0/docs/changelog.md +1 -0
  15. {pyeql-1.3.2 → pyeql-1.4.0}/docs/class_solution.md +1 -2
  16. {pyeql-1.3.2 → pyeql-1.4.0}/docs/conf.py +7 -9
  17. {pyeql-1.3.2 → pyeql-1.4.0}/docs/contributing.md +1 -1
  18. {pyeql-1.3.2 → pyeql-1.4.0}/docs/engines.md +14 -3
  19. {pyeql-1.3.2 → pyeql-1.4.0}/docs/examples/pyeql_tutorial_activity.ipynb +1 -1
  20. {pyeql-1.3.2 → pyeql-1.4.0}/docs/examples/pyeql_tutorial_carbonate.ipynb +19 -19
  21. {pyeql-1.3.2 → pyeql-1.4.0}/docs/installation.md +1 -1
  22. {pyeql-1.3.2 → pyeql-1.4.0}/docs/requirements.txt +9 -9
  23. {pyeql-1.3.2 → pyeql-1.4.0}/pyproject.toml +11 -5
  24. pyeql-1.4.0/requirements.txt +127 -0
  25. pyeql-1.4.0/setup.cfg +8 -0
  26. {pyeql-1.3.2 → pyeql-1.4.0}/src/pyEQL/__init__.py +5 -8
  27. {pyeql-1.3.2 → pyeql-1.4.0}/src/pyEQL/activity_correction.py +1 -1
  28. {pyeql-1.3.2 → pyeql-1.4.0}/src/pyEQL/engines.py +414 -132
  29. {pyeql-1.3.2 → pyeql-1.4.0}/src/pyEQL/functions.py +1 -1
  30. pyeql-1.4.0/src/pyEQL/phreeqc/__init__.py +5 -0
  31. pyeql-1.4.0/src/pyEQL/phreeqc/bindings.cpp +84 -0
  32. pyeql-1.4.0/src/pyEQL/phreeqc/core.py +239 -0
  33. pyeql-1.4.0/src/pyEQL/phreeqc/ext/README.md +10 -0
  34. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/CMakeLists.txt +476 -0
  35. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/INSTALL +302 -0
  36. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/IPhreeqc.rc +61 -0
  37. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/IPhreeqcConfig.cmake.in +4 -0
  38. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/Makefile.am +8 -0
  39. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/Makefile.in +816 -0
  40. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/aclocal.m4 +1217 -0
  41. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/config/ar-lib +270 -0
  42. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/config/compile +347 -0
  43. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/config/config.guess +1441 -0
  44. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/config/config.sub +1813 -0
  45. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/config/depcomp +791 -0
  46. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/config/install-sh +508 -0
  47. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/config/ltmain.sh +11156 -0
  48. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/config/missing +215 -0
  49. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/config/test-driver +148 -0
  50. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/configure +23867 -0
  51. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/configure.ac +136 -0
  52. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/database/Amm.dat +1968 -0
  53. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/database/CMakeLists.txt +32 -0
  54. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/database/ColdChem.dat +267 -0
  55. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/database/Concrete_PHR.dat +158 -0
  56. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/database/Concrete_PZ.dat +195 -0
  57. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/database/Kinec.v2.dat +12039 -0
  58. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/database/Kinec_v3.dat +12159 -0
  59. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/database/Makefile.am +28 -0
  60. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/database/Makefile.in +530 -0
  61. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/database/PHREEQC_ThermoddemV1.10_15Dec2020.dat +12965 -0
  62. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/database/Tipping_Hurley.dat +4137 -0
  63. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/database/core10.dat +6824 -0
  64. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/database/frezchem.dat +634 -0
  65. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/database/iso.dat +7235 -0
  66. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/database/llnl.dat +19310 -0
  67. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/database/minteq.dat +5654 -0
  68. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/database/minteq.v4.dat +13212 -0
  69. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/database/phreeqc.dat +1972 -0
  70. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/database/phreeqc_rates.dat +3158 -0
  71. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/database/pitzer.dat +1044 -0
  72. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/database/sit.dat +14348 -0
  73. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/database/wateq4f.dat +4036 -0
  74. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/doc/CMakeLists.txt +35 -0
  75. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/doc/IPhreeqc.pdf +0 -0
  76. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/doc/Makefile.am +24 -0
  77. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/doc/Makefile.in +545 -0
  78. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/doc/NOTICE +51 -0
  79. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/doc/Phreeqc_2_1999_manual.pdf +0 -0
  80. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/doc/Phreeqc_3_2013_manual.pdf +0 -0
  81. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/doc/README +428 -0
  82. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/doc/RELEASE +7294 -0
  83. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/doc/html/IPhreeqc_8h.html +5096 -0
  84. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/doc/html/IPhreeqc_8h_source.html +389 -0
  85. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/doc/html/IPhreeqc_8hpp.html +83 -0
  86. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/doc/html/IPhreeqc_8hpp_source.html +478 -0
  87. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/doc/html/Var_8h.html +318 -0
  88. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/doc/html/Var_8h_source.html +200 -0
  89. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/doc/html/bc_s.png +0 -0
  90. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/doc/html/bdwn.png +0 -0
  91. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/doc/html/classIPhreeqc.html +2274 -0
  92. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/doc/html/classIPhreeqc.png +0 -0
  93. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/doc/html/classIPhreeqcStop.html +69 -0
  94. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/doc/html/classIPhreeqcStop.png +0 -0
  95. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/doc/html/closed.png +0 -0
  96. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/doc/html/dir_68267d1309a1af8e8297ef4c3efbcdba.html +68 -0
  97. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/doc/html/doxygen.css +1440 -0
  98. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/doc/html/doxygen.png +0 -0
  99. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/doc/html/dynsections.js +97 -0
  100. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/doc/html/ftv2blank.png +0 -0
  101. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/doc/html/ftv2doc.png +0 -0
  102. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/doc/html/ftv2folderclosed.png +0 -0
  103. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/doc/html/ftv2folderopen.png +0 -0
  104. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/doc/html/ftv2lastnode.png +0 -0
  105. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/doc/html/ftv2link.png +0 -0
  106. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/doc/html/ftv2mlastnode.png +0 -0
  107. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/doc/html/ftv2mnode.png +0 -0
  108. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/doc/html/ftv2node.png +0 -0
  109. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/doc/html/ftv2plastnode.png +0 -0
  110. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/doc/html/ftv2pnode.png +0 -0
  111. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/doc/html/ftv2splitbar.png +0 -0
  112. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/doc/html/ftv2vertline.png +0 -0
  113. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/doc/html/index.html +58 -0
  114. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/doc/html/jquery.js +31 -0
  115. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/doc/html/nav_f.png +0 -0
  116. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/doc/html/nav_g.png +0 -0
  117. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/doc/html/nav_h.png +0 -0
  118. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/doc/html/open.png +0 -0
  119. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/doc/html/structVAR.html +143 -0
  120. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/doc/html/sync_off.png +0 -0
  121. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/doc/html/sync_on.png +0 -0
  122. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/doc/html/tab_a.png +0 -0
  123. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/doc/html/tab_b.png +0 -0
  124. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/doc/html/tab_h.png +0 -0
  125. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/doc/html/tab_s.png +0 -0
  126. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/doc/html/tabs.css +60 -0
  127. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/doc/phreeqc3.chm +0 -0
  128. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/examples/CMakeLists.txt +11 -0
  129. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/examples/Makefile.am +88 -0
  130. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/examples/Makefile.in +696 -0
  131. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/examples/c/CMakeLists.txt +1 -0
  132. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/examples/c/advect/CMakeLists.txt +35 -0
  133. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/examples/c/advect/CMakeLists.txt.in +21 -0
  134. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/examples/c/advect/README.txt +44 -0
  135. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/examples/c/advect/advect.c +101 -0
  136. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/examples/c/advect/ic +17 -0
  137. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/examples/c/advect/phreeqc.dat +1579 -0
  138. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/examples/com/CMakeLists.txt +10 -0
  139. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/examples/com/README.txt +3 -0
  140. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/examples/com/excel/CMakeLists.txt +9 -0
  141. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/examples/com/excel/phreeqc.dat +1582 -0
  142. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/examples/com/excel/runphreeqc.xls +0 -0
  143. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/examples/com/excel/withcallback.xls +0 -0
  144. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/examples/com/python/CMakeLists.txt +11 -0
  145. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/examples/com/python/Gypsum.py +52 -0
  146. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/examples/com/python/parallel_advect.py +465 -0
  147. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/examples/com/python/phreeqc.dat +1582 -0
  148. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/examples/com/python/pitzer.dat +790 -0
  149. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/examples/com/python/wateq4f.dat +3846 -0
  150. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/examples/cpp/CMakeLists.txt +1 -0
  151. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/examples/cpp/advect/CMakeLists.txt +35 -0
  152. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/examples/cpp/advect/CMakeLists.txt.in +20 -0
  153. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/examples/cpp/advect/README.txt +45 -0
  154. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/examples/cpp/advect/advect.cpp +110 -0
  155. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/examples/cpp/advect/ic +17 -0
  156. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/examples/cpp/advect/phreeqc.dat +1579 -0
  157. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/examples/fortran/CMakeLists.txt +1 -0
  158. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/examples/fortran/advect/CMakeLists.txt +44 -0
  159. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/examples/fortran/advect/CMakeLists.txt.in +24 -0
  160. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/examples/fortran/advect/README.txt +45 -0
  161. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/examples/fortran/advect/advect.F90 +102 -0
  162. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/examples/fortran/advect/ic +17 -0
  163. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/examples/fortran/advect/phreeqc.dat +1579 -0
  164. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/examples/using-cmake/CMakeLists.txt +26 -0
  165. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/examples/using-cmake/CMakeLists.txt.in +20 -0
  166. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/examples/using-cmake/README.txt +37 -0
  167. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/examples/using-cmake/ex2 +26 -0
  168. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/examples/using-cmake/main.cpp +20 -0
  169. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/examples/using-cmake/phreeqc.dat +1837 -0
  170. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/examples/using-cmake/post-install.cmake.in +7 -0
  171. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/gtest/CMakeLists.txt +185 -0
  172. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/gtest/FileTest.cpp +171 -0
  173. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/gtest/FileTest.h +34 -0
  174. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/gtest/Makefile.am +18 -0
  175. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/gtest/Makefile.in +466 -0
  176. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/gtest/TestCVar.cpp +9 -0
  177. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/gtest/TestIPhreeqc.cpp +4901 -0
  178. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/gtest/TestIPhreeqcLib.cpp +4644 -0
  179. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/gtest/TestSelectedOutput.cpp +669 -0
  180. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/gtest/TestVar.cpp +10 -0
  181. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/gtest/conv_fail.in +11 -0
  182. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/gtest/dump +42 -0
  183. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/gtest/iso.dat +7231 -0
  184. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/gtest/kinn20140218 +349 -0
  185. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/gtest/missing_e.dat +1556 -0
  186. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/gtest/multi_punch +105 -0
  187. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/gtest/multi_punch_no_set +102 -0
  188. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/gtest/phreeqc.dat.90a6449 +1935 -0
  189. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/gtest/phreeqc.dat.old +1556 -0
  190. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/m4/libtool.m4 +8388 -0
  191. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/m4/ltoptions.m4 +437 -0
  192. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/m4/ltsugar.m4 +124 -0
  193. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/m4/ltversion.m4 +23 -0
  194. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/m4/lt~obsolete.m4 +99 -0
  195. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/resource.h +14 -0
  196. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/CSelectedOutput.cpp +401 -0
  197. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/CSelectedOutput.hxx +77 -0
  198. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/CVar.hxx +162 -0
  199. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/Debug.h +12 -0
  200. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/ErrorReporter.hxx +70 -0
  201. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/IPhreeqc.cpp +1889 -0
  202. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/IPhreeqc.f.inc +91 -0
  203. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/IPhreeqc.f90.inc +603 -0
  204. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/IPhreeqc.h +2182 -0
  205. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/IPhreeqc.hpp +1027 -0
  206. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/IPhreeqcCallbacks.h +19 -0
  207. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/IPhreeqcF.f +653 -0
  208. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/IPhreeqcLib.cpp +1098 -0
  209. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/IPhreeqc_interface.F90 +1283 -0
  210. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/IPhreeqc_interface_F.cpp +535 -0
  211. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/IPhreeqc_interface_F.h +162 -0
  212. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/Makefile.am +210 -0
  213. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/Makefile.in +1294 -0
  214. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/README.Fortran +17 -0
  215. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/Var.c +84 -0
  216. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/Var.h +152 -0
  217. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/Version.h +36 -0
  218. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/fimpl.h +282 -0
  219. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/fwrap.cpp +646 -0
  220. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/fwrap.h +163 -0
  221. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/fwrap1.cpp +24 -0
  222. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/fwrap2.cpp +24 -0
  223. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/fwrap3.cpp +24 -0
  224. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/fwrap4.cpp +24 -0
  225. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/fwrap5.cpp +24 -0
  226. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/fwrap6.cpp +25 -0
  227. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/fwrap7.cpp +25 -0
  228. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/fwrap8.cpp +24 -0
  229. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/ChartHandler.cpp +225 -0
  230. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/ChartHandler.h +59 -0
  231. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/ChartObject.cpp +1382 -0
  232. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/ChartObject.h +444 -0
  233. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/CurveObject.cpp +42 -0
  234. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/CurveObject.h +79 -0
  235. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/Dictionary.cpp +41 -0
  236. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/Dictionary.h +28 -0
  237. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/ExchComp.cxx +398 -0
  238. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/ExchComp.h +117 -0
  239. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/Exchange.cxx +466 -0
  240. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/Exchange.h +74 -0
  241. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/Form1.h +1184 -0
  242. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/Form1.resX +36 -0
  243. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/GasComp.cxx +265 -0
  244. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/GasComp.h +59 -0
  245. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/GasPhase.cxx +659 -0
  246. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/GasPhase.h +103 -0
  247. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/ISolution.cxx +40 -0
  248. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/ISolution.h +53 -0
  249. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/ISolutionComp.cxx +202 -0
  250. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/ISolutionComp.h +138 -0
  251. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/KineticsComp.cxx +318 -0
  252. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/KineticsComp.h +81 -0
  253. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/NA.h +1 -0
  254. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/NameDouble.cxx +537 -0
  255. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/NameDouble.h +66 -0
  256. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/NumKeyword.cxx +190 -0
  257. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/NumKeyword.h +67 -0
  258. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/PBasic.cpp +8350 -0
  259. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/PBasic.h +572 -0
  260. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/PHRQ_io_output.cpp +411 -0
  261. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/PPassemblage.cxx +375 -0
  262. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/PPassemblage.h +70 -0
  263. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/PPassemblageComp.cxx +441 -0
  264. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/PPassemblageComp.h +83 -0
  265. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/Phreeqc.cpp +2087 -0
  266. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/Phreeqc.h +2164 -0
  267. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/PhreeqcKeywords/Keywords.cpp +242 -0
  268. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/PhreeqcKeywords/Keywords.h +104 -0
  269. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/Pressure.cxx +417 -0
  270. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/Pressure.h +43 -0
  271. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/Reaction.cxx +284 -0
  272. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/Reaction.h +57 -0
  273. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/ReadClass.cxx +1150 -0
  274. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/SS.cxx +609 -0
  275. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/SS.h +128 -0
  276. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/SSassemblage.cxx +317 -0
  277. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/SSassemblage.h +59 -0
  278. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/SScomp.cxx +297 -0
  279. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/SScomp.h +66 -0
  280. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/SelectedOutput.cpp +115 -0
  281. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/SelectedOutput.h +209 -0
  282. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/Serializer.cxx +213 -0
  283. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/Serializer.h +42 -0
  284. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/Solution.cxx +1795 -0
  285. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/Solution.h +154 -0
  286. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/SolutionIsotope.cxx +333 -0
  287. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/SolutionIsotope.h +85 -0
  288. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/StorageBin.cxx +1507 -0
  289. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/StorageBin.h +141 -0
  290. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/StorageBinList.cpp +358 -0
  291. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/StorageBinList.h +81 -0
  292. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/Surface.cxx +837 -0
  293. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/Surface.h +108 -0
  294. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/SurfaceCharge.cxx +617 -0
  295. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/SurfaceCharge.h +137 -0
  296. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/SurfaceComp.cxx +509 -0
  297. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/SurfaceComp.h +70 -0
  298. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/System.cxx +103 -0
  299. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/System.h +89 -0
  300. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/Temperature.cxx +423 -0
  301. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/Temperature.h +42 -0
  302. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/Use.cpp +78 -0
  303. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/Use.h +159 -0
  304. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/UserPunch.cpp +32 -0
  305. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/UserPunch.h +39 -0
  306. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/ZedGraph.dll +0 -0
  307. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/advection.cpp +140 -0
  308. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/basicsubs.cpp +4333 -0
  309. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/cl1.cpp +881 -0
  310. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/common/PHRQ_base.cxx +117 -0
  311. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/common/PHRQ_base.h +48 -0
  312. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/common/PHRQ_exports.h +20 -0
  313. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/common/PHRQ_io.cpp +914 -0
  314. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/common/PHRQ_io.h +207 -0
  315. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/common/Parser.cxx +1331 -0
  316. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/common/Parser.h +310 -0
  317. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/common/Utils.cxx +263 -0
  318. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/common/Utils.h +29 -0
  319. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/common/phrqtype.h +18 -0
  320. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/cvdense.cpp +566 -0
  321. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/cvdense.h +267 -0
  322. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/cvode.cpp +3939 -0
  323. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/cvode.h +940 -0
  324. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/cxxKinetics.cxx +617 -0
  325. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/cxxKinetics.h +78 -0
  326. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/cxxMix.cxx +154 -0
  327. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/cxxMix.h +58 -0
  328. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/dense.cpp +175 -0
  329. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/dense.h +341 -0
  330. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/dumper.cpp +277 -0
  331. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/dumper.h +60 -0
  332. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/gases.cpp +748 -0
  333. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/global_structures.h +1672 -0
  334. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/input.cpp +133 -0
  335. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/integrate.cpp +1219 -0
  336. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/inverse.cpp +5135 -0
  337. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/isotopes.cpp +1813 -0
  338. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/kinetics.cpp +3180 -0
  339. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/mainsubs.cpp +2320 -0
  340. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/model.cpp +5843 -0
  341. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/nvector.cpp +272 -0
  342. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/nvector.h +485 -0
  343. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/nvector_serial.cpp +1032 -0
  344. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/nvector_serial.h +369 -0
  345. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/parse.cpp +1044 -0
  346. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/phqalloc.cpp +316 -0
  347. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/phqalloc.h +47 -0
  348. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/pitzer.cpp +2709 -0
  349. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/pitzer_structures.cpp +225 -0
  350. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/prep.cpp +6267 -0
  351. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/print.cpp +3673 -0
  352. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/read.cpp +10245 -0
  353. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/readtr.cpp +1495 -0
  354. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/runner.cpp +158 -0
  355. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/runner.h +33 -0
  356. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/sit.cpp +1684 -0
  357. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/smalldense.cpp +324 -0
  358. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/smalldense.h +261 -0
  359. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/spread.cpp +1309 -0
  360. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/step.cpp +1566 -0
  361. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/structures.cpp +3381 -0
  362. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/sundialsmath.cpp +133 -0
  363. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/sundialsmath.h +162 -0
  364. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/sundialstypes.h +183 -0
  365. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/tally.cpp +1288 -0
  366. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/tidy.cpp +5600 -0
  367. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/transport.cpp +6403 -0
  368. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/utilities.cpp +1339 -0
  369. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/thread.h +64 -0
  370. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/tests/CMakeLists.txt +133 -0
  371. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/tests/Makefile.am +45 -0
  372. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/tests/Makefile.in +1128 -0
  373. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/tests/ex2.in +26 -0
  374. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/tests/main.f90 +31 -0
  375. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/tests/main77.f +6 -0
  376. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/tests/main_fortran.cxx +8 -0
  377. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/tests/phreeqc.dat.in +1556 -0
  378. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/tests/test_c.c +148 -0
  379. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/tests/test_cxx.cxx +152 -0
  380. pyeql-1.4.0/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/tests/test_f90.F90 +328 -0
  381. pyeql-1.4.0/src/pyEQL/phreeqc/iphreeqc_wrapper.cpp +75 -0
  382. pyeql-1.4.0/src/pyEQL/phreeqc/solution.py +74 -0
  383. pyeql-1.4.0/src/pyEQL/phreeqc/var.py +50 -0
  384. pyeql-1.4.0/src/pyEQL/presets/CRL.yaml +50 -0
  385. pyeql-1.4.0/src/pyEQL/presets/FGD.yaml +115 -0
  386. pyeql-1.4.0/src/pyEQL/presets/__init__.py +19 -0
  387. pyeql-1.4.0/src/pyEQL/presets/ash.yaml +91 -0
  388. pyeql-1.4.0/src/pyEQL/presets/batt_mfg.yaml +108 -0
  389. pyeql-1.4.0/src/pyEQL/presets/batt_recycling.yaml +23 -0
  390. pyeql-1.4.0/src/pyEQL/presets/coal_washing.yaml +90 -0
  391. pyeql-1.4.0/src/pyEQL/presets/drilling.yaml +136 -0
  392. pyeql-1.4.0/src/pyEQL/presets/excavation.yaml +107 -0
  393. pyeql-1.4.0/src/pyEQL/presets/flotation.yaml +69 -0
  394. pyeql-1.4.0/src/pyEQL/presets/flue_gas.yaml +69 -0
  395. pyeql-1.4.0/src/pyEQL/presets/gasification.yaml +54 -0
  396. pyeql-1.4.0/src/pyEQL/presets/geothermal.yaml +69 -0
  397. pyeql-1.4.0/src/pyEQL/presets/leachate.yaml +60 -0
  398. pyeql-1.4.0/src/pyEQL/presets/mine_drainage.yaml +56 -0
  399. pyeql-1.4.0/src/pyEQL/presets/mine_tailings.yaml +227 -0
  400. pyeql-1.4.0/src/pyEQL/presets/plating.yaml +116 -0
  401. pyeql-1.4.0/src/pyEQL/presets/pw_conv.yaml +64 -0
  402. pyeql-1.4.0/src/pyEQL/presets/pw_unconv.yaml +48 -0
  403. pyeql-1.4.0/src/pyEQL/presets/refining.yaml +112 -0
  404. pyeql-1.4.0/src/pyEQL/presets/semiconductor.yaml +65 -0
  405. pyeql-1.4.0/src/pyEQL/presets/smelting.yaml +89 -0
  406. pyeql-1.4.0/src/pyEQL/presets/tanning.yaml +68 -0
  407. {pyeql-1.3.2 → pyeql-1.4.0}/src/pyEQL/solution.py +167 -46
  408. {pyeql-1.3.2 → pyeql-1.4.0}/src/pyEQL/utils.py +10 -1
  409. pyeql-1.4.0/tests/files_phreeqc/sophisticated_test_case.pqi +14 -0
  410. pyeql-1.4.0/tests/files_phreeqc/sophisticated_test_case.pqo +151 -0
  411. pyeql-1.4.0/tests/files_phreeqc/water_pH7_temp25.pqi +5 -0
  412. pyeql-1.4.0/tests/files_phreeqc/water_pH7_temp25.pqo +91 -0
  413. pyeql-1.4.0/tests/phreeqc/conftest.py +9 -0
  414. pyeql-1.4.0/tests/phreeqc/phreeqc.dat +1972 -0
  415. pyeql-1.4.0/tests/phreeqc/test_phreeqc.py +610 -0
  416. pyeql-1.4.0/tests/phreeqc/test_phreeqc_solution.py +16 -0
  417. pyeql-1.4.0/tests/phreeqc/test_var.py +40 -0
  418. {pyeql-1.3.2 → pyeql-1.4.0}/tests/test_activity.py +2 -2
  419. pyeql-1.3.2/tests/test_phreeqc.py → pyeql-1.4.0/tests/test_engine_phreeqc.py +181 -12
  420. pyeql-1.4.0/tests/test_engine_phreeqc2026.py +433 -0
  421. {pyeql-1.3.2 → pyeql-1.4.0}/tests/test_functions.py +2 -3
  422. {pyeql-1.3.2 → pyeql-1.4.0}/tests/test_salt_matching.py +2 -2
  423. {pyeql-1.3.2 → pyeql-1.4.0}/tests/test_solution.py +211 -23
  424. {pyeql-1.3.2 → pyeql-1.4.0}/tests/test_utils.py +6 -1
  425. pyeql-1.3.2/.github/workflows/post-process.yml +0 -64
  426. pyeql-1.3.2/.github/workflows/release.yml +0 -60
  427. pyeql-1.3.2/.github/workflows/testing.yaml +0 -85
  428. pyeql-1.3.2/.github/workflows/upgrade_dependencies.yml +0 -93
  429. pyeql-1.3.2/PKG-INFO +0 -131
  430. pyeql-1.3.2/docs/_static/.gitignore +0 -1
  431. pyeql-1.3.2/docs/authors.md +0 -21
  432. pyeql-1.3.2/docs/changelog.md +0 -670
  433. pyeql-1.3.2/requirements/macos-latest_py3.10.txt +0 -232
  434. pyeql-1.3.2/requirements/macos-latest_py3.10_extras.txt +0 -382
  435. pyeql-1.3.2/requirements/macos-latest_py3.11.txt +0 -232
  436. pyeql-1.3.2/requirements/macos-latest_py3.11_extras.txt +0 -371
  437. pyeql-1.3.2/requirements/macos-latest_py3.12.txt +0 -232
  438. pyeql-1.3.2/requirements/macos-latest_py3.12_extras.txt +0 -371
  439. pyeql-1.3.2/requirements/macos-latest_py3.9.txt +0 -231
  440. pyeql-1.3.2/requirements/macos-latest_py3.9_extras.txt +0 -378
  441. pyeql-1.3.2/requirements/ubuntu-latest_py3.10.txt +0 -232
  442. pyeql-1.3.2/requirements/ubuntu-latest_py3.10_extras.txt +0 -382
  443. pyeql-1.3.2/requirements/ubuntu-latest_py3.11.txt +0 -232
  444. pyeql-1.3.2/requirements/ubuntu-latest_py3.11_extras.txt +0 -371
  445. pyeql-1.3.2/requirements/ubuntu-latest_py3.12.txt +0 -232
  446. pyeql-1.3.2/requirements/ubuntu-latest_py3.12_extras.txt +0 -371
  447. pyeql-1.3.2/requirements/ubuntu-latest_py3.9.txt +0 -231
  448. pyeql-1.3.2/requirements/ubuntu-latest_py3.9_extras.txt +0 -378
  449. pyeql-1.3.2/requirements/windows-latest_py3.10.txt +0 -234
  450. pyeql-1.3.2/requirements/windows-latest_py3.10_extras.txt +0 -389
  451. pyeql-1.3.2/requirements/windows-latest_py3.11.txt +0 -234
  452. pyeql-1.3.2/requirements/windows-latest_py3.11_extras.txt +0 -378
  453. pyeql-1.3.2/requirements/windows-latest_py3.12.txt +0 -234
  454. pyeql-1.3.2/requirements/windows-latest_py3.12_extras.txt +0 -378
  455. pyeql-1.3.2/requirements/windows-latest_py3.9.txt +0 -233
  456. pyeql-1.3.2/requirements/windows-latest_py3.9_extras.txt +0 -385
  457. pyeql-1.3.2/setup.cfg +0 -11
  458. pyeql-1.3.2/src/pyEQL.egg-info/SOURCES.txt +0 -127
  459. pyeql-1.3.2/src/pyEQL.egg-info/dependency_links.txt +0 -1
  460. pyeql-1.3.2/src/pyEQL.egg-info/requires.txt +0 -27
  461. pyeql-1.3.2/src/pyEQL.egg-info/top_level.txt +0 -1
  462. {pyeql-1.3.2 → pyeql-1.4.0}/.coveragerc +0 -0
  463. {pyeql-1.3.2 → pyeql-1.4.0}/.gitattributes +0 -0
  464. {pyeql-1.3.2 → pyeql-1.4.0}/.github/dependabot.yml +0 -0
  465. {pyeql-1.3.2 → pyeql-1.4.0}/.github/pull_request_template.md +0 -0
  466. {pyeql-1.3.2 → pyeql-1.4.0}/.github/release.yml +0 -0
  467. {pyeql-1.3.2 → pyeql-1.4.0}/.readthedocs.yml +0 -0
  468. {pyeql-1.3.2 → pyeql-1.4.0}/.zenodo.json +0 -0
  469. {pyeql-1.3.2 → pyeql-1.4.0}/CITATION.cff +0 -0
  470. {pyeql-1.3.2 → pyeql-1.4.0}/COPYING +0 -0
  471. {pyeql-1.3.2 → pyeql-1.4.0}/LICENSE.txt +0 -0
  472. {pyeql-1.3.2 → pyeql-1.4.0}/MANIFEST.in +0 -0
  473. {pyeql-1.3.2 → pyeql-1.4.0}/README.md +0 -0
  474. {pyeql-1.3.2 → pyeql-1.4.0}/docs/Makefile +0 -0
  475. {pyeql-1.3.2 → pyeql-1.4.0}/docs/amounts.md +0 -0
  476. {pyeql-1.3.2 → pyeql-1.4.0}/docs/arithmetic.md +0 -0
  477. {pyeql-1.3.2 → pyeql-1.4.0}/docs/chemistry.md +0 -0
  478. {pyeql-1.3.2 → pyeql-1.4.0}/docs/creating.md +0 -0
  479. {pyeql-1.3.2 → pyeql-1.4.0}/docs/database.md +0 -0
  480. {pyeql-1.3.2 → pyeql-1.4.0}/docs/examples/.ipynb_checkpoints/pyEQL_demo_1-checkpoint.ipynb +0 -0
  481. {pyeql-1.3.2 → pyeql-1.4.0}/docs/examples/.ipynb_checkpoints/pyeql_demo-checkpoint.ipynb +0 -0
  482. {pyeql-1.3.2 → pyeql-1.4.0}/docs/examples/.ipynb_checkpoints/pyeql_tutorial_database-checkpoint.ipynb +0 -0
  483. {pyeql-1.3.2 → pyeql-1.4.0}/docs/examples/.ipynb_checkpoints/pyeql_tutorial_osmotic_pressure-checkpoint.ipynb +0 -0
  484. {pyeql-1.3.2 → pyeql-1.4.0}/docs/examples/.ipynb_checkpoints/speedup-checkpoint.ipynb +0 -0
  485. {pyeql-1.3.2 → pyeql-1.4.0}/docs/examples/pyeql_demo.ipynb +0 -0
  486. {pyeql-1.3.2 → pyeql-1.4.0}/docs/examples/pyeql_tutorial_database.ipynb +0 -0
  487. {pyeql-1.3.2 → pyeql-1.4.0}/docs/examples/pyeql_tutorial_osmotic_pressure.ipynb +0 -0
  488. {pyeql-1.3.2 → pyeql-1.4.0}/docs/index.md +0 -0
  489. {pyeql-1.3.2 → pyeql-1.4.0}/docs/internal.md +0 -0
  490. {pyeql-1.3.2 → pyeql-1.4.0}/docs/license.md +0 -0
  491. {pyeql-1.3.2 → pyeql-1.4.0}/docs/mixing.md +0 -0
  492. {pyeql-1.3.2 → pyeql-1.4.0}/docs/quickstart.md +0 -0
  493. {pyeql-1.3.2 → pyeql-1.4.0}/docs/serialization.md +0 -0
  494. {pyeql-1.3.2 → pyeql-1.4.0}/docs/tutorials.md +0 -0
  495. {pyeql-1.3.2 → pyeql-1.4.0}/docs/units.md +0 -0
  496. {pyeql-1.3.2 → pyeql-1.4.0}/pyeql-logo.png +0 -0
  497. {pyeql-1.3.2 → pyeql-1.4.0}/pyeql-logo.svg +0 -0
  498. {pyeql-1.3.2 → pyeql-1.4.0}/setup.py +0 -0
  499. {pyeql-1.3.2 → pyeql-1.4.0}/src/pyEQL/database/geothermal.dat +0 -0
  500. {pyeql-1.3.2 → pyeql-1.4.0}/src/pyEQL/database/llnl.dat +0 -0
  501. {pyeql-1.3.2 → pyeql-1.4.0}/src/pyEQL/database/phreeqc_license.txt +0 -0
  502. {pyeql-1.3.2 → pyeql-1.4.0}/src/pyEQL/database/pyeql_db.json +0 -0
  503. {pyeql-1.3.2 → pyeql-1.4.0}/src/pyEQL/equilibrium.py +0 -0
  504. {pyeql-1.3.2 → pyeql-1.4.0}/src/pyEQL/presets/Ringers lactate.yaml +0 -0
  505. {pyeql-1.3.2 → pyeql-1.4.0}/src/pyEQL/presets/normal saline.yaml +0 -0
  506. {pyeql-1.3.2 → pyeql-1.4.0}/src/pyEQL/presets/rainwater.yaml +0 -0
  507. {pyeql-1.3.2 → pyeql-1.4.0}/src/pyEQL/presets/seawater.yaml +0 -0
  508. {pyeql-1.3.2 → pyeql-1.4.0}/src/pyEQL/presets/urine.yaml +0 -0
  509. {pyeql-1.3.2 → pyeql-1.4.0}/src/pyEQL/presets/wastewater.yaml +0 -0
  510. {pyeql-1.3.2 → pyeql-1.4.0}/src/pyEQL/py.typed +0 -0
  511. {pyeql-1.3.2 → pyeql-1.4.0}/src/pyEQL/salt_ion_match.py +0 -0
  512. {pyeql-1.3.2 → pyeql-1.4.0}/src/pyEQL/solute.py +0 -0
  513. {pyeql-1.3.2 → pyeql-1.4.0}/tests/conftest.py +0 -0
  514. {pyeql-1.3.2 → pyeql-1.4.0}/tests/test_bulk_properties.py +0 -0
  515. {pyeql-1.3.2 → pyeql-1.4.0}/tests/test_debye_length.py +0 -0
  516. {pyeql-1.3.2 → pyeql-1.4.0}/tests/test_density.py +0 -0
  517. {pyeql-1.3.2 → pyeql-1.4.0}/tests/test_dielectric.py +0 -0
  518. {pyeql-1.3.2 → pyeql-1.4.0}/tests/test_effective_pitzer.py +0 -0
  519. {pyeql-1.3.2 → pyeql-1.4.0}/tests/test_equilibrium.py +0 -0
  520. {pyeql-1.3.2 → pyeql-1.4.0}/tests/test_logging.py +0 -0
  521. {pyeql-1.3.2 → pyeql-1.4.0}/tests/test_mixed_electrolyte_activity.py +0 -0
  522. {pyeql-1.3.2 → pyeql-1.4.0}/tests/test_osmotic_coeff.py +0 -0
  523. {pyeql-1.3.2 → pyeql-1.4.0}/tests/test_solute.py +0 -0
  524. {pyeql-1.3.2 → pyeql-1.4.0}/tests/test_solute_properties.py +0 -0
  525. {pyeql-1.3.2 → pyeql-1.4.0}/tests/test_volume_concentration.py +0 -0
  526. {pyeql-1.3.2 → pyeql-1.4.0}/tox.ini +0 -0
@@ -0,0 +1,33 @@
1
+ name: docs
2
+
3
+ on:
4
+ pull_request:
5
+ branches:
6
+ - main
7
+ paths-ignore:
8
+ - CHANGELOG.md
9
+ - AUTHORS.md
10
+
11
+ jobs:
12
+ docs:
13
+ runs-on: ubuntu-latest
14
+
15
+ steps:
16
+ - uses: actions/checkout@v6
17
+
18
+ - name: Setup Python
19
+ uses: actions/setup-python@v6
20
+ with:
21
+ python-version: "3.11"
22
+
23
+ - name: Install tox
24
+ run: |
25
+ python -m pip install tox
26
+
27
+ - uses: r-lib/actions/setup-pandoc@v2
28
+
29
+ - name: Build docs
30
+ run: tox -e docs
31
+
32
+ - name: Check links
33
+ run: tox -e links
@@ -0,0 +1,22 @@
1
+ name: lint
2
+
3
+ on:
4
+ workflow_call:
5
+
6
+ jobs:
7
+ lint:
8
+ runs-on: ubuntu-latest
9
+ steps:
10
+ - uses: actions/checkout@v6
11
+ with:
12
+ fetch-depth: 0
13
+
14
+ - name: Set up Python
15
+ uses: actions/setup-python@v6
16
+ with:
17
+ python-version: "3.12"
18
+
19
+ - name: Run pre-commit
20
+ run: |
21
+ pip install pre-commit
22
+ pre-commit run
@@ -0,0 +1,93 @@
1
+ name: release
2
+
3
+ on:
4
+ release:
5
+ types: [published]
6
+
7
+ jobs:
8
+
9
+ build_sdist:
10
+ name: Build source
11
+ runs-on: ubuntu-latest
12
+
13
+ steps:
14
+ - uses: actions/checkout@v6
15
+ with:
16
+ fetch-depth: 0
17
+ ref: ${{ github.event.release.tag_name }}
18
+
19
+ - name: Build source
20
+ run: |
21
+ python -m pip install pip --upgrade
22
+ pip install build --upgrade
23
+ python -m build --sdist --outdir=wheelhouse
24
+
25
+ - name: Upload sdist to github
26
+ uses: actions/upload-artifact@v6
27
+ with:
28
+ name: wheels-sdist
29
+ path: wheelhouse/*.tar.gz
30
+ if-no-files-found: error
31
+
32
+ build_wheels:
33
+ name: Build wheel on ${{ matrix.os }} for ${{ matrix.cibw_archs }}
34
+ needs: [build_sdist]
35
+ runs-on: ${{ matrix.os }}
36
+ strategy:
37
+ fail-fast: false
38
+ matrix:
39
+ include:
40
+ - os: ubuntu-latest
41
+ cibw_archs: "x86_64"
42
+ - os: ubuntu-24.04-arm
43
+ cibw_archs: "auto"
44
+ - os: windows-2022
45
+ cibw_archs: "auto64"
46
+ # macos-15-intel for Intel and maos-latest for Apple Silicon
47
+ - os: macos-15-intel
48
+ cibw_archs: "x86_64"
49
+ - os: macos-latest
50
+ cibw_archs: "arm64"
51
+
52
+ steps:
53
+ - uses: actions/checkout@v6
54
+ with:
55
+ fetch-depth: 0
56
+ ref: ${{ github.event.release.tag_name }}
57
+
58
+ - name: Build wheels
59
+ uses: pypa/cibuildwheel@v3.3
60
+ with:
61
+ config-file: cibuildwheel.toml
62
+ output-dir: wheelhouse
63
+ env:
64
+ CIBW_ENVIRONMENT_MACOS: CMAKE_OSX_ARCHITECTURES=${{ matrix.cibw_archs }}
65
+
66
+ - name: Upload artifacts to github
67
+ uses: actions/upload-artifact@v6
68
+ with:
69
+ name: wheels-${{ runner.os }}-${{ matrix.cibw_archs }}
70
+ path: ./wheelhouse/*.whl
71
+ if-no-files-found: error
72
+
73
+ publish_to_pypi:
74
+ name: Publish wheels to PyPi
75
+ needs: [build_sdist, build_wheels]
76
+ runs-on: ubuntu-latest
77
+ # https://docs.pypi.org/trusted-publishers/using-a-publisher/
78
+ environment: publish
79
+ permissions:
80
+ id-token: write
81
+ steps:
82
+ - name: Download packages
83
+ uses: actions/download-artifact@v7
84
+ with:
85
+ pattern: wheels-*
86
+ path: dist
87
+ merge-multiple: true
88
+
89
+ - name: Print out packages
90
+ run: ls -la dist/*
91
+
92
+ - name: Publish package distributions to PyPI
93
+ uses: pypa/gh-action-pypi-publish@release/v1
@@ -0,0 +1,46 @@
1
+ name: testing-pinned
2
+
3
+ on:
4
+ pull_request:
5
+ branches:
6
+ - main
7
+ paths-ignore:
8
+ - CHANGELOG.md
9
+ - AUTHORS.md
10
+ - docs/**
11
+
12
+ jobs:
13
+ lint:
14
+ uses: ./.github/workflows/lint.yml
15
+
16
+ test:
17
+ needs: [lint]
18
+ strategy:
19
+ matrix:
20
+ # We only test on min. and max. supported Python versions here.
21
+ python-version: ["3.10", "3.13"]
22
+ os:
23
+ - ubuntu-latest
24
+ - macos-latest
25
+ - macos-14
26
+ - windows-latest
27
+
28
+ runs-on: ${{ matrix.os }}
29
+
30
+ steps:
31
+ - uses: actions/checkout@v6
32
+
33
+ - name: Setup Python
34
+ uses: actions/setup-python@v6
35
+ with:
36
+ python-version: ${{ matrix.python-version }}${{ matrix.dev }}
37
+
38
+ - name: Install requirements
39
+ run: |
40
+ python -m pip install --upgrade pip
41
+ pip install -r requirements.txt
42
+ pip install -e . --no-deps
43
+
44
+ - name: Run tests
45
+ run: |
46
+ pytest -n auto --cov=src/pyEQL --cov-report=xml --dist=loadscope
@@ -0,0 +1,56 @@
1
+ name: testing
2
+
3
+ on:
4
+ pull_request:
5
+ branches:
6
+ - main
7
+ - pourbaix
8
+ paths-ignore:
9
+ - CHANGELOG.md
10
+ - AUTHORS.md
11
+ - docs/**
12
+
13
+ concurrency:
14
+ group: ${{ github.workflow }}-${{ github.ref }}
15
+ cancel-in-progress: false
16
+
17
+ jobs:
18
+ lint:
19
+ uses: ./.github/workflows/lint.yml
20
+
21
+ test:
22
+ needs: [lint]
23
+ strategy:
24
+ matrix:
25
+ python-version: ["3.10", "3.11", "3.12","3.13"]
26
+ runs-on: ubuntu-latest
27
+ steps:
28
+ - uses: actions/checkout@v6
29
+
30
+ - name: Setup Python
31
+ uses: actions/setup-python@v6
32
+ with:
33
+ python-version: ${{ matrix.python-version }}${{ matrix.dev }}
34
+
35
+ - name: Install test requirements
36
+ run: |
37
+ python -m pip install --upgrade pip
38
+ pip install -e ".[testing]"
39
+
40
+ - name: List installed requirements
41
+ run: |
42
+ pip freeze
43
+
44
+ - name: Run tests
45
+ run: |
46
+ if [[ "${{ matrix.python-version }}" == "3.12" ]]; then
47
+ pytest -n auto --cov=src/pyEQL --cov-report=xml --dist=loadscope
48
+ else
49
+ pytest -n auto --dist=loadscope
50
+ fi
51
+
52
+ - uses: codecov/codecov-action@v5
53
+ if: matrix.python-version == '3.12'
54
+ with:
55
+ token: ${{ secrets.CODECOV_TOKEN }}
56
+ file: ./coverage.xml
@@ -51,3 +51,6 @@ MANIFEST
51
51
  # Per-project virtualenvs
52
52
  .venv*/
53
53
  .conda*/
54
+
55
+ # setuptools-scm managed version file
56
+ src/pyEQL/_version.py
@@ -1,4 +1,4 @@
1
- exclude: "^docs/conf.py"
1
+ exclude: ^(docs/conf\.py|src/pyEQL/phreeqc/ext|tests/phreeqc/.*\.dat)
2
2
 
3
3
  default_stages: [pre-commit]
4
4
 
@@ -21,17 +21,12 @@ repos:
21
21
  # Run the formatter. This WILL run on .ipynb files
22
22
  - id: ruff-format
23
23
 
24
- - repo: https://github.com/psf/black-pre-commit-mirror
25
- rev: 25.1.0
26
- hooks:
27
- - id: black
28
-
29
24
  - repo: https://github.com/codespell-project/codespell
30
25
  rev: v2.4.1
31
26
  hooks:
32
27
  - id: codespell
33
28
  stages: [pre-commit, commit-msg]
34
- exclude_types: [html, svg]
29
+ exclude_types: [html, svg, jupyter]
35
30
  additional_dependencies: [tomli] # needed to read pyproject.toml below py3.11
36
31
 
37
32
  - repo: https://github.com/pre-commit/pre-commit-hooks
@@ -5,6 +5,7 @@ developed and maintained by the Kingsbury Lab at Princeton University.
5
5
 
6
6
  Other contributors, listed alphabetically, are:
7
7
 
8
+ - Vineet Basal (@vineetbansal)
8
9
  - Arpit Bhardwaj (@abhardwaj73)
9
10
  - Nikhil Dhruv (@NikhilDhruv)
10
11
  - Dhruv Duseja (@DhruvDuseja)
@@ -5,6 +5,47 @@ All notable changes to this project will be documented in this file.
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
6
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
 
8
+ ## [1.4.0] - 2026-02-17
9
+
10
+ ### Added
11
+
12
+ - `Phreeqc2026EOS`: Brand new, custom-compiled wrapper that interfaces directly with IPHREEQC modules distributed by USGS. This
13
+ new PHREEQC interface is accessible via the new `phreeqc2026` electrolyte modeling engine, and will be used
14
+ by default in the `native` engine in `v1.5.0`. (#306, #318, #318, #319, #333, # @vineetbansal)
15
+ - `Solution.from_preset`: Added presets for 22 representative industrial wastewater compositions, explained in detail in
16
+ our recent preprint "Composition and Critical Mineral Content of Major Industrial Wastewaters: Implications for
17
+ Treatment and Resource Recovery Technologies," available at [https://doi.org/10.21203/rs.3.rs-8743330/v2]
18
+
19
+ ### Changed
20
+
21
+ - `Solution.equilibrate`: Added support for solid-liquid and gas-liquid equilibrium via three new kwargs - `atmopshere`,
22
+ `solids`, and `gases`. See docstring for details and usage.(#292, #294, #339, @vineetbansal, @YitongPan1, @SuixiongTay)
23
+ - `get_components_by_element`: A new keyword argument `nested` was added to methods `get_components_by_element`
24
+ and `get_el_amt_dict` of the `Solution` class. It defaults to `False` (no change from prior behavior), but
25
+ can be set to `True` to return a 2-level dictionary, with the element symbol as the key at the top level, and
26
+ the valence (float, or "unk" for unknown) as the key at the second level. This should make it easier for future
27
+ code to calculate the total amount of a given element regardless of its valence. (#284, @vineetbansal)
28
+ - `Solution.get_property`: Changed the `lru_cache` size to greatly enhance performance when creating `Solution` that
29
+ contain a large number of solutes (@vineetbansal, @SuixiongTay)
30
+ - Docs: `sphinx-material` theme migrated to `sphinx-immaterial` (#272, @ugognw, @rkingsbury)
31
+ - Docs: resolved all the `spinx` build warnings and errors (#338, @vineetbansal)
32
+ - Docs: Added documentation of `phreeqc2026` engine and new `equilibrate` features (#344, #349, @SuixiongTay, @YitongPan1)
33
+ - CI: Various changes to optimize our continuous integration testing workflows. Notably, changes to the docs (only) no
34
+ longer trigger unit tests of the code (only of the docs), and now test against a specific set of pinned dependencies
35
+ from `requirements.txt`. (#285, #314, #320, #327, #328, #330, #340, @vineetbansal, @rkingsbury)
36
+
37
+ ### Fixed
38
+
39
+ - `NativeEOS` `equilibrate`: Fixed a bug in which instantiating a solution with pure elements (e.g., `{'Na': '0.5 mol/L'}`)
40
+ and then calling `equilibrate` could cause that element to be "double counted." In other words, speciation calculations
41
+ would add `Na[+1]` to the solution but retain `Na` as well. This now works correctly. In addition, elements or species
42
+ that are missing from PHREEQC's database (e.g. Rh) are handled more robustly. (#282, #352, #355, @vineetbansal, @rkingsbury)
43
+ - `from_file`: Instantiating a `Solution` from a .yaml file now gives slightly more accurate results. Previously, there were
44
+ slight discrepancies in the volume of the loaded solution, compared to loading from .json or `dict`. (#347, @rkingsbury)
45
+ - `standardize_formula`: Fixed incorrect reduction of dimers. For example, `(CO2)2` was being standardized to `CO2`, which
46
+ could cause incorrect concentrations to be reported. Dimers are no longer reduced. (#309, @vineetbansal)
47
+ - `FormulaDict`: ensured that quantities are always represented by `python` floats and not `np.float64` (#342, @rkingsbury)
48
+
8
49
  ## [1.3.2] - 2025-09-15
9
50
 
10
51
  ### Fixed
@@ -71,7 +112,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
71
112
  - Support `numpy>2.0`
72
113
  - Bump `pint` to `0.24.4` for `numpy` `v2.0` compatibility and to mitigate CI issues (#239, @SuixiongTay, @rkingsbury)
73
114
  - CI: add `python` `v3.13` to post-merge unit tests
74
- - Docs: `tox -e docs` command configured to fail on warning (#255, @ugognw)
115
+ - Docs: `tox -e docs` command configured to fail on warning (#255, ugognw)
75
116
  - Docs: ReadTheDocs built with Python 3.11 (#255, ugognw)
76
117
  - Use `importlib` to locate test files (#241, @SuixiongTay)
77
118
  - Support `numpy>2.0`
@@ -0,0 +1,61 @@
1
+ cmake_minimum_required(VERSION 3.15...3.26)
2
+ project(
3
+ "${SKBUILD_PROJECT_NAME}"
4
+ LANGUAGES CXX
5
+ VERSION "${SKBUILD_PROJECT_VERSION}")
6
+
7
+ option(PYEQL_ENABLE_EXT "Build and install IPhreeqc support" ON)
8
+
9
+ if(PYEQL_ENABLE_EXT)
10
+ find_package(
11
+ Python
12
+ COMPONENTS Interpreter Development.Module
13
+ REQUIRED)
14
+ find_package(pybind11 CONFIG REQUIRED)
15
+
16
+ # -------------------------------------------------------
17
+ # Setup for IPhreeqc
18
+ # -------------------------------------------------------
19
+ set(IPHREEQC_BASE ${CMAKE_CURRENT_SOURCE_DIR}/src/pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100)
20
+ set(IPHREEQC_DIR ${IPHREEQC_BASE})
21
+ set(IPHREEQC_INCLUDE_DIRS
22
+ ${IPHREEQC_BASE}/src
23
+ ${IPHREEQC_BASE}/src/phreeqcpp/common
24
+ )
25
+ include_directories(${IPHREEQC_INCLUDE_DIRS})
26
+ set(IPHREEQC_BUILD_DIR ${IPHREEQC_BASE}/build)
27
+ add_subdirectory(${IPHREEQC_DIR} ${IPHREEQC_BUILD_DIR})
28
+ set_target_properties(IPhreeqc PROPERTIES POSITION_INDEPENDENT_CODE ON)
29
+ # -------------------------------------------------------
30
+
31
+ # -------------------------------------------------------
32
+ # Setup for pyEQL._phreeqc
33
+ # -------------------------------------------------------
34
+ pybind11_add_module(_phreeqc ${CMAKE_CURRENT_SOURCE_DIR}/src/pyEQL/phreeqc/bindings.cpp)
35
+ target_compile_definitions(_phreeqc
36
+ PRIVATE VERSION_INFO=${PROJECT_VERSION})
37
+ target_link_libraries(_phreeqc PRIVATE IPhreeqc)
38
+ install(TARGETS _phreeqc LIBRARY DESTINATION pyEQL COMPONENT python)
39
+
40
+ # -------------------------------------------------------
41
+ # IPhreeqc databases
42
+ # -------------------------------------------------------
43
+ # Till we find a way to extract artifacts from IPhreeqc's install folder
44
+ # through scikit-build-core, we define a COMPONENT that allows us to
45
+ # copy the database files.
46
+ set(IPHREEQC_DATABASE_DIR ${IPHREEQC_BASE}/database)
47
+ install(DIRECTORY
48
+ "${IPHREEQC_DATABASE_DIR}"
49
+ DESTINATION pyEQL/phreeqc COMPONENT iphreeqc_database)
50
+ # Make it a python module so we can access it using importlib.resources
51
+ file(GENERATE
52
+ OUTPUT "__init__.py"
53
+ CONTENT ""
54
+ )
55
+ install(FILES
56
+ "${CMAKE_CURRENT_BINARY_DIR}/__init__.py"
57
+ DESTINATION pyEQL/phreeqc/database
58
+ COMPONENT iphreeqc_database
59
+ )
60
+ # -------------------------------------------------------
61
+ endif()
@@ -1,12 +1,11 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pyEQL
3
- Version: 1.3.2
3
+ Version: 1.4.0
4
4
  Summary: A python interface for solution chemistry
5
- Author-email: Ryan Kingsbury <kingsbury@princeton.edu>
5
+ Author-Email: Ryan Kingsbury <kingsbury@princeton.edu>
6
6
  License-Expression: LGPL-3.0-or-later
7
- Project-URL: Docs, https://pyeql.readthedocs.io/
8
- Project-URL: Repo, https://github.com/KingsburyLab/pyEQL
9
- Project-URL: Package, https://pypi.org/project/pyEQL
7
+ License-File: AUTHORS.md
8
+ License-File: LICENSE.txt
10
9
  Classifier: Programming Language :: Python :: 3
11
10
  Classifier: Programming Language :: Python :: 3.10
12
11
  Classifier: Programming Language :: Python :: 3.11
@@ -15,10 +14,10 @@ Classifier: Development Status :: 4 - Beta
15
14
  Classifier: Intended Audience :: Science/Research
16
15
  Classifier: Operating System :: OS Independent
17
16
  Classifier: Topic :: Scientific/Engineering
17
+ Project-URL: Docs, https://pyeql.readthedocs.io/
18
+ Project-URL: Repo, https://github.com/KingsburyLab/pyEQL
19
+ Project-URL: Package, https://pypi.org/project/pyEQL
18
20
  Requires-Python: >=3.10
19
- Description-Content-Type: text/markdown
20
- License-File: LICENSE.txt
21
- License-File: AUTHORS.md
22
21
  Requires-Dist: pint>=0.24.4
23
22
  Requires-Dist: numpy>1.26
24
23
  Requires-Dist: scipy>=1.12
@@ -43,7 +42,7 @@ Requires-Dist: sphinx-rtd-theme; extra == "docs"
43
42
  Requires-Dist: myst-parser[linkify]; extra == "docs"
44
43
  Provides-Extra: full
45
44
  Requires-Dist: rich; extra == "full"
46
- Dynamic: license-file
45
+ Description-Content-Type: text/markdown
47
46
 
48
47
  [![Read the Docs](https://img.shields.io/readthedocs/pyeql)](https://pyeql.readthedocs.io/en/latest/)
49
48
  [![testing](https://github.com/KingsburyLab/pyeql/workflows/testing/badge.svg)](https://github.com/KingsburyLab/pyeql/actions?query=workflow%3Atesting)
@@ -0,0 +1,10 @@
1
+ [tool.cibuildwheel]
2
+ build = "cp3*"
3
+ skip = ["cp314*", "*-win32", "*-manylinux_i686", "*-musllinux_*"]
4
+ build-verbosity = 1
5
+ test-extras = ["testing"]
6
+ # 01/24/26 - The latest version of scipy, 1.17.0, cannot be built on
7
+ # manylinux without OpenBLAS. Skip it by pre-installing a binary version.
8
+ before-test = "pip install scipy --prefer-binary"
9
+ # For now, we only run the tests that are wrapper specific in cibuildwheel.
10
+ test-command = "python -m pytest {project}/tests/test_engine_phreeqc2026.py"
@@ -0,0 +1 @@
1
+ ../AUTHORS.md
@@ -0,0 +1 @@
1
+ ../CHANGELOG.md
@@ -9,8 +9,7 @@ This page contains detailed information on each of the methods, attributes, and
9
9
  ```{eval-rst}
10
10
  .. autoclass:: pyEQL.Solution
11
11
  :members:
12
- :inherited-members:
12
+ :exclude-members: save
13
13
  :private-members: _get_property, _get_diffusion_coefficient, _get_molar_conductivity, _get_mobility
14
- :special-members: __init__
15
14
  :member-order: bysource
16
15
  ```
@@ -47,6 +47,7 @@ templates_path = ["_templates"]
47
47
  # Add any Sphinx extension module names here, as strings. They can be extensions
48
48
  # coming with Sphinx (named 'sphinx.ext.*') or your custom ones.
49
49
  extensions = [
50
+ "sphinx_immaterial",
50
51
  "sphinx.ext.autodoc",
51
52
  "sphinx.ext.intersphinx",
52
53
  "sphinx.ext.todo",
@@ -166,7 +167,7 @@ todo_emit_warnings = True
166
167
 
167
168
  # The theme to use for HTML and HTML Help pages. See the documentation for
168
169
  # a list of builtin themes.
169
- html_theme = "sphinx_material"
170
+ html_theme = "sphinx_immaterial"
170
171
 
171
172
  # Theme options are theme-specific and customize the look and feel of a theme
172
173
  # further. For a list of options available for each theme, see the
@@ -174,16 +175,12 @@ html_theme = "sphinx_material"
174
175
  html_theme_options = {
175
176
  # "sidebar_width": "300px",
176
177
  # "page_width": "1200px",
177
- "base_url": "https://pyeql.readthedocs.io/en/latest/",
178
+ "site_url": "https://pyeql.readthedocs.io/en/latest/",
178
179
  "repo_url": "https://github.com/KingsburyLab/pyEQL/",
179
180
  "repo_name": "pyEQL",
180
181
  # 'logo_icon': 'e798',
181
- "html_minify": True,
182
- "css_minify": True,
183
- "nav_title": "pyEQL: a python interface for water chemistry",
184
- "color_primary": "blue",
185
- "color_accent": "light-blue",
186
- "globaltoc_depth": 2,
182
+ "toc_title": "pyEQL: a python interface for water chemistry",
183
+ "palette": { "primary": "blue", "accent": "light-blue" },
187
184
  "globaltoc_collapse": True,
188
185
  }
189
186
  html_sidebars = {"**": ["logo-text.html", "globaltoc.html", "localtoc.html", "searchbox.html"]}
@@ -315,7 +312,8 @@ linkcheck_allowed_redirects = {
315
312
  r"http://pint\.readthedocs\.io": r"https://pint\.readthedocs\.io/.*/stable",
316
313
  r"https://tox\.wiki": r"https://tox\.wiki/.*",
317
314
  }
318
- linkcheck_ignore = [r"https://localhost:\d+/"]
315
+ # https://idst.inl.gov/ is reachable, just not from the github runner.
316
+ linkcheck_ignore = [r"https://localhost:\d+/", r"^https://idst\.inl\.gov/$"]
319
317
  linkcheck_rate_limit_timeout = 500
320
318
 
321
319
  print(f"loading configurations for {project} {version} ...", file=sys.stderr)
@@ -128,7 +128,7 @@ Please abide by the following guidelines when contributing code to `pyEQL`:
128
128
 
129
129
  ## Documentation
130
130
 
131
- Improvements to the documentation are most welcome! Our documentation system uses `sphinx` with the [Materials for Sphinx](https://bashtage.github.io/sphinx-material/) theme. To edit the documentation locally, run `tox -e autodocs` from the repository root directory. This will serve the documents to `http://localhost:8000/` so you can view them in your web browser. When you make changes to the files in the `docs/` directory, the documentation will automatically rebuild and update in your browser (you might have to refresh the page to see changes).
131
+ Improvements to the documentation are most welcome! Our documentation system uses `sphinx` with the [Sphinx-Immaterial](https://jbms.github.io/sphinx-immaterial/) theme. To edit the documentation locally, run `tox -e autodocs` from the repository root directory. This will serve the documents to `http://localhost:8000/` so you can view them in your web browser. When you make changes to the files in the `docs/` directory, the documentation will automatically rebuild and update in your browser (you might have to refresh the page to see changes).
132
132
 
133
133
  ## Changelog
134
134
 
@@ -73,14 +73,25 @@ there may be subtle thermodynamic inconsistencies between the activities and the
73
73
  concentrations returned by `equilibrate()`.
74
74
  ```
75
75
 
76
+ ## The `'phreeqc2026'` engine
77
+
78
+ The `phreeqc2026` engine uses [`pyEQL.phreeqc`](https://github.com/KingsburyLab/pyEQL/tree/d323606e022825737c1663ee620dfa6180d2bebb/src/pyEQL/phreeqc)
79
+ for speciation, activity, and volume calculations. The PHREEQC engine
80
+ uses the `phreeqc.dat (v3.8)` PHREEQC database by default, although it is possible to instantiate
81
+ the engine with other databases such as `llnl.dat`, `pitzer.dat`, `vitens.dat`, `wateq4f_PWN.dat`, and `geothermal.dat`. See
82
+ `pyEQL.engine.Phreeqc2026EOS.equilibrate()` in the [module reference](internal.md#speciation-functions)
83
+ for more details.
84
+ Older version provided in `pyEQL.equilibrium.equilibrate_phreeqc` has been removed and absorbed in `NativeEOS`, `Phreeqc2026EOS`, and `PhreeqcEOS`.
85
+
76
86
  ## The `'phreeqc'` engine
77
87
 
78
88
  The `phreeqc` engine uses [`phreeqpython`](https://github.com/Vitens/phreeqpython)
79
89
  for speciation, activity, and volume calculations. The PHREEQC engine
80
- uses the `phreeqc.dat` PHREEQC database by default, although it is possible to instantiate
81
- the engine with other databases such as `llnl.dat`, `pitzer.dat`, etc. See
82
- `pyEQL.equilibrium.eqiulibrate_phreeqc` in the [module reference](internal.md#speciation-functions)
90
+ uses the `phreeqc.dat (v3.7)` PHREEQC database by default, although it is possible to instantiate
91
+ the engine with other databases such as `llnl.dat`, `pitzer.dat`, `vitens.dat`, `wateq4f_PWN.dat`, and `geothermal.dat`. See
92
+ `pyEQL.engine.PhreeqcEOS.equilibrate()` in the [module reference](internal.md#speciation-functions)
83
93
  for more details.
94
+ Older version provided in `pyEQL.equilibrium.equilibrate_phreeqc` has been removed and absorbed in `NativeEOS`, `Phreeqc2026EOS`, and `PhreeqcEOS`.
84
95
 
85
96
  ### Activity and osmotic coefficients
86
97
 
@@ -29,7 +29,7 @@
29
29
  "source": [
30
30
  "### Different modeling engines\n",
31
31
  "\n",
32
- "When creating a `Solution`, you can use the `engine` keyword argument to specify which [Electrolyte Modeling Engine](https://pyeql.readthedocs.io/en/latest/engines.html#engines--page-root) you want to use.\n",
32
+ "When creating a `Solution`, you can use the `engine` keyword argument to specify which [Electrolyte Modeling Engine](https://pyeql.readthedocs.io/en/latest/engines.html) you want to use.\n",
33
33
  "\n",
34
34
  "- [`ideal`](https://pyeql.readthedocs.io/en/latest/engines.html#the-ideal-engine): Ideal solution model\n",
35
35
  "- [`phreeqc`](https://pyeql.readthedocs.io/en/latest/engines.html#the-phreeqc-engine): Uses `phreeqpython` with `phreeqc.dat`\n",