Source code for ryd_numerov.elements.rubidium

from pathlib import Path
from typing import ClassVar

from ryd_numerov.elements.base_element import BaseElement


class _RubidiumAbstract(BaseElement):
    Z = 37
    s = 1 / 2
    ground_state_shell = (5, 0)
    _additional_allowed_shells: ClassVar = [(4, 2), (4, 3)]

    _core_electron_configuration = "4p6"
    _nist_energy_levels_file = Path(__file__).parent / "nist_energy_levels" / "rubidium.txt"

    # https://journals.aps.org/pra/pdf/10.1103/PhysRevA.83.052515
    _ionization_energy = (1_010_029.164_6, 0.000_3, "GHz")

    potential_type_default = "model_potential_marinescu_1993"

    # older value
    # https://webbook.nist.gov/cgi/inchi?ID=C7440177&Mask=20
    # _ionization_energy = (4.177_13, 0.000_002, "eV")  # noqa: ERA001
    # corresponds to (1_010_025.54, 0.48, "GHz")

    # -- [1] Phys. Rev. A 83, 052515 (2011) - Rb87
    # -- [2] Phys. Rev. A 67, 052502 (2003) - Rb85
    # -- [3] Phys. Rev. A 74, 054502 (2006) - Rb85
    # -- [4] Phys. Rev. A 74, 062712 (2006) - Rb85
    _quantum_defects: ClassVar = {
        (0, 0.5): (3.1311807, 0.1787, 0, 0, 0),  # [1]
        (1, 0.5): (2.6548849, 0.29, 0, 0, 0),  # [2]
        (1, 1.5): (2.6416737, 0.295, 0, 0, 0),  # [2]
        (2, 1.5): (1.3480948, -0.6054, 0, 0, 0),  # [1]
        (2, 2.5): (1.3464622, -0.594, 0, 0, 0),  # [1]
        (3, 2.5): (0.0165192, -0.085, 0, 0, 0),  # [3]
        (3, 3.5): (0.0165437, -0.086, 0, 0, 0),  # [3]
        (4, 3.5): (0.004, 0, 0, 0, 0),  # [4]
        (4, 4.5): (0.004, 0, 0, 0, 0),  # [4]
    }

    # Phys. Rev. A 49, 982 (1994)
    alpha_c_marinescu_1993 = 9.076
    r_c_dict_marinescu_1993: ClassVar = {0: 1.66242117, 1: 1.50195124, 2: 4.86851938, 3: 4.79831327}
    model_potential_parameter_marinescu_1993: ClassVar = {
        0: (3.69628474, 1.64915255, -9.86069196, 0.19579987),
        1: (4.44088978, 1.92828831, -16.79597770, -0.81633314),
        2: (3.78717363, 1.57027864, -11.6558897, 0.52942835),
        3: (2.39848933, 1.76810544, -12.0710678, 0.77256589),
    }

    # https://iopscience.iop.org/article/10.1088/1674-1056/18/10/025
    model_potential_parameter_fei_2009 = (0.9708, 13.9706, 0.2909, 0.2215)


class Rubidium87(_RubidiumAbstract):
    species = "Rb87"

    _corrected_rydberg_constant = (109736.62301604665, None, "1/cm")


[docs] class Rubidium(Rubidium87): # for backwards compatibility species = "Rb"
class Rubidium85(_RubidiumAbstract): species = "Rb85" _corrected_rydberg_constant = (109736.605, None, "1/cm")