burnman-cpp 0.6.0__tar.gz → 0.8.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 (573) hide show
  1. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/.github/workflows/benchmarks.yml +1 -1
  2. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/.github/workflows/tests.yml +8 -7
  3. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/.gitignore +1 -0
  4. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/CMakeLists.txt +33 -1
  5. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/Makefile +32 -8
  6. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/PKG-INFO +2 -1
  7. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/benchmarks/README.md +5 -0
  8. burnman_cpp-0.8.0/benchmarks/dekoker_2013/README.md +43 -0
  9. burnman_cpp-0.8.0/benchmarks/dekoker_2013/benchmark.py +235 -0
  10. burnman_cpp-0.8.0/benchmarks/dekoker_2013/extract_reference.py +350 -0
  11. burnman_cpp-0.8.0/benchmarks/dekoker_2013/reference/Mg2SiO4.png +0 -0
  12. burnman_cpp-0.8.0/benchmarks/dekoker_2013/reference/Mg3Si2O7.png +0 -0
  13. burnman_cpp-0.8.0/benchmarks/dekoker_2013/reference/Mg5SiO7.png +0 -0
  14. burnman_cpp-0.8.0/benchmarks/dekoker_2013/reference/MgO.png +0 -0
  15. burnman_cpp-0.8.0/benchmarks/dekoker_2013/reference/MgSi2O5.png +0 -0
  16. burnman_cpp-0.8.0/benchmarks/dekoker_2013/reference/MgSi3O7.png +0 -0
  17. burnman_cpp-0.8.0/benchmarks/dekoker_2013/reference/MgSi5O11.png +0 -0
  18. burnman_cpp-0.8.0/benchmarks/dekoker_2013/reference/MgSiO3.png +0 -0
  19. burnman_cpp-0.8.0/benchmarks/dekoker_2013/reference/SiO2.png +0 -0
  20. burnman_cpp-0.8.0/benchmarks/dekoker_2013/reference/endmembers.json +931 -0
  21. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/benchmarks/stixrude_2024.py +7 -1
  22. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/benchmarks/stixrude_2024_figure13/benchmark.py +12 -6
  23. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/benchmarks/stixrude_2024_figure14/benchmark.py +5 -7
  24. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/benchmarks/stixrude_2024_figure14/geotherm.py +3 -8
  25. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/benchmarks/stixrude_2024_figure14/overlay.py +2 -6
  26. burnman_cpp-0.8.0/cmake/EmbedCovariance.cmake +42 -0
  27. burnman_cpp-0.8.0/examples/data/input_fitting/Bertka_Fei_1997_mars_mantle.dat +89 -0
  28. burnman_cpp-0.8.0/examples/data/input_fitting/SOURCES.md +11 -0
  29. burnman_cpp-0.8.0/examples/example_build_planet.py +138 -0
  30. burnman_cpp-0.8.0/examples/example_dekoker_2013.py +252 -0
  31. burnman_cpp-0.8.0/examples/example_equilibrated_composite.py +86 -0
  32. burnman_cpp-0.8.0/examples/example_fit_composition.py +158 -0
  33. burnman_cpp-0.8.0/examples/example_geotherm.py +114 -0
  34. burnman_cpp-0.8.0/examples/example_hugoniot.py +139 -0
  35. burnman_cpp-0.8.0/examples/example_layer.py +119 -0
  36. burnman_cpp-0.8.0/examples/example_optimal_thermobarometry.py +550 -0
  37. burnman_cpp-0.8.0/examples/example_seismic.py +56 -0
  38. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/include/burnman/core/assemblage.hpp +26 -0
  39. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/include/burnman/core/combined_mineral.hpp +3 -0
  40. burnman_cpp-0.8.0/include/burnman/core/equilibrated_composite.hpp +112 -0
  41. burnman_cpp-0.8.0/include/burnman/core/geotherm.hpp +143 -0
  42. burnman_cpp-0.8.0/include/burnman/core/layer.hpp +169 -0
  43. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/include/burnman/core/material.hpp +5 -0
  44. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/include/burnman/core/mineral.hpp +7 -0
  45. burnman_cpp-0.8.0/include/burnman/core/planet.hpp +112 -0
  46. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/include/burnman/core/relaxed_solution.hpp +1 -0
  47. burnman_cpp-0.8.0/include/burnman/core/seismic.hpp +132 -0
  48. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/include/burnman/core/solution.hpp +21 -0
  49. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/include/burnman/eos/birch_murnaghan.hpp +28 -1
  50. burnman_cpp-0.8.0/include/burnman/eos/cork.hpp +58 -0
  51. burnman_cpp-0.8.0/include/burnman/eos/dks_liquid.hpp +74 -0
  52. burnman_cpp-0.8.0/include/burnman/eos/dks_solid.hpp +74 -0
  53. burnman_cpp-0.8.0/include/burnman/minerals/covariance.hpp +29 -0
  54. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/include/burnman/minerals/datasets.hpp +401 -1
  55. burnman_cpp-0.8.0/include/burnman/optim/composition_fitting.hpp +87 -0
  56. burnman_cpp-0.8.0/include/burnman/optim/linear_fitting.hpp +44 -0
  57. burnman_cpp-0.8.0/include/burnman/tools/chemistry.hpp +69 -0
  58. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/include/burnman/tools/equilibration/equality_constraint_variants.hpp +19 -0
  59. burnman_cpp-0.8.0/include/burnman/tools/partitioning.hpp +27 -0
  60. burnman_cpp-0.8.0/include/burnman/tools/seismic.hpp +24 -0
  61. burnman_cpp-0.8.0/include/burnman/tools/thermobarometry.hpp +94 -0
  62. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/include/burnman/utils/types/mineral_params.hpp +10 -2
  63. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/include/burnman/utils/types/simple_types.hpp +5 -1
  64. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/pyproject.toml +15 -5
  65. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/python/bindings/bindings.hpp +26 -0
  66. burnman_cpp-0.8.0/python/bindings/chemistry.cpp +84 -0
  67. burnman_cpp-0.8.0/python/bindings/composition_fitting.cpp +97 -0
  68. burnman_cpp-0.8.0/python/bindings/equilibrated_composite.cpp +61 -0
  69. burnman_cpp-0.8.0/python/bindings/geotherm.cpp +207 -0
  70. burnman_cpp-0.8.0/python/bindings/layer.cpp +178 -0
  71. burnman_cpp-0.8.0/python/bindings/linear_fitting.cpp +45 -0
  72. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/python/bindings/materials.cpp +64 -0
  73. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/python/bindings/minerals.cpp +411 -0
  74. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/python/bindings/module.cpp +9 -0
  75. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/python/bindings/params.cpp +12 -0
  76. burnman_cpp-0.8.0/python/bindings/planet.cpp +96 -0
  77. burnman_cpp-0.8.0/python/bindings/radial.hpp +85 -0
  78. burnman_cpp-0.8.0/python/bindings/seismic.cpp +207 -0
  79. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/python/bindings/solutions.cpp +27 -0
  80. burnman_cpp-0.8.0/python/bindings/thermobarometry.cpp +172 -0
  81. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/python/burnman_cpp/__init__.py +46 -1
  82. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/python/burnman_cpp/adapters.py +9 -1
  83. burnman_cpp-0.8.0/python/burnman_cpp/classes/__init__.py +14 -0
  84. burnman_cpp-0.8.0/python/burnman_cpp/classes/equilibratedcomposite.py +267 -0
  85. burnman_cpp-0.8.0/python/burnman_cpp/classes/geotherm.py +55 -0
  86. burnman_cpp-0.8.0/python/burnman_cpp/classes/layer.py +18 -0
  87. burnman_cpp-0.8.0/python/burnman_cpp/classes/planet.py +18 -0
  88. burnman_cpp-0.8.0/python/burnman_cpp/classes/seismic.py +48 -0
  89. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/python/burnman_cpp/minerals/__init__.py +67 -16
  90. burnman_cpp-0.8.0/python/burnman_cpp/optimize/__init__.py +18 -0
  91. burnman_cpp-0.8.0/python/burnman_cpp/optimize/composition_fitting.py +26 -0
  92. burnman_cpp-0.8.0/python/burnman_cpp/optimize/linear_fitting.py +18 -0
  93. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/python/burnman_cpp/tools/__init__.py +6 -0
  94. burnman_cpp-0.8.0/python/burnman_cpp/tools/chemistry.py +87 -0
  95. burnman_cpp-0.8.0/python/burnman_cpp/tools/partitioning.py +18 -0
  96. burnman_cpp-0.8.0/python/burnman_cpp/tools/seismic.py +32 -0
  97. burnman_cpp-0.8.0/python/burnman_cpp/tools/thermobarometry.py +34 -0
  98. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/python/tests/conftest.py +10 -0
  99. burnman_cpp-0.8.0/python/tests/dks_fortran_reference.py +77 -0
  100. burnman_cpp-0.8.0/python/tests/test_chemistry.py +436 -0
  101. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/python/tests/test_complete_datasets.py +34 -5
  102. burnman_cpp-0.8.0/python/tests/test_composition_fitting.py +489 -0
  103. burnman_cpp-0.8.0/python/tests/test_cork.py +253 -0
  104. burnman_cpp-0.8.0/python/tests/test_covariance.py +128 -0
  105. burnman_cpp-0.8.0/python/tests/test_dekoker_endmembers.py +40 -0
  106. burnman_cpp-0.8.0/python/tests/test_dekoker_example.py +80 -0
  107. burnman_cpp-0.8.0/python/tests/test_dks.py +159 -0
  108. burnman_cpp-0.8.0/python/tests/test_equilibrated_composite.py +344 -0
  109. burnman_cpp-0.8.0/python/tests/test_figure13_benchmark.py +95 -0
  110. burnman_cpp-0.8.0/python/tests/test_figure14_benchmark.py +76 -0
  111. burnman_cpp-0.8.0/python/tests/test_geotherm.py +264 -0
  112. burnman_cpp-0.8.0/python/tests/test_hp_datasets.py +136 -0
  113. burnman_cpp-0.8.0/python/tests/test_layer_planet.py +429 -0
  114. burnman_cpp-0.8.0/python/tests/test_linear_fitting.py +315 -0
  115. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/python/tests/test_mineral_catalogue_reference.py +1 -1
  116. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/python/tests/test_native_minerals.py +6 -0
  117. burnman_cpp-0.8.0/python/tests/test_seismic.py +244 -0
  118. burnman_cpp-0.8.0/python/tests/test_slb_datasets.py +156 -0
  119. burnman_cpp-0.8.0/python/tests/test_thermobarometry.py +455 -0
  120. burnman_cpp-0.8.0/python/tests/test_wheel_dependencies.py +169 -0
  121. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/src/core/assemblage.cpp +106 -0
  122. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/src/core/combined_mineral.cpp +15 -0
  123. burnman_cpp-0.8.0/src/core/equilibrated_composite.cpp +414 -0
  124. burnman_cpp-0.8.0/src/core/geotherm.cpp +287 -0
  125. burnman_cpp-0.8.0/src/core/layer.cpp +427 -0
  126. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/src/core/material.cpp +83 -1
  127. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/src/core/mineral.cpp +3 -0
  128. burnman_cpp-0.8.0/src/core/planet.cpp +308 -0
  129. burnman_cpp-0.8.0/src/core/radial_profile.hpp +114 -0
  130. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/src/core/relaxed_solution.cpp +6 -0
  131. burnman_cpp-0.8.0/src/core/seismic.cpp +377 -0
  132. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/src/core/solution.cpp +53 -0
  133. burnman_cpp-0.8.0/src/data/covariance.cpp +125 -0
  134. burnman_cpp-0.8.0/src/data/geotherm_data.hpp +452 -0
  135. burnman_cpp-0.8.0/src/data/input_covariance/HGP_2018_ds633_cov.h5 +0 -0
  136. burnman_cpp-0.8.0/src/data/input_covariance/HP_2011_ds62_cov.h5 +0 -0
  137. burnman_cpp-0.8.0/src/data/input_covariance/HPx_ds636_cov.h5 +0 -0
  138. burnman_cpp-0.8.0/src/data/input_geotherm/Anzellini_2013_PT.txt +34 -0
  139. burnman_cpp-0.8.0/src/data/input_geotherm/Katsura_2022.txt +51 -0
  140. burnman_cpp-0.8.0/src/data/input_geotherm/Plesa_2022_Mars_V_6cm3.txt +44 -0
  141. burnman_cpp-0.8.0/src/data/input_geotherm/SOURCES.md +25 -0
  142. burnman_cpp-0.8.0/src/data/input_geotherm/Stacey_1977_continents.txt +81 -0
  143. burnman_cpp-0.8.0/src/data/input_geotherm/Stacey_1977_oceans.txt +81 -0
  144. burnman_cpp-0.8.0/src/data/input_geotherm/anderson_82.txt +59 -0
  145. burnman_cpp-0.8.0/src/data/input_geotherm/brown_81.txt +69 -0
  146. burnman_cpp-0.8.0/src/data/input_seismic/SOURCES.md +20 -0
  147. burnman_cpp-0.8.0/src/data/input_seismic/STW105.txt +752 -0
  148. burnman_cpp-0.8.0/src/data/input_seismic/ak135.txt +147 -0
  149. burnman_cpp-0.8.0/src/data/input_seismic/iasp91.txt +154 -0
  150. burnman_cpp-0.8.0/src/data/input_seismic/prem.txt +96 -0
  151. burnman_cpp-0.8.0/src/data/input_seismic/pwave_fast.txt +146 -0
  152. burnman_cpp-0.8.0/src/data/input_seismic/pwave_slow.txt +146 -0
  153. burnman_cpp-0.8.0/src/data/input_seismic/swave_fast.txt +145 -0
  154. burnman_cpp-0.8.0/src/data/input_seismic/swave_slow.txt +145 -0
  155. burnman_cpp-0.8.0/src/data/read_table.cpp +61 -0
  156. burnman_cpp-0.8.0/src/data/read_table.hpp +24 -0
  157. burnman_cpp-0.8.0/src/data/seismic_data.hpp +1766 -0
  158. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/src/eos/birch_murnaghan.cpp +93 -0
  159. burnman_cpp-0.8.0/src/eos/cork.cpp +229 -0
  160. burnman_cpp-0.8.0/src/eos/dks_common.hpp +60 -0
  161. burnman_cpp-0.8.0/src/eos/dks_liquid.cpp +255 -0
  162. burnman_cpp-0.8.0/src/eos/dks_solid.cpp +196 -0
  163. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/src/eos/make_eos.cpp +11 -0
  164. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/src/minerals/datasets.cpp +11703 -5347
  165. burnman_cpp-0.8.0/src/optim/composition_fitting.cpp +269 -0
  166. burnman_cpp-0.8.0/src/optim/linear_fitting.cpp +373 -0
  167. burnman_cpp-0.8.0/src/tools/chemistry.cpp +429 -0
  168. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/src/tools/equilibration/equality_constraint_variants.cpp +61 -0
  169. burnman_cpp-0.8.0/src/tools/partitioning.cpp +71 -0
  170. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/src/tools/phase_diagram/properties.cpp +18 -1
  171. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/src/tools/phase_diagram/stability.cpp +28 -10
  172. burnman_cpp-0.8.0/src/tools/seismic.cpp +27 -0
  173. burnman_cpp-0.8.0/src/tools/thermobarometry.cpp +539 -0
  174. burnman_cpp-0.8.0/tests/core/test_geotherm.cpp +185 -0
  175. burnman_cpp-0.8.0/tests/core/test_layer_planet.cpp +169 -0
  176. burnman_cpp-0.8.0/tests/core/test_seismic.cpp +140 -0
  177. burnman_cpp-0.8.0/tests/eos/test_cork.cpp +160 -0
  178. burnman_cpp-0.8.0/tests/eos/test_dks.cpp +115 -0
  179. burnman_cpp-0.8.0/tests/minerals/test_covariance.cpp +48 -0
  180. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/tests/minerals/test_native_datasets.cpp +105 -0
  181. burnman_cpp-0.8.0/tests/optim/test_composition_fitting.cpp +235 -0
  182. burnman_cpp-0.8.0/tests/optim/test_linear_fitting.cpp +161 -0
  183. burnman_cpp-0.8.0/tests/tools/test_chemistry.cpp +144 -0
  184. burnman_cpp-0.8.0/tests/tools/test_thermobarometry.cpp +106 -0
  185. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/tools/build_wheel_dependencies.py +82 -12
  186. burnman_cpp-0.8.0/tools/export_covariance_data.py +113 -0
  187. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/tools/export_example_minerals.py +67 -8
  188. burnman_cpp-0.8.0/tools/export_geotherm_data.py +55 -0
  189. burnman_cpp-0.8.0/tools/export_seismic_data.py +55 -0
  190. burnman_cpp-0.6.0/benchmarks/stixrude_2024_figure13/reference/prem_depth_pressure.txt +0 -60
  191. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/.clang-format +0 -0
  192. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/.github/workflows/format.yml +0 -0
  193. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/.github/workflows/wheels.yml +0 -0
  194. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/LICENSE +0 -0
  195. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/README.md +0 -0
  196. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/benchmarks/core/benchmark_assemblage.cpp +0 -0
  197. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/benchmarks/core/benchmark_mineral.cpp +0 -0
  198. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/benchmarks/cpp_python_speedup.py +0 -0
  199. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/benchmarks/eos/benchmark_property_modifiers.cpp +0 -0
  200. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/benchmarks/parse_benchmarks.py +0 -0
  201. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/benchmarks/python_benchmarks.py +0 -0
  202. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/benchmarks/requirements.txt +0 -0
  203. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/benchmarks/stixrude_2024_figure13/README.md +0 -0
  204. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/benchmarks/stixrude_2024_figure13/overlay.py +0 -0
  205. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/benchmarks/stixrude_2024_figure13/reference/axis_registration.json +0 -0
  206. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/benchmarks/stixrude_2024_figure13/reference/figure13.svg +0 -0
  207. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/benchmarks/stixrude_2024_figure14/README.md +0 -0
  208. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/benchmarks/stixrude_2024_figure14/reference/axis_registration.json +0 -0
  209. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/benchmarks/stixrude_2024_figure14/reference/expansivity.jpg +0 -0
  210. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/benchmarks/stixrude_2024_figure14/reference/figure14.svg +0 -0
  211. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/examples/example_basalt_phase_diagram.py +0 -0
  212. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/examples/example_composition.py +0 -0
  213. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/examples/example_equilibrate.py +0 -0
  214. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/examples/example_forsterite_thermodynamic_sections.py +0 -0
  215. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/examples/example_green2025_at1.py +0 -0
  216. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/examples/example_green2025_klb1.py +0 -0
  217. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/examples/example_green2025_mix1g.py +0 -0
  218. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/examples/example_green2025_re46.py +0 -0
  219. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/examples/example_green2025_ton101s.py +0 -0
  220. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/examples/example_green2025_ton101u.py +0 -0
  221. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/examples/example_harzburgite_basalt_px.py +0 -0
  222. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/examples/example_iron_hematite_tx.py +0 -0
  223. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/examples/example_metasediment_contours.py +0 -0
  224. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/examples/example_metasediment_phase_diagram.py +0 -0
  225. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/examples/example_modular_mgd.py +0 -0
  226. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/examples/example_modular_mgd_with_anharmonicity.py +0 -0
  227. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/examples/example_olivine_px.py +0 -0
  228. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/examples/example_olivine_tx.py +0 -0
  229. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/examples/example_olivine_vx.py +0 -0
  230. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/examples/example_patch_phase_diagram.py +0 -0
  231. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/examples/example_phase_diagram_grid.py +0 -0
  232. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/examples/example_plot_pyrolite_sp_relaxed_properties.py +0 -0
  233. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/examples/example_pyrolite_modebox.py +0 -0
  234. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/examples/example_pyrolite_phase_diagram.py +0 -0
  235. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/examples/example_pyrolite_phase_diagram_zoom.py +0 -0
  236. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/examples/example_pyrolite_sp_phase_diagram.py +0 -0
  237. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/examples/example_refine_phase_diagram.py +0 -0
  238. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/examples/example_single_point_equilibrium.py +0 -0
  239. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/examples/example_solution_equilibrium.py +0 -0
  240. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/examples/example_spock_gold.py +0 -0
  241. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/examples/green2025.py +0 -0
  242. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/examples/green2025_reference.md +0 -0
  243. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/include/burnman/core/composite_material.hpp +0 -0
  244. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/include/burnman/core/composition.hpp +0 -0
  245. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/include/burnman/core/equation_of_state.hpp +0 -0
  246. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/include/burnman/core/solution_model.hpp +0 -0
  247. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/include/burnman/core/solution_models/asymmetric_regular_solution.hpp +0 -0
  248. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/include/burnman/core/solution_models/ideal_solution.hpp +0 -0
  249. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/include/burnman/core/solution_models/solution_model_base.hpp +0 -0
  250. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/include/burnman/core/solution_models/symmetric_regular_solution.hpp +0 -0
  251. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/include/burnman/eos/components/anharmonic_prefactor_models.hpp +0 -0
  252. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/include/burnman/eos/components/anharmonic_thermal_models.hpp +0 -0
  253. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/include/burnman/eos/components/bukowinski_electronic.hpp +0 -0
  254. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/include/burnman/eos/components/debye.hpp +0 -0
  255. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/include/burnman/eos/components/debye_temperature_models.hpp +0 -0
  256. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/include/burnman/eos/components/einstein.hpp +0 -0
  257. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/include/burnman/eos/components/excess_params.hpp +0 -0
  258. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/include/burnman/eos/components/gsl_params.hpp +0 -0
  259. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/include/burnman/eos/components/property_modifiers.hpp +0 -0
  260. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/include/burnman/eos/hp.hpp +0 -0
  261. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/include/burnman/eos/hp_liquid.hpp +0 -0
  262. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/include/burnman/eos/make_eos.hpp +0 -0
  263. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/include/burnman/eos/mie_grueneisen_debye.hpp +0 -0
  264. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/include/burnman/eos/modified_tait.hpp +0 -0
  265. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/include/burnman/eos/modular_mie_grueneisen_debye.hpp +0 -0
  266. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/include/burnman/eos/slb.hpp +0 -0
  267. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/include/burnman/eos/spock.hpp +0 -0
  268. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/include/burnman/eos/vinet.hpp +0 -0
  269. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/include/burnman/minerals/model_sets.hpp +0 -0
  270. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/include/burnman/minerals/phase_aliases.hpp +0 -0
  271. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/include/burnman/minerals/water.hpp +0 -0
  272. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/include/burnman/optim/roots/bracket.hpp +0 -0
  273. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/include/burnman/optim/roots/brent.hpp +0 -0
  274. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/include/burnman/optim/roots/damped_newton_solver.hpp +0 -0
  275. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/include/burnman/optim/roots/damped_newton_state.hpp +0 -0
  276. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/include/burnman/optim/roots/damped_newton_types.hpp +0 -0
  277. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/include/burnman/tools/averaging/averaging_base.hpp +0 -0
  278. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/include/burnman/tools/averaging/averaging_schemes.hpp +0 -0
  279. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/include/burnman/tools/averaging/averaging_utils.hpp +0 -0
  280. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/include/burnman/tools/averaging/hs.hpp +0 -0
  281. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/include/burnman/tools/averaging/hs_lower.hpp +0 -0
  282. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/include/burnman/tools/averaging/hs_upper.hpp +0 -0
  283. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/include/burnman/tools/averaging/reuss.hpp +0 -0
  284. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/include/burnman/tools/averaging/voigt.hpp +0 -0
  285. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/include/burnman/tools/averaging/vrh.hpp +0 -0
  286. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/include/burnman/tools/equilibration/equality_constraint_base.hpp +0 -0
  287. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/include/burnman/tools/equilibration/equality_constraint_helpers.hpp +0 -0
  288. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/include/burnman/tools/equilibration/equality_constraints.hpp +0 -0
  289. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/include/burnman/tools/equilibration/equilibrate.hpp +0 -0
  290. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/include/burnman/tools/equilibration/equilibrate_impl.hpp +0 -0
  291. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/include/burnman/tools/equilibration/equilibrate_lambda_bounds.hpp +0 -0
  292. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/include/burnman/tools/equilibration/equilibrate_objective.hpp +0 -0
  293. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/include/burnman/tools/equilibration/equilibrate_types.hpp +0 -0
  294. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/include/burnman/tools/equilibration/equilibrate_utils.hpp +0 -0
  295. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/include/burnman/tools/phase_diagram/boundary_repair.hpp +0 -0
  296. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/include/burnman/tools/phase_diagram/calculation.hpp +0 -0
  297. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/include/burnman/tools/phase_diagram/common.hpp +0 -0
  298. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/include/burnman/tools/phase_diagram/consistency.hpp +0 -0
  299. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/include/burnman/tools/phase_diagram/continuation.hpp +0 -0
  300. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/include/burnman/tools/phase_diagram/contours.hpp +0 -0
  301. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/include/burnman/tools/phase_diagram/critical.hpp +0 -0
  302. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/include/burnman/tools/phase_diagram/domain.hpp +0 -0
  303. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/include/burnman/tools/phase_diagram/polygons.hpp +0 -0
  304. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/include/burnman/tools/phase_diagram/properties.hpp +0 -0
  305. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/include/burnman/tools/phase_diagram/refinement.hpp +0 -0
  306. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/include/burnman/tools/phase_diagram/stability.hpp +0 -0
  307. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/include/burnman/tools/phase_diagram/tracing.hpp +0 -0
  308. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/include/burnman/tools/phase_diagram/types.hpp +0 -0
  309. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/include/burnman/tools/phase_diagram/verification.hpp +0 -0
  310. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/include/burnman/tools/phase_diagram.hpp +0 -0
  311. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/include/burnman/tools/polytope.hpp +0 -0
  312. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/include/burnman/utils/chemistry_utils.hpp +0 -0
  313. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/include/burnman/utils/constants.hpp +0 -0
  314. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/include/burnman/utils/exceptions.hpp +0 -0
  315. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/include/burnman/utils/index_utils.hpp +0 -0
  316. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/include/burnman/utils/math_utils.hpp +0 -0
  317. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/include/burnman/utils/matrix_utils.hpp +0 -0
  318. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/include/burnman/utils/polygon_utils.hpp +0 -0
  319. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/include/burnman/utils/string_utils.hpp +0 -0
  320. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/include/burnman/utils/types/ndarray.hpp +0 -0
  321. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/include/burnman/utils/types/types.hpp +0 -0
  322. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/include/burnman/utils/utils.hpp +0 -0
  323. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/include/burnman/utils/validate_optionals.hpp +0 -0
  324. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/include/burnman/utils/vector_utils.hpp +0 -0
  325. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/include/burnman/utils/warnings.hpp +0 -0
  326. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/python/bindings/combined.cpp +0 -0
  327. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/python/bindings/composition.cpp +0 -0
  328. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/python/bindings/eos.cpp +0 -0
  329. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/python/bindings/equilibration.cpp +0 -0
  330. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/python/bindings/model_sets.cpp +0 -0
  331. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/python/bindings/modifiers.cpp +0 -0
  332. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/python/bindings/phase_diagram.cpp +0 -0
  333. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/python/bindings/polytope.cpp +0 -0
  334. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/python/bindings/utils.cpp +0 -0
  335. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/python/burnman_cpp/anharmonic_prefactor_models.py +0 -0
  336. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/python/burnman_cpp/anharmonic_thermal_models.py +0 -0
  337. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/python/burnman_cpp/constants.py +0 -0
  338. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/python/burnman_cpp/debye_temperature_models.py +0 -0
  339. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/python/burnman_cpp/tools/aspect.py +0 -0
  340. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/python/burnman_cpp/tools/contours.py +0 -0
  341. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/python/burnman_cpp/tools/equilibrium_path.py +0 -0
  342. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/python/burnman_cpp/tools/phase_diagram.py +0 -0
  343. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/python/burnman_cpp/tools/phase_diagram_helpers.py +0 -0
  344. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/python/burnman_cpp/tools/phase_diagram_workflow.py +0 -0
  345. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/python/burnman_cpp/tools/polytope.py +0 -0
  346. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/python/burnman_cpp/tools/potential_grid.py +0 -0
  347. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/python/burnman_cpp/tools/properties.py +0 -0
  348. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/python/tests/data/basalt_field_verification.json +0 -0
  349. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/python/tests/data/basalt_local_amphibole.json +0 -0
  350. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/python/tests/data/basalt_local_plagioclase.json +0 -0
  351. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/python/tests/data/basalt_nearby_bivariant_junctions.json +0 -0
  352. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/python/tests/data/forsterite_latent_interval.json +0 -0
  353. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/python/tests/data/green_provisional_loops.json +0 -0
  354. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/python/tests/data/harzburgite_garnet_composition_boundary.json +0 -0
  355. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/python/tests/data/harzburgite_thin_composition_field.json +0 -0
  356. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/python/tests/data/metasediment_contour_field.json +0 -0
  357. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/python/tests/data/metasediment_contour_ordering_field.json +0 -0
  358. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/python/tests/data/metasediment_curve_edit.json +0 -0
  359. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/python/tests/data/metasediment_curved_mica_field.json +0 -0
  360. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/python/tests/data/metasediment_curved_node_connections.json +0 -0
  361. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/python/tests/data/metasediment_endpoints.json +0 -0
  362. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/python/tests/data/metasediment_missing_melt_connection.json +0 -0
  363. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/python/tests/data/metasediment_ordering_segment.json +0 -0
  364. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/python/tests/data/metasediment_parallel_fields.json +0 -0
  365. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/python/tests/data/metasediment_thin_finite_field.json +0 -0
  366. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/python/tests/data/metasediment_univariant_loop.json +0 -0
  367. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/python/tests/data/metasediment_univariant_segments.json +0 -0
  368. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/python/tests/data/phase_diagram_model_limit_fan.json +0 -0
  369. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/python/tests/data/pyrolite_cold_endpoints.json +0 -0
  370. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/python/tests/data/pyrolite_critical_endpoints.json +0 -0
  371. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/python/tests/data/pyrolite_crossed_loops.json +0 -0
  372. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/python/tests/data/pyrolite_duplicate_curve.json +0 -0
  373. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/python/tests/data/pyrolite_duplicate_invariant.json +0 -0
  374. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/python/tests/data/pyrolite_duplicate_junctions.json +0 -0
  375. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/python/tests/data/pyrolite_endpoints.json +0 -0
  376. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/python/tests/data/pyrolite_exchanged_junction_zeros.json +0 -0
  377. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/python/tests/data/pyrolite_frame_order.json +0 -0
  378. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/python/tests/data/pyrolite_limiting_neighbours.json +0 -0
  379. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/python/tests/data/pyrolite_local_opx.json +0 -0
  380. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/python/tests/data/pyrolite_missing_solution_branch.json +0 -0
  381. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/python/tests/data/pyrolite_model_limit.json +0 -0
  382. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/python/tests/data/pyrolite_narrow_curves.json +0 -0
  383. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/python/tests/data/pyrolite_narrow_solution_replacement.json +0 -0
  384. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/python/tests/data/pyrolite_nearby_junctions.json +0 -0
  385. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/python/tests/data/pyrolite_nearby_univariant_junctions.json +0 -0
  386. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/python/tests/data/pyrolite_neighbouring_branches.json +0 -0
  387. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/python/tests/data/pyrolite_partial_duplicate.json +0 -0
  388. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/python/tests/data/pyrolite_perimeter_neighbours.json +0 -0
  389. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/python/tests/data/pyrolite_pt_coincident_phase_outs.json +0 -0
  390. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/python/tests/data/pyrolite_pt_cold_coexistence.json +0 -0
  391. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/python/tests/data/pyrolite_pt_cold_model_limits.json +0 -0
  392. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/python/tests/data/pyrolite_pt_cold_reaction_duplicates.json +0 -0
  393. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/python/tests/data/pyrolite_pt_detached_junctions.json +0 -0
  394. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/python/tests/data/pyrolite_pt_equivalent_reaction_curves.json +0 -0
  395. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/python/tests/data/pyrolite_pt_garnet_stability.json +0 -0
  396. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/python/tests/data/pyrolite_pt_model_limit_duplicates.json +0 -0
  397. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/python/tests/data/pyrolite_pt_repair_regressions.json +0 -0
  398. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/python/tests/data/pyrolite_reaction_extents.json +0 -0
  399. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/python/tests/data/pyrolite_refinement_segment.json +0 -0
  400. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/python/tests/data/pyrolite_retired_junction_geometry.json +0 -0
  401. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/python/tests/data/pyrolite_short_branch_labels.json +0 -0
  402. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/python/tests/data/pyrolite_solution_replacement.json +0 -0
  403. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/python/tests/data/pyrolite_solvus_seeds.json +0 -0
  404. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/python/tests/data/pyrolite_sp_ak_branch_switch.json +0 -0
  405. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/python/tests/data/pyrolite_sp_cf_copy_junctions.json +0 -0
  406. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/python/tests/data/pyrolite_sp_enthalpy_branch.json +0 -0
  407. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/python/tests/data/pyrolite_sp_failed_bracket.json +0 -0
  408. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/python/tests/data/pyrolite_sp_false_cpx_junction.json +0 -0
  409. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/python/tests/data/pyrolite_sp_false_junction.json +0 -0
  410. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/python/tests/data/pyrolite_sp_junction.json +0 -0
  411. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/python/tests/data/pyrolite_sp_missing_ak_boundary.json +0 -0
  412. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/python/tests/data/pyrolite_sp_reaction_classification.json +0 -0
  413. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/python/tests/data/pyrolite_sp_soft_grid_point.json +0 -0
  414. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/python/tests/data/pyrolite_sp_trace_site_junctions.json +0 -0
  415. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/python/tests/data/pyrolite_sp_trace_site_response.json +0 -0
  416. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/python/tests/data/pyrolite_sp_unconnected_junctions.json +0 -0
  417. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/python/tests/data/pyrolite_sp_wrong_branch_junction.json +0 -0
  418. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/python/tests/data/pyrolite_stable_vertex_loop.json +0 -0
  419. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/python/tests/data/pyrolite_zoom_reaction_limits.json +0 -0
  420. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/python/tests/test_adapters.py +0 -0
  421. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/python/tests/test_aspect_table.py +0 -0
  422. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/python/tests/test_bindings.py +0 -0
  423. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/python/tests/test_composition.py +0 -0
  424. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/python/tests/test_composition_phase_diagram.py +0 -0
  425. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/python/tests/test_composition_reference.py +0 -0
  426. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/python/tests/test_constants.py +0 -0
  427. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/python/tests/test_contour_tools.py +0 -0
  428. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/python/tests/test_enthalpy_ps_infill.py +0 -0
  429. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/python/tests/test_equilibration.py +0 -0
  430. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/python/tests/test_equilibrium_path.py +0 -0
  431. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/python/tests/test_forsterite_sections.py +0 -0
  432. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/python/tests/test_gaussian_moment_corrected.py +0 -0
  433. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/python/tests/test_green2025.py +0 -0
  434. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/python/tests/test_melt.py +0 -0
  435. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/python/tests/test_model_sets.py +0 -0
  436. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/python/tests/test_modifiers.py +0 -0
  437. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/python/tests/test_modular_mgd.py +0 -0
  438. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/python/tests/test_native_failure_reference.py +0 -0
  439. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/python/tests/test_phase_diagram.py +0 -0
  440. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/python/tests/test_phase_diagram_branch_identity.py +0 -0
  441. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/python/tests/test_phase_diagram_consistency.py +0 -0
  442. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/python/tests/test_phase_diagram_contours.py +0 -0
  443. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/python/tests/test_phase_diagram_critical_endpoints.py +0 -0
  444. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/python/tests/test_phase_diagram_incidence.py +0 -0
  445. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/python/tests/test_phase_diagram_line_resolution.py +0 -0
  446. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/python/tests/test_phase_diagram_partial_duplicates.py +0 -0
  447. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/python/tests/test_phase_diagram_patching.py +0 -0
  448. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/python/tests/test_phase_diagram_perimeter_labels.py +0 -0
  449. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/python/tests/test_phase_diagram_plot.py +0 -0
  450. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/python/tests/test_phase_diagram_workflow.py +0 -0
  451. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/python/tests/test_polygon_utils.py +0 -0
  452. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/python/tests/test_polytope.py +0 -0
  453. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/python/tests/test_potential_grid.py +0 -0
  454. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/python/tests/test_property_grid.py +0 -0
  455. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/python/tests/test_reference_tools.py +0 -0
  456. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/python/tests/test_slb2024.py +0 -0
  457. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/python/tests/test_slb_reference.py +0 -0
  458. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/python/tests/test_spock.py +0 -0
  459. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/python/tests/test_stable_equilibrium.py +0 -0
  460. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/python/tests/test_thermodynamic_phase_diagram.py +0 -0
  461. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/python/tests/test_wheel_metadata.py +0 -0
  462. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/src/core/composite_material.cpp +0 -0
  463. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/src/core/composition.cpp +0 -0
  464. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/src/core/equation_of_state.cpp +0 -0
  465. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/src/core/solution_models/asymmetric_regular_solution.cpp +0 -0
  466. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/src/core/solution_models/ideal_solution.cpp +0 -0
  467. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/src/core/solution_models/solution_model_base.cpp +0 -0
  468. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/src/core/solution_models/symmetric_regular_solution.cpp +0 -0
  469. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/src/eos/components/bukowinski_electronic.cpp +0 -0
  470. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/src/eos/components/debye.cpp +0 -0
  471. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/src/eos/components/einstein.cpp +0 -0
  472. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/src/eos/components/modular_mgd_models.cpp +0 -0
  473. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/src/eos/components/property_modifiers.cpp +0 -0
  474. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/src/eos/hp.cpp +0 -0
  475. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/src/eos/hp_liquid.cpp +0 -0
  476. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/src/eos/mie_grueneisen_debye.cpp +0 -0
  477. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/src/eos/modified_tait.cpp +0 -0
  478. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/src/eos/modular_mie_grueneisen_debye.cpp +0 -0
  479. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/src/eos/slb.cpp +0 -0
  480. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/src/eos/spock.cpp +0 -0
  481. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/src/eos/vinet.cpp +0 -0
  482. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/src/minerals/model_sets.cpp +0 -0
  483. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/src/minerals/phase_aliases.cpp +0 -0
  484. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/src/minerals/water.cpp +0 -0
  485. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/src/optim/roots/damped_newton_solver.cpp +0 -0
  486. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/src/tools/averaging/averaging_base.cpp +0 -0
  487. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/src/tools/averaging/averaging_utils.cpp +0 -0
  488. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/src/tools/averaging/hs.cpp +0 -0
  489. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/src/tools/averaging/hs_lower.cpp +0 -0
  490. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/src/tools/averaging/hs_upper.cpp +0 -0
  491. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/src/tools/averaging/reuss.cpp +0 -0
  492. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/src/tools/averaging/voigt.cpp +0 -0
  493. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/src/tools/averaging/vrh.cpp +0 -0
  494. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/src/tools/equilibration/equilibrate_impl.cpp +0 -0
  495. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/src/tools/equilibration/equilibrate_lambda_bounds.cpp +0 -0
  496. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/src/tools/equilibration/equilibrate_objective.cpp +0 -0
  497. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/src/tools/equilibration/equilibrate_utils.cpp +0 -0
  498. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/src/tools/phase_diagram/boundary_repair.cpp +0 -0
  499. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/src/tools/phase_diagram/calculation.cpp +0 -0
  500. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/src/tools/phase_diagram/common.cpp +0 -0
  501. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/src/tools/phase_diagram/consistency.cpp +0 -0
  502. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/src/tools/phase_diagram/continuation.cpp +0 -0
  503. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/src/tools/phase_diagram/contours.cpp +0 -0
  504. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/src/tools/phase_diagram/critical.cpp +0 -0
  505. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/src/tools/phase_diagram/domain.cpp +0 -0
  506. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/src/tools/phase_diagram/polygons.cpp +0 -0
  507. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/src/tools/phase_diagram/potential.cpp +0 -0
  508. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/src/tools/phase_diagram/refinement.cpp +0 -0
  509. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/src/tools/phase_diagram/tracing.cpp +0 -0
  510. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/src/tools/phase_diagram/verification.cpp +0 -0
  511. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/src/tools/polytope.cpp +0 -0
  512. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/src/tools/solution_simplification.cpp +0 -0
  513. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/src/utils/chemistry_utils.cpp +0 -0
  514. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/src/utils/polygon_utils.cpp +0 -0
  515. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/tests/core/test_assemblage.cpp +0 -0
  516. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/tests/core/test_composition.cpp +0 -0
  517. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/tests/core/test_material.cpp +0 -0
  518. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/tests/core/test_mineral.cpp +0 -0
  519. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/tests/core/test_solution.cpp +0 -0
  520. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/tests/core/test_solution_model.cpp +0 -0
  521. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/tests/eos/test_birch_murnaghan.cpp +0 -0
  522. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/tests/eos/test_bukowinski_electronic.cpp +0 -0
  523. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/tests/eos/test_debye.cpp +0 -0
  524. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/tests/eos/test_einstein.cpp +0 -0
  525. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/tests/eos/test_excess_params.cpp +0 -0
  526. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/tests/eos/test_hp.cpp +0 -0
  527. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/tests/eos/test_mie_grueneisen_debye.cpp +0 -0
  528. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/tests/eos/test_modified_tait.cpp +0 -0
  529. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/tests/eos/test_modular_mie_grueneisen_debye.cpp +0 -0
  530. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/tests/eos/test_property_modifiers.cpp +0 -0
  531. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/tests/eos/test_slb.cpp +0 -0
  532. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/tests/eos/test_spock.cpp +0 -0
  533. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/tests/eos/test_vinet.cpp +0 -0
  534. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/tests/eos/test_volume_accuracy.cpp +0 -0
  535. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/tests/include/eos_names.hpp +0 -0
  536. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/tests/include/equilibration_fixtures.hpp +0 -0
  537. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/tests/include/ps1994_reference.hpp +0 -0
  538. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/tests/include/solution_fixtures.hpp +0 -0
  539. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/tests/include/thermocalc_reference.hpp +0 -0
  540. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/tests/include/tolerances.hpp +0 -0
  541. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/tests/minerals/test_thermocalc_reference.cpp +0 -0
  542. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/tests/minerals/test_water.cpp +0 -0
  543. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/tests/optim/roots/test_damped_newton.cpp +0 -0
  544. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/tests/optim/roots/test_roots.cpp +0 -0
  545. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/tests/reference/burnman.json +0 -0
  546. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/tests/reference/ps1994.json +0 -0
  547. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/tests/reference/thermocalc_metapelite.json +0 -0
  548. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/tests/test_main.cpp +0 -0
  549. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/tests/tools/averaging/test_averaging_schemes.cpp +0 -0
  550. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/tests/tools/equilibration/test_equality_constraints.cpp +0 -0
  551. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/tests/tools/equilibration/test_equilibrate.cpp +0 -0
  552. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/tests/tools/equilibration/test_equilibrate_lambda_bounds.cpp +0 -0
  553. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/tests/tools/equilibration/test_equilibrate_objective.cpp +0 -0
  554. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/tests/tools/equilibration/test_equilibrate_utils.cpp +0 -0
  555. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/tests/tools/test_phase_diagram.cpp +0 -0
  556. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/tests/tools/test_phase_diagram_consistency.cpp +0 -0
  557. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/tests/tools/test_polytope.cpp +0 -0
  558. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/tests/utils/test_chemistry_utils.cpp +0 -0
  559. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/tests/utils/test_constants.cpp +0 -0
  560. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/tests/utils/test_exceptions.cpp +0 -0
  561. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/tests/utils/test_index_utils.cpp +0 -0
  562. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/tests/utils/test_math_utils.cpp +0 -0
  563. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/tests/utils/test_matrix_utils.cpp +0 -0
  564. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/tests/utils/test_polygon_utils.cpp +0 -0
  565. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/tests/utils/test_string_utils.cpp +0 -0
  566. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/tests/utils/test_types.cpp +0 -0
  567. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/tests/utils/test_validate_optionals.cpp +0 -0
  568. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/tests/utils/test_vector_utils.cpp +0 -0
  569. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/tests/utils/test_warnings.cpp +0 -0
  570. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/tools/burnman_reference.py +0 -0
  571. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/tools/check_reference_data.py +0 -0
  572. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/tools/extract_thermocalc_reference.py +0 -0
  573. {burnman_cpp-0.6.0 → burnman_cpp-0.8.0}/tools/generate_ps1994_reference.py +0 -0
@@ -43,7 +43,7 @@ jobs:
43
43
  sudo apt-get update
44
44
  sudo apt-get install -y --no-install-recommends \
45
45
  cmake g++ catch2 libeigen3-dev libgsl-dev \
46
- libcdd-dev libgmp-dev libnlopt-cxx-dev
46
+ libcdd-dev libgmp-dev libnlopt-cxx-dev libhdf5-dev
47
47
 
48
48
  - name: Configure benchmarks
49
49
  run: |
@@ -20,7 +20,7 @@ jobs:
20
20
  cpp:
21
21
  name: C++ tests
22
22
  runs-on: ubuntu-24.04
23
- timeout-minutes: 20
23
+ timeout-minutes: 60
24
24
  steps:
25
25
  - name: Check out repository
26
26
  uses: actions/checkout@v7
@@ -32,7 +32,7 @@ jobs:
32
32
  sudo apt-get update
33
33
  sudo apt-get install -y --no-install-recommends \
34
34
  cmake g++ catch2 libeigen3-dev libgsl-dev \
35
- libcdd-dev libgmp-dev libnlopt-cxx-dev
35
+ libcdd-dev libgmp-dev libnlopt-cxx-dev libhdf5-dev
36
36
 
37
37
  - name: Configure C++ tests
38
38
  run: |
@@ -51,7 +51,7 @@ jobs:
51
51
  python:
52
52
  name: Python ${{ matrix.python-version }} tests
53
53
  runs-on: ubuntu-24.04
54
- timeout-minutes: 20
54
+ timeout-minutes: 60
55
55
  strategy:
56
56
  fail-fast: false
57
57
  matrix:
@@ -80,7 +80,7 @@ jobs:
80
80
  sudo apt-get update
81
81
  sudo apt-get install -y --no-install-recommends \
82
82
  cmake g++ libeigen3-dev libgsl-dev \
83
- libcdd-dev libgmp-dev libnlopt-cxx-dev
83
+ libcdd-dev libgmp-dev libnlopt-cxx-dev libhdf5-dev
84
84
 
85
85
  - name: Build and install Python package
86
86
  run: python -m pip install '.[test,examples]' -Ccmake.define.BURNMAN_WARNINGS_AS_ERRORS=ON
@@ -92,7 +92,7 @@ jobs:
92
92
  reference:
93
93
  name: Pinned Python BurnMan reference
94
94
  runs-on: ubuntu-24.04
95
- timeout-minutes: 20
95
+ timeout-minutes: 60
96
96
  env:
97
97
  CMAKE_BUILD_PARALLEL_LEVEL: "2"
98
98
  MPLBACKEND: Agg
@@ -128,12 +128,12 @@ jobs:
128
128
  sudo apt-get update
129
129
  sudo apt-get install -y --no-install-recommends \
130
130
  cmake g++ clang-format libeigen3-dev libgsl-dev \
131
- libcdd-dev libgmp-dev libnlopt-cxx-dev
131
+ libcdd-dev libgmp-dev libnlopt-cxx-dev libhdf5-dev
132
132
 
133
133
  - name: Install wrapper and reference dependencies
134
134
  run: |
135
135
  python -m pip install '.[test,examples]' -Ccmake.define.BURNMAN_WARNINGS_AS_ERRORS=ON
136
- python -m pip install -e 'build/python-burnman-reference[dev]'
136
+ python -m pip install -e 'build/python-burnman-reference[dev]' h5py
137
137
 
138
138
  - name: Audit stored reference values and mineral catalogue
139
139
  env:
@@ -141,6 +141,7 @@ jobs:
141
141
  run: |
142
142
  python tools/check_reference_data.py
143
143
  python tools/export_example_minerals.py --check
144
+ python tools/export_covariance_data.py --check
144
145
  python tools/generate_ps1994_reference.py --reference build/python-burnman-reference
145
146
 
146
147
  - name: Run complete Python suite with the pinned reference
@@ -29,3 +29,4 @@ examples/*_output/
29
29
  /benchmark-report.xml
30
30
  /python_assemblage_benchmarks.csv
31
31
  /python_mineral_benchmarks.csv
32
+ benchmarks/*/results/
@@ -13,7 +13,7 @@ endif()
13
13
  file(STRINGS "${CMAKE_CURRENT_SOURCE_DIR}/pyproject.toml" BURNMAN_VERSION_LINE
14
14
  REGEX "^version = ")
15
15
  string(REGEX MATCH "[0-9]+\\.[0-9]+\\.[0-9]+" BURNMAN_VERSION "${BURNMAN_VERSION_LINE}")
16
- project(burnman_cpp VERSION ${BURNMAN_VERSION} LANGUAGES CXX)
16
+ project(burnman_cpp VERSION ${BURNMAN_VERSION} LANGUAGES C CXX)
17
17
 
18
18
  option(BURNMAN_BUILD_PYTHON "Build the Python extension" ON)
19
19
  option(BURNMAN_BUILD_TESTS "Build the C++ unit tests" OFF)
@@ -39,6 +39,7 @@ set(BURNMAN_WHEEL_DEPENDENCIES "" CACHE PATH "Private prefix for wheel dependenc
39
39
  if(BURNMAN_WHEEL_DEPENDENCIES)
40
40
  list(PREPEND CMAKE_PREFIX_PATH "${BURNMAN_WHEEL_DEPENDENCIES}")
41
41
  set(GSL_ROOT_DIR "${BURNMAN_WHEEL_DEPENDENCIES}")
42
+ set(HDF5_ROOT "${BURNMAN_WHEEL_DEPENDENCIES}")
42
43
  endif()
43
44
  if(APPLE)
44
45
  list(APPEND CMAKE_PREFIX_PATH /opt/homebrew /usr/local)
@@ -48,6 +49,7 @@ if(Eigen3_VERSION VERSION_LESS 3.4)
48
49
  message(FATAL_ERROR "BurnMan requires Eigen >= 3.4 (found ${Eigen3_VERSION})")
49
50
  endif()
50
51
  find_package(GSL REQUIRED)
52
+ find_package(HDF5 1.10 REQUIRED COMPONENTS C)
51
53
  find_path(NLOPT_INCLUDE_DIR NAMES nlopt.hpp REQUIRED)
52
54
  find_library(NLOPT_LIBRARY NAMES nlopt REQUIRED)
53
55
  find_path(CDD_INCLUDE_DIR NAMES cdd.h PATH_SUFFIXES cddlib cdd REQUIRED)
@@ -62,6 +64,26 @@ target_include_directories(burnman_core PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/inclu
62
64
  target_link_libraries(burnman_core PUBLIC Eigen3::Eigen GSL::gsl GSL::gslcblas)
63
65
  target_include_directories(burnman_core SYSTEM PRIVATE ${CDD_INCLUDE_DIR} ${GMP_INCLUDE_DIR} ${NLOPT_INCLUDE_DIR})
64
66
  target_link_libraries(burnman_core PUBLIC ${CDD_GMP_LIBRARY} ${GMP_LIBRARY} ${NLOPT_LIBRARY})
67
+ target_include_directories(burnman_core SYSTEM BEFORE PRIVATE ${HDF5_INCLUDE_DIRS})
68
+ target_link_libraries(burnman_core PUBLIC ${HDF5_LIBRARIES})
69
+
70
+ # Embed the HDF5 file images for standalone C++ and installed Python use.
71
+ # CMake performs this step without requiring h5py or a Python interpreter.
72
+ function(burnman_covariance_data name dataset)
73
+ set(input "${CMAKE_CURRENT_SOURCE_DIR}/src/data/input_covariance/${dataset}_cov.h5")
74
+ set(output "${CMAKE_CURRENT_BINARY_DIR}/generated/${name}_covariance_data.hpp")
75
+ set(script "${CMAKE_CURRENT_SOURCE_DIR}/cmake/EmbedCovariance.cmake")
76
+ add_custom_command(OUTPUT "${output}"
77
+ COMMAND "${CMAKE_COMMAND}" "-DNAME=${name}" "-DINPUT=${input}"
78
+ "-DOUTPUT=${output}" -P "${script}"
79
+ DEPENDS "${input}" "${script}"
80
+ VERBATIM)
81
+ target_sources(burnman_core PRIVATE "${output}")
82
+ endfunction()
83
+ burnman_covariance_data(HP11 HP_2011_ds62)
84
+ burnman_covariance_data(HGP18 HGP_2018_ds633)
85
+ burnman_covariance_data(HPx_ds636 HPx_ds636)
86
+ target_include_directories(burnman_core PRIVATE "${CMAKE_CURRENT_BINARY_DIR}/generated")
65
87
  set_target_properties(burnman_core PROPERTIES POSITION_INDEPENDENT_CODE ON)
66
88
  burnman_compiler_warnings(burnman_core)
67
89
 
@@ -74,16 +96,26 @@ if(BURNMAN_BUILD_PYTHON)
74
96
  python/bindings/eos.cpp
75
97
  python/bindings/materials.cpp
76
98
  python/bindings/composition.cpp
99
+ python/bindings/linear_fitting.cpp
100
+ python/bindings/composition_fitting.cpp
101
+ python/bindings/thermobarometry.cpp
102
+ python/bindings/chemistry.cpp
103
+ python/bindings/equilibrated_composite.cpp
77
104
  python/bindings/combined.cpp
78
105
  python/bindings/modifiers.cpp
79
106
  python/bindings/solutions.cpp
80
107
  python/bindings/minerals.cpp
81
108
  python/bindings/utils.cpp
82
109
  python/bindings/model_sets.cpp
110
+ python/bindings/seismic.cpp
111
+ python/bindings/geotherm.cpp
112
+ python/bindings/layer.cpp
113
+ python/bindings/planet.cpp
83
114
  python/bindings/polytope.cpp
84
115
  python/bindings/phase_diagram.cpp
85
116
  python/bindings/equilibration.cpp)
86
117
  target_link_libraries(_core PRIVATE burnman_core)
118
+ set_target_properties(_core PROPERTIES INSTALL_RPATH_USE_LINK_PATH TRUE)
87
119
  target_compile_definitions(_core PRIVATE BURNMAN_VERSION="${PROJECT_VERSION}")
88
120
  burnman_compiler_warnings(_core)
89
121
  install(TARGETS _core LIBRARY DESTINATION burnman_cpp RUNTIME DESTINATION burnman_cpp)
@@ -1,12 +1,16 @@
1
- # Copyright (c) 2025 Benedict Heinen
1
+ # ------------------------------------------------------
2
2
  #
3
- # This file is part of burnman_cpp and is licensed under the
4
- # GNU General Public License v3.0 or later. See the LICENSE file
5
- # or <https://www.gnu.org/licenses/> for details.
3
+ # SPDX-License-Identifier: GPL-3.0-or-later
6
4
  #
7
- # burnman_cpp is based on BurnMan: <https://geodynamics.github.io/burnman/>
5
+ # SPDX-FileCopyrightText: Copyright (C) 2025-2026 by the BurnMan Team.
8
6
  #
9
- # ------------------- END OF LICENSE SECTION -----------------
7
+ # This file is part of BurnMan.
8
+ #
9
+ # Detailed license information governing the source code
10
+ # and contributions can be found in the LICENSE document.
11
+ #
12
+ # ------------------------------------------------------
13
+
10
14
  # The native sources implement a library; Catch2 supplies main() for tests.
11
15
  TARGET_LIBRARY := libburnman.a
12
16
  TEST_EXEC := run_tests
@@ -14,6 +18,8 @@ BENCHMARK_EXEC := run_benchmarks
14
18
 
15
19
  # Compiler
16
20
  CXX := g++
21
+ CMAKE ?= cmake
22
+ PKG_CONFIG ?= pkg-config
17
23
 
18
24
  # Directories
19
25
  CWD := $(shell pwd)
@@ -32,11 +38,14 @@ INCLUDE_DIR_TEST := $(TEST_DIR)/include
32
38
  # GSL on MacOS installed via brew is in /opt/homebrew/lib
33
39
  EXTRA_INCLUDE ?= $(wildcard /opt/homebrew/include /opt/homebrew/include/eigen3 /opt/homebrew/opt/gsl/include /usr/local/include /usr/local/include/eigen3 /usr/include/eigen3)
34
40
  EXTRA_LIB ?= $(wildcard /usr/local/lib /opt/homebrew/lib)
35
- LDFLAGS_COMMON := -lgsl -lgslcblas -lcddgmp -lgmp -lnlopt -lm
41
+ # Override these flags when HDF5 is installed outside pkg-config's search path.
42
+ HDF5_CFLAGS ?= $(shell $(PKG_CONFIG) --cflags hdf5)
43
+ HDF5_LIBS ?= $(shell $(PKG_CONFIG) --libs hdf5)
44
+ LDFLAGS_COMMON := -lgsl -lgslcblas -lcddgmp -lgmp -lnlopt $(HDF5_LIBS) -lm
36
45
  LDFLAGS_TEST := -lCatch2Main -lCatch2
37
46
 
38
47
  # Expand to paths
39
- INCLUDE_FLAGS_COMMON := -I$(INCLUDE_DIR) $(addprefix -isystem , $(EXTRA_INCLUDE))
48
+ INCLUDE_FLAGS_COMMON := -I$(INCLUDE_DIR) $(HDF5_CFLAGS) $(addprefix -isystem , $(EXTRA_INCLUDE))
40
49
  INCLUDE_FLAGS_TEST := -I$(INCLUDE_DIR_TEST)
41
50
  LIB_PATHS := $(addprefix -L, $(EXTRA_LIB))
42
51
 
@@ -94,6 +103,12 @@ ifeq ($(PROFILE), 1)
94
103
  MODE_BUILD_DIR := $(MODE_BUILD_DIR)-profile
95
104
  endif
96
105
 
106
+ # Covariance images are generated for this build mode before their reader.
107
+ COVARIANCE_BUILD_DIR := $(MODE_BUILD_DIR)/generated
108
+ COVARIANCE_EMBED_SCRIPT := $(CWD)/cmake/EmbedCovariance.cmake
109
+ COVARIANCE_HEADERS := $(addprefix $(COVARIANCE_BUILD_DIR)/,HP11_covariance_data.hpp HGP18_covariance_data.hpp HPx_ds636_covariance_data.hpp)
110
+ CPPFLAGS += -I$(COVARIANCE_BUILD_DIR)
111
+
97
112
  # Find source files
98
113
  SOURCES := $(shell find $(SRC_DIR) -name '*.cpp')
99
114
  TEST_SOURCES := $(shell find $(TEST_DIR) -name '*.cpp')
@@ -115,6 +130,15 @@ BENCHMARK_TARGET := $(BIN_DIR)/$(BENCHMARK_EXEC)$(BIN_SUFFIX)
115
130
  # Default rule
116
131
  all: $(TARGET)
117
132
 
133
+ $(COVARIANCE_BUILD_DIR)/HP11_covariance_data.hpp: $(SRC_DIR)/data/input_covariance/HP_2011_ds62_cov.h5
134
+ $(COVARIANCE_BUILD_DIR)/HGP18_covariance_data.hpp: $(SRC_DIR)/data/input_covariance/HGP_2018_ds633_cov.h5
135
+ $(COVARIANCE_BUILD_DIR)/HPx_ds636_covariance_data.hpp: $(SRC_DIR)/data/input_covariance/HPx_ds636_cov.h5
136
+
137
+ $(COVARIANCE_HEADERS): $(COVARIANCE_EMBED_SCRIPT)
138
+ $(CMAKE) "-DNAME=$(patsubst %_covariance_data.hpp,%,$(notdir $@))" "-DINPUT=$(filter %.h5,$^)" "-DOUTPUT=$@" -P "$(COVARIANCE_EMBED_SCRIPT)"
139
+
140
+ $(MODE_BUILD_DIR)/src/data/covariance.o: $(COVARIANCE_HEADERS)
141
+
118
142
  # Archive the native library; linking an executable would require main().
119
143
  $(TARGET) : $(OBJECTS) | $(BIN_DIR)
120
144
  $(AR) rcs $@ $^
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: burnman_cpp
3
- Version: 0.6.0
3
+ Version: 0.8.0
4
4
  Summary: Python bindings for the BurnMan C++ mineral physics library
5
5
  Author-Email: The BurnMan Team <bob.myhill@bristol.ac.uk>
6
6
  License-Expression: GPL-3.0-or-later
@@ -22,6 +22,7 @@ Provides-Extra: examples
22
22
  Requires-Dist: matplotlib>=3.6; extra == "examples"
23
23
  Provides-Extra: reference
24
24
  Requires-Dist: burnman>=2.1; extra == "reference"
25
+ Requires-Dist: h5py>=3.8; extra == "reference"
25
26
  Description-Content-Type: text/markdown
26
27
 
27
28
  # burnman_cpp
@@ -3,6 +3,8 @@ Performance benchmarks
3
3
 
4
4
  Scientific reference comparisons are kept alongside the timing benchmarks:
5
5
 
6
+ - [de Koker, Karki & Stixrude (2013), nine liquid compositions](dekoker_2013/README.md):
7
+ direct native EOS comparisons with supplement Figures S2–S10 and Table 1.
6
8
  - [Stixrude & Lithgow-Bertelloni (2024), Figure 13](stixrude_2024_figure13/README.md):
7
9
  pyrolite phase modes, native iron and ferropericlase spin along a 1600 K
8
10
  surface isentrope, with overlays on the published panels and saved equilibria.
@@ -10,6 +12,9 @@ Scientific reference comparisons are kept alongside the timing benchmarks:
10
12
  three lower-mantle shear-velocity profiles, relaxed pyrolite expansivity and
11
13
  phase boundaries, with a 1400 K isentrope plus a basal erfc thermal layer.
12
14
 
15
+ The illustrative [de Koker mixing and melting reconstruction](../examples/example_dekoker_2013.py)
16
+ is an example, separate from the nine-composition EOS benchmark.
17
+
13
18
  `core/` and `eos/` contain the Catch2 performance benchmarks. They build into
14
19
  their own executable and reuse the fixtures in `tests/include/`. Unit tests
15
20
  build separately. The Python scripts time pure Python BurnMan, process native
@@ -0,0 +1,43 @@
1
+ # Nine DKS liquid-composition comparisons
2
+
3
+ Compare the unmodified native `dks_l` models for **MgO, Mg5SiO7, Mg2SiO4,
4
+ Mg3Si2O7, MgSiO3, MgSi2O5, MgSi3O7, MgSi5O11 and SiO2** with de Koker,
5
+ Karki & Stixrude (2013).
6
+
7
+ ```sh
8
+ python benchmarks/dekoker_2013/benchmark.py
9
+ ```
10
+
11
+ The benchmark contains only individual-composition EOS comparisons:
12
+
13
+ - Nine P–V/E–V overlays on the original supplement Figures S2–S10.
14
+ - Six Table 1 properties for each composition at 0 GPa, 3000 K: molar volume,
15
+ bulk modulus, entropy, Cv, Cp and Grüneisen parameter.
16
+
17
+ Outputs are saved in `results/`: `endmember_comparisons.pdf` contains all nine
18
+ comparisons, with separate `<composition>_comparison.pdf/png` files, Table 1
19
+ CSV/JSON and sampled isotherms. Units are per mole of the named formula;
20
+ Cv and Cp are normalized by the number of atoms times R. Energy curves omit
21
+ volumes where the native stable volume solve does not return the same branch.
22
+ The overlays are visual comparisons; the Table 1 report records quantitative
23
+ differences and the paper's printed uncertainties.
24
+
25
+ The catalogue bulk moduli of MgO and Mg5SiO7 exceed Table 1 by 0.0661 and
26
+ 0.0336 GPa (1.32 and 1.68 printed uncertainties). The other checked properties
27
+ lie within their printed uncertainties. These differences are reported;
28
+ the benchmark does not adjust catalogue parameters to remove them.
29
+
30
+ NumPy and Matplotlib are required. Original panels and vector-tick registrations
31
+ are saved in `reference/`, so the benchmark runs without Python BurnMan, the
32
+ original PDF, or Poppler. To regenerate that independent source material,
33
+ place the supplied PDF at `~/deKoker_2013.pdf` and run:
34
+
35
+ ```sh
36
+ python benchmarks/dekoker_2013/extract_reference.py
37
+ ```
38
+
39
+ There is no continuous mixing fit, entropy recalibration or phase diagram in
40
+ this benchmark. Those calculations are the separate
41
+ [MgO–SiO₂ example](../../examples/example_dekoker_2013.py).
42
+
43
+ Source: [doi:10.1016/j.epsl.2012.11.026](https://doi.org/10.1016/j.epsl.2012.11.026).
@@ -0,0 +1,235 @@
1
+ # SPDX-License-Identifier: GPL-3.0-or-later
2
+ # SPDX-FileCopyrightText: Copyright (C) 2025-2026 by the BurnMan Team.
3
+ """Compare the nine native DKS liquid EOSs with the original paper.
4
+
5
+ Only individual-composition P(V,T), E(V,T) and Table 1 properties are compared.
6
+ No mixing projection, entropy reset, solid model or melting calculation.
7
+ Run: python benchmarks/dekoker_2013/benchmark.py
8
+ Settings and main(); no command-line arguments.
9
+ """
10
+
11
+ import csv
12
+ import json
13
+ from pathlib import Path
14
+
15
+ import matplotlib.image as mpimg
16
+ import matplotlib.pyplot as plt
17
+ from matplotlib.backends.backend_pdf import PdfPages
18
+ from matplotlib.lines import Line2D
19
+ import numpy as np
20
+
21
+ import burnman_cpp as bm
22
+
23
+ REFERENCE_DIR = Path(__file__).with_name("reference")
24
+ OUTPUT_DIR = Path(__file__).with_name("results")
25
+ SHOW_PLOTS = False
26
+ VOLUME_SAMPLES = 401
27
+
28
+
29
+ def load_reference():
30
+ return json.loads((REFERENCE_DIR / "endmembers.json").read_text())
31
+
32
+
33
+ def native_table_1(phase):
34
+ phase.set_state(0.0, 3000.0)
35
+ nR = sum(phase.formula.values()) * bm.constants.gas_constant
36
+ return dict(
37
+ volume_cm3_mol=phase.molar_volume * 1.0e6,
38
+ K_T_GPa=phase.isothermal_bulk_modulus_reuss * 1.0e-9,
39
+ entropy_J_mol_K=phase.molar_entropy,
40
+ Cv_per_nR=phase.molar_heat_capacity_v / nR,
41
+ Cp_per_nR=phase.molar_heat_capacity_p / nR,
42
+ grueneisen=phase.grueneisen_parameter,
43
+ )
44
+
45
+
46
+ def axis_value(coordinate, ticks):
47
+ (v0, c0), (v1, c1) = ticks
48
+ return v0 + (coordinate - c0) * (v1 - v0) / (c1 - c0)
49
+
50
+
51
+ def internal_energy_at_volumes(phase, temperature, volumes, pressures):
52
+ """Read native energies only where V(P(V,T),T) returns the same branch."""
53
+ energies = np.full(len(volumes), np.nan)
54
+ for i, (volume, pressure) in enumerate(zip(volumes, pressures)):
55
+ try:
56
+ phase.set_state(pressure, temperature)
57
+ if np.isclose(phase.molar_volume, volume, rtol=1e-10, atol=1e-16):
58
+ energies[i] = phase.molar_internal_energy / 1e3
59
+ except (ValueError, RuntimeError):
60
+ continue
61
+ return energies
62
+
63
+
64
+ def comparison_figure(phase, reference):
65
+ x0, y0, x1, y1 = reference["crop"]
66
+ width = 10.0
67
+ image_height = width * (y1 - y0) / (x1 - x0)
68
+ fig = plt.figure(figsize=(width, image_height + 0.9))
69
+ fraction = image_height / fig.get_figheight()
70
+ bg = fig.add_axes([0, 0, 1, fraction])
71
+ bg.imshow(
72
+ mpimg.imread(REFERENCE_DIR / f"{reference['composition']}.png"), alpha=0.5
73
+ )
74
+ bg.set_axis_off()
75
+ fig.text(
76
+ 0.5,
77
+ 0.98,
78
+ f"{reference['composition']} liquid: native DKS EOS / Figure {reference['supplement_figure']}",
79
+ ha="center",
80
+ va="top",
81
+ fontsize=13,
82
+ )
83
+ handles = [
84
+ Line2D([], [], color=".6", label="Original LFTR fits and FPMD points (faint)")
85
+ ]
86
+ temperatures = reference["temperatures_K"]
87
+ colors = plt.get_cmap("plasma")(np.linspace(0.05, 0.9, len(temperatures)))
88
+ handles += [
89
+ Line2D([], [], color=c, ls="--", label=f"{t:g} K")
90
+ for t, c in zip(temperatures, colors)
91
+ ]
92
+ fig.legend(
93
+ handles=handles,
94
+ loc="upper center",
95
+ bbox_to_anchor=(0.5, 1 - 0.32 / fig.get_figheight()),
96
+ ncol=4,
97
+ frameon=False,
98
+ fontsize=8,
99
+ )
100
+ eos = bm.make_eos("dks_l")
101
+ params = phase.params
102
+ rows = []
103
+ for quantity, spec in reference["panels"].items():
104
+ left, top, right, bottom = spec["bounds"]
105
+ ax = fig.add_axes(
106
+ [
107
+ (left - x0) / (x1 - x0),
108
+ (y1 - bottom) / (y1 - y0) * fraction,
109
+ (right - left) / (x1 - x0),
110
+ (bottom - top) / (y1 - y0) * fraction,
111
+ ],
112
+ frameon=False,
113
+ )
114
+ ax.set(
115
+ xlim=[axis_value(x, spec["volume_ticks_cm3_mol"]) for x in (left, right)],
116
+ ylim=[axis_value(y, spec["quantity_ticks"]) for y in (bottom, top)],
117
+ )
118
+ ax.set_axis_off()
119
+ volumes = np.linspace(*ax.get_xlim(), VOLUME_SAMPLES) * 1.0e-6
120
+ for temperature, color in zip(temperatures, colors):
121
+ pressures = [
122
+ eos.compute_pressure(temperature, float(v), params) for v in volumes
123
+ ]
124
+ values = (
125
+ np.array(pressures) / 1.0e9
126
+ if quantity == "P"
127
+ else internal_energy_at_volumes(phase, temperature, volumes, pressures)
128
+ )
129
+ if np.count_nonzero(np.isfinite(values)) < 3:
130
+ raise RuntimeError(
131
+ f"No stable {quantity} curve for {phase.name} at {temperature} K"
132
+ )
133
+ ax.plot(volumes * 1e6, values, color=color, ls="--", lw=1.1)
134
+ rows.extend(
135
+ [
136
+ reference["composition"],
137
+ temperature,
138
+ quantity,
139
+ float(v),
140
+ float(value),
141
+ ]
142
+ for v, value in zip(volumes, values)
143
+ if np.isfinite(value)
144
+ )
145
+ return fig, rows
146
+
147
+
148
+ def main():
149
+ OUTPUT_DIR.mkdir(parents=True, exist_ok=True)
150
+ reference = load_reference()
151
+ results, isotherms, table_rows = [], [], []
152
+ with PdfPages(OUTPUT_DIR / "endmember_comparisons.pdf") as pdf:
153
+ for row in reference["compositions"]:
154
+ name = row["composition"]
155
+ phase = getattr(bm.minerals.DKS_2013_liquids, name + "_liquid")()
156
+ calculated = native_table_1(phase)
157
+ comparison = {}
158
+ for prop, native in calculated.items():
159
+ source = row["table_1"][prop]
160
+ delta = native - source["value"]
161
+ comparison[prop] = dict(
162
+ **source,
163
+ native=native,
164
+ native_minus_paper=delta,
165
+ difference_in_printed_uncertainties=delta
166
+ / source["printed_uncertainty"],
167
+ )
168
+ table_rows.append(
169
+ [
170
+ name,
171
+ prop,
172
+ source["value"],
173
+ native,
174
+ delta,
175
+ source["printed_uncertainty"],
176
+ ]
177
+ )
178
+ results.append(dict(composition=name, properties=comparison))
179
+ fig, rows = comparison_figure(phase, row)
180
+ pdf.savefig(fig)
181
+ for extension in ("pdf", "png"):
182
+ fig.savefig(OUTPUT_DIR / f"{name}_comparison.{extension}", dpi=200)
183
+ isotherms.extend(rows)
184
+ if not SHOW_PLOTS:
185
+ plt.close(fig)
186
+ print(
187
+ f"Compared {name}: Figure {row['supplement_figure']} and Table 1",
188
+ flush=True,
189
+ )
190
+ for filename, fields, rows in (
191
+ (
192
+ "table_1_comparison.csv",
193
+ [
194
+ "composition",
195
+ "property",
196
+ "paper",
197
+ "native",
198
+ "native_minus_paper",
199
+ "printed_uncertainty",
200
+ ],
201
+ table_rows,
202
+ ),
203
+ (
204
+ "isotherms.csv",
205
+ [
206
+ "composition",
207
+ "temperature_K",
208
+ "quantity",
209
+ "volume_m3_mol",
210
+ "value_GPa_or_kJ_mol",
211
+ ],
212
+ isotherms,
213
+ ),
214
+ ):
215
+ with (OUTPUT_DIR / filename).open("w", newline="") as stream:
216
+ writer = csv.writer(stream)
217
+ writer.writerow(fields)
218
+ writer.writerows(rows)
219
+ report = dict(
220
+ source=reference["source"],
221
+ source_pdf_sha256=reference["source_pdf_sha256"],
222
+ burnman_cpp_version=bm.__version__,
223
+ scope="Nine independent liquid compositions only; no continuous mixing or phase diagram",
224
+ comparisons=results,
225
+ )
226
+ (OUTPUT_DIR / "endmember_comparisons.json").write_text(
227
+ json.dumps(report, indent=2) + "\n"
228
+ )
229
+ if SHOW_PLOTS:
230
+ plt.show()
231
+ plt.close("all")
232
+
233
+
234
+ if __name__ == "__main__":
235
+ main()