KetAtom

Class Methods

__init__(species[, n, nu, nui, l, s, j, ...])

Create a single atomic canonical basis state, which is defined by its species and quantum numbers.

get_black_body_transition_rates(temperature)

Calculate the black body transition rates of the KetAtom.

get_energy([unit])

Get the energy of the ket in the given unit.

get_label(fmt)

Label representing the ket.

get_lifetime([temperature, ...])

Calculate the lifetime of the KetAtom.

get_matrix_element(ket, operator, q[, unit])

Get the matrix element between two atomic basis states from the database.

get_spontaneous_transition_rates([unit])

Calculate the spontaneous transition rates for the KetAtom.

Class Attributes and Properties

database

The database used for this object.

f

The total momentum quantum number f (int or half-int).

is_calculated_with_mqdt

Whether the state was calculated with multi-channel quantum defect theory.

is_j_total_momentum

Whether j is the total momentum quantum number, otherwise f is the total momentum quantum number.

j

The expectation value of the total angular quantum number j of all valence electrons.

j_ryd

The expectation value of the total angular quantum number j_{Ryd} of the Rydberg electron.

j_ryd_std

The standard deviation of the total angular quantum number j_{Ryd} of the Rydberg electron.

j_std

The standard deviation of the total angular quantum number j of all valence electrons.

l

The expectation value of the orbital quantum number l of all valence electrons.

l_ryd

The expectation value of the orbital quantum number l_{Ryd} of the Rydberg electron.

l_ryd_std

The standard deviation of the orbital quantum number l_{Ryd} of the Rydberg electron.

l_std

The standard deviation of the orbital quantum number l of all valence electrons.

m

The magnetic quantum number m (int or half-int).

n

The principal quantum number n.

nu

The effective principal quantum number nu.

nui

The expectation value of the effective principal quantum numbers nu_i of the channels.

nui_std

The standard deviation of the effective principal quantum numbers nu_i of the channels.

parity

The parity of the ket.

s

The expectation value of the total spin quantum number s of all valence electrons.

s_std

The standard deviation of the total spin quantum number s of all valence electrons.

species

The atomic species.

underspecified_channel_contribution

The contribution of channels whose quantum numbers are not exactly known.

class KetAtom[source]

Ket for an atomic basis state.

Each KetAtom object uniquely represents a single atomic basis state (and therefore all KetAtom objects are orthogonal). When initializing a KetAtom you have to provide the species of the atom and a combination of quantum numbers, which uniquely define a single atomic basis state (this always includes providing a magnetic quantum number m).

SQDT (Single Channel Quantum Defect Theory) for one valence electron (alkali atoms):

The quantum numbers n (int), l (int), j (half-int) and m (half-int) should be used to define the desired atomic basis state. All other quantum numbers are trivially derived from these: s = 1/2, f = j (we neglect hyperfine interaction for SQDT), nu = n - delta, l_ryd = l, j_ryd = j.

SQDT (Single Channel Quantum Defect Theory) for two valence electrons (earth-alkaline atoms):

The quantum numbers n (int), l_ryd (int), j (int) and m (int) should be used to define the desired atomic basis state. The spin quantum number s is taken from the species label, which must end either with “_singlet” (s=0) or “_triplet” (s=1). Again we neglect hyperfine interaction, thus f = j. And nu = n - delta. All other quantum numbers are not necessarily eigenvalues anymore and are given as expectation values.

MQDT (Multi Channel Quantum Defect Theory) for two valence electrons (earth-alkaline atoms):

The quantum numbers nu (float), f (int or half-int) and m (int or half-int) are still good quantum numbers. All other quantum numbers (like l, s, j, l_ryd, j_ryd) are not necessarily eigenvalues anymore. You can still provide them to specify the atomic basis state, whose expectation value is closest to the provided value.

Examples

>>> import pairinteraction.real as pi
>>> ket_sqdt = pi.KetAtom("Rb", n=60, l=0, m=0.5)
>>> (ket_sqdt.species, ket_sqdt.n, ket_sqdt.l, ket_sqdt.j, ket_sqdt.m, ket_sqdt.s)
('Rb', 60, 0.0, 0.5, 0.5, 0.5)
>>> print(ket_sqdt)
|Rb:60,S_1/2,1/2⟩
>>> ket_mqdt = pi.KetAtom("Yb174_mqdt", nu=60, l=1, f=1, m=1)
>>> (ket_mqdt.species, round(ket_mqdt.nu, 3), ket_mqdt.f, ket_mqdt.m)
('Yb174_mqdt', 60.049, 1.0, 1.0)
>>> print(ket_mqdt)
|Yb174:S=0.4,nu=60.0,L=1.0,J=1,1⟩
__init__(species, n=None, nu=None, nui=None, l=None, s=None, j=None, l_ryd=None, j_ryd=None, f=None, m=None, energy=None, energy_unit=None, parity=None, database=None)[source]

Create a single atomic canonical basis state, which is defined by its species and quantum numbers.

Parameters:
  • species (str) – See attribute.

  • n (Optional[int]) – See attribute. Default None, i.e. load from the database.

  • nu (Optional[float]) – See attribute. Default None, i.e. load from the database.

  • nui (Optional[float]) – See attribute. Default None, i.e. load from the database.

  • l (Optional[float]) – See attribute. Default None, i.e. load from the database.

  • s (Optional[float]) – See attribute. Default None, i.e. load from the database.

  • j (Optional[float]) – See attribute. Default None, i.e. load from the database.

  • l_ryd (Optional[float]) – See attribute. Default None, i.e. load from the database.

  • j_ryd (Optional[float]) – See attribute. Default None, i.e. load from the database.

  • f (Optional[float]) – See attribute. Default None, i.e. load from the database.

  • m (Optional[float]) – See attribute. This should always be provided.

  • energy (Union[float, PlainQuantity[float], None]) – See attribute. Default None, i.e. load from the database.

  • energy_unit (Optional[str]) – In which unit the energy is given, e.g. “GHz”. Default None, i.e. energy is provided as pint object.

  • parity (Optional[Literal['even', 'odd', 'unknown']]) – See attribute. Default None, i.e. load from the database.

  • database (Optional[Database]) – Which database to use. Default None, i.e. use the global database instance.

Return type:

None

property database: Database

The database used for this object.

property species: str

The atomic species.

property n: int

The principal quantum number n.

property nu: float

The effective principal quantum number nu.

property nui: float

The expectation value of the effective principal quantum numbers nu_i of the channels.

property l: float

The expectation value of the orbital quantum number l of all valence electrons.

property s: float

The expectation value of the total spin quantum number s of all valence electrons.

property j: float

The expectation value of the total angular quantum number j of all valence electrons.

property l_ryd: float

The expectation value of the orbital quantum number l_{Ryd} of the Rydberg electron.

property j_ryd: float

The expectation value of the total angular quantum number j_{Ryd} of the Rydberg electron.

property nui_std: float

The standard deviation of the effective principal quantum numbers nu_i of the channels.

property l_std: float

The standard deviation of the orbital quantum number l of all valence electrons.

property s_std: float

The standard deviation of the total spin quantum number s of all valence electrons.

property j_std: float

The standard deviation of the total angular quantum number j of all valence electrons.

property l_ryd_std: float

The standard deviation of the orbital quantum number l_{Ryd} of the Rydberg electron.

property j_ryd_std: float

The standard deviation of the total angular quantum number j_{Ryd} of the Rydberg electron.

property is_j_total_momentum: bool

Whether j is the total momentum quantum number, otherwise f is the total momentum quantum number.

property is_calculated_with_mqdt: bool

Whether the state was calculated with multi-channel quantum defect theory.

property underspecified_channel_contribution: float

The contribution of channels whose quantum numbers are not exactly known.

get_matrix_element(ket, operator, q, unit=None)[source]

Get the matrix element between two atomic basis states from the database.

Parameters:
  • ket (Self) – The second atomic basis state to calculate the matrix element with.

  • operator (Literal['zero', 'energy', 'electric_dipole', 'electric_quadrupole', 'electric_quadrupole_zero', 'electric_octupole', 'magnetic_dipole', 'arbitrary']) – The operator, for which to calculate the matrix element.

  • q (int) – The index for the matrix element.

  • unit (Optional[str]) – The unit to return the matrix element in. Default None will return a pint.Quantity.

Return type:

Union[PlainQuantity[float], PlainQuantity[complex], float, complex]

Returns:

The matrix element between the two states in the given unit or as a pint.Quantity.

property f: float

The total momentum quantum number f (int or half-int).

get_energy(unit=None)

Get the energy of the ket in the given unit.

Parameters:

unit (Optional[str]) – The unit to which to convert the energy to. Default None will return a pint.Quantity.

Return type:

Union[float, PlainQuantity[float]]

Returns:

The energy as float if a unit was given, otherwise a pint.Quantity.

get_label(fmt)

Label representing the ket.

Parameters:

fmt (Literal['raw', 'ket', 'bra']) – The format of the label, i.e. whether to return the raw label, or the label in ket or bra notation.

Return type:

str

Returns:

The label of the ket in the given format.

property m: float

The magnetic quantum number m (int or half-int).

property parity: Literal['even', 'odd', 'unknown']

The parity of the ket.

get_spontaneous_transition_rates(unit=None)[source]

Calculate the spontaneous transition rates for the KetAtom.

The spontaneous transition rates are given by the Einstein A coefficients.

Parameters:

unit (Optional[str]) – The unit to which to convert the result. Default None will return a pint.Quantity.

Return type:

tuple[list[KetAtom], Union[ndarray[tuple[int, ...], dtype[Any]], PlainQuantity[ndarray[tuple[int, ...], dtype[Any]]]]]

Returns:

The relevant states and the transition rates.

get_black_body_transition_rates(temperature, temperature_unit=None, unit=None)[source]

Calculate the black body transition rates of the KetAtom.

The black body transitions rates are given by the Einstein B coefficients, with a weight factor given by Planck’s law.

Parameters:
  • temperature (Union[float, PlainQuantity[float]]) – The temperature, for which to calculate the black body transition rates.

  • temperature_unit (Optional[str]) – The unit of the temperature. Default None will assume the temperature is given as pint.Quantity.

  • unit (Optional[str]) – The unit to which to convert the result. Default None will return a pint.Quantity.

Return type:

tuple[list[KetAtom], Union[ndarray[tuple[int, ...], dtype[Any]], PlainQuantity[ndarray[tuple[int, ...], dtype[Any]]]]]

Returns:

The relevant states and the transition rates.

get_lifetime(temperature=None, temperature_unit=None, unit=None)[source]

Calculate the lifetime of the KetAtom.

The lifetime is the inverse of the sum of all transition rates.

Parameters:
  • temperature (Union[float, PlainQuantity[float], None]) – The temperature, for which to calculate the black body transition rates. Default None will not include black body transitions.

  • temperature_unit (Optional[str]) – The unit of the temperature. Default None will assume the temperature is given as pint.Quantity.

  • unit (Optional[str]) – The unit to which to convert the result. Default None will return a pint.Quantity.

Return type:

Union[float, PlainQuantity[float]]

Returns:

The lifetime of the state.