pyEQL 1.4.0rc9__cp312-cp312-macosx_11_0_arm64.whl

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 (491) hide show
  1. pyEQL/__init__.py +50 -0
  2. pyEQL/_phreeqc.cpython-312-darwin.so +0 -0
  3. pyEQL/activity_correction.py +879 -0
  4. pyEQL/database/geothermal.dat +5693 -0
  5. pyEQL/database/llnl.dat +19305 -0
  6. pyEQL/database/phreeqc_license.txt +54 -0
  7. pyEQL/database/pyeql_db.json +35607 -0
  8. pyEQL/engines.py +1153 -0
  9. pyEQL/equilibrium.py +227 -0
  10. pyEQL/functions.py +281 -0
  11. pyEQL/phreeqc/__init__.py +5 -0
  12. pyEQL/phreeqc/bindings.cpp +84 -0
  13. pyEQL/phreeqc/core.py +239 -0
  14. pyEQL/phreeqc/database/Amm.dat +1968 -0
  15. pyEQL/phreeqc/database/CMakeLists.txt +32 -0
  16. pyEQL/phreeqc/database/ColdChem.dat +267 -0
  17. pyEQL/phreeqc/database/Concrete_PHR.dat +158 -0
  18. pyEQL/phreeqc/database/Concrete_PZ.dat +195 -0
  19. pyEQL/phreeqc/database/Kinec.v2.dat +12039 -0
  20. pyEQL/phreeqc/database/Kinec_v3.dat +12159 -0
  21. pyEQL/phreeqc/database/Makefile.am +28 -0
  22. pyEQL/phreeqc/database/Makefile.in +530 -0
  23. pyEQL/phreeqc/database/PHREEQC_ThermoddemV1.10_15Dec2020.dat +12965 -0
  24. pyEQL/phreeqc/database/Tipping_Hurley.dat +4137 -0
  25. pyEQL/phreeqc/database/__init__.py +0 -0
  26. pyEQL/phreeqc/database/core10.dat +6824 -0
  27. pyEQL/phreeqc/database/frezchem.dat +634 -0
  28. pyEQL/phreeqc/database/iso.dat +7235 -0
  29. pyEQL/phreeqc/database/llnl.dat +19310 -0
  30. pyEQL/phreeqc/database/minteq.dat +5654 -0
  31. pyEQL/phreeqc/database/minteq.v4.dat +13212 -0
  32. pyEQL/phreeqc/database/phreeqc.dat +1972 -0
  33. pyEQL/phreeqc/database/phreeqc_rates.dat +3158 -0
  34. pyEQL/phreeqc/database/pitzer.dat +1044 -0
  35. pyEQL/phreeqc/database/sit.dat +14348 -0
  36. pyEQL/phreeqc/database/wateq4f.dat +4036 -0
  37. pyEQL/phreeqc/ext/README.md +10 -0
  38. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/CMakeLists.txt +476 -0
  39. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/INSTALL +302 -0
  40. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/IPhreeqc.rc +61 -0
  41. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/IPhreeqcConfig.cmake.in +4 -0
  42. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/Makefile.am +8 -0
  43. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/Makefile.in +816 -0
  44. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/aclocal.m4 +1217 -0
  45. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/build/CMakeFiles/CTestScript.cmake +167 -0
  46. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/build/CMakeFiles/IPhreeqc.dir/src/CSelectedOutput.cpp.o +0 -0
  47. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/build/CMakeFiles/IPhreeqc.dir/src/IPhreeqc.cpp.o +0 -0
  48. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/build/CMakeFiles/IPhreeqc.dir/src/IPhreeqcLib.cpp.o +0 -0
  49. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/build/CMakeFiles/IPhreeqc.dir/src/IPhreeqc_interface_F.cpp.o +0 -0
  50. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/build/CMakeFiles/IPhreeqc.dir/src/Var.c.o +0 -0
  51. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/build/CMakeFiles/IPhreeqc.dir/src/phreeqcpp/Dictionary.cpp.o +0 -0
  52. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/build/CMakeFiles/IPhreeqc.dir/src/phreeqcpp/ExchComp.cxx.o +0 -0
  53. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/build/CMakeFiles/IPhreeqc.dir/src/phreeqcpp/Exchange.cxx.o +0 -0
  54. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/build/CMakeFiles/IPhreeqc.dir/src/phreeqcpp/GasComp.cxx.o +0 -0
  55. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/build/CMakeFiles/IPhreeqc.dir/src/phreeqcpp/GasPhase.cxx.o +0 -0
  56. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/build/CMakeFiles/IPhreeqc.dir/src/phreeqcpp/ISolution.cxx.o +0 -0
  57. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/build/CMakeFiles/IPhreeqc.dir/src/phreeqcpp/ISolutionComp.cxx.o +0 -0
  58. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/build/CMakeFiles/IPhreeqc.dir/src/phreeqcpp/KineticsComp.cxx.o +0 -0
  59. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/build/CMakeFiles/IPhreeqc.dir/src/phreeqcpp/NameDouble.cxx.o +0 -0
  60. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/build/CMakeFiles/IPhreeqc.dir/src/phreeqcpp/NumKeyword.cxx.o +0 -0
  61. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/build/CMakeFiles/IPhreeqc.dir/src/phreeqcpp/PBasic.cpp.o +0 -0
  62. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/build/CMakeFiles/IPhreeqc.dir/src/phreeqcpp/PHRQ_io_output.cpp.o +0 -0
  63. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/build/CMakeFiles/IPhreeqc.dir/src/phreeqcpp/PPassemblage.cxx.o +0 -0
  64. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/build/CMakeFiles/IPhreeqc.dir/src/phreeqcpp/PPassemblageComp.cxx.o +0 -0
  65. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/build/CMakeFiles/IPhreeqc.dir/src/phreeqcpp/Phreeqc.cpp.o +0 -0
  66. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/build/CMakeFiles/IPhreeqc.dir/src/phreeqcpp/PhreeqcKeywords/Keywords.cpp.o +0 -0
  67. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/build/CMakeFiles/IPhreeqc.dir/src/phreeqcpp/Pressure.cxx.o +0 -0
  68. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/build/CMakeFiles/IPhreeqc.dir/src/phreeqcpp/Reaction.cxx.o +0 -0
  69. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/build/CMakeFiles/IPhreeqc.dir/src/phreeqcpp/ReadClass.cxx.o +0 -0
  70. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/build/CMakeFiles/IPhreeqc.dir/src/phreeqcpp/SS.cxx.o +0 -0
  71. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/build/CMakeFiles/IPhreeqc.dir/src/phreeqcpp/SSassemblage.cxx.o +0 -0
  72. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/build/CMakeFiles/IPhreeqc.dir/src/phreeqcpp/SScomp.cxx.o +0 -0
  73. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/build/CMakeFiles/IPhreeqc.dir/src/phreeqcpp/SelectedOutput.cpp.o +0 -0
  74. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/build/CMakeFiles/IPhreeqc.dir/src/phreeqcpp/Serializer.cxx.o +0 -0
  75. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/build/CMakeFiles/IPhreeqc.dir/src/phreeqcpp/Solution.cxx.o +0 -0
  76. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/build/CMakeFiles/IPhreeqc.dir/src/phreeqcpp/SolutionIsotope.cxx.o +0 -0
  77. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/build/CMakeFiles/IPhreeqc.dir/src/phreeqcpp/StorageBin.cxx.o +0 -0
  78. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/build/CMakeFiles/IPhreeqc.dir/src/phreeqcpp/StorageBinList.cpp.o +0 -0
  79. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/build/CMakeFiles/IPhreeqc.dir/src/phreeqcpp/Surface.cxx.o +0 -0
  80. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/build/CMakeFiles/IPhreeqc.dir/src/phreeqcpp/SurfaceCharge.cxx.o +0 -0
  81. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/build/CMakeFiles/IPhreeqc.dir/src/phreeqcpp/SurfaceComp.cxx.o +0 -0
  82. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/build/CMakeFiles/IPhreeqc.dir/src/phreeqcpp/System.cxx.o +0 -0
  83. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/build/CMakeFiles/IPhreeqc.dir/src/phreeqcpp/Temperature.cxx.o +0 -0
  84. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/build/CMakeFiles/IPhreeqc.dir/src/phreeqcpp/Use.cpp.o +0 -0
  85. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/build/CMakeFiles/IPhreeqc.dir/src/phreeqcpp/UserPunch.cpp.o +0 -0
  86. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/build/CMakeFiles/IPhreeqc.dir/src/phreeqcpp/advection.cpp.o +0 -0
  87. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/build/CMakeFiles/IPhreeqc.dir/src/phreeqcpp/basicsubs.cpp.o +0 -0
  88. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/build/CMakeFiles/IPhreeqc.dir/src/phreeqcpp/cl1.cpp.o +0 -0
  89. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/build/CMakeFiles/IPhreeqc.dir/src/phreeqcpp/common/PHRQ_base.cxx.o +0 -0
  90. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/build/CMakeFiles/IPhreeqc.dir/src/phreeqcpp/common/PHRQ_io.cpp.o +0 -0
  91. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/build/CMakeFiles/IPhreeqc.dir/src/phreeqcpp/common/Parser.cxx.o +0 -0
  92. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/build/CMakeFiles/IPhreeqc.dir/src/phreeqcpp/common/Utils.cxx.o +0 -0
  93. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/build/CMakeFiles/IPhreeqc.dir/src/phreeqcpp/cvdense.cpp.o +0 -0
  94. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/build/CMakeFiles/IPhreeqc.dir/src/phreeqcpp/cvode.cpp.o +0 -0
  95. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/build/CMakeFiles/IPhreeqc.dir/src/phreeqcpp/cxxKinetics.cxx.o +0 -0
  96. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/build/CMakeFiles/IPhreeqc.dir/src/phreeqcpp/cxxMix.cxx.o +0 -0
  97. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/build/CMakeFiles/IPhreeqc.dir/src/phreeqcpp/dense.cpp.o +0 -0
  98. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/build/CMakeFiles/IPhreeqc.dir/src/phreeqcpp/dumper.cpp.o +0 -0
  99. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/build/CMakeFiles/IPhreeqc.dir/src/phreeqcpp/gases.cpp.o +0 -0
  100. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/build/CMakeFiles/IPhreeqc.dir/src/phreeqcpp/input.cpp.o +0 -0
  101. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/build/CMakeFiles/IPhreeqc.dir/src/phreeqcpp/integrate.cpp.o +0 -0
  102. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/build/CMakeFiles/IPhreeqc.dir/src/phreeqcpp/inverse.cpp.o +0 -0
  103. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/build/CMakeFiles/IPhreeqc.dir/src/phreeqcpp/isotopes.cpp.o +0 -0
  104. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/build/CMakeFiles/IPhreeqc.dir/src/phreeqcpp/kinetics.cpp.o +0 -0
  105. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/build/CMakeFiles/IPhreeqc.dir/src/phreeqcpp/mainsubs.cpp.o +0 -0
  106. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/build/CMakeFiles/IPhreeqc.dir/src/phreeqcpp/model.cpp.o +0 -0
  107. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/build/CMakeFiles/IPhreeqc.dir/src/phreeqcpp/nvector.cpp.o +0 -0
  108. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/build/CMakeFiles/IPhreeqc.dir/src/phreeqcpp/nvector_serial.cpp.o +0 -0
  109. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/build/CMakeFiles/IPhreeqc.dir/src/phreeqcpp/parse.cpp.o +0 -0
  110. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/build/CMakeFiles/IPhreeqc.dir/src/phreeqcpp/phqalloc.cpp.o +0 -0
  111. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/build/CMakeFiles/IPhreeqc.dir/src/phreeqcpp/pitzer.cpp.o +0 -0
  112. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/build/CMakeFiles/IPhreeqc.dir/src/phreeqcpp/pitzer_structures.cpp.o +0 -0
  113. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/build/CMakeFiles/IPhreeqc.dir/src/phreeqcpp/prep.cpp.o +0 -0
  114. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/build/CMakeFiles/IPhreeqc.dir/src/phreeqcpp/print.cpp.o +0 -0
  115. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/build/CMakeFiles/IPhreeqc.dir/src/phreeqcpp/read.cpp.o +0 -0
  116. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/build/CMakeFiles/IPhreeqc.dir/src/phreeqcpp/readtr.cpp.o +0 -0
  117. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/build/CMakeFiles/IPhreeqc.dir/src/phreeqcpp/runner.cpp.o +0 -0
  118. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/build/CMakeFiles/IPhreeqc.dir/src/phreeqcpp/sit.cpp.o +0 -0
  119. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/build/CMakeFiles/IPhreeqc.dir/src/phreeqcpp/smalldense.cpp.o +0 -0
  120. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/build/CMakeFiles/IPhreeqc.dir/src/phreeqcpp/spread.cpp.o +0 -0
  121. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/build/CMakeFiles/IPhreeqc.dir/src/phreeqcpp/step.cpp.o +0 -0
  122. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/build/CMakeFiles/IPhreeqc.dir/src/phreeqcpp/structures.cpp.o +0 -0
  123. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/build/CMakeFiles/IPhreeqc.dir/src/phreeqcpp/sundialsmath.cpp.o +0 -0
  124. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/build/CMakeFiles/IPhreeqc.dir/src/phreeqcpp/tally.cpp.o +0 -0
  125. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/build/CMakeFiles/IPhreeqc.dir/src/phreeqcpp/tidy.cpp.o +0 -0
  126. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/build/CMakeFiles/IPhreeqc.dir/src/phreeqcpp/transport.cpp.o +0 -0
  127. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/build/CMakeFiles/IPhreeqc.dir/src/phreeqcpp/utilities.cpp.o +0 -0
  128. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/build/CTestTestfile.cmake +6 -0
  129. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/build/DartConfiguration.tcl +109 -0
  130. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/build/cmake_install.cmake +45 -0
  131. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/build/libIPhreeqc.a +0 -0
  132. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/config/ar-lib +270 -0
  133. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/config/compile +347 -0
  134. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/config/config.guess +1441 -0
  135. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/config/config.sub +1813 -0
  136. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/config/depcomp +791 -0
  137. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/config/install-sh +508 -0
  138. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/config/ltmain.sh +11156 -0
  139. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/config/missing +215 -0
  140. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/config/test-driver +148 -0
  141. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/configure +23867 -0
  142. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/configure.ac +136 -0
  143. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/database/Amm.dat +1968 -0
  144. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/database/CMakeLists.txt +32 -0
  145. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/database/ColdChem.dat +267 -0
  146. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/database/Concrete_PHR.dat +158 -0
  147. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/database/Concrete_PZ.dat +195 -0
  148. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/database/Kinec.v2.dat +12039 -0
  149. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/database/Kinec_v3.dat +12159 -0
  150. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/database/Makefile.am +28 -0
  151. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/database/Makefile.in +530 -0
  152. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/database/PHREEQC_ThermoddemV1.10_15Dec2020.dat +12965 -0
  153. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/database/Tipping_Hurley.dat +4137 -0
  154. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/database/core10.dat +6824 -0
  155. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/database/frezchem.dat +634 -0
  156. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/database/iso.dat +7235 -0
  157. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/database/llnl.dat +19310 -0
  158. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/database/minteq.dat +5654 -0
  159. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/database/minteq.v4.dat +13212 -0
  160. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/database/phreeqc.dat +1972 -0
  161. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/database/phreeqc_rates.dat +3158 -0
  162. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/database/pitzer.dat +1044 -0
  163. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/database/sit.dat +14348 -0
  164. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/database/wateq4f.dat +4036 -0
  165. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/doc/CMakeLists.txt +35 -0
  166. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/doc/IPhreeqc.pdf +0 -0
  167. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/doc/Makefile.am +24 -0
  168. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/doc/Makefile.in +545 -0
  169. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/doc/NOTICE +51 -0
  170. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/doc/Phreeqc_2_1999_manual.pdf +0 -0
  171. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/doc/Phreeqc_3_2013_manual.pdf +0 -0
  172. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/doc/README +428 -0
  173. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/doc/RELEASE +7294 -0
  174. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/doc/html/IPhreeqc_8h.html +5096 -0
  175. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/doc/html/IPhreeqc_8h_source.html +389 -0
  176. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/doc/html/IPhreeqc_8hpp.html +83 -0
  177. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/doc/html/IPhreeqc_8hpp_source.html +478 -0
  178. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/doc/html/Var_8h.html +318 -0
  179. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/doc/html/Var_8h_source.html +200 -0
  180. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/doc/html/bc_s.png +0 -0
  181. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/doc/html/bdwn.png +0 -0
  182. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/doc/html/classIPhreeqc.html +2274 -0
  183. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/doc/html/classIPhreeqc.png +0 -0
  184. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/doc/html/classIPhreeqcStop.html +69 -0
  185. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/doc/html/classIPhreeqcStop.png +0 -0
  186. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/doc/html/closed.png +0 -0
  187. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/doc/html/dir_68267d1309a1af8e8297ef4c3efbcdba.html +68 -0
  188. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/doc/html/doxygen.css +1440 -0
  189. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/doc/html/doxygen.png +0 -0
  190. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/doc/html/dynsections.js +97 -0
  191. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/doc/html/ftv2blank.png +0 -0
  192. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/doc/html/ftv2doc.png +0 -0
  193. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/doc/html/ftv2folderclosed.png +0 -0
  194. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/doc/html/ftv2folderopen.png +0 -0
  195. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/doc/html/ftv2lastnode.png +0 -0
  196. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/doc/html/ftv2link.png +0 -0
  197. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/doc/html/ftv2mlastnode.png +0 -0
  198. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/doc/html/ftv2mnode.png +0 -0
  199. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/doc/html/ftv2node.png +0 -0
  200. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/doc/html/ftv2plastnode.png +0 -0
  201. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/doc/html/ftv2pnode.png +0 -0
  202. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/doc/html/ftv2splitbar.png +0 -0
  203. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/doc/html/ftv2vertline.png +0 -0
  204. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/doc/html/index.html +58 -0
  205. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/doc/html/jquery.js +31 -0
  206. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/doc/html/nav_f.png +0 -0
  207. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/doc/html/nav_g.png +0 -0
  208. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/doc/html/nav_h.png +0 -0
  209. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/doc/html/open.png +0 -0
  210. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/doc/html/structVAR.html +143 -0
  211. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/doc/html/sync_off.png +0 -0
  212. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/doc/html/sync_on.png +0 -0
  213. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/doc/html/tab_a.png +0 -0
  214. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/doc/html/tab_b.png +0 -0
  215. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/doc/html/tab_h.png +0 -0
  216. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/doc/html/tab_s.png +0 -0
  217. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/doc/html/tabs.css +60 -0
  218. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/doc/phreeqc3.chm +0 -0
  219. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/examples/CMakeLists.txt +11 -0
  220. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/examples/Makefile.am +88 -0
  221. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/examples/Makefile.in +696 -0
  222. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/examples/c/CMakeLists.txt +1 -0
  223. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/examples/c/advect/CMakeLists.txt +35 -0
  224. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/examples/c/advect/CMakeLists.txt.in +21 -0
  225. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/examples/c/advect/README.txt +44 -0
  226. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/examples/c/advect/advect.c +101 -0
  227. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/examples/c/advect/ic +17 -0
  228. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/examples/c/advect/phreeqc.dat +1579 -0
  229. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/examples/com/CMakeLists.txt +10 -0
  230. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/examples/com/README.txt +3 -0
  231. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/examples/com/excel/CMakeLists.txt +9 -0
  232. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/examples/com/excel/phreeqc.dat +1582 -0
  233. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/examples/com/excel/runphreeqc.xls +0 -0
  234. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/examples/com/excel/withcallback.xls +0 -0
  235. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/examples/com/python/CMakeLists.txt +11 -0
  236. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/examples/com/python/Gypsum.py +52 -0
  237. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/examples/com/python/parallel_advect.py +465 -0
  238. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/examples/com/python/phreeqc.dat +1582 -0
  239. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/examples/com/python/pitzer.dat +790 -0
  240. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/examples/com/python/wateq4f.dat +3846 -0
  241. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/examples/cpp/CMakeLists.txt +1 -0
  242. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/examples/cpp/advect/CMakeLists.txt +35 -0
  243. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/examples/cpp/advect/CMakeLists.txt.in +20 -0
  244. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/examples/cpp/advect/README.txt +45 -0
  245. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/examples/cpp/advect/advect.cpp +110 -0
  246. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/examples/cpp/advect/ic +17 -0
  247. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/examples/cpp/advect/phreeqc.dat +1579 -0
  248. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/examples/fortran/CMakeLists.txt +1 -0
  249. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/examples/fortran/advect/CMakeLists.txt +44 -0
  250. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/examples/fortran/advect/CMakeLists.txt.in +24 -0
  251. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/examples/fortran/advect/README.txt +45 -0
  252. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/examples/fortran/advect/advect.F90 +102 -0
  253. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/examples/fortran/advect/ic +17 -0
  254. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/examples/fortran/advect/phreeqc.dat +1579 -0
  255. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/examples/using-cmake/CMakeLists.txt +26 -0
  256. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/examples/using-cmake/CMakeLists.txt.in +20 -0
  257. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/examples/using-cmake/README.txt +37 -0
  258. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/examples/using-cmake/ex2 +26 -0
  259. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/examples/using-cmake/main.cpp +20 -0
  260. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/examples/using-cmake/phreeqc.dat +1837 -0
  261. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/examples/using-cmake/post-install.cmake.in +7 -0
  262. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/gtest/CMakeLists.txt +185 -0
  263. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/gtest/FileTest.cpp +171 -0
  264. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/gtest/FileTest.h +34 -0
  265. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/gtest/Makefile.am +18 -0
  266. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/gtest/Makefile.in +466 -0
  267. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/gtest/TestCVar.cpp +9 -0
  268. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/gtest/TestIPhreeqc.cpp +4901 -0
  269. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/gtest/TestIPhreeqcLib.cpp +4644 -0
  270. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/gtest/TestSelectedOutput.cpp +669 -0
  271. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/gtest/TestVar.cpp +10 -0
  272. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/gtest/conv_fail.in +11 -0
  273. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/gtest/dump +42 -0
  274. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/gtest/iso.dat +7231 -0
  275. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/gtest/kinn20140218 +349 -0
  276. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/gtest/missing_e.dat +1556 -0
  277. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/gtest/multi_punch +105 -0
  278. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/gtest/multi_punch_no_set +102 -0
  279. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/gtest/phreeqc.dat.90a6449 +1935 -0
  280. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/gtest/phreeqc.dat.old +1556 -0
  281. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/m4/libtool.m4 +8388 -0
  282. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/m4/ltoptions.m4 +437 -0
  283. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/m4/ltsugar.m4 +124 -0
  284. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/m4/ltversion.m4 +23 -0
  285. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/m4/lt~obsolete.m4 +99 -0
  286. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/resource.h +14 -0
  287. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/CSelectedOutput.cpp +401 -0
  288. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/CSelectedOutput.hxx +77 -0
  289. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/CVar.hxx +162 -0
  290. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/Debug.h +12 -0
  291. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/ErrorReporter.hxx +70 -0
  292. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/IPhreeqc.cpp +1889 -0
  293. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/IPhreeqc.f.inc +91 -0
  294. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/IPhreeqc.f90.inc +603 -0
  295. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/IPhreeqc.h +2182 -0
  296. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/IPhreeqc.hpp +1027 -0
  297. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/IPhreeqcCallbacks.h +19 -0
  298. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/IPhreeqcF.f +653 -0
  299. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/IPhreeqcLib.cpp +1098 -0
  300. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/IPhreeqc_interface.F90 +1283 -0
  301. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/IPhreeqc_interface_F.cpp +535 -0
  302. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/IPhreeqc_interface_F.h +162 -0
  303. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/Makefile.am +210 -0
  304. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/Makefile.in +1294 -0
  305. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/README.Fortran +17 -0
  306. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/Var.c +84 -0
  307. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/Var.h +152 -0
  308. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/Version.h +36 -0
  309. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/fimpl.h +282 -0
  310. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/fwrap.cpp +646 -0
  311. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/fwrap.h +163 -0
  312. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/fwrap1.cpp +24 -0
  313. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/fwrap2.cpp +24 -0
  314. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/fwrap3.cpp +24 -0
  315. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/fwrap4.cpp +24 -0
  316. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/fwrap5.cpp +24 -0
  317. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/fwrap6.cpp +25 -0
  318. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/fwrap7.cpp +25 -0
  319. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/fwrap8.cpp +24 -0
  320. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/ChartHandler.cpp +225 -0
  321. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/ChartHandler.h +59 -0
  322. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/ChartObject.cpp +1382 -0
  323. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/ChartObject.h +444 -0
  324. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/CurveObject.cpp +42 -0
  325. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/CurveObject.h +79 -0
  326. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/Dictionary.cpp +41 -0
  327. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/Dictionary.h +28 -0
  328. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/ExchComp.cxx +398 -0
  329. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/ExchComp.h +117 -0
  330. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/Exchange.cxx +466 -0
  331. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/Exchange.h +74 -0
  332. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/Form1.h +1184 -0
  333. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/Form1.resX +36 -0
  334. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/GasComp.cxx +265 -0
  335. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/GasComp.h +59 -0
  336. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/GasPhase.cxx +659 -0
  337. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/GasPhase.h +103 -0
  338. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/ISolution.cxx +40 -0
  339. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/ISolution.h +53 -0
  340. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/ISolutionComp.cxx +202 -0
  341. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/ISolutionComp.h +138 -0
  342. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/KineticsComp.cxx +318 -0
  343. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/KineticsComp.h +81 -0
  344. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/NA.h +1 -0
  345. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/NameDouble.cxx +537 -0
  346. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/NameDouble.h +66 -0
  347. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/NumKeyword.cxx +190 -0
  348. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/NumKeyword.h +67 -0
  349. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/PBasic.cpp +8350 -0
  350. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/PBasic.h +572 -0
  351. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/PHRQ_io_output.cpp +411 -0
  352. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/PPassemblage.cxx +375 -0
  353. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/PPassemblage.h +70 -0
  354. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/PPassemblageComp.cxx +441 -0
  355. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/PPassemblageComp.h +83 -0
  356. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/Phreeqc.cpp +2087 -0
  357. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/Phreeqc.h +2164 -0
  358. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/PhreeqcKeywords/Keywords.cpp +242 -0
  359. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/PhreeqcKeywords/Keywords.h +104 -0
  360. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/Pressure.cxx +417 -0
  361. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/Pressure.h +43 -0
  362. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/Reaction.cxx +284 -0
  363. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/Reaction.h +57 -0
  364. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/ReadClass.cxx +1150 -0
  365. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/SS.cxx +609 -0
  366. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/SS.h +128 -0
  367. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/SSassemblage.cxx +317 -0
  368. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/SSassemblage.h +59 -0
  369. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/SScomp.cxx +297 -0
  370. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/SScomp.h +66 -0
  371. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/SelectedOutput.cpp +115 -0
  372. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/SelectedOutput.h +209 -0
  373. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/Serializer.cxx +213 -0
  374. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/Serializer.h +42 -0
  375. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/Solution.cxx +1795 -0
  376. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/Solution.h +154 -0
  377. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/SolutionIsotope.cxx +333 -0
  378. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/SolutionIsotope.h +85 -0
  379. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/StorageBin.cxx +1507 -0
  380. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/StorageBin.h +141 -0
  381. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/StorageBinList.cpp +358 -0
  382. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/StorageBinList.h +81 -0
  383. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/Surface.cxx +837 -0
  384. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/Surface.h +108 -0
  385. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/SurfaceCharge.cxx +617 -0
  386. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/SurfaceCharge.h +137 -0
  387. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/SurfaceComp.cxx +509 -0
  388. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/SurfaceComp.h +70 -0
  389. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/System.cxx +103 -0
  390. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/System.h +89 -0
  391. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/Temperature.cxx +423 -0
  392. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/Temperature.h +42 -0
  393. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/Use.cpp +78 -0
  394. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/Use.h +159 -0
  395. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/UserPunch.cpp +32 -0
  396. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/UserPunch.h +39 -0
  397. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/ZedGraph.dll +0 -0
  398. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/advection.cpp +140 -0
  399. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/basicsubs.cpp +4333 -0
  400. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/cl1.cpp +881 -0
  401. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/common/PHRQ_base.cxx +117 -0
  402. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/common/PHRQ_base.h +48 -0
  403. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/common/PHRQ_exports.h +20 -0
  404. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/common/PHRQ_io.cpp +914 -0
  405. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/common/PHRQ_io.h +207 -0
  406. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/common/Parser.cxx +1331 -0
  407. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/common/Parser.h +310 -0
  408. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/common/Utils.cxx +263 -0
  409. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/common/Utils.h +29 -0
  410. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/common/phrqtype.h +18 -0
  411. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/cvdense.cpp +566 -0
  412. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/cvdense.h +267 -0
  413. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/cvode.cpp +3939 -0
  414. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/cvode.h +940 -0
  415. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/cxxKinetics.cxx +617 -0
  416. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/cxxKinetics.h +78 -0
  417. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/cxxMix.cxx +154 -0
  418. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/cxxMix.h +58 -0
  419. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/dense.cpp +175 -0
  420. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/dense.h +341 -0
  421. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/dumper.cpp +277 -0
  422. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/dumper.h +60 -0
  423. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/gases.cpp +748 -0
  424. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/global_structures.h +1672 -0
  425. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/input.cpp +133 -0
  426. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/integrate.cpp +1219 -0
  427. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/inverse.cpp +5135 -0
  428. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/isotopes.cpp +1813 -0
  429. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/kinetics.cpp +3180 -0
  430. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/mainsubs.cpp +2320 -0
  431. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/model.cpp +5843 -0
  432. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/nvector.cpp +272 -0
  433. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/nvector.h +485 -0
  434. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/nvector_serial.cpp +1032 -0
  435. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/nvector_serial.h +369 -0
  436. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/parse.cpp +1044 -0
  437. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/phqalloc.cpp +316 -0
  438. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/phqalloc.h +47 -0
  439. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/pitzer.cpp +2709 -0
  440. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/pitzer_structures.cpp +225 -0
  441. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/prep.cpp +6267 -0
  442. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/print.cpp +3673 -0
  443. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/read.cpp +10245 -0
  444. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/readtr.cpp +1495 -0
  445. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/runner.cpp +158 -0
  446. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/runner.h +33 -0
  447. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/sit.cpp +1684 -0
  448. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/smalldense.cpp +324 -0
  449. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/smalldense.h +261 -0
  450. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/spread.cpp +1309 -0
  451. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/step.cpp +1566 -0
  452. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/structures.cpp +3381 -0
  453. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/sundialsmath.cpp +133 -0
  454. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/sundialsmath.h +162 -0
  455. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/sundialstypes.h +183 -0
  456. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/tally.cpp +1288 -0
  457. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/tidy.cpp +5600 -0
  458. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/transport.cpp +6403 -0
  459. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/phreeqcpp/utilities.cpp +1339 -0
  460. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/src/thread.h +64 -0
  461. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/tests/CMakeLists.txt +133 -0
  462. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/tests/Makefile.am +45 -0
  463. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/tests/Makefile.in +1128 -0
  464. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/tests/ex2.in +26 -0
  465. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/tests/main.f90 +31 -0
  466. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/tests/main77.f +6 -0
  467. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/tests/main_fortran.cxx +8 -0
  468. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/tests/phreeqc.dat.in +1556 -0
  469. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/tests/test_c.c +148 -0
  470. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/tests/test_cxx.cxx +152 -0
  471. pyEQL/phreeqc/ext/iphreeqc-3.8.6-17100/tests/test_f90.F90 +328 -0
  472. pyEQL/phreeqc/iphreeqc_wrapper.cpp +75 -0
  473. pyEQL/phreeqc/solution.py +74 -0
  474. pyEQL/phreeqc/var.py +50 -0
  475. pyEQL/presets/Ringers lactate.yaml +20 -0
  476. pyEQL/presets/__init__.py +17 -0
  477. pyEQL/presets/normal saline.yaml +17 -0
  478. pyEQL/presets/rainwater.yaml +17 -0
  479. pyEQL/presets/seawater.yaml +29 -0
  480. pyEQL/presets/urine.yaml +26 -0
  481. pyEQL/presets/wastewater.yaml +21 -0
  482. pyEQL/py.typed +0 -0
  483. pyEQL/salt_ion_match.py +112 -0
  484. pyEQL/solute.py +163 -0
  485. pyEQL/solution.py +2714 -0
  486. pyEQL/utils.py +237 -0
  487. pyeql-1.4.0rc9.dist-info/METADATA +130 -0
  488. pyeql-1.4.0rc9.dist-info/RECORD +491 -0
  489. pyeql-1.4.0rc9.dist-info/WHEEL +6 -0
  490. pyeql-1.4.0rc9.dist-info/licenses/AUTHORS.md +21 -0
  491. pyeql-1.4.0rc9.dist-info/licenses/LICENSE.txt +20 -0
@@ -0,0 +1,1150 @@
1
+ #ifdef _DEBUG
2
+ #pragma warning(disable : 4786) // disable truncation warning (Only used by debugger)
3
+ #endif
4
+ #include <iostream>
5
+ #include <fstream>
6
+ #include <sstream>
7
+
8
+ #include "Utils.h"
9
+ #include "Phreeqc.h"
10
+ #include "Parser.h"
11
+ #include "Solution.h"
12
+ #include "Exchange.h"
13
+ #include "Surface.h"
14
+ #include "PPassemblage.h"
15
+ #include "cxxKinetics.h"
16
+ #include "SSassemblage.h"
17
+ #include "GasPhase.h"
18
+ #include "Reaction.h"
19
+ #include "cxxMix.h"
20
+ #include "Temperature.h"
21
+ #include "dumper.h"
22
+ #include "runner.h"
23
+ #include "cxxMix.h"
24
+ #include "Surface.h"
25
+ #include "phqalloc.h"
26
+
27
+ #if defined(PHREEQCI_GUI)
28
+ #ifdef _DEBUG
29
+ #define new DEBUG_NEW
30
+ #undef THIS_FILE
31
+ static char THIS_FILE[] = __FILE__;
32
+ #endif
33
+ #endif
34
+
35
+ /* ---------------------------------------------------------------------- */
36
+ int Phreeqc::
37
+ read_dump(void)
38
+ /* ---------------------------------------------------------------------- */
39
+ {
40
+ /*
41
+ * Reads DUMP data block
42
+ *
43
+ * Arguments:
44
+ * none
45
+ *
46
+ * Returns:
47
+ * KEYWORD if keyword encountered, input_error may be incremented if
48
+ * a keyword is encountered in an unexpected position
49
+ * EOF if eof encountered while reading mass balance concentrations
50
+ * ERROR if error occurred reading data
51
+ *
52
+ */
53
+ int return_value;
54
+ /*
55
+ * Make parser
56
+ */
57
+ std::istringstream iss_in;
58
+ return_value = streamify_to_next_keyword(iss_in);
59
+ CParser parser(iss_in, phrq_io);
60
+ assert(!reading_database());
61
+
62
+ //For testing, need to read line to get started
63
+ parser.set_echo_file(CParser::EO_NONE);
64
+ std::vector < std::string > vopts;
65
+ std::istream::pos_type next_char;
66
+ parser.get_option(vopts, next_char);
67
+
68
+ if (pr.echo_input == FALSE)
69
+ {
70
+ parser.set_echo_file(CParser::EO_NONE);
71
+ }
72
+ else
73
+ {
74
+ parser.set_echo_file(CParser::EO_NOKEYWORDS);
75
+ }
76
+
77
+ dump_info.Read(parser);
78
+
79
+ // Need to output the next keyword
80
+ if (return_value == OPTION_KEYWORD) echo_msg(sformatf( "\t%s\n", line));
81
+ return (return_value);
82
+ }
83
+ /* ---------------------------------------------------------------------- */
84
+ int Phreeqc::
85
+ read_delete(void)
86
+ /* ---------------------------------------------------------------------- */
87
+ {
88
+ /*
89
+ * Reads DELETE data block
90
+ *
91
+ * Arguments:
92
+ * none
93
+ *
94
+ * Returns:
95
+ * KEYWORD if keyword encountered, input_error may be incremented if
96
+ * a keyword is encountered in an unexpected position
97
+ * EOF if eof encountered while reading mass balance concentrations
98
+ * ERROR if error occurred reading data
99
+ *
100
+ */
101
+ int return_value;
102
+ /*
103
+ * Make parser
104
+ */
105
+ std::istringstream iss_in;
106
+ return_value = streamify_to_next_keyword(iss_in);
107
+ CParser parser(iss_in, phrq_io);
108
+ //assert(!reading_database());
109
+
110
+ //For testing, need to read line to get started
111
+ parser.set_echo_file(CParser::EO_NONE);
112
+ std::vector < std::string > vopts;
113
+ std::istream::pos_type next_char;
114
+ parser.get_option(vopts, next_char);
115
+
116
+ if (pr.echo_input == FALSE)
117
+ {
118
+ parser.set_echo_file(CParser::EO_NONE);
119
+ }
120
+ else
121
+ {
122
+ parser.set_echo_file(CParser::EO_NOKEYWORDS);
123
+ }
124
+
125
+ delete_info.Read(parser);
126
+
127
+
128
+ // Need to output the next keyword
129
+ if (return_value == OPTION_KEYWORD) echo_msg(sformatf( "\t%s\n", line));
130
+ return (return_value);
131
+ }
132
+ /* ---------------------------------------------------------------------- */
133
+ int Phreeqc::
134
+ read_run_cells(void)
135
+ /* ---------------------------------------------------------------------- */
136
+ {
137
+ /*
138
+ * Reads DELETE data block
139
+ *
140
+ * Arguments:
141
+ * none
142
+ *
143
+ * Returns:
144
+ * KEYWORD if keyword encountered, input_error may be incremented if
145
+ * a keyword is encountered in an unexpected position
146
+ * EOF if eof encountered while reading mass balance concentrations
147
+ * ERROR if error occurred reading data
148
+ *
149
+ */
150
+ int return_value;
151
+ /*
152
+ * Make parser
153
+ */
154
+ std::istringstream iss_in;
155
+ return_value = streamify_to_next_keyword(iss_in);
156
+ CParser parser(iss_in, phrq_io);
157
+ assert(!reading_database());
158
+
159
+ //For testing, need to read line to get started
160
+ parser.set_echo_file(CParser::EO_NONE);
161
+ std::vector < std::string > vopts;
162
+ std::istream::pos_type next_char;
163
+ parser.get_option(vopts, next_char);
164
+
165
+ if (pr.echo_input == FALSE)
166
+ {
167
+ parser.set_echo_file(CParser::EO_NONE);
168
+ }
169
+ else
170
+ {
171
+ parser.set_echo_file(CParser::EO_NOKEYWORDS);
172
+ }
173
+
174
+ runner r(parser, phrq_io);
175
+ run_info = r;
176
+
177
+
178
+ // Need to output the next keyword
179
+ if (return_value == OPTION_KEYWORD) echo_msg(sformatf( "\t%s\n", line));
180
+ return (return_value);
181
+ }
182
+ /* ---------------------------------------------------------------------- */
183
+ int Phreeqc::
184
+ streamify_to_next_keyword(std::istringstream & lines)
185
+ /* ---------------------------------------------------------------------- */
186
+ {
187
+ /*
188
+ * Reads to next keyword or eof
189
+ *
190
+ * Returns:
191
+ * OPTION_KEYWORD
192
+ * OPTION_EOF
193
+ *
194
+ */
195
+ // Handle echo
196
+ int save_echo_input = pr.echo_input;
197
+ pr.echo_input = FALSE;
198
+
199
+ std::string accumulate(line);
200
+ accumulate.append("\n");
201
+ int j;
202
+ for (;;)
203
+ {
204
+ j = check_line("Streamify", FALSE, TRUE, TRUE, FALSE);
205
+ if (j == EOF)
206
+ { /* end of file */
207
+ break;
208
+ }
209
+ else if (j == KEYWORD)
210
+ { /* keyword */
211
+ break;
212
+ }
213
+ else
214
+ {
215
+ accumulate.append(line);
216
+ accumulate.append("\n");
217
+ }
218
+ }
219
+
220
+ lines.str(accumulate);
221
+ pr.echo_input = save_echo_input;
222
+ if (j == EOF) return (OPTION_EOF);
223
+ if (j == KEYWORD) return (OPTION_KEYWORD);
224
+
225
+
226
+ return (OPTION_ERROR);
227
+ }
228
+ /* ---------------------------------------------------------------------- */
229
+ int Phreeqc::
230
+ dump_entities(void)
231
+ /* ---------------------------------------------------------------------- */
232
+ {
233
+ if (!dump_info.Get_on() || pr.dump == FALSE)
234
+ {
235
+ return(OK);
236
+ }
237
+ dump_info.Set_on(false);
238
+ if (!dump_info.Get_bool_any())
239
+ {
240
+ return(OK);
241
+ }
242
+
243
+ if (this->phrq_io)
244
+ {
245
+ std::ios_base::openmode mode = std::ios_base::out;
246
+ if (dump_info.Get_append())
247
+ {
248
+ mode = std::ios_base::app;
249
+ }
250
+ if (this->phrq_io->dump_open(dump_info.Get_file_name().c_str(), mode))
251
+ {
252
+ dump_ostream(*this->phrq_io->Get_dump_ostream());
253
+ this->phrq_io->dump_close();
254
+ }
255
+ else
256
+ {
257
+ error_string = sformatf( "Unable to open dump file \"%s\"", dump_info.Get_file_name().c_str());
258
+ error_msg(error_string, STOP);
259
+ }
260
+ }
261
+ return (OK);
262
+ }
263
+ /* ---------------------------------------------------------------------- */
264
+ int Phreeqc::
265
+ delete_entities(void)
266
+ /* ---------------------------------------------------------------------- */
267
+ {
268
+ if (!delete_info.Get_solution().Get_defined() &&
269
+ !delete_info.Get_pp_assemblage().Get_defined() &&
270
+ !delete_info.Get_exchange().Get_defined() &&
271
+ !delete_info.Get_surface().Get_defined() &&
272
+ !delete_info.Get_ss_assemblage().Get_defined() &&
273
+ !delete_info.Get_gas_phase().Get_defined() &&
274
+ !delete_info.Get_kinetics().Get_defined() &&
275
+ !delete_info.Get_mix().Get_defined() &&
276
+ !delete_info.Get_reaction().Get_defined() &&
277
+ !delete_info.Get_temperature().Get_defined() &&
278
+ !delete_info.Get_pressure().Get_defined())
279
+ {
280
+ return(OK);
281
+ }
282
+
283
+ // solutions
284
+ if (delete_info.Get_solution().Get_defined())
285
+ {
286
+ if (delete_info.Get_solution().Get_numbers().size() == 0)
287
+ {
288
+ Rxn_solution_map.clear();
289
+ }
290
+ else
291
+ {
292
+ std::set < int >::iterator it;
293
+ for (it = delete_info.Get_solution().Get_numbers().begin(); it != delete_info.Get_solution().Get_numbers().end(); it++)
294
+ {
295
+ Rxn_solution_map.erase(*it);
296
+ }
297
+ }
298
+ }
299
+
300
+ // pp_assemblages
301
+ if (delete_info.Get_pp_assemblage().Get_defined())
302
+ {
303
+ if (delete_info.Get_pp_assemblage().Get_numbers().size() == 0)
304
+ {
305
+ Rxn_pp_assemblage_map.clear();
306
+ }
307
+ else
308
+ {
309
+ std::set < int >::iterator it;
310
+ for (it = delete_info.Get_pp_assemblage().Get_numbers().begin(); it != delete_info.Get_pp_assemblage().Get_numbers().end(); it++)
311
+ {
312
+ Rxn_pp_assemblage_map.erase(*it);
313
+ }
314
+ }
315
+ }
316
+ // exchangers
317
+ if (delete_info.Get_exchange().Get_defined())
318
+ {
319
+ if (delete_info.Get_exchange().Get_numbers().size() == 0)
320
+ {
321
+ Rxn_exchange_map.clear();
322
+ }
323
+ else
324
+ {
325
+ std::set < int >::iterator it;
326
+ for (it = delete_info.Get_exchange().Get_numbers().begin(); it != delete_info.Get_exchange().Get_numbers().end(); it++)
327
+ {
328
+ Rxn_exchange_map.erase(*it);
329
+ }
330
+ }
331
+ }
332
+ // surfaces
333
+ if (delete_info.Get_surface().Get_defined())
334
+ {
335
+ if (delete_info.Get_surface().Get_numbers().size() == 0)
336
+ {
337
+ Rxn_surface_map.clear();
338
+ }
339
+ else
340
+ {
341
+ std::set < int >::iterator it;
342
+ for (it = delete_info.Get_surface().Get_numbers().begin(); it != delete_info.Get_surface().Get_numbers().end(); it++)
343
+ {
344
+ Rxn_surface_map.erase(*it);
345
+ }
346
+ }
347
+ }
348
+ // ss_assemblages
349
+ if (delete_info.Get_ss_assemblage().Get_defined())
350
+ {
351
+ if (delete_info.Get_ss_assemblage().Get_numbers().size() == 0)
352
+ {
353
+ Rxn_ss_assemblage_map.clear();
354
+ }
355
+ else
356
+ {
357
+ std::set < int >::iterator it;
358
+ for (it = delete_info.Get_ss_assemblage().Get_numbers().begin(); it != delete_info.Get_ss_assemblage().Get_numbers().end(); it++)
359
+ {
360
+ Rxn_ss_assemblage_map.erase(*it);
361
+ }
362
+ }
363
+ }
364
+ // gas_phases
365
+ if (delete_info.Get_gas_phase().Get_defined())
366
+ {
367
+ if (delete_info.Get_gas_phase().Get_numbers().size() == 0)
368
+ {
369
+ Rxn_gas_phase_map.clear();
370
+ }
371
+ else
372
+ {
373
+ std::set < int >::iterator it;
374
+ for (it = delete_info.Get_gas_phase().Get_numbers().begin(); it != delete_info.Get_gas_phase().Get_numbers().end(); it++)
375
+ {
376
+ Rxn_gas_phase_map.erase(*it);
377
+ }
378
+ }
379
+ }
380
+ // kinetics
381
+ if (delete_info.Get_kinetics().Get_defined())
382
+ {
383
+ if (delete_info.Get_kinetics().Get_numbers().size() == 0)
384
+ {
385
+ Rxn_kinetics_map.clear();
386
+ }
387
+ else
388
+ {
389
+ std::set < int >::iterator it;
390
+ for (it = delete_info.Get_kinetics().Get_numbers().begin(); it != delete_info.Get_kinetics().Get_numbers().end(); it++)
391
+ {
392
+ Rxn_kinetics_map.erase(*it);
393
+ }
394
+ }
395
+ }
396
+ // mixes
397
+ if (delete_info.Get_mix().Get_defined())
398
+ {
399
+ if (delete_info.Get_mix().Get_numbers().size() == 0)
400
+ {
401
+ Rxn_mix_map.clear();
402
+ }
403
+ else
404
+ {
405
+ std::set < int >::iterator it;
406
+ for (it = delete_info.Get_mix().Get_numbers().begin(); it != delete_info.Get_mix().Get_numbers().end(); it++)
407
+ {
408
+ Rxn_mix_map.erase(*it);
409
+ }
410
+ }
411
+ }
412
+ // reactions
413
+ if (delete_info.Get_reaction().Get_defined())
414
+ {
415
+ if (delete_info.Get_reaction().Get_numbers().size() == 0)
416
+ {
417
+ Rxn_reaction_map.clear();
418
+ }
419
+ else
420
+ {
421
+ std::set < int >::iterator it;
422
+ for (it = delete_info.Get_reaction().Get_numbers().begin(); it != delete_info.Get_reaction().Get_numbers().end(); it++)
423
+ {
424
+ Rxn_reaction_map.erase(*it);
425
+ }
426
+ }
427
+ }
428
+ // temperatures
429
+ if (delete_info.Get_temperature().Get_defined())
430
+ {
431
+ if (delete_info.Get_temperature().Get_numbers().size() == 0)
432
+ {
433
+ Rxn_temperature_map.clear();
434
+ }
435
+ else
436
+ {
437
+ std::set < int >::iterator it;
438
+ for (it = delete_info.Get_temperature().Get_numbers().begin(); it != delete_info.Get_temperature().Get_numbers().end(); it++)
439
+ {
440
+ Rxn_temperature_map.erase(*it);
441
+ }
442
+ }
443
+ }
444
+ // pressures
445
+ if (delete_info.Get_pressure().Get_defined())
446
+ {
447
+ if (delete_info.Get_pressure().Get_numbers().size() == 0)
448
+ {
449
+ Rxn_pressure_map.clear();
450
+ }
451
+ else
452
+ {
453
+ std::set < int >::iterator it;
454
+ for (it = delete_info.Get_pressure().Get_numbers().begin(); it != delete_info.Get_pressure().Get_numbers().end(); it++)
455
+ {
456
+ Rxn_pressure_map.erase(*it);
457
+ }
458
+ }
459
+ }
460
+ // Turn off delete until next read
461
+ delete_info.SetAll(false);
462
+ return (OK);
463
+ }
464
+ #ifdef USE_OPTIMIZED_BUT_NOT_MUCH
465
+ /* ---------------------------------------------------------------------- */
466
+ int Phreeqc::
467
+ run_as_cells(void)
468
+ /* ---------------------------------------------------------------------- */
469
+ {
470
+ class save save_data;
471
+ LDBLE kin_time;
472
+ int count_steps, use_mix;
473
+ char token[2 * MAX_LENGTH];
474
+
475
+ state = REACTION;
476
+ if (run_info.Get_cells().Get_numbers().size() == 0 ||
477
+ !(run_info.Get_cells().Get_defined())) return(OK);
478
+
479
+ // running cells
480
+ run_info.Set_run_cells(true);
481
+
482
+ dup_print("Beginning of run as cells.", TRUE);
483
+ LDBLE initial_total_time_save;
484
+ if (run_info.Get_start_time() != NA)
485
+ {
486
+ initial_total_time_save = run_info.Get_start_time();
487
+ }
488
+ else
489
+ {
490
+ initial_total_time_save = initial_total_time;
491
+ }
492
+
493
+ std::set < int >::iterator it = run_info.Get_cells().Get_numbers().begin();
494
+
495
+ for ( ; it != run_info.Get_cells().Get_numbers().end(); it++)
496
+ {
497
+ int i = *it;
498
+ if (i < 0) continue;
499
+ initial_total_time = initial_total_time_save;
500
+ cxxKinetics *kinetics_ptr = NULL;
501
+ /*
502
+ * Run reaction step
503
+ */
504
+ /*
505
+ * Find maximum number of steps
506
+ */
507
+ dup_print("Beginning of batch-reaction calculations.", TRUE);
508
+ count_steps = 1;
509
+ if (cxxReaction *rxn_ptr = Utilities::Rxn_find(Rxn_reaction_map, i))
510
+ {
511
+ int count = rxn_ptr->Get_reaction_steps();
512
+ if (count > count_steps)
513
+ count_steps = count;
514
+ }
515
+ if (cxxKinetics *rxn_ptr = Utilities::Rxn_find(Rxn_kinetics_map, i))
516
+ {
517
+ kinetics_ptr = rxn_ptr;
518
+ if (rxn_ptr->Get_reaction_steps() > count_steps)
519
+ count_steps = rxn_ptr->Get_reaction_steps();
520
+ }
521
+ if (cxxTemperature *rxn_ptr = Utilities::Rxn_find(Rxn_temperature_map, i))
522
+ {
523
+ int count = rxn_ptr->Get_countTemps();
524
+ if (count > count_steps)
525
+ {
526
+ count_steps = count;
527
+ }
528
+ }
529
+ if (cxxPressure *rxn_ptr = Utilities::Rxn_find(Rxn_pressure_map, i))
530
+ {
531
+ int count = rxn_ptr->Get_count();
532
+ if (count > count_steps)
533
+ {
534
+ count_steps = count;
535
+ }
536
+ }
537
+ count_total_steps = count_steps;
538
+ if (count_steps > 1)
539
+ {
540
+ state = ADVECTION;
541
+ set_advection(i, TRUE, TRUE, i);
542
+ /*
543
+ * save data for saving solutions
544
+ */
545
+ memcpy(&save_data, &save, sizeof(class save));
546
+ /*
547
+ *Copy everything to -2
548
+ */
549
+ copy_use(-2);
550
+ rate_sim_time_start = 0;
551
+ rate_sim_time = 0;
552
+ for (reaction_step = 1; reaction_step <= count_steps; reaction_step++)
553
+ {
554
+ snprintf(token, sizeof(token), "Reaction step %d.", reaction_step);
555
+ if (reaction_step > 1 && incremental_reactions == FALSE)
556
+ {
557
+ copy_use(-2);
558
+ }
559
+ set_initial_moles(-2);
560
+ dup_print(token, FALSE);
561
+ /*
562
+ * Determine time step for kinetics
563
+ */
564
+ kin_time = 0.0;
565
+ if (use.Get_kinetics_in() == TRUE)
566
+ {
567
+ // runner kin_time
568
+ // equivalent to kin_time in count_steps
569
+ if (run_info.Get_time_step() != NA)
570
+ {
571
+ if (incremental_reactions == FALSE)
572
+ {
573
+ /* not incremental reactions */
574
+ kin_time = reaction_step * run_info.Get_time_step() / ((LDBLE) count_steps);
575
+ }
576
+ else
577
+ {
578
+ /* incremental reactions */
579
+ kin_time = run_info.Get_time_step() / ((LDBLE) count_steps);
580
+ }
581
+ }
582
+ // runner kin_time not defined
583
+ else
584
+ {
585
+ cxxKinetics *kinetics_ptr = Utilities::Rxn_find(Rxn_kinetics_map, -2);
586
+ kin_time = kinetics_ptr->Current_step((incremental_reactions==TRUE), reaction_step);
587
+ }
588
+ }
589
+ if (incremental_reactions == FALSE ||
590
+ (incremental_reactions == TRUE && reaction_step == 1))
591
+ {
592
+ use_mix = TRUE;
593
+ }
594
+ else
595
+ {
596
+ use_mix = FALSE;
597
+ }
598
+ /*
599
+ * Run reaction step
600
+ */
601
+ run_reactions(-2, kin_time, use_mix, 1.0);
602
+ if (incremental_reactions == TRUE)
603
+ {
604
+ rate_sim_time_start += kin_time;
605
+ rate_sim_time = rate_sim_time_start;
606
+ }
607
+ else
608
+ {
609
+ rate_sim_time = kin_time;
610
+ }
611
+ punch_all();
612
+ print_all();
613
+ /* saves back into -2 */
614
+ if (reaction_step < count_steps)
615
+ {
616
+ saver();
617
+ }
618
+ }
619
+ /*
620
+ * save end of reaction
621
+ */
622
+ memcpy(&save, &save_data, sizeof(class save));
623
+ if (use.Get_kinetics_in() == TRUE)
624
+ {
625
+ Utilities::Rxn_copy(Rxn_kinetics_map, -2, use.Get_n_kinetics_user());
626
+ }
627
+ saver();
628
+ }
629
+ else
630
+ // only 1 step, no worries about incremental reactions
631
+ {
632
+ state = TRANSPORT;
633
+
634
+ rate_sim_time_start = 0;
635
+ rate_sim_time = 0;
636
+ reaction_step = 1;
637
+
638
+ snprintf(token, sizeof(token), "Reaction step %d.", reaction_step);
639
+
640
+ dup_print(token, FALSE);
641
+ /*
642
+ * Determine time step for kinetics
643
+ */
644
+ kin_time = 0.0;
645
+ if (kinetics_ptr)
646
+ {
647
+ // runner kin_time
648
+ // equivalent to kin_time in count_steps
649
+ if (run_info.Get_time_step() != NA)
650
+ {
651
+ kin_time = run_info.Get_time_step();
652
+ }
653
+ // runner kin_time not defined
654
+ else
655
+ {
656
+ kin_time = kinetics_ptr->Get_steps()[0];
657
+ }
658
+ }
659
+ /*
660
+ * Run reaction step
661
+ */
662
+ use_mix = TRUE;
663
+ run_reactions(i, kin_time, use_mix, 1.0);
664
+ rate_sim_time = kin_time;
665
+ saver();
666
+ }
667
+ }
668
+ initial_total_time += rate_sim_time;
669
+ run_info.Get_cells().Set_defined(false);
670
+ // not running cells
671
+ run_info.Set_run_cells(false);
672
+ return (OK);
673
+ }
674
+ #else
675
+ /* ---------------------------------------------------------------------- */
676
+ int Phreeqc::
677
+ run_as_cells(void)
678
+ /* ---------------------------------------------------------------------- */
679
+ {
680
+ class save save_data;
681
+ LDBLE kin_time;
682
+ int count_steps, use_mix;
683
+ char token[2 * MAX_LENGTH];
684
+
685
+ state = REACTION;
686
+ if (run_info.Get_cells().Get_numbers().size() == 0 ||
687
+ !(run_info.Get_cells().Get_defined())) return(OK);
688
+
689
+ // running cells
690
+ run_info.Set_run_cells(true);
691
+
692
+ dup_print("Beginning of run as cells.", TRUE);
693
+ LDBLE initial_total_time_save;
694
+ if (run_info.Get_start_time() != NA)
695
+ {
696
+ initial_total_time_save = run_info.Get_start_time();
697
+ }
698
+ else
699
+ {
700
+ initial_total_time_save = initial_total_time;
701
+ }
702
+
703
+ std::set < int >::iterator it = run_info.Get_cells().Get_numbers().begin();
704
+
705
+ for ( ; it != run_info.Get_cells().Get_numbers().end(); it++)
706
+ {
707
+ int i = *it;
708
+ if (i < 0) continue;
709
+ if (Utilities::Rxn_find(Rxn_solution_map, i) == NULL
710
+ && Utilities::Rxn_find(Rxn_mix_map, i) == NULL)
711
+ continue;
712
+ initial_total_time = initial_total_time_save;
713
+ set_advection(i, TRUE, TRUE, i);
714
+ /*
715
+ * Run reaction step
716
+ */
717
+ /*
718
+ * Find maximum number of steps
719
+ */
720
+ dup_print("Beginning of batch-reaction calculations.", TRUE);
721
+ count_steps = 1;
722
+ if (!this->run_cells_one_step)
723
+ {
724
+ if (use.Get_reaction_in() == TRUE && use.Get_reaction_ptr() != NULL)
725
+ {
726
+ int count = use.Get_reaction_ptr()->Get_reaction_steps();
727
+ if (count > count_steps)
728
+ count_steps = count;
729
+ }
730
+ if (use.Get_kinetics_in() == TRUE && use.Get_kinetics_ptr() != NULL)
731
+ {
732
+ if (use.Get_kinetics_ptr()->Get_reaction_steps() > count_steps)
733
+ count_steps = use.Get_kinetics_ptr()->Get_reaction_steps();
734
+ }
735
+ if (use.Get_temperature_in() == TRUE && use.Get_temperature_ptr() != NULL)
736
+ {
737
+ int count = use.Get_temperature_ptr()->Get_countTemps();
738
+ if (count > count_steps)
739
+ {
740
+ count_steps = count;
741
+ }
742
+ }
743
+ if (use.Get_pressure_in() == TRUE && use.Get_pressure_ptr() != NULL)
744
+ {
745
+ int count = use.Get_pressure_ptr()->Get_count();
746
+ if (count > count_steps)
747
+ {
748
+ count_steps = count;
749
+ }
750
+ }
751
+ }
752
+ count_total_steps = count_steps;
753
+ /*
754
+ * save data for saving solutions
755
+ */
756
+ // memcpy(&save_data, &save, sizeof(class save));
757
+ save_data = save;
758
+ /*
759
+ *Copy everything to -2
760
+ */
761
+ copy_use(-2);
762
+ rate_sim_time_start = 0;
763
+ rate_sim_time = 0;
764
+ for (reaction_step = 1; reaction_step <= count_steps; reaction_step++)
765
+ {
766
+ snprintf(token, sizeof(token), "Reaction step %d.", reaction_step);
767
+ if (reaction_step > 1 && incremental_reactions == FALSE)
768
+ {
769
+ copy_use(-2);
770
+ }
771
+ set_initial_moles(-2);
772
+ dup_print(token, FALSE);
773
+ /*
774
+ * Determine time step for kinetics
775
+ */
776
+ kin_time = 0.0;
777
+ if (use.Get_kinetics_in() == TRUE)
778
+ {
779
+ // runner kin_time
780
+ // equivalent to kin_time in count_steps
781
+ if (run_info.Get_time_step() != NA)
782
+ {
783
+ if (incremental_reactions == FALSE)
784
+ {
785
+ /* not incremental reactions */
786
+ kin_time = reaction_step * run_info.Get_time_step() / ((LDBLE) count_steps);
787
+ }
788
+ else
789
+ {
790
+ /* incremental reactions */
791
+ kin_time = run_info.Get_time_step() / ((LDBLE) count_steps);
792
+ }
793
+ }
794
+ // runner kin_time not defined
795
+ else
796
+ {
797
+ cxxKinetics *kinetics_ptr = Utilities::Rxn_find(Rxn_kinetics_map, -2);
798
+ kin_time = kinetics_ptr->Current_step((incremental_reactions==TRUE), reaction_step);
799
+ }
800
+ }
801
+ if (incremental_reactions == FALSE ||
802
+ (incremental_reactions == TRUE && reaction_step == 1))
803
+ {
804
+ use_mix = TRUE;
805
+ }
806
+ else
807
+ {
808
+ use_mix = FALSE;
809
+ }
810
+ /*
811
+ * Run reaction step
812
+ */
813
+ run_reactions(-2, kin_time, use_mix, 1.0);
814
+ if (incremental_reactions == TRUE)
815
+ {
816
+ rate_sim_time_start += kin_time;
817
+ rate_sim_time = rate_sim_time_start;
818
+ }
819
+ else
820
+ {
821
+ rate_sim_time = kin_time;
822
+ }
823
+ if (state != ADVECTION)
824
+ {
825
+ punch_all();
826
+ print_all();
827
+ }
828
+ /* saves back into -2 */
829
+ if (reaction_step < count_steps)
830
+ {
831
+ saver();
832
+ }
833
+ }
834
+ /*
835
+ * save end of reaction
836
+ */
837
+ // memcpy(&save, &save_data, sizeof(class save));
838
+ save = save_data;
839
+ if (use.Get_kinetics_in() == TRUE)
840
+ {
841
+ Utilities::Rxn_copy(Rxn_kinetics_map, -2, use.Get_n_kinetics_user());
842
+ }
843
+ saver();
844
+ }
845
+ initial_total_time += rate_sim_time;
846
+ run_info.Get_cells().Set_defined(false);
847
+ // not running cells
848
+ run_info.Set_run_cells(false);
849
+ return (OK);
850
+ }
851
+ #endif
852
+ /* ---------------------------------------------------------------------- */
853
+ void Phreeqc::
854
+ dump_ostream(std::ostream& os)
855
+ /* ---------------------------------------------------------------------- */
856
+ {
857
+ // solutions
858
+ if (dump_info.Get_bool_solution())
859
+ {
860
+ if (dump_info.Get_solution().size() == 0)
861
+ {
862
+ Utilities::Rxn_dump_raw(Rxn_solution_map, os, 0);
863
+ }
864
+ else
865
+ {
866
+ std::set < int >::iterator it;
867
+ for (it = dump_info.Get_solution().begin(); it != dump_info.Get_solution().end(); it++)
868
+ {
869
+ cxxSolution *p = Utilities::Rxn_find(Rxn_solution_map, *it);
870
+ if (p != NULL && p->Get_n_user() >= 0)
871
+ {
872
+ p->dump_raw(os, 0);
873
+ }
874
+ }
875
+ }
876
+ }
877
+
878
+ // pp_assemblages
879
+ if (dump_info.Get_bool_pp_assemblage())
880
+ {
881
+ if (dump_info.Get_pp_assemblage().size() == 0)
882
+ {
883
+ Utilities::Rxn_dump_raw(Rxn_pp_assemblage_map, os, 0);
884
+ }
885
+ else
886
+ {
887
+ std::set < int >::iterator it;
888
+ for (it = dump_info.Get_pp_assemblage().begin(); it != dump_info.Get_pp_assemblage().end(); it++)
889
+ {
890
+ cxxPPassemblage *p = Utilities::Rxn_find(Rxn_pp_assemblage_map, *it);
891
+
892
+ if (p != NULL && p->Get_n_user() >= 0)
893
+ {
894
+ p->dump_raw(os, 0);
895
+ }
896
+ }
897
+ }
898
+ }
899
+ // exchanges
900
+ if (dump_info.Get_bool_exchange())
901
+ {
902
+ if (dump_info.Get_exchange().size() == 0)
903
+ {
904
+ Utilities::Rxn_dump_raw(Rxn_exchange_map, os, 0);
905
+ }
906
+ else
907
+ {
908
+ std::set < int >::iterator it;
909
+ for (it = dump_info.Get_exchange().begin(); it != dump_info.Get_exchange().end(); it++)
910
+ {
911
+ cxxExchange *p = Utilities::Rxn_find(Rxn_exchange_map, *it);
912
+
913
+ if (p != NULL && p->Get_n_user() >= 0)
914
+ {
915
+ p->dump_raw(os, 0);
916
+ }
917
+ }
918
+ }
919
+ }
920
+
921
+ // surfaces
922
+ if (dump_info.Get_bool_surface())
923
+ {
924
+ if (dump_info.Get_surface().size() == 0)
925
+ {
926
+ Utilities::Rxn_dump_raw(Rxn_surface_map, os, 0);
927
+ }
928
+ else
929
+ {
930
+ std::set < int >::iterator it;
931
+ for (it = dump_info.Get_surface().begin(); it != dump_info.Get_surface().end(); it++)
932
+ {
933
+ cxxSurface *p = Utilities::Rxn_find(Rxn_surface_map, *it);
934
+
935
+ if (p != NULL && p->Get_n_user() >= 0)
936
+ {
937
+ p->dump_raw(os, 0);
938
+ }
939
+ }
940
+ }
941
+ }
942
+ // ss_assemblages
943
+ if (dump_info.Get_bool_ss_assemblage())
944
+ {
945
+ if (dump_info.Get_ss_assemblage().size() == 0)
946
+ {
947
+ Utilities::Rxn_dump_raw(Rxn_ss_assemblage_map, os, 0);
948
+ }
949
+ else
950
+ {
951
+ std::set < int >::iterator it;
952
+ for (it = dump_info.Get_ss_assemblage().begin(); it != dump_info.Get_ss_assemblage().end(); it++)
953
+ {
954
+ cxxSSassemblage *p = Utilities::Rxn_find(Rxn_ss_assemblage_map, *it);
955
+
956
+ if (p != NULL && p->Get_n_user() >= 0)
957
+ {
958
+ p->dump_raw(os, 0);
959
+ }
960
+ }
961
+ }
962
+ }
963
+ // gas_phases
964
+ if (dump_info.Get_bool_gas_phase())
965
+ {
966
+ if (dump_info.Get_gas_phase().size() == 0)
967
+ {
968
+ Utilities::Rxn_dump_raw(Rxn_gas_phase_map, os, 0);
969
+ }
970
+ else
971
+ {
972
+ std::set < int >::iterator it;
973
+ for (it = dump_info.Get_gas_phase().begin(); it != dump_info.Get_gas_phase().end(); it++)
974
+ {
975
+ cxxGasPhase *p = Utilities::Rxn_find(Rxn_gas_phase_map, *it);
976
+
977
+ if (p != NULL && p->Get_n_user() >= 0)
978
+ {
979
+ p->dump_raw(os, 0);
980
+ }
981
+ }
982
+ }
983
+ }
984
+
985
+ // kinetics
986
+ if (dump_info.Get_bool_kinetics())
987
+ {
988
+ if (dump_info.Get_kinetics().size() == 0)
989
+ {
990
+ Utilities::Rxn_dump_raw(Rxn_kinetics_map, os, 0);
991
+ }
992
+ else
993
+ {
994
+ std::set < int >::iterator it;
995
+ for (it = dump_info.Get_kinetics().begin(); it != dump_info.Get_kinetics().end(); it++)
996
+ {
997
+ cxxKinetics *p = Utilities::Rxn_find(Rxn_kinetics_map, *it);
998
+
999
+ if (p != NULL && p->Get_n_user() >= 0)
1000
+ {
1001
+ p->dump_raw(os, 0);
1002
+ }
1003
+ }
1004
+ }
1005
+ }
1006
+ // mix
1007
+ if (dump_info.Get_bool_mix())
1008
+ {
1009
+ if (dump_info.Get_mix().size() == 0)
1010
+ {
1011
+ Utilities::Rxn_dump_raw(Rxn_mix_map, os, 0);
1012
+ }
1013
+ else
1014
+ {
1015
+ std::set < int >::iterator it;
1016
+ for (it = dump_info.Get_mix().begin(); it != dump_info.Get_mix().end(); it++)
1017
+ {
1018
+ cxxMix *p = Utilities::Rxn_find(Rxn_mix_map, *it);
1019
+
1020
+ if (p != NULL && p->Get_n_user() >= 0)
1021
+ {
1022
+ p->dump_raw(os, 0);
1023
+ }
1024
+ }
1025
+ }
1026
+ }
1027
+
1028
+ // reaction
1029
+ if (dump_info.Get_bool_reaction())
1030
+ {
1031
+ if (dump_info.Get_reaction().size() == 0)
1032
+ {
1033
+ Utilities::Rxn_dump_raw(Rxn_reaction_map, os, 0);
1034
+ }
1035
+ else
1036
+ {
1037
+ std::set < int >::iterator it;
1038
+ for (it = dump_info.Get_reaction().begin(); it != dump_info.Get_reaction().end(); it++)
1039
+ {
1040
+ cxxReaction *p = Utilities::Rxn_find(Rxn_reaction_map, *it);
1041
+
1042
+ if (p != NULL && p->Get_n_user() >= 0)
1043
+ {
1044
+ p->dump_raw(os, 0);
1045
+ }
1046
+ }
1047
+ }
1048
+ }
1049
+
1050
+ // temperature
1051
+ if (dump_info.Get_bool_temperature())
1052
+ {
1053
+ if (dump_info.Get_temperature().size() == 0)
1054
+ {
1055
+ Utilities::Rxn_dump_raw(Rxn_temperature_map, os, 0);
1056
+ }
1057
+ else
1058
+ {
1059
+ std::set < int >::iterator it;
1060
+ for (it = dump_info.Get_temperature().begin(); it != dump_info.Get_temperature().end(); it++)
1061
+ {
1062
+ cxxTemperature *p = Utilities::Rxn_find(Rxn_temperature_map, *it);
1063
+
1064
+ if (p != NULL && p->Get_n_user() >= 0)
1065
+ {
1066
+ p->dump_raw(os, 0);
1067
+ }
1068
+ }
1069
+ }
1070
+ }
1071
+ // pressure
1072
+ if (dump_info.Get_bool_pressure())
1073
+ {
1074
+ if (dump_info.Get_pressure().size() == 0)
1075
+ {
1076
+ Utilities::Rxn_dump_raw(Rxn_pressure_map, os, 0);
1077
+ }
1078
+ else
1079
+ {
1080
+ std::set < int >::iterator it;
1081
+ for (it = dump_info.Get_pressure().begin(); it != dump_info.Get_pressure().end(); it++)
1082
+ {
1083
+ cxxPressure *p = Utilities::Rxn_find(Rxn_pressure_map, *it);
1084
+
1085
+ if (p != NULL && p->Get_n_user() >= 0)
1086
+ {
1087
+ p->dump_raw(os, 0);
1088
+ }
1089
+ }
1090
+ }
1091
+ }
1092
+ // Turn off any reaction calculation
1093
+ os << "USE mix none" << "\n";
1094
+ os << "USE reaction none" << "\n";
1095
+ os << "USE reaction_temperature none" << "\n";
1096
+ os << "USE reaction_pressure none" << "\n";
1097
+
1098
+ // Turn off dump until next read
1099
+ dump_info.SetAll(false);
1100
+ }
1101
+ #if defined MULTICHART
1102
+ /* ---------------------------------------------------------------------- */
1103
+ int Phreeqc::
1104
+ read_user_graph_handler(void)
1105
+ /* ---------------------------------------------------------------------- */
1106
+ {
1107
+ /*
1108
+ * Reads USER_GRAPH_DATA_BLOCK data block
1109
+ *
1110
+ * Arguments:
1111
+ * none
1112
+ *
1113
+ * Returns:
1114
+ * KEYWORD if keyword encountered, input_error may be incremented if
1115
+ * a keyword is encountered in an unexpected position
1116
+ * EOF if eof encountered while reading mass balance concentrations
1117
+ * ERROR if error occurred reading data
1118
+ *
1119
+ */
1120
+ int return_value;
1121
+
1122
+ /*
1123
+ * Make parser
1124
+ */
1125
+ std::istringstream iss_in;
1126
+ return_value = streamify_to_next_keyword(iss_in);
1127
+ CParser parser(iss_in, phrq_io);
1128
+
1129
+ //For testing, need to read line to get started
1130
+ std::vector < std::string > vopts;
1131
+ std::istream::pos_type next_char;
1132
+
1133
+ if (pr.echo_input == FALSE)
1134
+ {
1135
+ parser.set_echo_file(CParser::EO_NONE);
1136
+ }
1137
+ else
1138
+ {
1139
+ parser.set_echo_file(CParser::EO_NOKEYWORDS);
1140
+ }
1141
+
1142
+ assert(!reading_database());
1143
+
1144
+ bool success = chart_handler.Read(this, parser);
1145
+
1146
+ // Need to output the next keyword
1147
+ if (return_value == OPTION_KEYWORD) echo_msg(sformatf( "\t%s\n", line));
1148
+ return (return_value);
1149
+ }
1150
+ #endif