burnman-cpp 0.4.0__tar.gz → 0.6.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.6.0}/.github/workflows/benchmarks.yml +1 -1
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/.github/workflows/tests.yml +1 -1
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/.github/workflows/wheels.yml +3 -6
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/CMakeLists.txt +1 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/PKG-INFO +2 -2
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/README.md +1 -1
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/benchmarks/README.md +10 -1
- burnman_cpp-0.6.0/benchmarks/stixrude_2024.py +153 -0
- burnman_cpp-0.6.0/benchmarks/stixrude_2024_figure13/README.md +139 -0
- burnman_cpp-0.6.0/benchmarks/stixrude_2024_figure13/benchmark.py +311 -0
- burnman_cpp-0.6.0/benchmarks/stixrude_2024_figure13/overlay.py +211 -0
- burnman_cpp-0.6.0/benchmarks/stixrude_2024_figure13/reference/axis_registration.json +55 -0
- burnman_cpp-0.6.0/benchmarks/stixrude_2024_figure13/reference/figure13.svg +9956 -0
- burnman_cpp-0.6.0/benchmarks/stixrude_2024_figure13/reference/prem_depth_pressure.txt +60 -0
- burnman_cpp-0.6.0/benchmarks/stixrude_2024_figure14/README.md +177 -0
- burnman_cpp-0.6.0/benchmarks/stixrude_2024_figure14/benchmark.py +352 -0
- burnman_cpp-0.6.0/benchmarks/stixrude_2024_figure14/geotherm.py +239 -0
- burnman_cpp-0.6.0/benchmarks/stixrude_2024_figure14/overlay.py +282 -0
- burnman_cpp-0.6.0/benchmarks/stixrude_2024_figure14/reference/axis_registration.json +41 -0
- burnman_cpp-0.6.0/benchmarks/stixrude_2024_figure14/reference/expansivity.jpg +0 -0
- burnman_cpp-0.6.0/benchmarks/stixrude_2024_figure14/reference/figure14.svg +12470 -0
- burnman_cpp-0.6.0/examples/example_modular_mgd.py +230 -0
- burnman_cpp-0.6.0/examples/example_modular_mgd_with_anharmonicity.py +82 -0
- burnman_cpp-0.6.0/examples/example_pyrolite_modebox.py +134 -0
- burnman_cpp-0.6.0/examples/example_spock_gold.py +149 -0
- burnman_cpp-0.6.0/include/burnman/eos/components/anharmonic_prefactor_models.hpp +48 -0
- burnman_cpp-0.6.0/include/burnman/eos/components/anharmonic_thermal_models.hpp +47 -0
- burnman_cpp-0.6.0/include/burnman/eos/components/debye_temperature_models.hpp +60 -0
- burnman_cpp-0.6.0/include/burnman/eos/modular_mie_grueneisen_debye.hpp +93 -0
- burnman_cpp-0.6.0/include/burnman/eos/spock.hpp +93 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/include/burnman/minerals/datasets.hpp +1 -1
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/include/burnman/tools/phase_diagram/calculation.hpp +24 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/include/burnman/tools/phase_diagram/verification.hpp +2 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/include/burnman/utils/types/mineral_params.hpp +24 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/include/burnman/utils/types/simple_types.hpp +4 -1
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/pyproject.toml +3 -1
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/python/bindings/bindings.hpp +1 -0
- burnman_cpp-0.6.0/python/bindings/eos.cpp +165 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/python/bindings/materials.cpp +0 -28
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/python/bindings/module.cpp +1 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/python/bindings/params.cpp +22 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/python/bindings/phase_diagram.cpp +25 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/python/burnman_cpp/__init__.py +23 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/python/burnman_cpp/adapters.py +37 -0
- burnman_cpp-0.6.0/python/burnman_cpp/anharmonic_prefactor_models.py +22 -0
- burnman_cpp-0.6.0/python/burnman_cpp/anharmonic_thermal_models.py +22 -0
- burnman_cpp-0.6.0/python/burnman_cpp/debye_temperature_models.py +23 -0
- burnman_cpp-0.6.0/python/burnman_cpp/minerals/__init__.py +121 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/python/burnman_cpp/tools/__init__.py +11 -0
- burnman_cpp-0.6.0/python/burnman_cpp/tools/equilibrium_path.py +296 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/python/burnman_cpp/tools/phase_diagram_workflow.py +2 -52
- burnman_cpp-0.6.0/python/tests/test_equilibrium_path.py +219 -0
- burnman_cpp-0.6.0/python/tests/test_modular_mgd.py +310 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/python/tests/test_native_failure_reference.py +1 -1
- burnman_cpp-0.6.0/python/tests/test_phase_diagram_incidence.py +94 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/python/tests/test_phase_diagram_workflow.py +7 -3
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/python/tests/test_reference_tools.py +2 -1
- burnman_cpp-0.6.0/python/tests/test_spock.py +117 -0
- burnman_cpp-0.6.0/src/eos/components/modular_mgd_models.cpp +224 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/src/eos/components/property_modifiers.cpp +3 -2
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/src/eos/make_eos.cpp +8 -0
- burnman_cpp-0.6.0/src/eos/modular_mie_grueneisen_debye.cpp +402 -0
- burnman_cpp-0.6.0/src/eos/spock.cpp +286 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/src/minerals/datasets.cpp +1 -1
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/src/tools/phase_diagram/calculation.cpp +73 -13
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/src/tools/phase_diagram/verification.cpp +12 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/tests/core/test_assemblage.cpp +1 -1
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/tests/core/test_mineral.cpp +22 -1
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/tests/core/test_solution.cpp +1 -1
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/tests/core/test_solution_model.cpp +1 -1
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/tests/eos/test_birch_murnaghan.cpp +1 -1
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/tests/eos/test_bukowinski_electronic.cpp +1 -1
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/tests/eos/test_debye.cpp +1 -1
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/tests/eos/test_einstein.cpp +1 -1
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/tests/eos/test_hp.cpp +1 -1
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/tests/eos/test_mie_grueneisen_debye.cpp +1 -1
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/tests/eos/test_modified_tait.cpp +1 -1
- burnman_cpp-0.6.0/tests/eos/test_modular_mie_grueneisen_debye.cpp +333 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/tests/eos/test_property_modifiers.cpp +30 -50
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/tests/eos/test_slb.cpp +1 -1
- burnman_cpp-0.6.0/tests/eos/test_spock.cpp +269 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/tests/eos/test_vinet.cpp +1 -1
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/tests/eos/test_volume_accuracy.cpp +10 -2
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/tests/include/eos_names.hpp +6 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/tests/include/ps1994_reference.hpp +1 -1
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/tests/reference/burnman.json +1 -1
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/tests/tools/averaging/test_averaging_schemes.cpp +1 -1
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/tools/check_reference_data.py +3 -0
- burnman_cpp-0.4.0/python/burnman_cpp/minerals/__init__.py +0 -59
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/.clang-format +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/.github/workflows/format.yml +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/.gitignore +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/LICENSE +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/Makefile +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/benchmarks/core/benchmark_assemblage.cpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/benchmarks/core/benchmark_mineral.cpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/benchmarks/cpp_python_speedup.py +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/benchmarks/eos/benchmark_property_modifiers.cpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/benchmarks/parse_benchmarks.py +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/benchmarks/python_benchmarks.py +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/benchmarks/requirements.txt +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/examples/example_basalt_phase_diagram.py +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/examples/example_composition.py +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/examples/example_equilibrate.py +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/examples/example_forsterite_thermodynamic_sections.py +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/examples/example_green2025_at1.py +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/examples/example_green2025_klb1.py +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/examples/example_green2025_mix1g.py +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/examples/example_green2025_re46.py +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/examples/example_green2025_ton101s.py +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/examples/example_green2025_ton101u.py +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/examples/example_harzburgite_basalt_px.py +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/examples/example_iron_hematite_tx.py +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/examples/example_metasediment_contours.py +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/examples/example_metasediment_phase_diagram.py +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/examples/example_olivine_px.py +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/examples/example_olivine_tx.py +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/examples/example_olivine_vx.py +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/examples/example_patch_phase_diagram.py +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/examples/example_phase_diagram_grid.py +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/examples/example_plot_pyrolite_sp_relaxed_properties.py +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/examples/example_pyrolite_phase_diagram.py +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/examples/example_pyrolite_phase_diagram_zoom.py +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/examples/example_pyrolite_sp_phase_diagram.py +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/examples/example_refine_phase_diagram.py +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/examples/example_single_point_equilibrium.py +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/examples/example_solution_equilibrium.py +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/examples/green2025.py +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/examples/green2025_reference.md +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/include/burnman/core/assemblage.hpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/include/burnman/core/combined_mineral.hpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/include/burnman/core/composite_material.hpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/include/burnman/core/composition.hpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/include/burnman/core/equation_of_state.hpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/include/burnman/core/material.hpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/include/burnman/core/mineral.hpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/include/burnman/core/relaxed_solution.hpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/include/burnman/core/solution.hpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/include/burnman/core/solution_model.hpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/include/burnman/core/solution_models/asymmetric_regular_solution.hpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/include/burnman/core/solution_models/ideal_solution.hpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/include/burnman/core/solution_models/solution_model_base.hpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/include/burnman/core/solution_models/symmetric_regular_solution.hpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/include/burnman/eos/birch_murnaghan.hpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/include/burnman/eos/components/bukowinski_electronic.hpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/include/burnman/eos/components/debye.hpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/include/burnman/eos/components/einstein.hpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/include/burnman/eos/components/excess_params.hpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/include/burnman/eos/components/gsl_params.hpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/include/burnman/eos/components/property_modifiers.hpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/include/burnman/eos/hp.hpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/include/burnman/eos/hp_liquid.hpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/include/burnman/eos/make_eos.hpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/include/burnman/eos/mie_grueneisen_debye.hpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/include/burnman/eos/modified_tait.hpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/include/burnman/eos/slb.hpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/include/burnman/eos/vinet.hpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/include/burnman/minerals/model_sets.hpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/include/burnman/minerals/phase_aliases.hpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/include/burnman/minerals/water.hpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/include/burnman/optim/roots/bracket.hpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/include/burnman/optim/roots/brent.hpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/include/burnman/optim/roots/damped_newton_solver.hpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/include/burnman/optim/roots/damped_newton_state.hpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/include/burnman/optim/roots/damped_newton_types.hpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/include/burnman/tools/averaging/averaging_base.hpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/include/burnman/tools/averaging/averaging_schemes.hpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/include/burnman/tools/averaging/averaging_utils.hpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/include/burnman/tools/averaging/hs.hpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/include/burnman/tools/averaging/hs_lower.hpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/include/burnman/tools/averaging/hs_upper.hpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/include/burnman/tools/averaging/reuss.hpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/include/burnman/tools/averaging/voigt.hpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/include/burnman/tools/averaging/vrh.hpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/include/burnman/tools/equilibration/equality_constraint_base.hpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/include/burnman/tools/equilibration/equality_constraint_helpers.hpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/include/burnman/tools/equilibration/equality_constraint_variants.hpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/include/burnman/tools/equilibration/equality_constraints.hpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/include/burnman/tools/equilibration/equilibrate.hpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/include/burnman/tools/equilibration/equilibrate_impl.hpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/include/burnman/tools/equilibration/equilibrate_lambda_bounds.hpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/include/burnman/tools/equilibration/equilibrate_objective.hpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/include/burnman/tools/equilibration/equilibrate_types.hpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/include/burnman/tools/equilibration/equilibrate_utils.hpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/include/burnman/tools/phase_diagram/boundary_repair.hpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/include/burnman/tools/phase_diagram/common.hpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/include/burnman/tools/phase_diagram/consistency.hpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/include/burnman/tools/phase_diagram/continuation.hpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/include/burnman/tools/phase_diagram/contours.hpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/include/burnman/tools/phase_diagram/critical.hpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/include/burnman/tools/phase_diagram/domain.hpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/include/burnman/tools/phase_diagram/polygons.hpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/include/burnman/tools/phase_diagram/properties.hpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/include/burnman/tools/phase_diagram/refinement.hpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/include/burnman/tools/phase_diagram/stability.hpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/include/burnman/tools/phase_diagram/tracing.hpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/include/burnman/tools/phase_diagram/types.hpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/include/burnman/tools/phase_diagram.hpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/include/burnman/tools/polytope.hpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/include/burnman/utils/chemistry_utils.hpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/include/burnman/utils/constants.hpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/include/burnman/utils/exceptions.hpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/include/burnman/utils/index_utils.hpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/include/burnman/utils/math_utils.hpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/include/burnman/utils/matrix_utils.hpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/include/burnman/utils/polygon_utils.hpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/include/burnman/utils/string_utils.hpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/include/burnman/utils/types/ndarray.hpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/include/burnman/utils/types/types.hpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/include/burnman/utils/utils.hpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/include/burnman/utils/validate_optionals.hpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/include/burnman/utils/vector_utils.hpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/include/burnman/utils/warnings.hpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/python/bindings/combined.cpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/python/bindings/composition.cpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/python/bindings/equilibration.cpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/python/bindings/minerals.cpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/python/bindings/model_sets.cpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/python/bindings/modifiers.cpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/python/bindings/polytope.cpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/python/bindings/solutions.cpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/python/bindings/utils.cpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/python/burnman_cpp/constants.py +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/python/burnman_cpp/tools/aspect.py +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/python/burnman_cpp/tools/contours.py +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/python/burnman_cpp/tools/phase_diagram.py +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/python/burnman_cpp/tools/phase_diagram_helpers.py +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/python/burnman_cpp/tools/polytope.py +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/python/burnman_cpp/tools/potential_grid.py +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/python/burnman_cpp/tools/properties.py +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/python/tests/conftest.py +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/python/tests/data/basalt_field_verification.json +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/python/tests/data/basalt_local_amphibole.json +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/python/tests/data/basalt_local_plagioclase.json +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/python/tests/data/basalt_nearby_bivariant_junctions.json +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/python/tests/data/forsterite_latent_interval.json +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/python/tests/data/green_provisional_loops.json +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/python/tests/data/harzburgite_garnet_composition_boundary.json +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/python/tests/data/harzburgite_thin_composition_field.json +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/python/tests/data/metasediment_contour_field.json +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/python/tests/data/metasediment_contour_ordering_field.json +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/python/tests/data/metasediment_curve_edit.json +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/python/tests/data/metasediment_curved_mica_field.json +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/python/tests/data/metasediment_curved_node_connections.json +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/python/tests/data/metasediment_endpoints.json +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/python/tests/data/metasediment_missing_melt_connection.json +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/python/tests/data/metasediment_ordering_segment.json +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/python/tests/data/metasediment_parallel_fields.json +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/python/tests/data/metasediment_thin_finite_field.json +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/python/tests/data/metasediment_univariant_loop.json +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/python/tests/data/metasediment_univariant_segments.json +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/python/tests/data/phase_diagram_model_limit_fan.json +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/python/tests/data/pyrolite_cold_endpoints.json +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/python/tests/data/pyrolite_critical_endpoints.json +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/python/tests/data/pyrolite_crossed_loops.json +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/python/tests/data/pyrolite_duplicate_curve.json +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/python/tests/data/pyrolite_duplicate_invariant.json +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/python/tests/data/pyrolite_duplicate_junctions.json +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/python/tests/data/pyrolite_endpoints.json +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/python/tests/data/pyrolite_exchanged_junction_zeros.json +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/python/tests/data/pyrolite_frame_order.json +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/python/tests/data/pyrolite_limiting_neighbours.json +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/python/tests/data/pyrolite_local_opx.json +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/python/tests/data/pyrolite_missing_solution_branch.json +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/python/tests/data/pyrolite_model_limit.json +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/python/tests/data/pyrolite_narrow_curves.json +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/python/tests/data/pyrolite_narrow_solution_replacement.json +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/python/tests/data/pyrolite_nearby_junctions.json +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/python/tests/data/pyrolite_nearby_univariant_junctions.json +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/python/tests/data/pyrolite_neighbouring_branches.json +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/python/tests/data/pyrolite_partial_duplicate.json +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/python/tests/data/pyrolite_perimeter_neighbours.json +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/python/tests/data/pyrolite_pt_coincident_phase_outs.json +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/python/tests/data/pyrolite_pt_cold_coexistence.json +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/python/tests/data/pyrolite_pt_cold_model_limits.json +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/python/tests/data/pyrolite_pt_cold_reaction_duplicates.json +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/python/tests/data/pyrolite_pt_detached_junctions.json +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/python/tests/data/pyrolite_pt_equivalent_reaction_curves.json +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/python/tests/data/pyrolite_pt_garnet_stability.json +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/python/tests/data/pyrolite_pt_model_limit_duplicates.json +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/python/tests/data/pyrolite_pt_repair_regressions.json +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/python/tests/data/pyrolite_reaction_extents.json +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/python/tests/data/pyrolite_refinement_segment.json +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/python/tests/data/pyrolite_retired_junction_geometry.json +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/python/tests/data/pyrolite_short_branch_labels.json +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/python/tests/data/pyrolite_solution_replacement.json +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/python/tests/data/pyrolite_solvus_seeds.json +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/python/tests/data/pyrolite_sp_ak_branch_switch.json +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/python/tests/data/pyrolite_sp_cf_copy_junctions.json +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/python/tests/data/pyrolite_sp_enthalpy_branch.json +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/python/tests/data/pyrolite_sp_failed_bracket.json +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/python/tests/data/pyrolite_sp_false_cpx_junction.json +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/python/tests/data/pyrolite_sp_false_junction.json +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/python/tests/data/pyrolite_sp_junction.json +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/python/tests/data/pyrolite_sp_missing_ak_boundary.json +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/python/tests/data/pyrolite_sp_reaction_classification.json +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/python/tests/data/pyrolite_sp_soft_grid_point.json +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/python/tests/data/pyrolite_sp_trace_site_junctions.json +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/python/tests/data/pyrolite_sp_trace_site_response.json +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/python/tests/data/pyrolite_sp_unconnected_junctions.json +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/python/tests/data/pyrolite_sp_wrong_branch_junction.json +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/python/tests/data/pyrolite_stable_vertex_loop.json +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/python/tests/data/pyrolite_zoom_reaction_limits.json +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/python/tests/test_adapters.py +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/python/tests/test_aspect_table.py +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/python/tests/test_bindings.py +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/python/tests/test_complete_datasets.py +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/python/tests/test_composition.py +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/python/tests/test_composition_phase_diagram.py +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/python/tests/test_composition_reference.py +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/python/tests/test_constants.py +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/python/tests/test_contour_tools.py +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/python/tests/test_enthalpy_ps_infill.py +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/python/tests/test_equilibration.py +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/python/tests/test_forsterite_sections.py +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/python/tests/test_gaussian_moment_corrected.py +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/python/tests/test_green2025.py +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/python/tests/test_melt.py +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/python/tests/test_mineral_catalogue_reference.py +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/python/tests/test_model_sets.py +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/python/tests/test_modifiers.py +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/python/tests/test_native_minerals.py +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/python/tests/test_phase_diagram.py +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/python/tests/test_phase_diagram_branch_identity.py +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/python/tests/test_phase_diagram_consistency.py +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/python/tests/test_phase_diagram_contours.py +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/python/tests/test_phase_diagram_critical_endpoints.py +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/python/tests/test_phase_diagram_line_resolution.py +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/python/tests/test_phase_diagram_partial_duplicates.py +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/python/tests/test_phase_diagram_patching.py +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/python/tests/test_phase_diagram_perimeter_labels.py +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/python/tests/test_phase_diagram_plot.py +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/python/tests/test_polygon_utils.py +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/python/tests/test_polytope.py +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/python/tests/test_potential_grid.py +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/python/tests/test_property_grid.py +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/python/tests/test_slb2024.py +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/python/tests/test_slb_reference.py +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/python/tests/test_stable_equilibrium.py +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/python/tests/test_thermodynamic_phase_diagram.py +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/python/tests/test_wheel_metadata.py +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/src/core/assemblage.cpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/src/core/combined_mineral.cpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/src/core/composite_material.cpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/src/core/composition.cpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/src/core/equation_of_state.cpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/src/core/material.cpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/src/core/mineral.cpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/src/core/relaxed_solution.cpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/src/core/solution.cpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/src/core/solution_models/asymmetric_regular_solution.cpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/src/core/solution_models/ideal_solution.cpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/src/core/solution_models/solution_model_base.cpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/src/core/solution_models/symmetric_regular_solution.cpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/src/eos/birch_murnaghan.cpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/src/eos/components/bukowinski_electronic.cpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/src/eos/components/debye.cpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/src/eos/components/einstein.cpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/src/eos/hp.cpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/src/eos/hp_liquid.cpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/src/eos/mie_grueneisen_debye.cpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/src/eos/modified_tait.cpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/src/eos/slb.cpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/src/eos/vinet.cpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/src/minerals/model_sets.cpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/src/minerals/phase_aliases.cpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/src/minerals/water.cpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/src/optim/roots/damped_newton_solver.cpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/src/tools/averaging/averaging_base.cpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/src/tools/averaging/averaging_utils.cpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/src/tools/averaging/hs.cpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/src/tools/averaging/hs_lower.cpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/src/tools/averaging/hs_upper.cpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/src/tools/averaging/reuss.cpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/src/tools/averaging/voigt.cpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/src/tools/averaging/vrh.cpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/src/tools/equilibration/equality_constraint_variants.cpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/src/tools/equilibration/equilibrate_impl.cpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/src/tools/equilibration/equilibrate_lambda_bounds.cpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/src/tools/equilibration/equilibrate_objective.cpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/src/tools/equilibration/equilibrate_utils.cpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/src/tools/phase_diagram/boundary_repair.cpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/src/tools/phase_diagram/common.cpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/src/tools/phase_diagram/consistency.cpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/src/tools/phase_diagram/continuation.cpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/src/tools/phase_diagram/contours.cpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/src/tools/phase_diagram/critical.cpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/src/tools/phase_diagram/domain.cpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/src/tools/phase_diagram/polygons.cpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/src/tools/phase_diagram/potential.cpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/src/tools/phase_diagram/properties.cpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/src/tools/phase_diagram/refinement.cpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/src/tools/phase_diagram/stability.cpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/src/tools/phase_diagram/tracing.cpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/src/tools/polytope.cpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/src/tools/solution_simplification.cpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/src/utils/chemistry_utils.cpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/src/utils/polygon_utils.cpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/tests/core/test_composition.cpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/tests/core/test_material.cpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/tests/eos/test_excess_params.cpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/tests/include/equilibration_fixtures.hpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/tests/include/solution_fixtures.hpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/tests/include/thermocalc_reference.hpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/tests/include/tolerances.hpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/tests/minerals/test_native_datasets.cpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/tests/minerals/test_thermocalc_reference.cpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/tests/minerals/test_water.cpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/tests/optim/roots/test_damped_newton.cpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/tests/optim/roots/test_roots.cpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/tests/reference/ps1994.json +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/tests/reference/thermocalc_metapelite.json +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/tests/test_main.cpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/tests/tools/equilibration/test_equality_constraints.cpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/tests/tools/equilibration/test_equilibrate.cpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/tests/tools/equilibration/test_equilibrate_lambda_bounds.cpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/tests/tools/equilibration/test_equilibrate_objective.cpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/tests/tools/equilibration/test_equilibrate_utils.cpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/tests/tools/test_phase_diagram.cpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/tests/tools/test_phase_diagram_consistency.cpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/tests/tools/test_polytope.cpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/tests/utils/test_chemistry_utils.cpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/tests/utils/test_constants.cpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/tests/utils/test_exceptions.cpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/tests/utils/test_index_utils.cpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/tests/utils/test_math_utils.cpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/tests/utils/test_matrix_utils.cpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/tests/utils/test_polygon_utils.cpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/tests/utils/test_string_utils.cpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/tests/utils/test_types.cpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/tests/utils/test_validate_optionals.cpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/tests/utils/test_vector_utils.cpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/tests/utils/test_warnings.cpp +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/tools/build_wheel_dependencies.py +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/tools/burnman_reference.py +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/tools/export_example_minerals.py +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/tools/extract_thermocalc_reference.py +0 -0
- {burnman_cpp-0.4.0 → burnman_cpp-0.6.0}/tools/generate_ps1994_reference.py +0 -0
|
@@ -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
|
|
|
@@ -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
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: burnman_cpp
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.6.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
|
|
@@ -187,7 +187,7 @@ comparisons used by GitHub CI:
|
|
|
187
187
|
|
|
188
188
|
```sh
|
|
189
189
|
git clone https://github.com/geodynamics/burnman.git build/python-burnman-reference
|
|
190
|
-
git -C build/python-burnman-reference checkout
|
|
190
|
+
git -C build/python-burnman-reference checkout e2cfac31052273b3fa9d5ce905978e97723005e9
|
|
191
191
|
python -m pip install -e 'build/python-burnman-reference[dev]'
|
|
192
192
|
export PYTHONPATH="$PWD/build/python-burnman-reference"
|
|
193
193
|
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,15 @@
|
|
|
1
1
|
Performance benchmarks
|
|
2
2
|
======================
|
|
3
3
|
|
|
4
|
+
Scientific reference comparisons are kept alongside the timing benchmarks:
|
|
5
|
+
|
|
6
|
+
- [Stixrude & Lithgow-Bertelloni (2024), Figure 13](stixrude_2024_figure13/README.md):
|
|
7
|
+
pyrolite phase modes, native iron and ferropericlase spin along a 1600 K
|
|
8
|
+
surface isentrope, with overlays on the published panels and saved equilibria.
|
|
9
|
+
- [Stixrude & Lithgow-Bertelloni (2024), Figure 14](stixrude_2024_figure14/README.md):
|
|
10
|
+
three lower-mantle shear-velocity profiles, relaxed pyrolite expansivity and
|
|
11
|
+
phase boundaries, with a 1400 K isentrope plus a basal erfc thermal layer.
|
|
12
|
+
|
|
4
13
|
`core/` and `eos/` contain the Catch2 performance benchmarks. They build into
|
|
5
14
|
their own executable and reuse the fixtures in `tests/include/`. Unit tests
|
|
6
15
|
build separately. The Python scripts time pure Python BurnMan, process native
|
|
@@ -67,5 +76,5 @@ Both commands use `build/benchmarks/` by default. The Python timer accepts
|
|
|
67
76
|
The GitHub `Benchmarks` workflow runs on pushes, pull requests and manual
|
|
68
77
|
dispatch. It builds and executes the native benchmarks with warnings treated
|
|
69
78
|
as errors, processes their XML, and runs the Python timings against BurnMan
|
|
70
|
-
commit `
|
|
79
|
+
commit `e2cfac31052273b3fa9d5ce905978e97723005e9`. The XML, CTest log and CSV files
|
|
71
80
|
are available as workflow artifacts.
|
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
# ------------------------------------------------------
|
|
3
|
+
#
|
|
4
|
+
# SPDX-License-Identifier: GPL-3.0-or-later
|
|
5
|
+
#
|
|
6
|
+
# SPDX-FileCopyrightText: Copyright (C) 2026 by the BurnMan Team.
|
|
7
|
+
#
|
|
8
|
+
# This file is part of BurnMan.
|
|
9
|
+
#
|
|
10
|
+
# Detailed license information governing the source code
|
|
11
|
+
# and contributions can be found in the LICENSE document.
|
|
12
|
+
#
|
|
13
|
+
# ------------------------------------------------------
|
|
14
|
+
"""Shared SLB2024 Table 1 compositions and candidate catalogue for benchmarks."""
|
|
15
|
+
|
|
16
|
+
import gzip
|
|
17
|
+
import json
|
|
18
|
+
|
|
19
|
+
import burnman_cpp as bm
|
|
20
|
+
from burnman_cpp.minerals import SLB24
|
|
21
|
+
|
|
22
|
+
TABLE1 = {
|
|
23
|
+
"pyrolite": dict(
|
|
24
|
+
SiO2=45.0,
|
|
25
|
+
MgO=38.88,
|
|
26
|
+
FeO=8.05,
|
|
27
|
+
Fe2O3=0.18,
|
|
28
|
+
CaO=3.18,
|
|
29
|
+
Al2O3=4.0,
|
|
30
|
+
Na2O=0.13,
|
|
31
|
+
Cr2O3=0.57,
|
|
32
|
+
),
|
|
33
|
+
"harzburgite": dict(
|
|
34
|
+
SiO2=43.43,
|
|
35
|
+
MgO=45.93,
|
|
36
|
+
FeO=8.34,
|
|
37
|
+
Fe2O3=0.09,
|
|
38
|
+
CaO=0.90,
|
|
39
|
+
Al2O3=1.0,
|
|
40
|
+
Na2O=0.01,
|
|
41
|
+
Cr2O3=0.30,
|
|
42
|
+
),
|
|
43
|
+
"basalt": dict(
|
|
44
|
+
SiO2=50.42,
|
|
45
|
+
MgO=9.77,
|
|
46
|
+
FeO=7.10,
|
|
47
|
+
Fe2O3=1.07,
|
|
48
|
+
CaO=12.54,
|
|
49
|
+
Al2O3=16.80,
|
|
50
|
+
Na2O=2.23,
|
|
51
|
+
Cr2O3=0.07,
|
|
52
|
+
),
|
|
53
|
+
}
|
|
54
|
+
FERRIC_FRACTIONS = dict(pyrolite=0.02, harzburgite=0.01, basalt=0.12)
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
def bulk_composition(lithology):
|
|
58
|
+
"""100 g Table 1 bulk; preserve cation ratios and impose stated Fe3+/Fe.
|
|
59
|
+
|
|
60
|
+
Table 1 oxide masses are rounded. Redistribute FeO/Fe2O3 to match the
|
|
61
|
+
independently stated initial ferric fraction, then normalize to 100 g.
|
|
62
|
+
Subsequent equilibrium calculations retain the closed elemental inventory.
|
|
63
|
+
"""
|
|
64
|
+
masses = {k: v * 0.001 for k, v in TABLE1[lithology].items()}
|
|
65
|
+
iron = bm.Composition({k: masses.pop(k) for k in ("FeO", "Fe2O3")}, "mass")
|
|
66
|
+
total_fe, ferric = iron.atomic_composition["Fe"], FERRIC_FRACTIONS[lithology]
|
|
67
|
+
bulk = bm.Composition(masses, "mass")
|
|
68
|
+
bulk.add_components(
|
|
69
|
+
dict(FeO=(1 - ferric) * total_fe, Fe2O3=0.5 * ferric * total_fe), "molar"
|
|
70
|
+
)
|
|
71
|
+
bulk.renormalize("mass", "total", 0.1)
|
|
72
|
+
return bulk
|
|
73
|
+
|
|
74
|
+
|
|
75
|
+
def candidate_phases():
|
|
76
|
+
"""All ordinary SLB2024 solid solutions and competing pure phases."""
|
|
77
|
+
factories = [
|
|
78
|
+
("ol", SLB24.olivine),
|
|
79
|
+
("wa", SLB24.wadsleyite),
|
|
80
|
+
("ri", SLB24.ringwoodite),
|
|
81
|
+
("opx", SLB24.orthopyroxene),
|
|
82
|
+
("cpx", SLB24.clinopyroxene),
|
|
83
|
+
("hpcpx", SLB24.c2c_pyroxene),
|
|
84
|
+
("gt", SLB24.garnet),
|
|
85
|
+
("sp", SLB24.mg_fe_aluminous_spinel),
|
|
86
|
+
("plg", SLB24.plagioclase),
|
|
87
|
+
("ak", SLB24.ilmenite),
|
|
88
|
+
("fp", SLB24.ferropericlase),
|
|
89
|
+
("bg", SLB24.bridgmanite),
|
|
90
|
+
("ppv", SLB24.post_perovskite),
|
|
91
|
+
("cf", SLB24.calcium_ferrite_structured_phase),
|
|
92
|
+
("nal", SLB24.new_aluminous_phase),
|
|
93
|
+
("capv", SLB24.capv),
|
|
94
|
+
("neph", SLB24.neph),
|
|
95
|
+
("ky", SLB24.ky),
|
|
96
|
+
("q", SLB24.qtz),
|
|
97
|
+
("coe", SLB24.coes),
|
|
98
|
+
("st", SLB24.st),
|
|
99
|
+
("seif", SLB24.apbo),
|
|
100
|
+
("wo", SLB24.wo),
|
|
101
|
+
("pwo", SLB24.pwo),
|
|
102
|
+
("Fe-bcc", SLB24.fea),
|
|
103
|
+
("Fe-fcc", SLB24.feg),
|
|
104
|
+
("Fe-hcp", SLB24.fee),
|
|
105
|
+
]
|
|
106
|
+
phases = []
|
|
107
|
+
for name, factory in factories:
|
|
108
|
+
phase = factory()
|
|
109
|
+
phase.set_name(name)
|
|
110
|
+
phases.append(phase)
|
|
111
|
+
return phases
|
|
112
|
+
|
|
113
|
+
|
|
114
|
+
def save_equilibrium_path(path, bulk, filename):
|
|
115
|
+
"""Retain equilibrium populations, active bases and diagnostic measures."""
|
|
116
|
+
records = []
|
|
117
|
+
for state in path.states:
|
|
118
|
+
record = {
|
|
119
|
+
k: getattr(state, k)
|
|
120
|
+
for k in (
|
|
121
|
+
"pressure",
|
|
122
|
+
"temperature",
|
|
123
|
+
"entropy",
|
|
124
|
+
"volume",
|
|
125
|
+
"success",
|
|
126
|
+
"outside_model_domain",
|
|
127
|
+
"message",
|
|
128
|
+
"gibbs",
|
|
129
|
+
"mass_balance_error",
|
|
130
|
+
"minimum_affinity",
|
|
131
|
+
"equilibrium_error",
|
|
132
|
+
)
|
|
133
|
+
}
|
|
134
|
+
record["phases"] = [
|
|
135
|
+
dict(
|
|
136
|
+
id=p.id,
|
|
137
|
+
candidate_index=p.candidate_index,
|
|
138
|
+
name=p.name,
|
|
139
|
+
amount=p.amount,
|
|
140
|
+
composition=p.composition.tolist(),
|
|
141
|
+
composition_basis=(
|
|
142
|
+
None
|
|
143
|
+
if p.composition_basis is None
|
|
144
|
+
else p.composition_basis.tolist()
|
|
145
|
+
),
|
|
146
|
+
)
|
|
147
|
+
for p in state.phases
|
|
148
|
+
]
|
|
149
|
+
records.append(record)
|
|
150
|
+
with gzip.open(filename, "wt", encoding="utf-8") as stream:
|
|
151
|
+
json.dump(
|
|
152
|
+
dict(bulk=bulk.atomic_composition, states=records), stream, allow_nan=False
|
|
153
|
+
)
|
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
# Stixrude & Lithgow-Bertelloni (2024), Figure 13
|
|
2
|
+
|
|
3
|
+
Recalculate pyrolite phase modes, native iron and the ferropericlase low-spin
|
|
4
|
+
fraction along a closed-system isentrope with a surface temperature of 1600 K.
|
|
5
|
+
Overlay both calculated panels on the published reference figure.
|
|
6
|
+
|
|
7
|
+
Paper: *Thermodynamics of mantle minerals — III: the role of iron*,
|
|
8
|
+
[doi:10.1093/gji/ggae126](https://doi.org/10.1093/gji/ggae126), Figure 13,
|
|
9
|
+
printed page 1712 (PDF page 14).
|
|
10
|
+
|
|
11
|
+
[Calculated panels](results/figure13.png) ·
|
|
12
|
+
[Benchmark overlay, PNG](results/figure13_benchmark_overlay.png) ·
|
|
13
|
+
[Benchmark overlay, SVG](results/figure13_benchmark_overlay.svg)
|
|
14
|
+
|
|
15
|
+

|
|
16
|
+
|
|
17
|
+
## Run the benchmark
|
|
18
|
+
|
|
19
|
+
From the repository root, install the working checkout and plotting dependencies:
|
|
20
|
+
|
|
21
|
+
```sh
|
|
22
|
+
python -m pip install '.[examples]'
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
The PNG overlay uses `rsvg-convert` from librsvg (`brew install librsvg` on
|
|
26
|
+
macOS, or package `librsvg2-bin` on Debian/Ubuntu). The original PDF is not
|
|
27
|
+
needed: the reference artwork and its axis calibration are included here.
|
|
28
|
+
|
|
29
|
+
```sh
|
|
30
|
+
python benchmarks/stixrude_2024_figure13/benchmark.py --points 801 --verbose
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
Fresh outputs go to `build/benchmarks/stixrude_2024_figure13/`. Use
|
|
34
|
+
`--output-dir PATH` to choose a different directory. The checked-in `results/`
|
|
35
|
+
snapshot stays unchanged unless explicitly selected as the output directory.
|
|
36
|
+
|
|
37
|
+
Regenerate the overlay from saved grid data, without any equilibrium solves:
|
|
38
|
+
|
|
39
|
+
```sh
|
|
40
|
+
python benchmarks/stixrude_2024_figure13/overlay.py \
|
|
41
|
+
--grid benchmarks/stixrude_2024_figure13/results/mode_box.npz
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
## Composition and physical definitions
|
|
45
|
+
|
|
46
|
+
The starting composition follows Table 1 (relative oxide masses in grams):
|
|
47
|
+
|
|
48
|
+
| Oxide | Table 1 amount |
|
|
49
|
+
| --- | ---: |
|
|
50
|
+
| SiO₂ | 45.00 |
|
|
51
|
+
| MgO | 38.88 |
|
|
52
|
+
| FeO | 8.05 |
|
|
53
|
+
| Fe₂O₃ | 0.18 |
|
|
54
|
+
| CaO | 3.18 |
|
|
55
|
+
| Al₂O₃ | 4.00 |
|
|
56
|
+
| Na₂O | 0.13 |
|
|
57
|
+
| Cr₂O₃ | 0.57 |
|
|
58
|
+
|
|
59
|
+
These rounded entries sum to 99.99 g and imply Fe³⁺/ΣFe = 0.0197231.
|
|
60
|
+
Preserve every cation ratio, redistribute FeO/Fe₂O₃ to exactly 0.02 as specified
|
|
61
|
+
in the Figure 13 caption, and normalise to 100 g. Oxygen is closed thereafter;
|
|
62
|
+
metal can form through internal redox reactions. The actual normalised oxide
|
|
63
|
+
amounts and elemental inventory are recorded in `report.json`.
|
|
64
|
+
|
|
65
|
+
- Calculate the surface equilibrium at 0 Pa and 1600 K, then hold its total
|
|
66
|
+
entropy fixed while sampling pressure from 0 to 135.751 GPa.
|
|
67
|
+
- Use the ordinary SLB2024 solution catalogue, with all three native-iron
|
|
68
|
+
polymorphs and the explicit high/low-spin endmembers. Spin populations
|
|
69
|
+
equilibrate with the mineral compositions; no prescribed spin curve is used.
|
|
70
|
+
- Convert pressure to depth with the included no-ocean PREM table. This is a
|
|
71
|
+
plotting conversion; temperature is solved from the entropy constraint.
|
|
72
|
+
- Atomic modes weight each mineral's solved formula-unit amount by its number
|
|
73
|
+
of atoms, including oxygen. Sum coexisting copies of each candidate model.
|
|
74
|
+
- Sum native iron over its bcc/fcc/hcp polymorphs. Following the published
|
|
75
|
+
layout, its enlarged band is measured downward from 1: the dashed boundary
|
|
76
|
+
is `1 - 100 * native_iron_atomic_fraction`.
|
|
77
|
+
- The lower curve follows equation (24):
|
|
78
|
+
`f = n(wustite_LS) / [n(wustite_HS) + n(wustite_LS)]`.
|
|
79
|
+
Weight species amounts across any coexisting fp copies before taking this
|
|
80
|
+
ratio. Ferric iron in the magnetite endmember is outside this ferrous spin
|
|
81
|
+
ratio. Where no ferrous fp exists, save NaN and leave the curve blank.
|
|
82
|
+
|
|
83
|
+
The calculation reproduces phase modes, native iron and fp spin. Ferric-ratio
|
|
84
|
+
curves, spin/ferric shading, oxygen fugacity and external comparison data remain
|
|
85
|
+
visible in the original artwork; they are not recalculated here.
|
|
86
|
+
|
|
87
|
+
## Saved results and validation
|
|
88
|
+
|
|
89
|
+
The 21 October 2026 snapshot solved all 801 points without diagnostics. The
|
|
90
|
+
calculation and its own plots took 11.84 s on the development machine; overlay
|
|
91
|
+
rendering is separate. Maximum relative entropy, elemental mass-balance and
|
|
92
|
+
total-atom errors were approximately 1.1×10⁻¹⁵, 4.5×10⁻¹⁶ and 4.4×10⁻¹⁶.
|
|
93
|
+
|
|
94
|
+
Native iron peaks at atomic fraction 0.0025112 (0.25112%) near 706.8 km,
|
|
95
|
+
25.453 GPa and 1913.1 K. The fp low-spin fraction reaches 0.70385 at 2891 km.
|
|
96
|
+
It is defined at 664 of the 801 points. Temperature rises from 1600 K to
|
|
97
|
+
2682.14 K along the isentrope.
|
|
98
|
+
|
|
99
|
+
The modes/native-iron and spin curves show close visual agreement with much of
|
|
100
|
+
the reference. Visible differences remain in the lower-mantle fp proportion
|
|
101
|
+
and the bg–ppv coexistence interval. This benchmark retains those differences;
|
|
102
|
+
it does not force agreement or declare an exact numerical HeFESTo match.
|
|
103
|
+
The authors' unrounded calculation inputs have not been independently checked.
|
|
104
|
+
|
|
105
|
+
| File | Contents |
|
|
106
|
+
| --- | --- |
|
|
107
|
+
| `results/mode_box.npz` | Solved P/T/S/V, target pressures, PREM depths, phase names, atomic modes, molar/atomic amounts, cumulative mode boundaries, native iron, fp spin and success mask. |
|
|
108
|
+
| `results/equilibria.json.gz` | Full solved phase amounts, original endmember proportions, active bases and equilibrium validation errors at every point. |
|
|
109
|
+
| `results/report.json` | Bulk composition, run settings, numerical validation and summary quantities. |
|
|
110
|
+
| `results/figure13.{png,svg}` | Recalculated mode and fp-spin panels. |
|
|
111
|
+
| `results/figure13_benchmark_overlay.{png,svg}` | Calculated blue curves over the original published panels. |
|
|
112
|
+
| `results/overlay_registration.json` | Input hashes and the axis transformations used for the overlay. |
|
|
113
|
+
| `results/run.log` | Progress and the saved run's report. |
|
|
114
|
+
| `results/validation.log` | The 84 passing focused path, equilibrium, workflow and benchmark tests. |
|
|
115
|
+
|
|
116
|
+
Read the numerical arrays with `np.load(path, allow_pickle=False)`. Fractions
|
|
117
|
+
are dimensionless; P is in Pa, T in K, total S in J/K and total V in m³ for the
|
|
118
|
+
100 g bulk. Original endmember coefficients can be signed for ordering models.
|
|
119
|
+
|
|
120
|
+
## Reference registration and provenance
|
|
121
|
+
|
|
122
|
+
`reference/figure13.svg` retains the original vector artwork from the supplied
|
|
123
|
+
paper PDF, cropped to the figure. `axis_registration.json` records the source
|
|
124
|
+
PDF hash, page, frame coordinates and tick positions. The two published panels
|
|
125
|
+
have slightly different widths and are calibrated independently in depth and
|
|
126
|
+
fraction. The largest tick residuals are 0.354 km (upper) and 0.261 km (lower).
|
|
127
|
+
Calculated curves are not fitted or shifted to match the published curves.
|
|
128
|
+
The source figure's original data and colours are preserved.
|
|
129
|
+
|
|
130
|
+
`reference/prem_depth_pressure.txt` contains the mantle depth/pressure columns
|
|
131
|
+
of BurnMan's no-ocean PREM table, based on Dziewonski & Anderson (1981),
|
|
132
|
+
[doi:10.1016/0031-9201(81)90046-7](https://doi.org/10.1016/0031-9201(81)90046-7).
|
|
133
|
+
|
|
134
|
+
Small regression tests check the Table 1 cation ratios, initial ferric fraction,
|
|
135
|
+
spin weighting across fp copies and undefined spin ratios:
|
|
136
|
+
|
|
137
|
+
```sh
|
|
138
|
+
python -m pytest python/tests/test_figure13_benchmark.py -q
|
|
139
|
+
```
|