pairinteraction
A Rydberg Interaction Calculator
SystemPair.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 <array>
10#include <limits>
11#include <memory>
12#include <vector>
13
14namespace pairinteraction {
15template <typename Scalar>
16class OperatorPair;
17
18template <typename Scalar>
19class BasisPair;
20
21template <typename Scalar>
22class KetPair;
23
24template <typename T>
25class SystemPair;
26
27template <typename Scalar>
28class SystemAtom;
29
30template <typename Scalar>
31class BasisAtom;
32
33template <typename Scalar>
34class GreenTensor;
35
36template <typename Scalar>
38 using scalar_t = Scalar;
41 using ketvec_t = std::vector<std::shared_ptr<const ket_t>>;
44};
45
46template <typename Scalar>
47class SystemPair : public System<SystemPair<Scalar>> {
48public:
50
54
55 SystemPair(std::shared_ptr<const basis_t> basis);
56
57 Type &set_interaction_order(int value);
58 Type &set_distance_vector(const std::array<real_t, 3> &vector);
59 Type &set_green_tensor(std::shared_ptr<const GreenTensor<Scalar>> &green_tensor);
60
61private:
62 int interaction_order{3};
63 std::array<real_t, 3> distance_vector{0, 0, std::numeric_limits<real_t>::infinity()};
64 std::shared_ptr<const GreenTensor<Scalar>> user_defined_green_tensor;
65
66 void construct_hamiltonian() const override;
67};
68
69extern template class SystemPair<double>;
70extern template class SystemPair<std::complex<double>>;
71} // namespace pairinteraction
SystemPair(std::shared_ptr< const basis_t > basis)
Definition: SystemPair.cpp:206
typename traits::CrtpTraits< Type >::real_t real_t
Definition: SystemPair.hpp:52
typename traits::CrtpTraits< Type >::basis_t basis_t
Definition: SystemPair.hpp:53
Type & set_green_tensor(std::shared_ptr< const GreenTensor< Scalar > > &green_tensor)
Definition: SystemPair.cpp:248
Type & set_interaction_order(int value)
Definition: SystemPair.cpp:210
Type & set_distance_vector(const std::array< real_t, 3 > &vector)
Definition: SystemPair.cpp:228
typename traits::NumTraits< Scalar >::real_t real_t
Definition: SystemPair.hpp:39
std::vector< std::shared_ptr< const ket_t > > ketvec_t
Definition: SystemPair.hpp:41
Helper struct to extract types from a derived basis type. Must be specialized for each derived basis ...
Definition: traits.hpp:24
Helper struct to extract types from a numerical type.
Definition: traits.hpp:35