fix(python-bindings): Updated python bindings to new interface

The python bindings now work with the polymorphic reaction class and the CVODE solver
This commit is contained in:
2025-10-30 15:05:08 -04:00
parent 23df87f915
commit 7fded59814
27 changed files with 962 additions and 255 deletions

View File

@@ -3,6 +3,9 @@
#include "bindings.h"
#include "gridfire/utils/general_composition.h"
#include "gridfire/utils/hashing.h"
namespace py = pybind11;
#include "gridfire/utils/logging.h"
@@ -16,4 +19,65 @@ void register_utils_bindings(py::module &m) {
py::arg("rho"),
"Format a string for logging nuclear timescales based on temperature, density, and energy generation rate."
);
m.def(
"massFractionFromMolarAbundanceAndComposition",
&gridfire::utils::massFractionFromMolarAbundanceAndComposition,
py::arg("composition"),
py::arg("species"),
py::arg("Yi"),
"Convert a specific species molar abundance into its mass fraction if it were present in a given composition."
);
m.def(
"massFractionFromMolarAbundanceAndMolarMass",
&gridfire::utils::massFractionFromMolarAbundanceAndMolarMass,
py::arg("molarAbundances"),
py::arg("molarMasses"),
"Convert a vector of molar abundances and a parallel vector of molar masses into a vector of mass fractions"
);
m.def(
"molarMassVectorFromComposition",
&gridfire::utils::molarMassVectorFromComposition,
py::arg("composition"),
"Extract vector of molar masses from a composition object, this will be sorted by species mass so that the lightest species are at the front of the list."
);
m.def(
"hash_atomic",
&gridfire::utils::hash_atomic,
py::arg("a"),
py::arg("z")
);
auto hashing_module = m.def_submodule("hashing", "module for gridfire hashing functions");
auto reaction_hashing_module = hashing_module.def_submodule("reaction", "utility module for hashing gridfire reaction functions");
reaction_hashing_module.def(
"splitmix64",
&gridfire::utils::hashing::reaction::splitmix64,
py::arg("x")
);
reaction_hashing_module.def(
"mix_species",
&gridfire::utils::hashing::reaction::mix_species,
py::arg("a"),
py::arg("z")
);
reaction_hashing_module.def(
"multiset_combine",
&gridfire::utils::hashing::reaction::multiset_combine,
py::arg("acc"),
py::arg("x")
);
m.def(
"hash_reaction",
&gridfire::utils::hash_reaction,
py::arg("reaction")
);
}