pairinteraction
A Rydberg Interaction Calculator
KetAtom.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
7
8#include <string>
9#include <type_traits>
10
11namespace pairinteraction {
12class Database;
13
14enum class Parity : int;
15
16/**
17 * @class KetAtom
18 *
19 * @brief Class for representing atomic kets.
20 */
21class KetAtom : public Ket {
22 friend class Database;
23 struct Private {};
24
25public:
26 KetAtom(Private /*unused*/, double energy, double f, double m, Parity p, std::string species,
27 int n, double nu, double nui_exp, double nui_std, double l_exp, double l_std,
28 double s_exp, double s_std, double j_exp, double j_std, double l_ryd_exp,
29 double l_ryd_std, double j_ryd_exp, double j_ryd_std, bool is_j_total_momentum,
30 bool is_calculated_with_mqdt, double underspecified_channel_contribution,
31 Database &database, size_t id_in_database);
32
33 Database &get_database() const;
34 size_t get_id_in_database() const;
35 std::string get_label() const override;
36 std::shared_ptr<KetAtom>
37 get_ket_for_different_quantum_number_m(double new_quantum_number_m) const;
38 const std::string &get_species() const;
39 int get_quantum_number_n() const;
40 double get_quantum_number_nu() const;
41 double get_quantum_number_nui() const;
42 double get_quantum_number_l() const;
43 double get_quantum_number_s() const;
44 double get_quantum_number_j() const;
45 double get_quantum_number_l_ryd() const;
46 double get_quantum_number_j_ryd() const;
47 double get_quantum_number_nui_std() const;
48 double get_quantum_number_l_std() const;
49 double get_quantum_number_s_std() const;
50 double get_quantum_number_j_std() const;
51 double get_quantum_number_l_ryd_std() const;
52 double get_quantum_number_j_ryd_std() const;
53 bool is_j_total_momentum() const;
54 bool is_calculated_with_mqdt() const;
56
57 bool operator==(const KetAtom &other) const;
58 bool operator!=(const KetAtom &other) const;
59
60 struct hash {
61 std::size_t operator()(const KetAtom &k) const;
62 };
63
64private:
65 std::string species;
66 int quantum_number_n;
67 double quantum_number_nu;
68 double quantum_number_nui_exp;
69 double quantum_number_nui_std;
70 double quantum_number_l_exp;
71 double quantum_number_l_std;
72 double quantum_number_s_exp;
73 double quantum_number_s_std;
74 double quantum_number_j_exp;
75 double quantum_number_j_std;
76 double quantum_number_l_ryd_exp;
77 double quantum_number_l_ryd_std;
78 double quantum_number_j_ryd_exp;
79 double quantum_number_j_ryd_std;
80 bool is_j_total_momentum_;
81 bool is_calculated_with_mqdt_;
82 double underspecified_channel_contribution;
83 Database &database;
84 size_t id_in_database;
85};
86
87} // namespace pairinteraction
Class for representing atomic kets.
Definition: KetAtom.hpp:21
double get_quantum_number_nui() const
Definition: KetAtom.cpp:111
bool is_j_total_momentum() const
Definition: KetAtom.cpp:135
bool is_calculated_with_mqdt() const
Definition: KetAtom.cpp:137
std::string get_label() const override
Definition: KetAtom.cpp:42
size_t get_id_in_database() const
Definition: KetAtom.cpp:40
double get_quantum_number_j_ryd() const
Definition: KetAtom.cpp:121
double get_quantum_number_l_ryd_std() const
Definition: KetAtom.cpp:131
double get_quantum_number_nui_std() const
Definition: KetAtom.cpp:123
double get_quantum_number_l_std() const
Definition: KetAtom.cpp:125
double get_quantum_number_nu() const
Definition: KetAtom.cpp:109
double get_quantum_number_s_std() const
Definition: KetAtom.cpp:127
double get_quantum_number_j_ryd_std() const
Definition: KetAtom.cpp:133
bool operator!=(const KetAtom &other) const
Definition: KetAtom.cpp:157
const std::string & get_species() const
Definition: KetAtom.cpp:105
Database & get_database() const
Definition: KetAtom.cpp:38
double get_quantum_number_l() const
Definition: KetAtom.cpp:113
double get_quantum_number_s() const
Definition: KetAtom.cpp:115
bool operator==(const KetAtom &other) const
Definition: KetAtom.cpp:143
KetAtom(Private, double energy, double f, double m, Parity p, std::string species, int n, double nu, double nui_exp, double nui_std, double l_exp, double l_std, double s_exp, double s_std, double j_exp, double j_std, double l_ryd_exp, double l_ryd_std, double j_ryd_exp, double j_ryd_std, bool is_j_total_momentum, bool is_calculated_with_mqdt, double underspecified_channel_contribution, Database &database, size_t id_in_database)
Definition: KetAtom.cpp:21
int get_quantum_number_n() const
Definition: KetAtom.cpp:107
double get_quantum_number_j() const
Definition: KetAtom.cpp:117
std::shared_ptr< KetAtom > get_ket_for_different_quantum_number_m(double new_quantum_number_m) const
Definition: KetAtom.cpp:99
double get_underspecified_channel_contribution() const
Definition: KetAtom.cpp:139
double get_quantum_number_j_std() const
Definition: KetAtom.cpp:129
double get_quantum_number_l_ryd() const
Definition: KetAtom.cpp:119
Base class for a ket.
Definition: Ket.hpp:25
std::size_t operator()(const KetAtom &k) const
Definition: KetAtom.cpp:159