burnman-cpp 0.4.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.
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/.github/workflows/benchmarks.yml +2 -2
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/.github/workflows/tests.yml +9 -8
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/.github/workflows/wheels.yml +3 -6
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/.gitignore +1 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/CMakeLists.txt +34 -1
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/Makefile +32 -8
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/PKG-INFO +3 -2
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/README.md +1 -1
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/benchmarks/README.md +15 -1
- burnman_cpp-0.8.0/benchmarks/dekoker_2013/README.md +43 -0
- burnman_cpp-0.8.0/benchmarks/dekoker_2013/benchmark.py +235 -0
- burnman_cpp-0.8.0/benchmarks/dekoker_2013/extract_reference.py +350 -0
- burnman_cpp-0.8.0/benchmarks/dekoker_2013/reference/Mg2SiO4.png +0 -0
- burnman_cpp-0.8.0/benchmarks/dekoker_2013/reference/Mg3Si2O7.png +0 -0
- burnman_cpp-0.8.0/benchmarks/dekoker_2013/reference/Mg5SiO7.png +0 -0
- burnman_cpp-0.8.0/benchmarks/dekoker_2013/reference/MgO.png +0 -0
- burnman_cpp-0.8.0/benchmarks/dekoker_2013/reference/MgSi2O5.png +0 -0
- burnman_cpp-0.8.0/benchmarks/dekoker_2013/reference/MgSi3O7.png +0 -0
- burnman_cpp-0.8.0/benchmarks/dekoker_2013/reference/MgSi5O11.png +0 -0
- burnman_cpp-0.8.0/benchmarks/dekoker_2013/reference/MgSiO3.png +0 -0
- burnman_cpp-0.8.0/benchmarks/dekoker_2013/reference/SiO2.png +0 -0
- burnman_cpp-0.8.0/benchmarks/dekoker_2013/reference/endmembers.json +931 -0
- burnman_cpp-0.8.0/benchmarks/stixrude_2024.py +159 -0
- burnman_cpp-0.8.0/benchmarks/stixrude_2024_figure13/README.md +139 -0
- burnman_cpp-0.8.0/benchmarks/stixrude_2024_figure13/benchmark.py +317 -0
- burnman_cpp-0.8.0/benchmarks/stixrude_2024_figure13/overlay.py +211 -0
- burnman_cpp-0.8.0/benchmarks/stixrude_2024_figure13/reference/axis_registration.json +55 -0
- burnman_cpp-0.8.0/benchmarks/stixrude_2024_figure13/reference/figure13.svg +9956 -0
- burnman_cpp-0.8.0/benchmarks/stixrude_2024_figure14/README.md +177 -0
- burnman_cpp-0.8.0/benchmarks/stixrude_2024_figure14/benchmark.py +350 -0
- burnman_cpp-0.8.0/benchmarks/stixrude_2024_figure14/geotherm.py +234 -0
- burnman_cpp-0.8.0/benchmarks/stixrude_2024_figure14/overlay.py +278 -0
- burnman_cpp-0.8.0/benchmarks/stixrude_2024_figure14/reference/axis_registration.json +41 -0
- burnman_cpp-0.8.0/benchmarks/stixrude_2024_figure14/reference/expansivity.jpg +0 -0
- burnman_cpp-0.8.0/benchmarks/stixrude_2024_figure14/reference/figure14.svg +12470 -0
- burnman_cpp-0.8.0/cmake/EmbedCovariance.cmake +42 -0
- burnman_cpp-0.8.0/examples/data/input_fitting/Bertka_Fei_1997_mars_mantle.dat +89 -0
- burnman_cpp-0.8.0/examples/data/input_fitting/SOURCES.md +11 -0
- burnman_cpp-0.8.0/examples/example_build_planet.py +138 -0
- burnman_cpp-0.8.0/examples/example_dekoker_2013.py +252 -0
- burnman_cpp-0.8.0/examples/example_equilibrated_composite.py +86 -0
- burnman_cpp-0.8.0/examples/example_fit_composition.py +158 -0
- burnman_cpp-0.8.0/examples/example_geotherm.py +114 -0
- burnman_cpp-0.8.0/examples/example_hugoniot.py +139 -0
- burnman_cpp-0.8.0/examples/example_layer.py +119 -0
- burnman_cpp-0.8.0/examples/example_modular_mgd.py +230 -0
- burnman_cpp-0.8.0/examples/example_modular_mgd_with_anharmonicity.py +82 -0
- burnman_cpp-0.8.0/examples/example_optimal_thermobarometry.py +550 -0
- burnman_cpp-0.8.0/examples/example_pyrolite_modebox.py +134 -0
- burnman_cpp-0.8.0/examples/example_seismic.py +56 -0
- burnman_cpp-0.8.0/examples/example_spock_gold.py +149 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/include/burnman/core/assemblage.hpp +26 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/include/burnman/core/combined_mineral.hpp +3 -0
- burnman_cpp-0.8.0/include/burnman/core/equilibrated_composite.hpp +112 -0
- burnman_cpp-0.8.0/include/burnman/core/geotherm.hpp +143 -0
- burnman_cpp-0.8.0/include/burnman/core/layer.hpp +169 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/include/burnman/core/material.hpp +5 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/include/burnman/core/mineral.hpp +7 -0
- burnman_cpp-0.8.0/include/burnman/core/planet.hpp +112 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/include/burnman/core/relaxed_solution.hpp +1 -0
- burnman_cpp-0.8.0/include/burnman/core/seismic.hpp +132 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/include/burnman/core/solution.hpp +21 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/include/burnman/eos/birch_murnaghan.hpp +28 -1
- burnman_cpp-0.8.0/include/burnman/eos/components/anharmonic_prefactor_models.hpp +48 -0
- burnman_cpp-0.8.0/include/burnman/eos/components/anharmonic_thermal_models.hpp +47 -0
- burnman_cpp-0.8.0/include/burnman/eos/components/debye_temperature_models.hpp +60 -0
- burnman_cpp-0.8.0/include/burnman/eos/cork.hpp +58 -0
- burnman_cpp-0.8.0/include/burnman/eos/dks_liquid.hpp +74 -0
- burnman_cpp-0.8.0/include/burnman/eos/dks_solid.hpp +74 -0
- burnman_cpp-0.8.0/include/burnman/eos/modular_mie_grueneisen_debye.hpp +93 -0
- burnman_cpp-0.8.0/include/burnman/eos/spock.hpp +93 -0
- burnman_cpp-0.8.0/include/burnman/minerals/covariance.hpp +29 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/include/burnman/minerals/datasets.hpp +402 -2
- burnman_cpp-0.8.0/include/burnman/optim/composition_fitting.hpp +87 -0
- burnman_cpp-0.8.0/include/burnman/optim/linear_fitting.hpp +44 -0
- burnman_cpp-0.8.0/include/burnman/tools/chemistry.hpp +69 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/include/burnman/tools/equilibration/equality_constraint_variants.hpp +19 -0
- burnman_cpp-0.8.0/include/burnman/tools/partitioning.hpp +27 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/include/burnman/tools/phase_diagram/calculation.hpp +24 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/include/burnman/tools/phase_diagram/verification.hpp +2 -0
- burnman_cpp-0.8.0/include/burnman/tools/seismic.hpp +24 -0
- burnman_cpp-0.8.0/include/burnman/tools/thermobarometry.hpp +94 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/include/burnman/utils/types/mineral_params.hpp +34 -2
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/include/burnman/utils/types/simple_types.hpp +8 -1
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/pyproject.toml +17 -5
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/python/bindings/bindings.hpp +27 -0
- burnman_cpp-0.8.0/python/bindings/chemistry.cpp +84 -0
- burnman_cpp-0.8.0/python/bindings/composition_fitting.cpp +97 -0
- burnman_cpp-0.8.0/python/bindings/eos.cpp +165 -0
- burnman_cpp-0.8.0/python/bindings/equilibrated_composite.cpp +61 -0
- burnman_cpp-0.8.0/python/bindings/geotherm.cpp +207 -0
- burnman_cpp-0.8.0/python/bindings/layer.cpp +178 -0
- burnman_cpp-0.8.0/python/bindings/linear_fitting.cpp +45 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/python/bindings/materials.cpp +61 -25
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/python/bindings/minerals.cpp +411 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/python/bindings/module.cpp +10 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/python/bindings/params.cpp +34 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/python/bindings/phase_diagram.cpp +25 -0
- burnman_cpp-0.8.0/python/bindings/planet.cpp +96 -0
- burnman_cpp-0.8.0/python/bindings/radial.hpp +85 -0
- burnman_cpp-0.8.0/python/bindings/seismic.cpp +207 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/python/bindings/solutions.cpp +27 -0
- burnman_cpp-0.8.0/python/bindings/thermobarometry.cpp +172 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/python/burnman_cpp/__init__.py +69 -1
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/python/burnman_cpp/adapters.py +46 -1
- burnman_cpp-0.8.0/python/burnman_cpp/anharmonic_prefactor_models.py +22 -0
- burnman_cpp-0.8.0/python/burnman_cpp/anharmonic_thermal_models.py +22 -0
- burnman_cpp-0.8.0/python/burnman_cpp/classes/__init__.py +14 -0
- burnman_cpp-0.8.0/python/burnman_cpp/classes/equilibratedcomposite.py +267 -0
- burnman_cpp-0.8.0/python/burnman_cpp/classes/geotherm.py +55 -0
- burnman_cpp-0.8.0/python/burnman_cpp/classes/layer.py +18 -0
- burnman_cpp-0.8.0/python/burnman_cpp/classes/planet.py +18 -0
- burnman_cpp-0.8.0/python/burnman_cpp/classes/seismic.py +48 -0
- burnman_cpp-0.8.0/python/burnman_cpp/debye_temperature_models.py +23 -0
- burnman_cpp-0.8.0/python/burnman_cpp/minerals/__init__.py +172 -0
- burnman_cpp-0.8.0/python/burnman_cpp/optimize/__init__.py +18 -0
- burnman_cpp-0.8.0/python/burnman_cpp/optimize/composition_fitting.py +26 -0
- burnman_cpp-0.8.0/python/burnman_cpp/optimize/linear_fitting.py +18 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/python/burnman_cpp/tools/__init__.py +17 -0
- burnman_cpp-0.8.0/python/burnman_cpp/tools/chemistry.py +87 -0
- burnman_cpp-0.8.0/python/burnman_cpp/tools/equilibrium_path.py +296 -0
- burnman_cpp-0.8.0/python/burnman_cpp/tools/partitioning.py +18 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/python/burnman_cpp/tools/phase_diagram_workflow.py +2 -52
- burnman_cpp-0.8.0/python/burnman_cpp/tools/seismic.py +32 -0
- burnman_cpp-0.8.0/python/burnman_cpp/tools/thermobarometry.py +34 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/python/tests/conftest.py +10 -0
- burnman_cpp-0.8.0/python/tests/dks_fortran_reference.py +77 -0
- burnman_cpp-0.8.0/python/tests/test_chemistry.py +436 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/python/tests/test_complete_datasets.py +34 -5
- burnman_cpp-0.8.0/python/tests/test_composition_fitting.py +489 -0
- burnman_cpp-0.8.0/python/tests/test_cork.py +253 -0
- burnman_cpp-0.8.0/python/tests/test_covariance.py +128 -0
- burnman_cpp-0.8.0/python/tests/test_dekoker_endmembers.py +40 -0
- burnman_cpp-0.8.0/python/tests/test_dekoker_example.py +80 -0
- burnman_cpp-0.8.0/python/tests/test_dks.py +159 -0
- burnman_cpp-0.8.0/python/tests/test_equilibrated_composite.py +344 -0
- burnman_cpp-0.8.0/python/tests/test_equilibrium_path.py +219 -0
- burnman_cpp-0.8.0/python/tests/test_figure13_benchmark.py +95 -0
- burnman_cpp-0.8.0/python/tests/test_figure14_benchmark.py +76 -0
- burnman_cpp-0.8.0/python/tests/test_geotherm.py +264 -0
- burnman_cpp-0.8.0/python/tests/test_hp_datasets.py +136 -0
- burnman_cpp-0.8.0/python/tests/test_layer_planet.py +429 -0
- burnman_cpp-0.8.0/python/tests/test_linear_fitting.py +315 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/python/tests/test_mineral_catalogue_reference.py +1 -1
- burnman_cpp-0.8.0/python/tests/test_modular_mgd.py +310 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/python/tests/test_native_failure_reference.py +1 -1
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/python/tests/test_native_minerals.py +6 -0
- burnman_cpp-0.8.0/python/tests/test_phase_diagram_incidence.py +94 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/python/tests/test_phase_diagram_workflow.py +7 -3
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/python/tests/test_reference_tools.py +2 -1
- burnman_cpp-0.8.0/python/tests/test_seismic.py +244 -0
- burnman_cpp-0.8.0/python/tests/test_slb_datasets.py +156 -0
- burnman_cpp-0.8.0/python/tests/test_spock.py +117 -0
- burnman_cpp-0.8.0/python/tests/test_thermobarometry.py +455 -0
- burnman_cpp-0.8.0/python/tests/test_wheel_dependencies.py +169 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/src/core/assemblage.cpp +106 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/src/core/combined_mineral.cpp +15 -0
- burnman_cpp-0.8.0/src/core/equilibrated_composite.cpp +414 -0
- burnman_cpp-0.8.0/src/core/geotherm.cpp +287 -0
- burnman_cpp-0.8.0/src/core/layer.cpp +427 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/src/core/material.cpp +83 -1
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/src/core/mineral.cpp +3 -0
- burnman_cpp-0.8.0/src/core/planet.cpp +308 -0
- burnman_cpp-0.8.0/src/core/radial_profile.hpp +114 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/src/core/relaxed_solution.cpp +6 -0
- burnman_cpp-0.8.0/src/core/seismic.cpp +377 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/src/core/solution.cpp +53 -0
- burnman_cpp-0.8.0/src/data/covariance.cpp +125 -0
- burnman_cpp-0.8.0/src/data/geotherm_data.hpp +452 -0
- burnman_cpp-0.8.0/src/data/input_covariance/HGP_2018_ds633_cov.h5 +0 -0
- burnman_cpp-0.8.0/src/data/input_covariance/HP_2011_ds62_cov.h5 +0 -0
- burnman_cpp-0.8.0/src/data/input_covariance/HPx_ds636_cov.h5 +0 -0
- burnman_cpp-0.8.0/src/data/input_geotherm/Anzellini_2013_PT.txt +34 -0
- burnman_cpp-0.8.0/src/data/input_geotherm/Katsura_2022.txt +51 -0
- burnman_cpp-0.8.0/src/data/input_geotherm/Plesa_2022_Mars_V_6cm3.txt +44 -0
- burnman_cpp-0.8.0/src/data/input_geotherm/SOURCES.md +25 -0
- burnman_cpp-0.8.0/src/data/input_geotherm/Stacey_1977_continents.txt +81 -0
- burnman_cpp-0.8.0/src/data/input_geotherm/Stacey_1977_oceans.txt +81 -0
- burnman_cpp-0.8.0/src/data/input_geotherm/anderson_82.txt +59 -0
- burnman_cpp-0.8.0/src/data/input_geotherm/brown_81.txt +69 -0
- burnman_cpp-0.8.0/src/data/input_seismic/SOURCES.md +20 -0
- burnman_cpp-0.8.0/src/data/input_seismic/STW105.txt +752 -0
- burnman_cpp-0.8.0/src/data/input_seismic/ak135.txt +147 -0
- burnman_cpp-0.8.0/src/data/input_seismic/iasp91.txt +154 -0
- burnman_cpp-0.8.0/src/data/input_seismic/prem.txt +96 -0
- burnman_cpp-0.8.0/src/data/input_seismic/pwave_fast.txt +146 -0
- burnman_cpp-0.8.0/src/data/input_seismic/pwave_slow.txt +146 -0
- burnman_cpp-0.8.0/src/data/input_seismic/swave_fast.txt +145 -0
- burnman_cpp-0.8.0/src/data/input_seismic/swave_slow.txt +145 -0
- burnman_cpp-0.8.0/src/data/read_table.cpp +61 -0
- burnman_cpp-0.8.0/src/data/read_table.hpp +24 -0
- burnman_cpp-0.8.0/src/data/seismic_data.hpp +1766 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/src/eos/birch_murnaghan.cpp +93 -0
- burnman_cpp-0.8.0/src/eos/components/modular_mgd_models.cpp +224 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/src/eos/components/property_modifiers.cpp +3 -2
- burnman_cpp-0.8.0/src/eos/cork.cpp +229 -0
- burnman_cpp-0.8.0/src/eos/dks_common.hpp +60 -0
- burnman_cpp-0.8.0/src/eos/dks_liquid.cpp +255 -0
- burnman_cpp-0.8.0/src/eos/dks_solid.cpp +196 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/src/eos/make_eos.cpp +19 -0
- burnman_cpp-0.8.0/src/eos/modular_mie_grueneisen_debye.cpp +402 -0
- burnman_cpp-0.8.0/src/eos/spock.cpp +286 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/src/minerals/datasets.cpp +11704 -5348
- burnman_cpp-0.8.0/src/optim/composition_fitting.cpp +269 -0
- burnman_cpp-0.8.0/src/optim/linear_fitting.cpp +373 -0
- burnman_cpp-0.8.0/src/tools/chemistry.cpp +429 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/src/tools/equilibration/equality_constraint_variants.cpp +61 -0
- burnman_cpp-0.8.0/src/tools/partitioning.cpp +71 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/src/tools/phase_diagram/calculation.cpp +73 -13
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/src/tools/phase_diagram/properties.cpp +18 -1
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/src/tools/phase_diagram/stability.cpp +28 -10
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/src/tools/phase_diagram/verification.cpp +12 -0
- burnman_cpp-0.8.0/src/tools/seismic.cpp +27 -0
- burnman_cpp-0.8.0/src/tools/thermobarometry.cpp +539 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/tests/core/test_assemblage.cpp +1 -1
- burnman_cpp-0.8.0/tests/core/test_geotherm.cpp +185 -0
- burnman_cpp-0.8.0/tests/core/test_layer_planet.cpp +169 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/tests/core/test_mineral.cpp +22 -1
- burnman_cpp-0.8.0/tests/core/test_seismic.cpp +140 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/tests/core/test_solution.cpp +1 -1
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/tests/core/test_solution_model.cpp +1 -1
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/tests/eos/test_birch_murnaghan.cpp +1 -1
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/tests/eos/test_bukowinski_electronic.cpp +1 -1
- burnman_cpp-0.8.0/tests/eos/test_cork.cpp +160 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/tests/eos/test_debye.cpp +1 -1
- burnman_cpp-0.8.0/tests/eos/test_dks.cpp +115 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/tests/eos/test_einstein.cpp +1 -1
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/tests/eos/test_hp.cpp +1 -1
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/tests/eos/test_mie_grueneisen_debye.cpp +1 -1
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/tests/eos/test_modified_tait.cpp +1 -1
- burnman_cpp-0.8.0/tests/eos/test_modular_mie_grueneisen_debye.cpp +333 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/tests/eos/test_property_modifiers.cpp +30 -50
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/tests/eos/test_slb.cpp +1 -1
- burnman_cpp-0.8.0/tests/eos/test_spock.cpp +269 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/tests/eos/test_vinet.cpp +1 -1
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/tests/eos/test_volume_accuracy.cpp +10 -2
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/tests/include/eos_names.hpp +6 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/tests/include/ps1994_reference.hpp +1 -1
- burnman_cpp-0.8.0/tests/minerals/test_covariance.cpp +48 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/tests/minerals/test_native_datasets.cpp +105 -0
- burnman_cpp-0.8.0/tests/optim/test_composition_fitting.cpp +235 -0
- burnman_cpp-0.8.0/tests/optim/test_linear_fitting.cpp +161 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/tests/reference/burnman.json +1 -1
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/tests/tools/averaging/test_averaging_schemes.cpp +1 -1
- burnman_cpp-0.8.0/tests/tools/test_chemistry.cpp +144 -0
- burnman_cpp-0.8.0/tests/tools/test_thermobarometry.cpp +106 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/tools/build_wheel_dependencies.py +82 -12
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/tools/check_reference_data.py +3 -0
- burnman_cpp-0.8.0/tools/export_covariance_data.py +113 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/tools/export_example_minerals.py +67 -8
- burnman_cpp-0.8.0/tools/export_geotherm_data.py +55 -0
- burnman_cpp-0.8.0/tools/export_seismic_data.py +55 -0
- burnman_cpp-0.4.0/python/burnman_cpp/minerals/__init__.py +0 -59
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/.clang-format +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/.github/workflows/format.yml +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/LICENSE +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/benchmarks/core/benchmark_assemblage.cpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/benchmarks/core/benchmark_mineral.cpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/benchmarks/cpp_python_speedup.py +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/benchmarks/eos/benchmark_property_modifiers.cpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/benchmarks/parse_benchmarks.py +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/benchmarks/python_benchmarks.py +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/benchmarks/requirements.txt +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/examples/example_basalt_phase_diagram.py +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/examples/example_composition.py +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/examples/example_equilibrate.py +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/examples/example_forsterite_thermodynamic_sections.py +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/examples/example_green2025_at1.py +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/examples/example_green2025_klb1.py +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/examples/example_green2025_mix1g.py +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/examples/example_green2025_re46.py +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/examples/example_green2025_ton101s.py +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/examples/example_green2025_ton101u.py +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/examples/example_harzburgite_basalt_px.py +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/examples/example_iron_hematite_tx.py +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/examples/example_metasediment_contours.py +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/examples/example_metasediment_phase_diagram.py +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/examples/example_olivine_px.py +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/examples/example_olivine_tx.py +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/examples/example_olivine_vx.py +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/examples/example_patch_phase_diagram.py +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/examples/example_phase_diagram_grid.py +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/examples/example_plot_pyrolite_sp_relaxed_properties.py +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/examples/example_pyrolite_phase_diagram.py +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/examples/example_pyrolite_phase_diagram_zoom.py +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/examples/example_pyrolite_sp_phase_diagram.py +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/examples/example_refine_phase_diagram.py +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/examples/example_single_point_equilibrium.py +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/examples/example_solution_equilibrium.py +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/examples/green2025.py +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/examples/green2025_reference.md +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/include/burnman/core/composite_material.hpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/include/burnman/core/composition.hpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/include/burnman/core/equation_of_state.hpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/include/burnman/core/solution_model.hpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/include/burnman/core/solution_models/asymmetric_regular_solution.hpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/include/burnman/core/solution_models/ideal_solution.hpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/include/burnman/core/solution_models/solution_model_base.hpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/include/burnman/core/solution_models/symmetric_regular_solution.hpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/include/burnman/eos/components/bukowinski_electronic.hpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/include/burnman/eos/components/debye.hpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/include/burnman/eos/components/einstein.hpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/include/burnman/eos/components/excess_params.hpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/include/burnman/eos/components/gsl_params.hpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/include/burnman/eos/components/property_modifiers.hpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/include/burnman/eos/hp.hpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/include/burnman/eos/hp_liquid.hpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/include/burnman/eos/make_eos.hpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/include/burnman/eos/mie_grueneisen_debye.hpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/include/burnman/eos/modified_tait.hpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/include/burnman/eos/slb.hpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/include/burnman/eos/vinet.hpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/include/burnman/minerals/model_sets.hpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/include/burnman/minerals/phase_aliases.hpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/include/burnman/minerals/water.hpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/include/burnman/optim/roots/bracket.hpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/include/burnman/optim/roots/brent.hpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/include/burnman/optim/roots/damped_newton_solver.hpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/include/burnman/optim/roots/damped_newton_state.hpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/include/burnman/optim/roots/damped_newton_types.hpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/include/burnman/tools/averaging/averaging_base.hpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/include/burnman/tools/averaging/averaging_schemes.hpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/include/burnman/tools/averaging/averaging_utils.hpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/include/burnman/tools/averaging/hs.hpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/include/burnman/tools/averaging/hs_lower.hpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/include/burnman/tools/averaging/hs_upper.hpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/include/burnman/tools/averaging/reuss.hpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/include/burnman/tools/averaging/voigt.hpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/include/burnman/tools/averaging/vrh.hpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/include/burnman/tools/equilibration/equality_constraint_base.hpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/include/burnman/tools/equilibration/equality_constraint_helpers.hpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/include/burnman/tools/equilibration/equality_constraints.hpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/include/burnman/tools/equilibration/equilibrate.hpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/include/burnman/tools/equilibration/equilibrate_impl.hpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/include/burnman/tools/equilibration/equilibrate_lambda_bounds.hpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/include/burnman/tools/equilibration/equilibrate_objective.hpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/include/burnman/tools/equilibration/equilibrate_types.hpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/include/burnman/tools/equilibration/equilibrate_utils.hpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/include/burnman/tools/phase_diagram/boundary_repair.hpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/include/burnman/tools/phase_diagram/common.hpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/include/burnman/tools/phase_diagram/consistency.hpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/include/burnman/tools/phase_diagram/continuation.hpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/include/burnman/tools/phase_diagram/contours.hpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/include/burnman/tools/phase_diagram/critical.hpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/include/burnman/tools/phase_diagram/domain.hpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/include/burnman/tools/phase_diagram/polygons.hpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/include/burnman/tools/phase_diagram/properties.hpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/include/burnman/tools/phase_diagram/refinement.hpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/include/burnman/tools/phase_diagram/stability.hpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/include/burnman/tools/phase_diagram/tracing.hpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/include/burnman/tools/phase_diagram/types.hpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/include/burnman/tools/phase_diagram.hpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/include/burnman/tools/polytope.hpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/include/burnman/utils/chemistry_utils.hpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/include/burnman/utils/constants.hpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/include/burnman/utils/exceptions.hpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/include/burnman/utils/index_utils.hpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/include/burnman/utils/math_utils.hpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/include/burnman/utils/matrix_utils.hpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/include/burnman/utils/polygon_utils.hpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/include/burnman/utils/string_utils.hpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/include/burnman/utils/types/ndarray.hpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/include/burnman/utils/types/types.hpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/include/burnman/utils/utils.hpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/include/burnman/utils/validate_optionals.hpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/include/burnman/utils/vector_utils.hpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/include/burnman/utils/warnings.hpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/python/bindings/combined.cpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/python/bindings/composition.cpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/python/bindings/equilibration.cpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/python/bindings/model_sets.cpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/python/bindings/modifiers.cpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/python/bindings/polytope.cpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/python/bindings/utils.cpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/python/burnman_cpp/constants.py +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/python/burnman_cpp/tools/aspect.py +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/python/burnman_cpp/tools/contours.py +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/python/burnman_cpp/tools/phase_diagram.py +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/python/burnman_cpp/tools/phase_diagram_helpers.py +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/python/burnman_cpp/tools/polytope.py +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/python/burnman_cpp/tools/potential_grid.py +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/python/burnman_cpp/tools/properties.py +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/python/tests/data/basalt_field_verification.json +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/python/tests/data/basalt_local_amphibole.json +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/python/tests/data/basalt_local_plagioclase.json +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/python/tests/data/basalt_nearby_bivariant_junctions.json +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/python/tests/data/forsterite_latent_interval.json +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/python/tests/data/green_provisional_loops.json +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/python/tests/data/harzburgite_garnet_composition_boundary.json +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/python/tests/data/harzburgite_thin_composition_field.json +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/python/tests/data/metasediment_contour_field.json +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/python/tests/data/metasediment_contour_ordering_field.json +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/python/tests/data/metasediment_curve_edit.json +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/python/tests/data/metasediment_curved_mica_field.json +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/python/tests/data/metasediment_curved_node_connections.json +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/python/tests/data/metasediment_endpoints.json +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/python/tests/data/metasediment_missing_melt_connection.json +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/python/tests/data/metasediment_ordering_segment.json +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/python/tests/data/metasediment_parallel_fields.json +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/python/tests/data/metasediment_thin_finite_field.json +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/python/tests/data/metasediment_univariant_loop.json +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/python/tests/data/metasediment_univariant_segments.json +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/python/tests/data/phase_diagram_model_limit_fan.json +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/python/tests/data/pyrolite_cold_endpoints.json +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/python/tests/data/pyrolite_critical_endpoints.json +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/python/tests/data/pyrolite_crossed_loops.json +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/python/tests/data/pyrolite_duplicate_curve.json +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/python/tests/data/pyrolite_duplicate_invariant.json +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/python/tests/data/pyrolite_duplicate_junctions.json +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/python/tests/data/pyrolite_endpoints.json +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/python/tests/data/pyrolite_exchanged_junction_zeros.json +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/python/tests/data/pyrolite_frame_order.json +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/python/tests/data/pyrolite_limiting_neighbours.json +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/python/tests/data/pyrolite_local_opx.json +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/python/tests/data/pyrolite_missing_solution_branch.json +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/python/tests/data/pyrolite_model_limit.json +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/python/tests/data/pyrolite_narrow_curves.json +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/python/tests/data/pyrolite_narrow_solution_replacement.json +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/python/tests/data/pyrolite_nearby_junctions.json +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/python/tests/data/pyrolite_nearby_univariant_junctions.json +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/python/tests/data/pyrolite_neighbouring_branches.json +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/python/tests/data/pyrolite_partial_duplicate.json +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/python/tests/data/pyrolite_perimeter_neighbours.json +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/python/tests/data/pyrolite_pt_coincident_phase_outs.json +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/python/tests/data/pyrolite_pt_cold_coexistence.json +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/python/tests/data/pyrolite_pt_cold_model_limits.json +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/python/tests/data/pyrolite_pt_cold_reaction_duplicates.json +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/python/tests/data/pyrolite_pt_detached_junctions.json +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/python/tests/data/pyrolite_pt_equivalent_reaction_curves.json +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/python/tests/data/pyrolite_pt_garnet_stability.json +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/python/tests/data/pyrolite_pt_model_limit_duplicates.json +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/python/tests/data/pyrolite_pt_repair_regressions.json +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/python/tests/data/pyrolite_reaction_extents.json +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/python/tests/data/pyrolite_refinement_segment.json +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/python/tests/data/pyrolite_retired_junction_geometry.json +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/python/tests/data/pyrolite_short_branch_labels.json +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/python/tests/data/pyrolite_solution_replacement.json +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/python/tests/data/pyrolite_solvus_seeds.json +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/python/tests/data/pyrolite_sp_ak_branch_switch.json +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/python/tests/data/pyrolite_sp_cf_copy_junctions.json +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/python/tests/data/pyrolite_sp_enthalpy_branch.json +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/python/tests/data/pyrolite_sp_failed_bracket.json +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/python/tests/data/pyrolite_sp_false_cpx_junction.json +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/python/tests/data/pyrolite_sp_false_junction.json +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/python/tests/data/pyrolite_sp_junction.json +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/python/tests/data/pyrolite_sp_missing_ak_boundary.json +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/python/tests/data/pyrolite_sp_reaction_classification.json +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/python/tests/data/pyrolite_sp_soft_grid_point.json +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/python/tests/data/pyrolite_sp_trace_site_junctions.json +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/python/tests/data/pyrolite_sp_trace_site_response.json +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/python/tests/data/pyrolite_sp_unconnected_junctions.json +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/python/tests/data/pyrolite_sp_wrong_branch_junction.json +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/python/tests/data/pyrolite_stable_vertex_loop.json +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/python/tests/data/pyrolite_zoom_reaction_limits.json +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/python/tests/test_adapters.py +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/python/tests/test_aspect_table.py +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/python/tests/test_bindings.py +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/python/tests/test_composition.py +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/python/tests/test_composition_phase_diagram.py +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/python/tests/test_composition_reference.py +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/python/tests/test_constants.py +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/python/tests/test_contour_tools.py +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/python/tests/test_enthalpy_ps_infill.py +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/python/tests/test_equilibration.py +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/python/tests/test_forsterite_sections.py +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/python/tests/test_gaussian_moment_corrected.py +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/python/tests/test_green2025.py +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/python/tests/test_melt.py +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/python/tests/test_model_sets.py +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/python/tests/test_modifiers.py +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/python/tests/test_phase_diagram.py +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/python/tests/test_phase_diagram_branch_identity.py +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/python/tests/test_phase_diagram_consistency.py +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/python/tests/test_phase_diagram_contours.py +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/python/tests/test_phase_diagram_critical_endpoints.py +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/python/tests/test_phase_diagram_line_resolution.py +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/python/tests/test_phase_diagram_partial_duplicates.py +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/python/tests/test_phase_diagram_patching.py +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/python/tests/test_phase_diagram_perimeter_labels.py +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/python/tests/test_phase_diagram_plot.py +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/python/tests/test_polygon_utils.py +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/python/tests/test_polytope.py +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/python/tests/test_potential_grid.py +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/python/tests/test_property_grid.py +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/python/tests/test_slb2024.py +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/python/tests/test_slb_reference.py +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/python/tests/test_stable_equilibrium.py +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/python/tests/test_thermodynamic_phase_diagram.py +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/python/tests/test_wheel_metadata.py +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/src/core/composite_material.cpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/src/core/composition.cpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/src/core/equation_of_state.cpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/src/core/solution_models/asymmetric_regular_solution.cpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/src/core/solution_models/ideal_solution.cpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/src/core/solution_models/solution_model_base.cpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/src/core/solution_models/symmetric_regular_solution.cpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/src/eos/components/bukowinski_electronic.cpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/src/eos/components/debye.cpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/src/eos/components/einstein.cpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/src/eos/hp.cpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/src/eos/hp_liquid.cpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/src/eos/mie_grueneisen_debye.cpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/src/eos/modified_tait.cpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/src/eos/slb.cpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/src/eos/vinet.cpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/src/minerals/model_sets.cpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/src/minerals/phase_aliases.cpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/src/minerals/water.cpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/src/optim/roots/damped_newton_solver.cpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/src/tools/averaging/averaging_base.cpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/src/tools/averaging/averaging_utils.cpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/src/tools/averaging/hs.cpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/src/tools/averaging/hs_lower.cpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/src/tools/averaging/hs_upper.cpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/src/tools/averaging/reuss.cpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/src/tools/averaging/voigt.cpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/src/tools/averaging/vrh.cpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/src/tools/equilibration/equilibrate_impl.cpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/src/tools/equilibration/equilibrate_lambda_bounds.cpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/src/tools/equilibration/equilibrate_objective.cpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/src/tools/equilibration/equilibrate_utils.cpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/src/tools/phase_diagram/boundary_repair.cpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/src/tools/phase_diagram/common.cpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/src/tools/phase_diagram/consistency.cpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/src/tools/phase_diagram/continuation.cpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/src/tools/phase_diagram/contours.cpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/src/tools/phase_diagram/critical.cpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/src/tools/phase_diagram/domain.cpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/src/tools/phase_diagram/polygons.cpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/src/tools/phase_diagram/potential.cpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/src/tools/phase_diagram/refinement.cpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/src/tools/phase_diagram/tracing.cpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/src/tools/polytope.cpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/src/tools/solution_simplification.cpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/src/utils/chemistry_utils.cpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/src/utils/polygon_utils.cpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/tests/core/test_composition.cpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/tests/core/test_material.cpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/tests/eos/test_excess_params.cpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/tests/include/equilibration_fixtures.hpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/tests/include/solution_fixtures.hpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/tests/include/thermocalc_reference.hpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/tests/include/tolerances.hpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/tests/minerals/test_thermocalc_reference.cpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/tests/minerals/test_water.cpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/tests/optim/roots/test_damped_newton.cpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/tests/optim/roots/test_roots.cpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/tests/reference/ps1994.json +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/tests/reference/thermocalc_metapelite.json +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/tests/test_main.cpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/tests/tools/equilibration/test_equality_constraints.cpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/tests/tools/equilibration/test_equilibrate.cpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/tests/tools/equilibration/test_equilibrate_lambda_bounds.cpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/tests/tools/equilibration/test_equilibrate_objective.cpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/tests/tools/equilibration/test_equilibrate_utils.cpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/tests/tools/test_phase_diagram.cpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/tests/tools/test_phase_diagram_consistency.cpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/tests/tools/test_polytope.cpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/tests/utils/test_chemistry_utils.cpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/tests/utils/test_constants.cpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/tests/utils/test_exceptions.cpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/tests/utils/test_index_utils.cpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/tests/utils/test_math_utils.cpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/tests/utils/test_matrix_utils.cpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/tests/utils/test_polygon_utils.cpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/tests/utils/test_string_utils.cpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/tests/utils/test_types.cpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/tests/utils/test_validate_optionals.cpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/tests/utils/test_vector_utils.cpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/tests/utils/test_warnings.cpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/tools/burnman_reference.py +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.8.0}/tools/extract_thermocalc_reference.py +0 -0
- {burnman_cpp-0.4.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: |
|
|
@@ -96,7 +96,7 @@ jobs:
|
|
|
96
96
|
uses: actions/checkout@v7
|
|
97
97
|
with:
|
|
98
98
|
repository: geodynamics/burnman
|
|
99
|
-
ref:
|
|
99
|
+
ref: e2cfac31052273b3fa9d5ce905978e97723005e9
|
|
100
100
|
path: build/python-burnman-reference
|
|
101
101
|
persist-credentials: false
|
|
102
102
|
|
|
@@ -20,7 +20,7 @@ jobs:
|
|
|
20
20
|
cpp:
|
|
21
21
|
name: C++ tests
|
|
22
22
|
runs-on: ubuntu-24.04
|
|
23
|
-
timeout-minutes:
|
|
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:
|
|
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:
|
|
95
|
+
timeout-minutes: 60
|
|
96
96
|
env:
|
|
97
97
|
CMAKE_BUILD_PARALLEL_LEVEL: "2"
|
|
98
98
|
MPLBACKEND: Agg
|
|
@@ -110,7 +110,7 @@ jobs:
|
|
|
110
110
|
uses: actions/checkout@v7
|
|
111
111
|
with:
|
|
112
112
|
repository: geodynamics/burnman
|
|
113
|
-
ref:
|
|
113
|
+
ref: e2cfac31052273b3fa9d5ce905978e97723005e9
|
|
114
114
|
path: build/python-burnman-reference
|
|
115
115
|
persist-credentials: false
|
|
116
116
|
|
|
@@ -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
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
name: Wheels
|
|
2
2
|
|
|
3
3
|
on:
|
|
4
|
-
|
|
4
|
+
push:
|
|
5
|
+
branches: [main]
|
|
5
6
|
paths:
|
|
6
7
|
- CMakeLists.txt
|
|
7
8
|
- pyproject.toml
|
|
@@ -10,9 +11,6 @@ on:
|
|
|
10
11
|
- python/**
|
|
11
12
|
- tools/build_wheel_dependencies.py
|
|
12
13
|
- .github/workflows/wheels.yml
|
|
13
|
-
push:
|
|
14
|
-
tags: ["v*"]
|
|
15
|
-
workflow_dispatch:
|
|
16
14
|
|
|
17
15
|
permissions:
|
|
18
16
|
contents: read
|
|
@@ -27,6 +25,7 @@ jobs:
|
|
|
27
25
|
steps:
|
|
28
26
|
- uses: actions/checkout@v7
|
|
29
27
|
with:
|
|
28
|
+
ref: ${{ github.sha }}
|
|
30
29
|
persist-credentials: false
|
|
31
30
|
- uses: actions/setup-python@v7
|
|
32
31
|
with:
|
|
@@ -48,8 +47,6 @@ jobs:
|
|
|
48
47
|
os: [ubuntu-24.04, ubuntu-24.04-arm, macos-15, macos-15-intel]
|
|
49
48
|
runs-on: ${{ matrix.os }}
|
|
50
49
|
env:
|
|
51
|
-
# Pull requests test each architecture; releases/manual runs build every ABI.
|
|
52
|
-
CIBW_BUILD: ${{ github.event_name == 'pull_request' && 'cp312-*' || 'cp3{10,11,12,13,14,15}-*' }}
|
|
53
50
|
CIBW_ARCHS: native
|
|
54
51
|
steps:
|
|
55
52
|
- uses: actions/download-artifact@v7
|
|
@@ -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
|
|
|
@@ -71,18 +93,29 @@ if(BURNMAN_BUILD_PYTHON)
|
|
|
71
93
|
pybind11_add_module(_core
|
|
72
94
|
python/bindings/module.cpp
|
|
73
95
|
python/bindings/params.cpp
|
|
96
|
+
python/bindings/eos.cpp
|
|
74
97
|
python/bindings/materials.cpp
|
|
75
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
|
|
76
104
|
python/bindings/combined.cpp
|
|
77
105
|
python/bindings/modifiers.cpp
|
|
78
106
|
python/bindings/solutions.cpp
|
|
79
107
|
python/bindings/minerals.cpp
|
|
80
108
|
python/bindings/utils.cpp
|
|
81
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
|
|
82
114
|
python/bindings/polytope.cpp
|
|
83
115
|
python/bindings/phase_diagram.cpp
|
|
84
116
|
python/bindings/equilibration.cpp)
|
|
85
117
|
target_link_libraries(_core PRIVATE burnman_core)
|
|
118
|
+
set_target_properties(_core PROPERTIES INSTALL_RPATH_USE_LINK_PATH TRUE)
|
|
86
119
|
target_compile_definitions(_core PRIVATE BURNMAN_VERSION="${PROJECT_VERSION}")
|
|
87
120
|
burnman_compiler_warnings(_core)
|
|
88
121
|
install(TARGETS _core LIBRARY DESTINATION burnman_cpp RUNTIME DESTINATION burnman_cpp)
|
|
@@ -1,12 +1,16 @@
|
|
|
1
|
-
#
|
|
1
|
+
# ------------------------------------------------------
|
|
2
2
|
#
|
|
3
|
-
#
|
|
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
|
-
#
|
|
5
|
+
# SPDX-FileCopyrightText: Copyright (C) 2025-2026 by the BurnMan Team.
|
|
8
6
|
#
|
|
9
|
-
#
|
|
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
|
-
|
|
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.
|
|
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
|
|
@@ -187,7 +188,7 @@ comparisons used by GitHub CI:
|
|
|
187
188
|
|
|
188
189
|
```sh
|
|
189
190
|
git clone https://github.com/geodynamics/burnman.git build/python-burnman-reference
|
|
190
|
-
git -C build/python-burnman-reference checkout
|
|
191
|
+
git -C build/python-burnman-reference checkout e2cfac31052273b3fa9d5ce905978e97723005e9
|
|
191
192
|
python -m pip install -e 'build/python-burnman-reference[dev]'
|
|
192
193
|
export PYTHONPATH="$PWD/build/python-burnman-reference"
|
|
193
194
|
export PYTHONDONTWRITEBYTECODE=1
|
|
@@ -161,7 +161,7 @@ comparisons used by GitHub CI:
|
|
|
161
161
|
|
|
162
162
|
```sh
|
|
163
163
|
git clone https://github.com/geodynamics/burnman.git build/python-burnman-reference
|
|
164
|
-
git -C build/python-burnman-reference checkout
|
|
164
|
+
git -C build/python-burnman-reference checkout e2cfac31052273b3fa9d5ce905978e97723005e9
|
|
165
165
|
python -m pip install -e 'build/python-burnman-reference[dev]'
|
|
166
166
|
export PYTHONPATH="$PWD/build/python-burnman-reference"
|
|
167
167
|
export PYTHONDONTWRITEBYTECODE=1
|
|
@@ -1,6 +1,20 @@
|
|
|
1
1
|
Performance benchmarks
|
|
2
2
|
======================
|
|
3
3
|
|
|
4
|
+
Scientific reference comparisons are kept alongside the timing benchmarks:
|
|
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.
|
|
8
|
+
- [Stixrude & Lithgow-Bertelloni (2024), Figure 13](stixrude_2024_figure13/README.md):
|
|
9
|
+
pyrolite phase modes, native iron and ferropericlase spin along a 1600 K
|
|
10
|
+
surface isentrope, with overlays on the published panels and saved equilibria.
|
|
11
|
+
- [Stixrude & Lithgow-Bertelloni (2024), Figure 14](stixrude_2024_figure14/README.md):
|
|
12
|
+
three lower-mantle shear-velocity profiles, relaxed pyrolite expansivity and
|
|
13
|
+
phase boundaries, with a 1400 K isentrope plus a basal erfc thermal layer.
|
|
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
|
+
|
|
4
18
|
`core/` and `eos/` contain the Catch2 performance benchmarks. They build into
|
|
5
19
|
their own executable and reuse the fixtures in `tests/include/`. Unit tests
|
|
6
20
|
build separately. The Python scripts time pure Python BurnMan, process native
|
|
@@ -67,5 +81,5 @@ Both commands use `build/benchmarks/` by default. The Python timer accepts
|
|
|
67
81
|
The GitHub `Benchmarks` workflow runs on pushes, pull requests and manual
|
|
68
82
|
dispatch. It builds and executes the native benchmarks with warnings treated
|
|
69
83
|
as errors, processes their XML, and runs the Python timings against BurnMan
|
|
70
|
-
commit `
|
|
84
|
+
commit `e2cfac31052273b3fa9d5ce905978e97723005e9`. The XML, CTest log and CSV files
|
|
71
85
|
are available as workflow artifacts.
|
|
@@ -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()
|