LCOV - code coverage report
Current view: top level - src/ket - KetAtomCreator.cpp (source / functions) Hit Total Coverage
Test: coverage.info Lines: 14 21 66.7 %
Date: 2026-10-14 13:16:16 Functions: 4 5 80.0 %

          Line data    Source code
       1             : // SPDX-FileCopyrightText: 2024 PairInteraction Developers
       2             : // SPDX-License-Identifier: LGPL-3.0-or-later
       3             : 
       4             : #include "pairinteraction/ket/KetAtomCreator.hpp"
       5             : 
       6             : #include "pairinteraction/database/AtomDescriptionByParameters.hpp"
       7             : #include "pairinteraction/database/Database.hpp"
       8             : 
       9             : #include <cmath>
      10             : 
      11             : namespace pairinteraction {
      12         515 : KetAtomCreator::KetAtomCreator(Database &database) : database(database) {}
      13             : 
      14         515 : KetAtomCreator &KetAtomCreator::set_species(const std::string &value) {
      15         515 :     species.emplace(value);
      16         515 :     return *this;
      17             : }
      18             : 
      19           0 : KetAtomCreator &KetAtomCreator::set_energy(double value) {
      20           0 :     energy.emplace(value);
      21           0 :     return *this;
      22             : }
      23             : 
      24        2045 : KetAtomCreator &KetAtomCreator::set_quantum_number(const std::string &name, double value) {
      25        2045 :     if ((name == "f" || name == "m") && 2 * value != std::rint(2 * value)) {
      26           0 :         throw std::invalid_argument("Quantum number " + name +
      27           0 :                                     " must be an integer or half-integer.");
      28             :     }
      29        2045 :     if (name == "parity" && value != 1 && value != -1) {
      30           0 :         throw std::invalid_argument("The parity must be +1 or -1.");
      31             :     }
      32        2045 :     quantum_numbers[name] = value;
      33        2045 :     return *this;
      34             : }
      35             : 
      36         515 : std::shared_ptr<const KetAtom> KetAtomCreator::create() const {
      37             : 
      38         515 :     if (!species.has_value()) {
      39           0 :         throw std::runtime_error("Species not set.");
      40             :     }
      41             : 
      42         515 :     AtomDescriptionByParameters description{energy, quantum_numbers};
      43             : 
      44        1025 :     return database.get_ket(species.value(), description);
      45         515 : }
      46             : } // namespace pairinteraction

Generated by: LCOV version 1.16