LCOV - code coverage report
Current view: top level - src/pairinteraction_gui/calculate - calculate_one_atom.py (source / functions) Hit Total Coverage
Test: coverage.info Lines: 0 22 0.0 %
Date: 2025-05-02 21:49:59 Functions: 0 2 0.0 %

          Line data    Source code
       1             : # SPDX-FileCopyrightText: 2025 Pairinteraction Developers
       2             : # SPDX-License-Identifier: LGPL-3.0-or-later
       3             : 
       4           0 : import logging
       5           0 : from typing import TYPE_CHECKING
       6             : 
       7           0 : from attr import dataclass
       8             : 
       9           0 : from pairinteraction import (
      10             :     complex as pi_complex,
      11             :     real as pi_real,
      12             : )
      13           0 : from pairinteraction_gui.calculate.calculate_base import Parameters, Results
      14           0 : from pairinteraction_gui.worker import run_in_other_process
      15             : 
      16             : if TYPE_CHECKING:
      17             :     from pairinteraction_gui.page import OneAtomPage  # noqa: F401  # related to ruff extend-generics
      18             : 
      19           0 : logger = logging.getLogger(__name__)
      20             : 
      21             : 
      22           0 : @dataclass
      23           0 : class ParametersOneAtom(Parameters["OneAtomPage"]):
      24             :     """Parameters for the one atom calculation."""
      25             : 
      26             : 
      27           0 : @dataclass
      28           0 : class ResultsOneAtom(Results):
      29             :     """Results for the one atom calculation."""
      30             : 
      31             : 
      32           0 : @run_in_other_process
      33           0 : def calculate_one_atom(parameters: ParametersOneAtom) -> ResultsOneAtom:
      34             :     """Calculate the energy plot for one atom.
      35             : 
      36             :     This means, given a Paramaters object, do the pairinteraction calculations and return an ResultsOneAtom object.
      37             :     """
      38           0 :     pi = pi_real if parameters.is_real else pi_complex
      39             : 
      40           0 :     ket = pi.KetAtom(parameters.get_species(), **parameters.get_quantum_numbers())
      41           0 :     ket_energy = ket.get_energy("GHz")
      42           0 :     basis = pi.BasisAtom(parameters.get_species(), **parameters.get_quantum_number_restrictions())
      43             : 
      44           0 :     system_list = [
      45             :         pi.SystemAtom(basis)
      46             :         .set_electric_field(parameters.get_efield(step), unit="V/cm")
      47             :         .set_magnetic_field(parameters.get_bfield(step), unit="G")
      48             :         for step in range(parameters.steps)
      49             :     ]
      50             : 
      51           0 :     logger.debug("Diagonalizing SystemAtoms...")
      52           0 :     pi.diagonalize(
      53             :         system_list,
      54             :         **parameters.diagonalize_kwargs,
      55             :         **parameters.get_diagonalize_energy_range(ket_energy),
      56             :     )
      57           0 :     logger.debug("Done diagonalizing SystemAtoms.")
      58           0 :     return ResultsOneAtom.from_calculate(system_list, ket, ket_energy)

Generated by: LCOV version 1.16