11 nda::array<nda::matrix<dcomplex>, 2> rotation_from_dft_to_local_basis,
12 nda::array<nda::matrix<dcomplex>, 1> rotation_from_spherical_to_dft_basis)
13 : _spin_kind{spin_kind},
14 _atomic_shells{std::move(atomic_shells)},
15 _irreps_decomp_per_atom{std::move(irreps_decomp_per_atom)},
16 _rotation_from_dft_to_local_basis{std::move(rotation_from_dft_to_local_basis)},
17 _rotation_from_spherical_to_dft_basis{std::move(rotation_from_spherical_to_dft_basis)} {
20 _dim_C = stdr::fold_left(_atomic_shells | stdv::transform([](
auto const &s) {
return s.dim; }), 0, std::plus<>());
23 _atom_names = range(_atomic_shells.size()) | stdv::transform([](
auto i) {
return std::to_string(i); }) | tl::to<std::vector>();
36 auto matrix_out = nda::array<nda::matrix<dcomplex>, 2>{
n_atoms(),
n_sigma()};
37 for (
auto sigma : range(
n_sigma()))
39 matrix_out(atom, sigma) = nda::matrix<dcomplex>{matrix_C(0, sigma)(r_atom, r_atom)};
local_space(spin_kind_e spin_kind, std::vector< atomic_orbs > atomic_shells, nda::array< std::vector< long >, 2 > irreps_decomp_per_atom, nda::array< nda::matrix< dcomplex >, 2 > rotation_from_dft_to_local_basis, nda::array< nda::matrix< dcomplex >, 1 > rotation_from_spherical_to_dft_basis)