pairinteraction
A Rydberg Interaction Calculator
KetAtomCreator.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 <memory>
9#include <optional>
10#include <string>
11#include <type_traits>
12
13namespace pairinteraction {
14class Database;
15
16class KetAtom;
17
18/**
19 * @class KetAtomCreator
20 *
21 * @brief Builder class for creating KetAtom objects.
22 */
24public:
25 KetAtomCreator() = default;
26 KetAtomCreator(std::string species, int n, double l, double j, double m);
27 KetAtomCreator &set_species(const std::string &value);
28 KetAtomCreator &set_energy(double value);
40 std::shared_ptr<const KetAtom> create(Database &database) const;
41
42private:
43 std::optional<std::string> species;
44 Parity parity{Parity::UNKNOWN};
45 std::optional<double> energy;
46 std::optional<double> quantum_number_f;
47 std::optional<double> quantum_number_m;
48 std::optional<int> quantum_number_n;
49 std::optional<double> quantum_number_nu;
50 std::optional<double> quantum_number_nui;
51 std::optional<double> quantum_number_l;
52 std::optional<double> quantum_number_s;
53 std::optional<double> quantum_number_j;
54 std::optional<double> quantum_number_l_ryd;
55 std::optional<double> quantum_number_j_ryd;
56};
57
58} // namespace pairinteraction
Builder class for creating KetAtom objects.
KetAtomCreator & set_quantum_number_f(double value)
KetAtomCreator & set_quantum_number_n(int value)
KetAtomCreator & set_quantum_number_nu(double value)
std::shared_ptr< const KetAtom > create(Database &database) const
KetAtomCreator & set_quantum_number_l_ryd(double value)
KetAtomCreator & set_quantum_number_j_ryd(double value)
KetAtomCreator & set_quantum_number_j(double value)
KetAtomCreator & set_quantum_number_l(double value)
KetAtomCreator & set_quantum_number_nui(double value)
KetAtomCreator & set_quantum_number_s(double value)
KetAtomCreator & set_parity(Parity value)
KetAtomCreator & set_energy(double value)
KetAtomCreator & set_species(const std::string &value)
KetAtomCreator & set_quantum_number_m(double value)