14 : species(std::move(species)), quantum_number_f(j), quantum_number_m(m), quantum_number_n(n),
15 quantum_number_l(l), quantum_number_s(0.5), quantum_number_j(j) {}
18 species.emplace(value);
23 energy.emplace(value);
28 if (2 * value != std::rint(2 * value)) {
29 throw std::invalid_argument(
"Quantum number f must be an integer or half-integer.");
31 quantum_number_f.emplace(value);
36 if (2 * value != std::rint(2 * value)) {
37 throw std::invalid_argument(
"Quantum number m must be an integer or half-integer.");
39 quantum_number_m.emplace(value);
49 quantum_number_n.emplace(value);
54 quantum_number_nu.emplace(value);
59 quantum_number_nui.emplace(value);
64 quantum_number_l.emplace(value);
69 quantum_number_s.emplace(value);
74 quantum_number_j.emplace(value);
79 quantum_number_l_ryd.emplace(value);
84 quantum_number_j_ryd.emplace(value);
90 if (!species.has_value()) {
91 throw std::runtime_error(
"Species not set.");
104 quantum_number_l_ryd,
105 quantum_number_j_ryd};
107 return database.
get_ket(species.value(), description);
std::shared_ptr< const KetAtom > get_ket(const std::string &species, const AtomDescriptionByParameters &description)
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)