13#include <nanobind/eigen/dense.h>
14#include <nanobind/eigen/sparse.h>
15#include <nanobind/nanobind.h>
16#include <nanobind/stl/array.h>
17#include <nanobind/stl/complex.h>
18#include <nanobind/stl/optional.h>
19#include <nanobind/stl/shared_ptr.h>
20#include <nanobind/stl/vector.h>
22namespace nb = nanobind;
23using namespace nb::literals;
27static void declare_system(nb::module_ &m, std::string
const &type_name) {
28 std::string pyclass_name =
"System" + type_name;
31 pyclass_name.c_str());
44 "min_eigenenergy"_a = nb::none(),
"max_eigenenergy"_a = nb::none(),
"rtol"_a = 1e-6)
49static void declare_system_atom(nb::module_ &m, std::string
const &type_name) {
50 std::string pyclass_name =
"SystemAtom" + type_name;
53 pyclass.def(nb::init<std::shared_ptr<const basis_t>>())
63static void declare_system_pair(nb::module_ &m, std::string
const &type_name) {
64 std::string pyclass_name =
"SystemPair" + type_name;
67 pyclass.def(nb::init<std::shared_ptr<const basis_t>>())
73 declare_system<SystemAtom<double>>(m,
"SystemAtomReal");
74 declare_system<SystemAtom<std::complex<double>>>(m,
"SystemAtomComplex");
75 declare_system_atom<double>(m,
"Real");
76 declare_system_atom<std::complex<double>>(m,
"Complex");
78 declare_system<SystemPair<double>>(m,
"SystemPairReal");
79 declare_system<SystemPair<std::complex<double>>>(m,
"SystemPairComplex");
80 declare_system_pair<double>(m,
"Real");
81 declare_system_pair<std::complex<double>>(m,
"Complex");
void bind_system(nb::module_ &m)
typename traits::CrtpTraits< Type >::basis_t basis_t
typename traits::CrtpTraits< Type >::basis_t basis_t
typename traits::CrtpTraits< Derived >::scalar_t scalar_t