15#include <nanobind/nanobind.h>
16#include <nanobind/stl/shared_ptr.h>
17#include <nanobind/stl/string.h>
18#include <nanobind/stl/vector.h>
21namespace nb = nanobind;
24static void declare_ket(nb::module_ &m) {
25 std::string pyclass_name =
"Ket";
26 nb::class_<Ket> pyclass(m, pyclass_name.c_str());
27 pyclass.def(
"get_energy", &Ket::get_energy)
28 .def(
"get_quantum_number_f", &Ket::get_quantum_number_f)
29 .def(
"get_quantum_number_m", &Ket::get_quantum_number_m)
30 .def(
"get_parity", &Ket::get_parity)
31 .def(
"get_label", &Ket::get_label)
32 .def(
"__str__", [](
Ket const &self) {
39static void declare_ket_atom(nb::module_ &m) {
40 std::string pyclass_name =
"KetAtom";
41 nb::class_<KetAtom, Ket> pyclass(m, pyclass_name.c_str());
42 pyclass.def(
"get_species", &KetAtom::get_species)
43 .def(
"get_quantum_number_n", &KetAtom::get_quantum_number_n)
44 .def(
"get_quantum_number_nu", &KetAtom::get_quantum_number_nu)
45 .def(
"get_quantum_number_nui", &KetAtom::get_quantum_number_nui)
46 .def(
"get_quantum_number_l", &KetAtom::get_quantum_number_l)
47 .def(
"get_quantum_number_s", &KetAtom::get_quantum_number_s)
48 .def(
"get_quantum_number_j", &KetAtom::get_quantum_number_j)
49 .def(
"get_quantum_number_l_ryd", &KetAtom::get_quantum_number_l_ryd)
50 .def(
"get_quantum_number_j_ryd", &KetAtom::get_quantum_number_j_ryd)
51 .def(
"get_quantum_number_nui_std", &KetAtom::get_quantum_number_nui_std)
52 .def(
"get_quantum_number_l_std", &KetAtom::get_quantum_number_l_std)
53 .def(
"get_quantum_number_s_std", &KetAtom::get_quantum_number_s_std)
54 .def(
"get_quantum_number_j_std", &KetAtom::get_quantum_number_j_std)
55 .def(
"get_quantum_number_l_ryd_std", &KetAtom::get_quantum_number_l_ryd_std)
56 .def(
"get_quantum_number_j_ryd_std", &KetAtom::get_quantum_number_j_ryd_std)
57 .def(
"is_j_total_momentum", &KetAtom::is_j_total_momentum)
58 .def(
"is_calculated_with_mqdt", &KetAtom::is_calculated_with_mqdt)
59 .def(
"get_underspecified_channel_contribution",
60 &KetAtom::get_underspecified_channel_contribution);
63static void declare_ket_atom_creator(nb::module_ &m) {
64 std::string pyclass_name =
"KetAtomCreator";
65 nb::class_<KetAtomCreator> pyclass(m, pyclass_name.c_str());
66 pyclass.def(nb::init<>())
67 .def(nb::init<std::string, int, double, double, double>())
68 .def(
"set_species", &KetAtomCreator::set_species)
69 .def(
"set_energy", &KetAtomCreator::set_energy)
70 .def(
"set_quantum_number_f", &KetAtomCreator::set_quantum_number_f)
71 .def(
"set_quantum_number_m", &KetAtomCreator::set_quantum_number_m)
72 .def(
"set_parity", &KetAtomCreator::set_parity)
73 .def(
"set_quantum_number_n", &KetAtomCreator::set_quantum_number_n)
74 .def(
"set_quantum_number_nu", &KetAtomCreator::set_quantum_number_nu)
75 .def(
"set_quantum_number_nui", &KetAtomCreator::set_quantum_number_nui)
76 .def(
"set_quantum_number_l", &KetAtomCreator::set_quantum_number_l)
77 .def(
"set_quantum_number_s", &KetAtomCreator::set_quantum_number_s)
78 .def(
"set_quantum_number_j", &KetAtomCreator::set_quantum_number_j)
79 .def(
"set_quantum_number_l_ryd", &KetAtomCreator::set_quantum_number_l_ryd)
80 .def(
"set_quantum_number_j_ryd", &KetAtomCreator::set_quantum_number_j_ryd)
81 .def(
"create", &KetAtomCreator::create);
85static void declare_ket_pair(nb::module_ &m, std::string
const &type_name) {
86 std::string pyclass_name =
"KetPair" + type_name;
87 nb::class_<KetPair<T>,
Ket> pyclass(m, pyclass_name.c_str());
94 declare_ket_atom_creator(m);
95 declare_ket_pair<double>(m,
"Real");
96 declare_ket_pair<std::complex<double>>(m,
"Complex");
void bind_ket(nb::module_ &m)