pairinteraction
A Rydberg Interaction Calculator
tensor.hpp
Go to the documentation of this file.
1// SPDX-FileCopyrightText: 2025 Pairinteraction Developers
2// SPDX-License-Identifier: LGPL-3.0-or-later
3
4#pragma once
5
7
8#include <Eigen/SparseCore>
9#include <complex>
10#include <memory>
11
12namespace pairinteraction {
13template <typename Scalar>
14class BasisPair;
15} // namespace pairinteraction
16
17namespace pairinteraction::utils {
18template <typename Scalar>
19Eigen::SparseMatrix<Scalar, Eigen::RowMajor>
20calculate_tensor_product(const std::shared_ptr<const BasisPair<Scalar>> &basis_initial,
21 const std::shared_ptr<const BasisPair<Scalar>> &basis_final,
22 const Eigen::SparseMatrix<Scalar, Eigen::RowMajor> &matrix1,
23 const Eigen::SparseMatrix<Scalar, Eigen::RowMajor> &matrix2);
24
25extern template Eigen::SparseMatrix<double, Eigen::RowMajor>
26calculate_tensor_product(const std::shared_ptr<const BasisPair<double>> &,
27 const std::shared_ptr<const BasisPair<double>> &,
28 const Eigen::SparseMatrix<double, Eigen::RowMajor> &,
29 const Eigen::SparseMatrix<double, Eigen::RowMajor> &);
30extern template Eigen::SparseMatrix<std::complex<double>, Eigen::RowMajor>
31calculate_tensor_product(const std::shared_ptr<const BasisPair<std::complex<double>>> &,
32 const std::shared_ptr<const BasisPair<std::complex<double>>> &,
33 const Eigen::SparseMatrix<std::complex<double>, Eigen::RowMajor> &,
34 const Eigen::SparseMatrix<std::complex<double>, Eigen::RowMajor> &);
35} // namespace pairinteraction::utils
Eigen::SparseMatrix< Scalar, Eigen::RowMajor > calculate_tensor_product(const std::shared_ptr< const BasisPair< Scalar > > &basis_initial, const std::shared_ptr< const BasisPair< Scalar > > &basis_final, const Eigen::SparseMatrix< Scalar, Eigen::RowMajor > &matrix1, const Eigen::SparseMatrix< Scalar, Eigen::RowMajor > &matrix2)
Definition: tensor.cpp:20