pairinteraction
A Rydberg Interaction Calculator
BasisPairCreator.hpp
Go to the documentation of this file.
1// SPDX-FileCopyrightText: 2024 Pairinteraction Developers
2// SPDX-License-Identifier: LGPL-3.0-or-later
3
4#pragma once
5
8
9#include <complex>
10#include <memory>
11#include <vector>
12
13namespace pairinteraction {
14enum class Parity : int;
15
16template <typename Scalar>
17class BasisPair;
18
19template <typename Scalar>
20class SystemAtom;
21
22template <typename Scalar>
23class KetPair;
24
25template <typename Scalar>
28
29public:
33 using ketvec_t = std::vector<std::shared_ptr<const ket_t>>;
34
40 std::shared_ptr<const BasisPair<Scalar>> create() const;
41
42private:
43 std::vector<std::reference_wrapper<const SystemAtom<Scalar>>> systems_atom;
44 Range<real_t> range_energy;
45 Range<real_t> range_quantum_number_m;
46 Parity product_of_parities; // NOLINT
47};
48
49extern template class BasisPairCreator<double>;
50extern template class BasisPairCreator<std::complex<double>>;
51} // namespace pairinteraction
BasisPairCreator< Scalar > & restrict_product_of_parities(Parity value)
BasisPairCreator< Scalar > & add(const SystemAtom< Scalar > &system_atom)
std::shared_ptr< const BasisPair< Scalar > > create() const
typename traits::NumTraits< Scalar >::real_t real_t
BasisPairCreator< Scalar > & restrict_quantum_number_m(real_t min, real_t max)
BasisPairCreator< Scalar > & restrict_energy(real_t min, real_t max)
std::vector< std::shared_ptr< const ket_t > > ketvec_t
Helper struct to extract types from a numerical type.
Definition: traits.hpp:35