burnman-cpp 0.2.0__tar.gz → 0.4.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- burnman_cpp-0.4.0/.github/workflows/wheels.yml +68 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/.gitignore +1 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/CMakeLists.txt +17 -1
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/PKG-INFO +20 -9
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/README.md +16 -7
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/pyproject.toml +21 -2
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/python/tests/test_phase_diagram.py +5 -2
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/python/tests/test_phase_diagram_line_resolution.py +27 -1
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/python/tests/test_slb2024.py +22 -6
- burnman_cpp-0.4.0/python/tests/test_wheel_metadata.py +22 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/src/tools/phase_diagram/continuation.cpp +7 -4
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/src/tools/phase_diagram/tracing.cpp +21 -5
- burnman_cpp-0.4.0/tools/build_wheel_dependencies.py +177 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/.clang-format +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/.github/workflows/benchmarks.yml +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/.github/workflows/format.yml +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/.github/workflows/tests.yml +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/LICENSE +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/Makefile +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/benchmarks/README.md +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/benchmarks/core/benchmark_assemblage.cpp +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/benchmarks/core/benchmark_mineral.cpp +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/benchmarks/cpp_python_speedup.py +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/benchmarks/eos/benchmark_property_modifiers.cpp +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/benchmarks/parse_benchmarks.py +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/benchmarks/python_benchmarks.py +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/benchmarks/requirements.txt +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/examples/example_basalt_phase_diagram.py +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/examples/example_composition.py +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/examples/example_equilibrate.py +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/examples/example_forsterite_thermodynamic_sections.py +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/examples/example_green2025_at1.py +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/examples/example_green2025_klb1.py +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/examples/example_green2025_mix1g.py +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/examples/example_green2025_re46.py +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/examples/example_green2025_ton101s.py +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/examples/example_green2025_ton101u.py +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/examples/example_harzburgite_basalt_px.py +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/examples/example_iron_hematite_tx.py +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/examples/example_metasediment_contours.py +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/examples/example_metasediment_phase_diagram.py +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/examples/example_olivine_px.py +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/examples/example_olivine_tx.py +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/examples/example_olivine_vx.py +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/examples/example_patch_phase_diagram.py +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/examples/example_phase_diagram_grid.py +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/examples/example_plot_pyrolite_sp_relaxed_properties.py +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/examples/example_pyrolite_phase_diagram.py +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/examples/example_pyrolite_phase_diagram_zoom.py +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/examples/example_pyrolite_sp_phase_diagram.py +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/examples/example_refine_phase_diagram.py +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/examples/example_single_point_equilibrium.py +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/examples/example_solution_equilibrium.py +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/examples/green2025.py +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/examples/green2025_reference.md +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/include/burnman/core/assemblage.hpp +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/include/burnman/core/combined_mineral.hpp +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/include/burnman/core/composite_material.hpp +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/include/burnman/core/composition.hpp +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/include/burnman/core/equation_of_state.hpp +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/include/burnman/core/material.hpp +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/include/burnman/core/mineral.hpp +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/include/burnman/core/relaxed_solution.hpp +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/include/burnman/core/solution.hpp +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/include/burnman/core/solution_model.hpp +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/include/burnman/core/solution_models/asymmetric_regular_solution.hpp +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/include/burnman/core/solution_models/ideal_solution.hpp +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/include/burnman/core/solution_models/solution_model_base.hpp +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/include/burnman/core/solution_models/symmetric_regular_solution.hpp +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/include/burnman/eos/birch_murnaghan.hpp +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/include/burnman/eos/components/bukowinski_electronic.hpp +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/include/burnman/eos/components/debye.hpp +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/include/burnman/eos/components/einstein.hpp +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/include/burnman/eos/components/excess_params.hpp +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/include/burnman/eos/components/gsl_params.hpp +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/include/burnman/eos/components/property_modifiers.hpp +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/include/burnman/eos/hp.hpp +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/include/burnman/eos/hp_liquid.hpp +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/include/burnman/eos/make_eos.hpp +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/include/burnman/eos/mie_grueneisen_debye.hpp +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/include/burnman/eos/modified_tait.hpp +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/include/burnman/eos/slb.hpp +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/include/burnman/eos/vinet.hpp +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/include/burnman/minerals/datasets.hpp +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/include/burnman/minerals/model_sets.hpp +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/include/burnman/minerals/phase_aliases.hpp +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/include/burnman/minerals/water.hpp +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/include/burnman/optim/roots/bracket.hpp +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/include/burnman/optim/roots/brent.hpp +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/include/burnman/optim/roots/damped_newton_solver.hpp +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/include/burnman/optim/roots/damped_newton_state.hpp +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/include/burnman/optim/roots/damped_newton_types.hpp +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/include/burnman/tools/averaging/averaging_base.hpp +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/include/burnman/tools/averaging/averaging_schemes.hpp +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/include/burnman/tools/averaging/averaging_utils.hpp +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/include/burnman/tools/averaging/hs.hpp +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/include/burnman/tools/averaging/hs_lower.hpp +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/include/burnman/tools/averaging/hs_upper.hpp +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/include/burnman/tools/averaging/reuss.hpp +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/include/burnman/tools/averaging/voigt.hpp +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/include/burnman/tools/averaging/vrh.hpp +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/include/burnman/tools/equilibration/equality_constraint_base.hpp +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/include/burnman/tools/equilibration/equality_constraint_helpers.hpp +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/include/burnman/tools/equilibration/equality_constraint_variants.hpp +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/include/burnman/tools/equilibration/equality_constraints.hpp +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/include/burnman/tools/equilibration/equilibrate.hpp +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/include/burnman/tools/equilibration/equilibrate_impl.hpp +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/include/burnman/tools/equilibration/equilibrate_lambda_bounds.hpp +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/include/burnman/tools/equilibration/equilibrate_objective.hpp +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/include/burnman/tools/equilibration/equilibrate_types.hpp +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/include/burnman/tools/equilibration/equilibrate_utils.hpp +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/include/burnman/tools/phase_diagram/boundary_repair.hpp +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/include/burnman/tools/phase_diagram/calculation.hpp +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/include/burnman/tools/phase_diagram/common.hpp +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/include/burnman/tools/phase_diagram/consistency.hpp +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/include/burnman/tools/phase_diagram/continuation.hpp +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/include/burnman/tools/phase_diagram/contours.hpp +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/include/burnman/tools/phase_diagram/critical.hpp +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/include/burnman/tools/phase_diagram/domain.hpp +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/include/burnman/tools/phase_diagram/polygons.hpp +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/include/burnman/tools/phase_diagram/properties.hpp +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/include/burnman/tools/phase_diagram/refinement.hpp +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/include/burnman/tools/phase_diagram/stability.hpp +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/include/burnman/tools/phase_diagram/tracing.hpp +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/include/burnman/tools/phase_diagram/types.hpp +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/include/burnman/tools/phase_diagram/verification.hpp +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/include/burnman/tools/phase_diagram.hpp +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/include/burnman/tools/polytope.hpp +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/include/burnman/utils/chemistry_utils.hpp +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/include/burnman/utils/constants.hpp +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/include/burnman/utils/exceptions.hpp +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/include/burnman/utils/index_utils.hpp +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/include/burnman/utils/math_utils.hpp +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/include/burnman/utils/matrix_utils.hpp +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/include/burnman/utils/polygon_utils.hpp +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/include/burnman/utils/string_utils.hpp +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/include/burnman/utils/types/mineral_params.hpp +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/include/burnman/utils/types/ndarray.hpp +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/include/burnman/utils/types/simple_types.hpp +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/include/burnman/utils/types/types.hpp +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/include/burnman/utils/utils.hpp +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/include/burnman/utils/validate_optionals.hpp +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/include/burnman/utils/vector_utils.hpp +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/include/burnman/utils/warnings.hpp +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/python/bindings/bindings.hpp +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/python/bindings/combined.cpp +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/python/bindings/composition.cpp +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/python/bindings/equilibration.cpp +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/python/bindings/materials.cpp +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/python/bindings/minerals.cpp +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/python/bindings/model_sets.cpp +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/python/bindings/modifiers.cpp +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/python/bindings/module.cpp +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/python/bindings/params.cpp +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/python/bindings/phase_diagram.cpp +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/python/bindings/polytope.cpp +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/python/bindings/solutions.cpp +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/python/bindings/utils.cpp +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/python/burnman_cpp/__init__.py +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/python/burnman_cpp/adapters.py +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/python/burnman_cpp/constants.py +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/python/burnman_cpp/minerals/__init__.py +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/python/burnman_cpp/tools/__init__.py +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/python/burnman_cpp/tools/aspect.py +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/python/burnman_cpp/tools/contours.py +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/python/burnman_cpp/tools/phase_diagram.py +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/python/burnman_cpp/tools/phase_diagram_helpers.py +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/python/burnman_cpp/tools/phase_diagram_workflow.py +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/python/burnman_cpp/tools/polytope.py +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/python/burnman_cpp/tools/potential_grid.py +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/python/burnman_cpp/tools/properties.py +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/python/tests/conftest.py +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/python/tests/data/basalt_field_verification.json +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/python/tests/data/basalt_local_amphibole.json +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/python/tests/data/basalt_local_plagioclase.json +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/python/tests/data/basalt_nearby_bivariant_junctions.json +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/python/tests/data/forsterite_latent_interval.json +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/python/tests/data/green_provisional_loops.json +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/python/tests/data/harzburgite_garnet_composition_boundary.json +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/python/tests/data/harzburgite_thin_composition_field.json +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/python/tests/data/metasediment_contour_field.json +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/python/tests/data/metasediment_contour_ordering_field.json +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/python/tests/data/metasediment_curve_edit.json +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/python/tests/data/metasediment_curved_mica_field.json +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/python/tests/data/metasediment_curved_node_connections.json +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/python/tests/data/metasediment_endpoints.json +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/python/tests/data/metasediment_missing_melt_connection.json +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/python/tests/data/metasediment_ordering_segment.json +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/python/tests/data/metasediment_parallel_fields.json +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/python/tests/data/metasediment_thin_finite_field.json +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/python/tests/data/metasediment_univariant_loop.json +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/python/tests/data/metasediment_univariant_segments.json +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/python/tests/data/phase_diagram_model_limit_fan.json +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/python/tests/data/pyrolite_cold_endpoints.json +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/python/tests/data/pyrolite_critical_endpoints.json +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/python/tests/data/pyrolite_crossed_loops.json +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/python/tests/data/pyrolite_duplicate_curve.json +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/python/tests/data/pyrolite_duplicate_invariant.json +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/python/tests/data/pyrolite_duplicate_junctions.json +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/python/tests/data/pyrolite_endpoints.json +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/python/tests/data/pyrolite_exchanged_junction_zeros.json +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/python/tests/data/pyrolite_frame_order.json +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/python/tests/data/pyrolite_limiting_neighbours.json +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/python/tests/data/pyrolite_local_opx.json +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/python/tests/data/pyrolite_missing_solution_branch.json +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/python/tests/data/pyrolite_model_limit.json +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/python/tests/data/pyrolite_narrow_curves.json +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/python/tests/data/pyrolite_narrow_solution_replacement.json +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/python/tests/data/pyrolite_nearby_junctions.json +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/python/tests/data/pyrolite_nearby_univariant_junctions.json +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/python/tests/data/pyrolite_neighbouring_branches.json +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/python/tests/data/pyrolite_partial_duplicate.json +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/python/tests/data/pyrolite_perimeter_neighbours.json +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/python/tests/data/pyrolite_pt_coincident_phase_outs.json +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/python/tests/data/pyrolite_pt_cold_coexistence.json +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/python/tests/data/pyrolite_pt_cold_model_limits.json +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/python/tests/data/pyrolite_pt_cold_reaction_duplicates.json +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/python/tests/data/pyrolite_pt_detached_junctions.json +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/python/tests/data/pyrolite_pt_equivalent_reaction_curves.json +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/python/tests/data/pyrolite_pt_garnet_stability.json +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/python/tests/data/pyrolite_pt_model_limit_duplicates.json +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/python/tests/data/pyrolite_pt_repair_regressions.json +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/python/tests/data/pyrolite_reaction_extents.json +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/python/tests/data/pyrolite_refinement_segment.json +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/python/tests/data/pyrolite_retired_junction_geometry.json +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/python/tests/data/pyrolite_short_branch_labels.json +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/python/tests/data/pyrolite_solution_replacement.json +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/python/tests/data/pyrolite_solvus_seeds.json +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/python/tests/data/pyrolite_sp_ak_branch_switch.json +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/python/tests/data/pyrolite_sp_cf_copy_junctions.json +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/python/tests/data/pyrolite_sp_enthalpy_branch.json +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/python/tests/data/pyrolite_sp_failed_bracket.json +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/python/tests/data/pyrolite_sp_false_cpx_junction.json +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/python/tests/data/pyrolite_sp_false_junction.json +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/python/tests/data/pyrolite_sp_junction.json +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/python/tests/data/pyrolite_sp_missing_ak_boundary.json +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/python/tests/data/pyrolite_sp_reaction_classification.json +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/python/tests/data/pyrolite_sp_soft_grid_point.json +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/python/tests/data/pyrolite_sp_trace_site_junctions.json +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/python/tests/data/pyrolite_sp_trace_site_response.json +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/python/tests/data/pyrolite_sp_unconnected_junctions.json +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/python/tests/data/pyrolite_sp_wrong_branch_junction.json +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/python/tests/data/pyrolite_stable_vertex_loop.json +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/python/tests/data/pyrolite_zoom_reaction_limits.json +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/python/tests/test_adapters.py +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/python/tests/test_aspect_table.py +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/python/tests/test_bindings.py +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/python/tests/test_complete_datasets.py +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/python/tests/test_composition.py +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/python/tests/test_composition_phase_diagram.py +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/python/tests/test_composition_reference.py +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/python/tests/test_constants.py +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/python/tests/test_contour_tools.py +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/python/tests/test_enthalpy_ps_infill.py +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/python/tests/test_equilibration.py +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/python/tests/test_forsterite_sections.py +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/python/tests/test_gaussian_moment_corrected.py +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/python/tests/test_green2025.py +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/python/tests/test_melt.py +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/python/tests/test_mineral_catalogue_reference.py +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/python/tests/test_model_sets.py +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/python/tests/test_modifiers.py +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/python/tests/test_native_failure_reference.py +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/python/tests/test_native_minerals.py +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/python/tests/test_phase_diagram_branch_identity.py +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/python/tests/test_phase_diagram_consistency.py +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/python/tests/test_phase_diagram_contours.py +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/python/tests/test_phase_diagram_critical_endpoints.py +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/python/tests/test_phase_diagram_partial_duplicates.py +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/python/tests/test_phase_diagram_patching.py +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/python/tests/test_phase_diagram_perimeter_labels.py +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/python/tests/test_phase_diagram_plot.py +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/python/tests/test_phase_diagram_workflow.py +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/python/tests/test_polygon_utils.py +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/python/tests/test_polytope.py +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/python/tests/test_potential_grid.py +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/python/tests/test_property_grid.py +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/python/tests/test_reference_tools.py +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/python/tests/test_slb_reference.py +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/python/tests/test_stable_equilibrium.py +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/python/tests/test_thermodynamic_phase_diagram.py +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/src/core/assemblage.cpp +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/src/core/combined_mineral.cpp +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/src/core/composite_material.cpp +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/src/core/composition.cpp +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/src/core/equation_of_state.cpp +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/src/core/material.cpp +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/src/core/mineral.cpp +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/src/core/relaxed_solution.cpp +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/src/core/solution.cpp +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/src/core/solution_models/asymmetric_regular_solution.cpp +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/src/core/solution_models/ideal_solution.cpp +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/src/core/solution_models/solution_model_base.cpp +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/src/core/solution_models/symmetric_regular_solution.cpp +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/src/eos/birch_murnaghan.cpp +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/src/eos/components/bukowinski_electronic.cpp +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/src/eos/components/debye.cpp +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/src/eos/components/einstein.cpp +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/src/eos/components/property_modifiers.cpp +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/src/eos/hp.cpp +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/src/eos/hp_liquid.cpp +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/src/eos/make_eos.cpp +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/src/eos/mie_grueneisen_debye.cpp +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/src/eos/modified_tait.cpp +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/src/eos/slb.cpp +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/src/eos/vinet.cpp +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/src/minerals/datasets.cpp +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/src/minerals/model_sets.cpp +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/src/minerals/phase_aliases.cpp +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/src/minerals/water.cpp +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/src/optim/roots/damped_newton_solver.cpp +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/src/tools/averaging/averaging_base.cpp +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/src/tools/averaging/averaging_utils.cpp +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/src/tools/averaging/hs.cpp +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/src/tools/averaging/hs_lower.cpp +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/src/tools/averaging/hs_upper.cpp +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/src/tools/averaging/reuss.cpp +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/src/tools/averaging/voigt.cpp +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/src/tools/averaging/vrh.cpp +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/src/tools/equilibration/equality_constraint_variants.cpp +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/src/tools/equilibration/equilibrate_impl.cpp +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/src/tools/equilibration/equilibrate_lambda_bounds.cpp +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/src/tools/equilibration/equilibrate_objective.cpp +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/src/tools/equilibration/equilibrate_utils.cpp +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/src/tools/phase_diagram/boundary_repair.cpp +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/src/tools/phase_diagram/calculation.cpp +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/src/tools/phase_diagram/common.cpp +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/src/tools/phase_diagram/consistency.cpp +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/src/tools/phase_diagram/contours.cpp +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/src/tools/phase_diagram/critical.cpp +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/src/tools/phase_diagram/domain.cpp +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/src/tools/phase_diagram/polygons.cpp +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/src/tools/phase_diagram/potential.cpp +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/src/tools/phase_diagram/properties.cpp +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/src/tools/phase_diagram/refinement.cpp +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/src/tools/phase_diagram/stability.cpp +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/src/tools/phase_diagram/verification.cpp +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/src/tools/polytope.cpp +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/src/tools/solution_simplification.cpp +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/src/utils/chemistry_utils.cpp +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/src/utils/polygon_utils.cpp +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/tests/core/test_assemblage.cpp +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/tests/core/test_composition.cpp +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/tests/core/test_material.cpp +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/tests/core/test_mineral.cpp +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/tests/core/test_solution.cpp +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/tests/core/test_solution_model.cpp +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/tests/eos/test_birch_murnaghan.cpp +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/tests/eos/test_bukowinski_electronic.cpp +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/tests/eos/test_debye.cpp +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/tests/eos/test_einstein.cpp +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/tests/eos/test_excess_params.cpp +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/tests/eos/test_hp.cpp +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/tests/eos/test_mie_grueneisen_debye.cpp +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/tests/eos/test_modified_tait.cpp +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/tests/eos/test_property_modifiers.cpp +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/tests/eos/test_slb.cpp +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/tests/eos/test_vinet.cpp +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/tests/eos/test_volume_accuracy.cpp +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/tests/include/eos_names.hpp +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/tests/include/equilibration_fixtures.hpp +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/tests/include/ps1994_reference.hpp +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/tests/include/solution_fixtures.hpp +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/tests/include/thermocalc_reference.hpp +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/tests/include/tolerances.hpp +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/tests/minerals/test_native_datasets.cpp +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/tests/minerals/test_thermocalc_reference.cpp +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/tests/minerals/test_water.cpp +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/tests/optim/roots/test_damped_newton.cpp +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/tests/optim/roots/test_roots.cpp +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/tests/reference/burnman.json +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/tests/reference/ps1994.json +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/tests/reference/thermocalc_metapelite.json +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/tests/test_main.cpp +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/tests/tools/averaging/test_averaging_schemes.cpp +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/tests/tools/equilibration/test_equality_constraints.cpp +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/tests/tools/equilibration/test_equilibrate.cpp +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/tests/tools/equilibration/test_equilibrate_lambda_bounds.cpp +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/tests/tools/equilibration/test_equilibrate_objective.cpp +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/tests/tools/equilibration/test_equilibrate_utils.cpp +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/tests/tools/test_phase_diagram.cpp +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/tests/tools/test_phase_diagram_consistency.cpp +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/tests/tools/test_polytope.cpp +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/tests/utils/test_chemistry_utils.cpp +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/tests/utils/test_constants.cpp +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/tests/utils/test_exceptions.cpp +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/tests/utils/test_index_utils.cpp +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/tests/utils/test_math_utils.cpp +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/tests/utils/test_matrix_utils.cpp +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/tests/utils/test_polygon_utils.cpp +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/tests/utils/test_string_utils.cpp +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/tests/utils/test_types.cpp +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/tests/utils/test_validate_optionals.cpp +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/tests/utils/test_vector_utils.cpp +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/tests/utils/test_warnings.cpp +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/tools/burnman_reference.py +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/tools/check_reference_data.py +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/tools/export_example_minerals.py +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/tools/extract_thermocalc_reference.py +0 -0
- {burnman_cpp-0.2.0 → burnman_cpp-0.4.0}/tools/generate_ps1994_reference.py +0 -0
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
name: Wheels
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
pull_request:
|
|
5
|
+
paths:
|
|
6
|
+
- CMakeLists.txt
|
|
7
|
+
- pyproject.toml
|
|
8
|
+
- src/**
|
|
9
|
+
- include/**
|
|
10
|
+
- python/**
|
|
11
|
+
- tools/build_wheel_dependencies.py
|
|
12
|
+
- .github/workflows/wheels.yml
|
|
13
|
+
push:
|
|
14
|
+
tags: ["v*"]
|
|
15
|
+
workflow_dispatch:
|
|
16
|
+
|
|
17
|
+
permissions:
|
|
18
|
+
contents: read
|
|
19
|
+
|
|
20
|
+
defaults:
|
|
21
|
+
run:
|
|
22
|
+
shell: bash
|
|
23
|
+
|
|
24
|
+
jobs:
|
|
25
|
+
sdist:
|
|
26
|
+
runs-on: ubuntu-24.04
|
|
27
|
+
steps:
|
|
28
|
+
- uses: actions/checkout@v7
|
|
29
|
+
with:
|
|
30
|
+
persist-credentials: false
|
|
31
|
+
- uses: actions/setup-python@v7
|
|
32
|
+
with:
|
|
33
|
+
python-version: "3.12"
|
|
34
|
+
- run: python -m pip install build twine
|
|
35
|
+
- run: python -m build --sdist
|
|
36
|
+
- run: python -m twine check --strict dist/*
|
|
37
|
+
- uses: actions/upload-artifact@v7
|
|
38
|
+
with:
|
|
39
|
+
name: sdist
|
|
40
|
+
path: dist/*.tar.gz
|
|
41
|
+
|
|
42
|
+
wheels:
|
|
43
|
+
needs: sdist
|
|
44
|
+
timeout-minutes: 90
|
|
45
|
+
strategy:
|
|
46
|
+
fail-fast: false
|
|
47
|
+
matrix:
|
|
48
|
+
os: [ubuntu-24.04, ubuntu-24.04-arm, macos-15, macos-15-intel]
|
|
49
|
+
runs-on: ${{ matrix.os }}
|
|
50
|
+
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
|
+
CIBW_ARCHS: native
|
|
54
|
+
steps:
|
|
55
|
+
- uses: actions/download-artifact@v7
|
|
56
|
+
with:
|
|
57
|
+
name: sdist
|
|
58
|
+
path: dist
|
|
59
|
+
- uses: actions/setup-python@v7
|
|
60
|
+
with:
|
|
61
|
+
python-version: "3.12"
|
|
62
|
+
- run: python -m pip install cibuildwheel==4.3.1
|
|
63
|
+
# Build from the archive users receive, not from a developer checkout.
|
|
64
|
+
- run: python -m cibuildwheel dist/*.tar.gz --output-dir wheelhouse
|
|
65
|
+
- uses: actions/upload-artifact@v7
|
|
66
|
+
with:
|
|
67
|
+
name: wheels-${{ matrix.os }}
|
|
68
|
+
path: wheelhouse/*.whl
|
|
@@ -9,7 +9,11 @@ if(APPLE AND NOT DEFINED CMAKE_OSX_DEPLOYMENT_TARGET AND
|
|
|
9
9
|
set(CMAKE_OSX_DEPLOYMENT_TARGET "${BURNMAN_HOST_MACOS_VERSION}"
|
|
10
10
|
CACHE STRING "Minimum supported macOS version")
|
|
11
11
|
endif()
|
|
12
|
-
|
|
12
|
+
# Keep the installed package metadata and native __version__ in agreement.
|
|
13
|
+
file(STRINGS "${CMAKE_CURRENT_SOURCE_DIR}/pyproject.toml" BURNMAN_VERSION_LINE
|
|
14
|
+
REGEX "^version = ")
|
|
15
|
+
string(REGEX MATCH "[0-9]+\\.[0-9]+\\.[0-9]+" BURNMAN_VERSION "${BURNMAN_VERSION_LINE}")
|
|
16
|
+
project(burnman_cpp VERSION ${BURNMAN_VERSION} LANGUAGES CXX)
|
|
13
17
|
|
|
14
18
|
option(BURNMAN_BUILD_PYTHON "Build the Python extension" ON)
|
|
15
19
|
option(BURNMAN_BUILD_TESTS "Build the C++ unit tests" OFF)
|
|
@@ -31,6 +35,11 @@ function(burnman_compiler_warnings target)
|
|
|
31
35
|
endfunction()
|
|
32
36
|
|
|
33
37
|
# Let CMake find standard Homebrew installations as well as system packages.
|
|
38
|
+
set(BURNMAN_WHEEL_DEPENDENCIES "" CACHE PATH "Private prefix for wheel dependencies")
|
|
39
|
+
if(BURNMAN_WHEEL_DEPENDENCIES)
|
|
40
|
+
list(PREPEND CMAKE_PREFIX_PATH "${BURNMAN_WHEEL_DEPENDENCIES}")
|
|
41
|
+
set(GSL_ROOT_DIR "${BURNMAN_WHEEL_DEPENDENCIES}")
|
|
42
|
+
endif()
|
|
34
43
|
if(APPLE)
|
|
35
44
|
list(APPEND CMAKE_PREFIX_PATH /opt/homebrew /usr/local)
|
|
36
45
|
endif()
|
|
@@ -77,6 +86,13 @@ if(BURNMAN_BUILD_PYTHON)
|
|
|
77
86
|
target_compile_definitions(_core PRIVATE BURNMAN_VERSION="${PROJECT_VERSION}")
|
|
78
87
|
burnman_compiler_warnings(_core)
|
|
79
88
|
install(TARGETS _core LIBRARY DESTINATION burnman_cpp RUNTIME DESTINATION burnman_cpp)
|
|
89
|
+
if(BURNMAN_WHEEL_DEPENDENCIES)
|
|
90
|
+
# Let the wheel repair tool find libraries that use relative install names.
|
|
91
|
+
set_target_properties(_core PROPERTIES
|
|
92
|
+
INSTALL_RPATH "${BURNMAN_WHEEL_DEPENDENCIES}/lib")
|
|
93
|
+
install(DIRECTORY "${BURNMAN_WHEEL_DEPENDENCIES}/share/licenses/"
|
|
94
|
+
DESTINATION burnman_cpp/native_licenses)
|
|
95
|
+
endif()
|
|
80
96
|
endif()
|
|
81
97
|
|
|
82
98
|
if(BURNMAN_BUILD_TESTS OR BURNMAN_BUILD_BENCHMARKS)
|
|
@@ -1,16 +1,18 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: burnman_cpp
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.4.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
|
|
7
7
|
License-File: LICENSE
|
|
8
|
-
Classifier: Operating System ::
|
|
8
|
+
Classifier: Operating System :: MacOS :: MacOS X
|
|
9
|
+
Classifier: Operating System :: POSIX :: Linux
|
|
9
10
|
Classifier: Programming Language :: Python :: 3.10
|
|
10
11
|
Classifier: Programming Language :: Python :: 3.11
|
|
11
12
|
Classifier: Programming Language :: Python :: 3.12
|
|
12
13
|
Classifier: Programming Language :: Python :: 3.13
|
|
13
14
|
Classifier: Programming Language :: Python :: 3.14
|
|
15
|
+
Classifier: Programming Language :: Python :: 3.15
|
|
14
16
|
Requires-Python: >=3.10
|
|
15
17
|
Requires-Dist: numpy>=1.23
|
|
16
18
|
Requires-Dist: scipy>=1.9
|
|
@@ -46,7 +48,22 @@ Python authors (as of 2025, from the [BurnMan README](https://github.com/geodyna
|
|
|
46
48
|
* Juliane Dannberg
|
|
47
49
|
* Rene Gassmoeller
|
|
48
50
|
|
|
49
|
-
##
|
|
51
|
+
## Installation
|
|
52
|
+
|
|
53
|
+
### Published Python wheels
|
|
54
|
+
|
|
55
|
+
Install the published package with:
|
|
56
|
+
|
|
57
|
+
```sh
|
|
58
|
+
python -m pip install --upgrade pip
|
|
59
|
+
python -m pip install burnman_cpp
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
If no matching wheel is available, pip builds from source and needs the dependencies below.
|
|
63
|
+
|
|
64
|
+
### Building from source
|
|
65
|
+
|
|
66
|
+
Source builds require:
|
|
50
67
|
|
|
51
68
|
- A C++17 compiler, such as GCC or Clang.
|
|
52
69
|
- CMake 3.18 or newer.
|
|
@@ -55,10 +72,6 @@ Python authors (as of 2025, from the [BurnMan README](https://github.com/geodyna
|
|
|
55
72
|
- Python 3.10 or newer and its development headers for the Python package.
|
|
56
73
|
- Catch2 3.4 or newer for C++ tests and benchmarks.
|
|
57
74
|
|
|
58
|
-
## Installation
|
|
59
|
-
|
|
60
|
-
### Native dependencies
|
|
61
|
-
|
|
62
75
|
On Ubuntu:
|
|
63
76
|
|
|
64
77
|
```sh
|
|
@@ -75,8 +88,6 @@ xcode-select --install
|
|
|
75
88
|
brew install python cmake eigen gsl nlopt cddlib gmp catch2
|
|
76
89
|
```
|
|
77
90
|
|
|
78
|
-
### Python package
|
|
79
|
-
|
|
80
91
|
Clone the repository:
|
|
81
92
|
|
|
82
93
|
```sh
|
|
@@ -22,7 +22,22 @@ Python authors (as of 2025, from the [BurnMan README](https://github.com/geodyna
|
|
|
22
22
|
* Juliane Dannberg
|
|
23
23
|
* Rene Gassmoeller
|
|
24
24
|
|
|
25
|
-
##
|
|
25
|
+
## Installation
|
|
26
|
+
|
|
27
|
+
### Published Python wheels
|
|
28
|
+
|
|
29
|
+
Install the published package with:
|
|
30
|
+
|
|
31
|
+
```sh
|
|
32
|
+
python -m pip install --upgrade pip
|
|
33
|
+
python -m pip install burnman_cpp
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
If no matching wheel is available, pip builds from source and needs the dependencies below.
|
|
37
|
+
|
|
38
|
+
### Building from source
|
|
39
|
+
|
|
40
|
+
Source builds require:
|
|
26
41
|
|
|
27
42
|
- A C++17 compiler, such as GCC or Clang.
|
|
28
43
|
- CMake 3.18 or newer.
|
|
@@ -31,10 +46,6 @@ Python authors (as of 2025, from the [BurnMan README](https://github.com/geodyna
|
|
|
31
46
|
- Python 3.10 or newer and its development headers for the Python package.
|
|
32
47
|
- Catch2 3.4 or newer for C++ tests and benchmarks.
|
|
33
48
|
|
|
34
|
-
## Installation
|
|
35
|
-
|
|
36
|
-
### Native dependencies
|
|
37
|
-
|
|
38
49
|
On Ubuntu:
|
|
39
50
|
|
|
40
51
|
```sh
|
|
@@ -51,8 +62,6 @@ xcode-select --install
|
|
|
51
62
|
brew install python cmake eigen gsl nlopt cddlib gmp catch2
|
|
52
63
|
```
|
|
53
64
|
|
|
54
|
-
### Python package
|
|
55
|
-
|
|
56
65
|
Clone the repository:
|
|
57
66
|
|
|
58
67
|
```sh
|
|
@@ -4,7 +4,7 @@ build-backend = "scikit_build_core.build"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "burnman_cpp"
|
|
7
|
-
version = "0.
|
|
7
|
+
version = "0.4.0"
|
|
8
8
|
authors = [{name = "The BurnMan Team", email = "bob.myhill@bristol.ac.uk"}]
|
|
9
9
|
description = "Python bindings for the BurnMan C++ mineral physics library"
|
|
10
10
|
readme = "README.md"
|
|
@@ -13,12 +13,14 @@ license = "GPL-3.0-or-later"
|
|
|
13
13
|
license-files = ["LICENSE"]
|
|
14
14
|
dependencies = ["numpy>=1.23", "scipy>=1.9"]
|
|
15
15
|
classifiers = [
|
|
16
|
-
"Operating System ::
|
|
16
|
+
"Operating System :: MacOS :: MacOS X",
|
|
17
|
+
"Operating System :: POSIX :: Linux",
|
|
17
18
|
"Programming Language :: Python :: 3.10",
|
|
18
19
|
"Programming Language :: Python :: 3.11",
|
|
19
20
|
"Programming Language :: Python :: 3.12",
|
|
20
21
|
"Programming Language :: Python :: 3.13",
|
|
21
22
|
"Programming Language :: Python :: 3.14",
|
|
23
|
+
"Programming Language :: Python :: 3.15",
|
|
22
24
|
]
|
|
23
25
|
|
|
24
26
|
[project.optional-dependencies]
|
|
@@ -36,6 +38,7 @@ sdist.include = [
|
|
|
36
38
|
"/python/bindings/*.cpp", "/python/bindings/*.hpp",
|
|
37
39
|
"/python/burnman_cpp/**/*.py", "/python/tests/*.py", "/examples/*.py",
|
|
38
40
|
"/tools/export_example_minerals.py",
|
|
41
|
+
"/tools/build_wheel_dependencies.py",
|
|
39
42
|
]
|
|
40
43
|
sdist.exclude = [".venv/**", "build/**", "bin/**", "*.csv", "benchmark-report.xml", "**/__pycache__/**"]
|
|
41
44
|
|
|
@@ -44,3 +47,19 @@ testpaths = ["python/tests"]
|
|
|
44
47
|
|
|
45
48
|
[tool.black]
|
|
46
49
|
target-version = ["py310"]
|
|
50
|
+
|
|
51
|
+
[tool.cibuildwheel]
|
|
52
|
+
build = "cp3{10,11,12,13,14,15}-*"
|
|
53
|
+
skip = "*-musllinux_* *-win*"
|
|
54
|
+
test-extras = ["test"]
|
|
55
|
+
test-command = "python -m pytest {project}/python/tests/test_wheel_metadata.py {project}/python/tests/test_bindings.py {project}/python/tests/test_equilibration.py {project}/python/tests/test_stable_equilibrium.py {project}/python/tests/test_polytope.py -q"
|
|
56
|
+
|
|
57
|
+
[tool.cibuildwheel.linux]
|
|
58
|
+
manylinux-x86_64-image = "manylinux_2_28"
|
|
59
|
+
manylinux-aarch64-image = "manylinux_2_28"
|
|
60
|
+
before-all = "dnf install -y autoconf automake libtool && python3 {project}/tools/build_wheel_dependencies.py --prefix /tmp/burnman-wheel-deps"
|
|
61
|
+
environment = { CC="gcc", CXX="g++", CFLAGS="", CXXFLAGS="", LDFLAGS="", CMAKE_ARGS="-DBURNMAN_WHEEL_DEPENDENCIES=/tmp/burnman-wheel-deps", CMAKE_BUILD_PARALLEL_LEVEL="2" }
|
|
62
|
+
|
|
63
|
+
[tool.cibuildwheel.macos]
|
|
64
|
+
before-all = "brew install autoconf automake libtool && python3 {project}/tools/build_wheel_dependencies.py --prefix /tmp/burnman-wheel-deps"
|
|
65
|
+
environment = { CC="clang", CXX="clang++", CFLAGS="", CXXFLAGS="", LDFLAGS="", MACOSX_DEPLOYMENT_TARGET="11.0", CMAKE_ARGS="-DBURNMAN_WHEEL_DEPENDENCIES=/tmp/burnman-wheel-deps", CMAKE_BUILD_PARALLEL_LEVEL="2" }
|
|
@@ -410,7 +410,8 @@ def test_resume_refines_curved_chords_only_when_resolution_is_requested():
|
|
|
410
410
|
assert p.residual < 0.01
|
|
411
411
|
|
|
412
412
|
|
|
413
|
-
|
|
413
|
+
@pytest.mark.parametrize("reverse_order", [False, True])
|
|
414
|
+
def test_resume_removes_a_verified_retraced_part_of_a_curved_boundary(reverse_order):
|
|
414
415
|
phases = curved_phases()
|
|
415
416
|
opts = settings()
|
|
416
417
|
opts.max_recovery_passes = 0
|
|
@@ -430,10 +431,12 @@ def test_resume_removes_a_verified_retraced_part_of_a_curved_boundary():
|
|
|
430
431
|
line,
|
|
431
432
|
id=1,
|
|
432
433
|
end_node=line["start_node"],
|
|
433
|
-
points=
|
|
434
|
+
points=original[:6] + original[4::-1],
|
|
434
435
|
termination="junction; junction",
|
|
435
436
|
)
|
|
436
437
|
saved["boundaries"].append(duplicate)
|
|
438
|
+
if reverse_order:
|
|
439
|
+
saved["boundaries"].reverse()
|
|
437
440
|
saved["resolved"] = False # Request repair of the injected retrace.
|
|
438
441
|
assert not any(
|
|
439
442
|
p.has_open_boundary for p in bm.phase_diagram_field_polygons(saved).polygons
|
|
@@ -20,6 +20,7 @@ import runpy
|
|
|
20
20
|
|
|
21
21
|
import numpy as np
|
|
22
22
|
import pytest
|
|
23
|
+
from scipy.linalg import qr
|
|
23
24
|
import burnman_cpp as bm
|
|
24
25
|
from conftest import oxide_params
|
|
25
26
|
from test_phase_diagram import crossing_phases, curved_phases, pure, settings
|
|
@@ -454,13 +455,38 @@ def test_equivalent_univariant_extents_need_a_verified_root_not_every_warm_start
|
|
|
454
455
|
|
|
455
456
|
|
|
456
457
|
@pytest.mark.parametrize("reverse", [False, True])
|
|
458
|
+
@pytest.mark.parametrize("different_faces", [False, True])
|
|
457
459
|
@pytest.mark.parametrize(
|
|
458
460
|
"fixture", ["model_limit_duplicates", "cold_reaction_duplicates"]
|
|
459
461
|
)
|
|
460
|
-
def test_equivalent_reactions_can_end_at_separate_model_limit_records(
|
|
462
|
+
def test_equivalent_reactions_can_end_at_separate_model_limit_records(
|
|
463
|
+
reverse, different_faces, fixture
|
|
464
|
+
):
|
|
461
465
|
data = json.loads(
|
|
462
466
|
(Path(__file__).parent / f"data/pyrolite_pt_{fixture}.json").read_text()
|
|
463
467
|
)
|
|
468
|
+
if different_faces:
|
|
469
|
+
# Open the union of the observed garnet faces on one trace. A full
|
|
470
|
+
# identity basis would also unfreeze sites absent from every saved
|
|
471
|
+
# equilibrium, introducing stiff directions at these cold endpoints.
|
|
472
|
+
rows = np.unique(
|
|
473
|
+
np.vstack(
|
|
474
|
+
[
|
|
475
|
+
phase["composition_basis"]
|
|
476
|
+
for line in data["boundaries"]
|
|
477
|
+
for point in line["points"]
|
|
478
|
+
for phase in point["phases"]
|
|
479
|
+
if phase["candidate_index"] == 6
|
|
480
|
+
]
|
|
481
|
+
),
|
|
482
|
+
axis=0,
|
|
483
|
+
)
|
|
484
|
+
_, _, pivots = qr(rows.T, pivoting=True)
|
|
485
|
+
basis = rows[pivots[: np.linalg.matrix_rank(rows)]].tolist()
|
|
486
|
+
for point in data["boundaries"][0]["points"]:
|
|
487
|
+
for phase in point["phases"]:
|
|
488
|
+
if phase["candidate_index"] == 6:
|
|
489
|
+
phase["composition_basis"] = basis
|
|
464
490
|
if reverse:
|
|
465
491
|
transform_saved_traces(data, "reverse")
|
|
466
492
|
result = refine_pyrolite_fixture(data)
|
|
@@ -458,15 +458,31 @@ def test_resumed_model_limit_remains_attached_to_recomputed_eos_envelope(example
|
|
|
458
458
|
previous,
|
|
459
459
|
opts,
|
|
460
460
|
)
|
|
461
|
-
|
|
461
|
+
line = result.boundaries[0]
|
|
462
|
+
point = line.points[0 if case["start"] else -1]
|
|
462
463
|
saved = previous["boundaries"][0]["points"][0 if case["start"] else -1]
|
|
464
|
+
location = np.array([point.pressure, point.temperature])
|
|
465
|
+
scale = np.ptp(np.asarray(result.coordinate_ranges), axis=1)
|
|
466
|
+
# Rebuilding the EOS envelope may re-correct a nearby saved endpoint onto
|
|
467
|
+
# that envelope. Verify the accepted equilibrium and its attachment rather
|
|
468
|
+
# than requiring the old numerical stopping point to remain unchanged.
|
|
463
469
|
assert (
|
|
464
|
-
|
|
465
|
-
|
|
470
|
+
np.linalg.norm((location - [saved["pressure"], saved["temperature"]]) / scale)
|
|
471
|
+
<= 2.0 * opts.node_tolerance
|
|
466
472
|
)
|
|
467
|
-
|
|
473
|
+
assert point.mass_balance_error <= opts.mass_balance_tolerance
|
|
474
|
+
n_endmembers = sum(len(phase.composition) for phase in point.phases)
|
|
475
|
+
assert point.residual <= np.hypot(
|
|
476
|
+
np.sqrt(n_endmembers) * 0.1 * opts.affinity_tolerance,
|
|
477
|
+
np.linalg.norm(list(result.composition_start.values()))
|
|
478
|
+
* opts.mass_balance_tolerance,
|
|
479
|
+
)
|
|
480
|
+
assert point.minimum_affinity >= -opts.affinity_tolerance
|
|
481
|
+
node_id = line.start_node if case["start"] else line.end_node
|
|
482
|
+
node = result.nodes[node_id]
|
|
483
|
+
assert (node.pressure, node.temperature) == (point.pressure, point.temperature)
|
|
468
484
|
assert any(
|
|
469
|
-
np.min(np.linalg.norm((ring - location) /
|
|
485
|
+
np.min(np.linalg.norm((ring - location) / scale, axis=1)) < 1.0e-12
|
|
470
486
|
for ring in result.excluded_regions
|
|
471
487
|
)
|
|
472
488
|
# The common serializer keeps the envelope, original compositions and
|
|
@@ -481,7 +497,7 @@ def test_resumed_model_limit_remains_attached_to_recomputed_eos_envelope(example
|
|
|
481
497
|
)
|
|
482
498
|
assert resumed.settings.required_eos_phases == ["opx"]
|
|
483
499
|
assert any(
|
|
484
|
-
np.min(np.linalg.norm((ring - location) /
|
|
500
|
+
np.min(np.linalg.norm((ring - location) / scale, axis=1)) < 1.0e-12
|
|
485
501
|
for ring in resumed.excluded_regions
|
|
486
502
|
)
|
|
487
503
|
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
# ------------------------------------------------------
|
|
2
|
+
#
|
|
3
|
+
# SPDX-License-Identifier: GPL-3.0-or-later
|
|
4
|
+
#
|
|
5
|
+
# SPDX-FileCopyrightText: Copyright (C) 2026 by the BurnMan Team.
|
|
6
|
+
#
|
|
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
|
+
|
|
14
|
+
"""The installed distribution and its compiled extension describe one release."""
|
|
15
|
+
|
|
16
|
+
from importlib.metadata import version
|
|
17
|
+
|
|
18
|
+
import burnman_cpp as bm
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
def test_native_and_distribution_versions_agree():
|
|
22
|
+
assert bm.__version__ == version("burnman_cpp")
|
|
@@ -1057,10 +1057,10 @@ bool same_boundary_curve(Engine &engine, const Result &result,
|
|
|
1057
1057
|
return std::find(two.assemblage.begin(), two.assemblage.end(),
|
|
1058
1058
|
p.id) == two.assemblage.end();
|
|
1059
1059
|
});
|
|
1060
|
-
//
|
|
1060
|
+
// Independent traces can carry different saved active faces. Open
|
|
1061
1061
|
// their union without copying compositions between independent
|
|
1062
1062
|
// starting states, so a stale frozen site cannot define identity.
|
|
1063
|
-
if (
|
|
1063
|
+
if (!share_composition_faces(first_seed, warm))
|
|
1064
1064
|
return false;
|
|
1065
1065
|
// Identity needs more accurate roots than ordinary tracing: weak
|
|
1066
1066
|
// frozen-site affinities can otherwise leave two accepted states
|
|
@@ -1152,6 +1152,10 @@ bool same_boundary_curve(Engine &engine, const Result &result,
|
|
|
1152
1152
|
// corrected equilibria; failed warm starts supply no evidence either way,
|
|
1153
1153
|
// whereas any actual disagreement vetoes the identification.
|
|
1154
1154
|
const auto forward = verified(first, second);
|
|
1155
|
+
// A partial retrace must lie on the whole curve. The reverse requirement
|
|
1156
|
+
// would incorrectly demand that its short arc also covers the whole curve.
|
|
1157
|
+
if (partial)
|
|
1158
|
+
return forward.value_or(false);
|
|
1155
1159
|
if (shared_branch) {
|
|
1156
1160
|
if (forward == false)
|
|
1157
1161
|
return false;
|
|
@@ -1159,7 +1163,6 @@ bool same_boundary_curve(Engine &engine, const Result &result,
|
|
|
1159
1163
|
return backward != false &&
|
|
1160
1164
|
(forward.value_or(false) || backward.value_or(false));
|
|
1161
1165
|
}
|
|
1162
|
-
return forward.value_or(false) &&
|
|
1163
|
-
(partial || verified(second, first).value_or(false));
|
|
1166
|
+
return forward.value_or(false) && verified(second, first).value_or(false);
|
|
1164
1167
|
}
|
|
1165
1168
|
} // namespace burnman::phase_diagrams::detail
|
|
@@ -2473,6 +2473,9 @@ void Tracer::model_domain() {
|
|
|
2473
2473
|
}
|
|
2474
2474
|
|
|
2475
2475
|
void Tracer::reconcile_boundaries(bool transfer_labels_only) {
|
|
2476
|
+
auto returns_to_node = [](const Boundary &line) {
|
|
2477
|
+
return line.start_node >= 0 && line.start_node == line.end_node;
|
|
2478
|
+
};
|
|
2476
2479
|
std::vector<Boundary> unique;
|
|
2477
2480
|
for (auto &line : result.boundaries) {
|
|
2478
2481
|
bool duplicate = false;
|
|
@@ -2484,11 +2487,18 @@ void Tracer::reconcile_boundaries(bool transfer_labels_only) {
|
|
|
2484
2487
|
continue;
|
|
2485
2488
|
bool same_sides = same_boundary_sides(old, line);
|
|
2486
2489
|
bool same_ends = same_boundary_nodes(old, line, result);
|
|
2487
|
-
const bool
|
|
2488
|
-
|
|
2489
|
-
|
|
2490
|
+
const bool unfinished = complete_boundary(line) != complete_boundary(old);
|
|
2491
|
+
// An out-and-back trace can be complete at its shared starting node
|
|
2492
|
+
// while covering only part of another boundary. Verify its entire arc
|
|
2493
|
+
// just as for an unfinished retrace; a genuine closed loop must survive.
|
|
2494
|
+
const bool partial =
|
|
2495
|
+
unfinished || returns_to_node(line) != returns_to_node(old);
|
|
2496
|
+
const bool line_is_part =
|
|
2497
|
+
unfinished ? !complete_boundary(line) : returns_to_node(line);
|
|
2498
|
+
auto &part = line_is_part ? line : old;
|
|
2499
|
+
auto &whole = line_is_part ? old : line;
|
|
2490
2500
|
if (partial) {
|
|
2491
|
-
//
|
|
2501
|
+
// A partial retrace is removable only when an anchored,
|
|
2492
2502
|
// completed record covers its entire equilibrium branch.
|
|
2493
2503
|
auto shares = [&](int node) {
|
|
2494
2504
|
return node >= 0 &&
|
|
@@ -2527,7 +2537,13 @@ void Tracer::reconcile_boundaries(bool transfer_labels_only) {
|
|
|
2527
2537
|
bad.reaction_kind = good.reaction_kind;
|
|
2528
2538
|
}
|
|
2529
2539
|
duplicate = true;
|
|
2530
|
-
|
|
2540
|
+
// Keep the whole arc even if its covered retrace has more samples.
|
|
2541
|
+
if (partial && !line_is_part) {
|
|
2542
|
+
const int id = old.id;
|
|
2543
|
+
old = std::move(line);
|
|
2544
|
+
old.id = id;
|
|
2545
|
+
} else if (!partial)
|
|
2546
|
+
retain_curve(old, line);
|
|
2531
2547
|
if (!same_sides && univariant)
|
|
2532
2548
|
label(old);
|
|
2533
2549
|
break;
|