Source code for ryd_numerov.model.quantum_defect

import logging
from typing import Optional

from ryd_numerov.model.database import Database
from ryd_numerov.units import ureg

logger = logging.getLogger(__name__)


[docs] class QuantumDefect: """Rydberg-Ritz parameters for an atomic species and quantum numbers. Attributes: species: Atomic species n: Principal quantum number l: Orbital angular momentum quantum number j: Total angular momentum quantum number d0: Zeroth-order quantum defect. d2: Second-order quantum defect. d4: Fourth-order quantum defect. d6: Sixth-order quantum defect. d8: Eighth-order quantum defect. Ry: Rydberg constant in cm^{-1} Ry_inf: Rydberg constant in cm^{-1} for infinite nuclear mass """ Ry_inf: float = ureg.Quantity(1, "rydberg_constant").to("1/cm").magnitude def __init__( self, species: str, n: int, l: int, j: float, database: Optional["Database"] = None, ) -> None: r"""Initialize the model potential. Args: species: Atomic species n: Principal quantum number l: Orbital angular momentum quantum number j: Total angular momentum quantum number database: Database instance, where the model potential parameters are stored If None, use the global database instance. """ self.species = species self.n = n self.l = l self.j = j if database is None: database = Database.get_global_instance() self.database = database self.d0, self.d2, self.d4, self.d6, self.d8, self.Ry = database.get_quantum_defect_parameters( self.species, self.l, self.j ) @property def mu(self) -> float: r"""The reduced mass in atomic units, i.e. return m_{Core} / (m_{Core} + m_e). To get the reduced mass in atomic units, we use the species dependent Rydberg constant .. math:: R_{m_{Core}} / R_{\infty} = \frac{m_{Core}}{m_{Core} + m_e} """ return self.Ry / self.Ry_inf @property def n_star(self) -> float: """The effective principal quantum number.""" delta_nlj = ( self.d0 + self.d2 / (self.n - self.d0) ** 2 + self.d4 / (self.n - self.d0) ** 4 + self.d6 / (self.n - self.d0) ** 6 ) return self.n - delta_nlj @property def energy(self) -> float: r"""The energy of a Rydberg state with principal quantum number n in atomic units. The effective principal quantum number in quantum defect theory is defined as series expansion .. math:: n^* = n - \\delta_{nlj} where .. math:: \\delta_{nlj} = d_{0} + \frac{d_{2}}{(n - d_{0})^2} + \frac{d_{4}}{(n - d_{0})^4} + \frac{d_{6}}{(n - d_{0})^6} is the quantum defect. The energy of the Rydberg state is then given by .. math:: E_{nlj} / E_H = -\frac{1}{2} \frac{Ry}{Ry_\infty} \frac{1}{n^*} where :math:`E_H` is the Hartree energy (the atomic unit of energy). """ return -0.5 * self.mu / self.n_star**2