RydbergStateSQDTAlkali

Class Methods

__init__(species, n, *, l[, j, m, sqdt, ...])

Initialize the Rydberg state.

calc_exp_qn(qn)

calc_matrix_element(other, operator, q, *[, ...])

Calculate the matrix element.

calc_reduced_matrix_element(other, operator, *)

Calculate the reduced matrix element.

calc_reduced_overlap(other)

Calculate the reduced overlap <self|other> (ignoring the magnetic quantum number m).

calc_std_qn(qn)

get_binding_energy([unit])

Get the binding energy of the Rydberg state, relative to its ionization energy.

get_black_body_transition_rates(temperature)

Calculate the black body transition rates of the Rydberg state.

get_energy([unit])

Get the energy of the Rydberg state.

get_label([fmt])

Label representing the state.

get_lifetime([temperature, ...])

Calculate the lifetime of the Rydberg state.

get_spontaneous_transition_rates([unit])

Calculate the spontaneous transition rates for the Rydberg state.

to_coupling_scheme(coupling_scheme)

Convert the Rydberg state to a different coupling scheme.

Class Attributes and Properties

coefficients

Return the channel coefficients as numpy array.

norm

Return the norm of the state (should be 1).

nu

The effective principal quantum number nu, defined with reference to the reference ionization energy.

nui

The effective principal quantum number nui, defined with reference to the ionization energy.

radial

The radial part of the Rydberg electron.

rydberg_kets

species

The atomic species of the Rydberg state.

angular

The angular/spin part of the Rydberg electron.

n

The principal quantum number n of the Rydberg state.

f_tot

The total angular momentum quantum number f_tot of the Rydberg state.

class rydstate.rydberg_state.RydbergStateSQDTAlkali(species, n, *, l, j=None, m=NotSet, sqdt=None, potential_class=None)[source]

Initialize the Rydberg state.

Parameters:
  • species (str) – Atomic species.

  • n (int) – Principal quantum number of the rydberg electron.

  • l (int) – Orbital angular momentum quantum number of the rydberg electron.

  • j (float | None) – Angular momentum quantum number of the rydberg electron. Optional, if it is uniquely determined by l (i.e. for l = 0).

  • m (float | NotSet) – Total magnetic quantum number. Optional, only needed for concrete angular matrix elements.

  • sqdt (SQDT | str | None) – The SQDT to use for the state. Either a string representing the tag of the SQDT class to use, or an instance of an SQDT class.

  • potential_class (type[Potential] | str | None) – The potential class to use for the radial ket. Either a string representing the tag of the potential class to use, or a potential class. If None, the default potential class for the species is used.

calc_exp_qn(qn)
Return type:

float

Parameters:

qn (str)

calc_matrix_element(other, operator, q, *, part='all', unit=None)

Calculate the matrix element.

Overloads:
  • self, other (RydbergState), operator (MatrixElementOperator), q (int), part (MatrixElementPart), unit (None) → PintFloat

  • self, other (RydbergState), operator (MatrixElementOperator), q (int), part (MatrixElementPart), unit (str) → float

Parameters:
  • other (RydbergState)

  • operator (Literal['magnetic_dipole', 'electric_monopole', 'electric_dipole', 'electric_quadrupole', 'electric_octupole', 'electric_quadrupole_zero', 'spherical', 'spherical_inner_valence', 'i_c', 's_c', 'l_c', 's_r', 'l_r', 's_tot', 'l_tot', 'j_c', 'j_r', 'j_tot', 'f_c', 'f_tot', 'identity_i_c', 'identity_s_c', 'identity_l_c', 'identity_s_r', 'identity_l_r', 'identity_s_tot', 'identity_l_tot', 'identity_j_c', 'identity_j_r', 'identity_j_tot', 'identity_f_c', 'identity_f_tot'])

  • q (int)

  • part (Literal['all', 'rydberg', 'inner_valence', 'closed_shell_core'])

  • unit (str | None)

Return type:

PlainQuantity[float] | float

Calculate the full matrix element between self and other, also considering the magnetic quantum numbers m of self and other.

\[\left\langle self | r^k_radial \hat{O}^{(k_{angular})}_q | other \right\rangle\]

where hat{O}^{(k_{angular})}_q is the operator of rank k_angular for which to calculate the matrix element. k_radial and k_angular are determined from the operator automatically.

Parameters:
  • other (RydbergState) – The other Rydberg state for which to calculate the matrix element.

  • operator (Literal['magnetic_dipole', 'electric_monopole', 'electric_dipole', 'electric_quadrupole', 'electric_octupole', 'electric_quadrupole_zero', 'spherical', 'spherical_inner_valence', 'i_c', 's_c', 'l_c', 's_r', 'l_r', 's_tot', 'l_tot', 'j_c', 'j_r', 'j_tot', 'f_c', 'f_tot', 'identity_i_c', 'identity_s_c', 'identity_l_c', 'identity_s_r', 'identity_l_r', 'identity_s_tot', 'identity_l_tot', 'identity_j_c', 'identity_j_r', 'identity_j_tot', 'identity_f_c', 'identity_f_tot']) – The operator for which to calculate the matrix element.

  • q (int) – The component of the operator.

  • part (Literal['all', 'rydberg', 'inner_valence', 'closed_shell_core']) – The part of the matrix element to calculate.

  • unit (str | None) – The unit to which to convert the radial matrix element. Can be “a.u.” for atomic units (so no conversion is done), or a specific unit. Default None will return a pint quantity.

Returns:

The matrix element for the given operator.

Return type:

PlainQuantity[float] | float

calc_reduced_matrix_element(other, operator, *, part='all', unit=None)

Calculate the reduced matrix element.

Overloads:
  • self, other (RydbergState), operator (MatrixElementOperator), part (MatrixElementPart), unit (None) → PintFloat

  • self, other (RydbergState), operator (MatrixElementOperator), part (MatrixElementPart), unit (str) → float

Parameters:
  • other (RydbergState)

  • operator (Literal['magnetic_dipole', 'electric_monopole', 'electric_dipole', 'electric_quadrupole', 'electric_octupole', 'electric_quadrupole_zero', 'spherical', 'spherical_inner_valence', 'i_c', 's_c', 'l_c', 's_r', 'l_r', 's_tot', 'l_tot', 'j_c', 'j_r', 'j_tot', 'f_c', 'f_tot', 'identity_i_c', 'identity_s_c', 'identity_l_c', 'identity_s_r', 'identity_l_r', 'identity_s_tot', 'identity_l_tot', 'identity_j_c', 'identity_j_r', 'identity_j_tot', 'identity_f_c', 'identity_f_tot'])

  • part (Literal['all', 'rydberg', 'inner_valence', 'closed_shell_core'])

  • unit (str | None)

Return type:

PlainQuantity[float] | float

Calculate the reduced matrix element between self and other (ignoring m quantum numbers)

\[\left\langle self || r^k_radial \hat{O}^{(k_{angular})} || other \right\rangle\]

where hat{O}^{(k_{angular})} is the operator of rank k_angular for which to calculate the matrix element. k_radial and k_angular are determined from the operator automatically.

Parameters:
  • other (RydbergState) – The other Rydberg state for which to calculate the matrix element.

  • operator (Literal['magnetic_dipole', 'electric_monopole', 'electric_dipole', 'electric_quadrupole', 'electric_octupole', 'electric_quadrupole_zero', 'spherical', 'spherical_inner_valence', 'i_c', 's_c', 'l_c', 's_r', 'l_r', 's_tot', 'l_tot', 'j_c', 'j_r', 'j_tot', 'f_c', 'f_tot', 'identity_i_c', 'identity_s_c', 'identity_l_c', 'identity_s_r', 'identity_l_r', 'identity_s_tot', 'identity_l_tot', 'identity_j_c', 'identity_j_r', 'identity_j_tot', 'identity_f_c', 'identity_f_tot']) – The operator for which to calculate the matrix element.

  • part (Literal['all', 'rydberg', 'inner_valence', 'closed_shell_core']) – The part of the matrix element to calculate.

  • unit (str | None) – The unit to which to convert the radial matrix element. Can be “a.u.” for atomic units (so no conversion is done), or a specific unit. Default None will return a pint quantity.

Returns:

The reduced matrix element for the given operator.

Return type:

PlainQuantity[float] | float

calc_reduced_overlap(other)

Calculate the reduced overlap <self|other> (ignoring the magnetic quantum number m).

Return type:

float

Parameters:

other (RydbergState)

calc_std_qn(qn)
Return type:

float

Parameters:

qn (str)

property coefficients: NDArray[Any]

Return the channel coefficients as numpy array.

get_binding_energy(unit=None)

Get the binding energy of the Rydberg state, relative to its ionization energy.

Overloads:
  • self, unit (None) → PintFloat

  • self, unit (str) → float

Parameters:

unit (str | None)

Return type:

PlainQuantity[float] | float

The binding energy is negative by convention, so it can be added directly to the ionization energy to obtain the total state energy.

The binding energy is given by

\[E = - \frac{Z^2 R_M}{\nu_i^2} = - \frac{1}{2} \frac{Z^2 \mu/m_e}{\nu_i^2} E_H\]

where \(R_M = R_\infty \mu/m_e\) is the mass corrected Rydberg constant, \(Z\) is the net charge of the ionic core seen by the Rydberg electron (note \(E_H = 2 R_\infty\)), \(\mu/m_e\) the reduced mass in atomic units and \(\nu_i\) the effective principal quantum number with reference to the ionization energy, see nui.

get_black_body_transition_rates(temperature, temperature_unit=None, unit=None)

Calculate the black body transition rates of the Rydberg state.

Overloads:
  • self (Self), temperature (PintFloat), temperature_unit (None), unit (None) → tuple[list[Self], PintArray]

  • self (Self), temperature (float), temperature_unit (str), unit (None) → tuple[list[Self], PintArray]

  • self (Self), temperature (PintFloat), temperature_unit (None), unit (str) → tuple[list[Self], NDArray]

  • self (Self), temperature (float), temperature_unit (str), unit (str) → tuple[list[Self], NDArray]

Parameters:
  • self (Self)

  • temperature (float | PlainQuantity[float])

  • temperature_unit (str | None)

  • unit (str | None)

Return type:

tuple[list[Self], NDArray[Any] | PlainQuantity[NDArray[Any]]]

The black body transition 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 (str | None) – The unit of the temperature. Default None will assume the temperature is given as pint.Quantity.

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

  • self (Self)

Returns:

The relevant states and the transition rates.

Return type:

tuple[list[Self], NDArray[Any] | PlainQuantity[NDArray[Any]]]

get_energy(unit=None)

Get the energy of the Rydberg state.

Overloads:
  • self, unit (None) → PintFloat

  • self, unit (str) → float

Parameters:

unit (str | None)

Return type:

PlainQuantity[float] | float

The energy is defined as

\[E = - \frac{1}{2} \frac{\mu}{\nu^2} + E_{ionization}\]

where mu = R_M/R_infty is the reduced mass and nu the effective principal quantum number, and E_{ionization} is the reference ionization threshold of the species.

get_label(fmt='ket')

Label representing the state.

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 state in the given format.

get_lifetime(temperature=None, temperature_unit=None, unit=None)

Calculate the lifetime of the Rydberg state.

Overloads:
  • self → PintFloat

  • self, temperature (PintFloat) → PintFloat

  • self, temperature (float), temperature_unit (str) → PintFloat

  • self, unit (str) → float

  • self, temperature (PintFloat), unit (str) → float

  • self, temperature (float), temperature_unit (str), unit (str) → float

Parameters:
  • temperature (float | PlainQuantity[float] | None)

  • temperature_unit (str | None)

  • unit (str | None)

Return type:

float | PlainQuantity[float]

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 (str | None) – The unit of the temperature. Default None will assume the temperature is given as pint.Quantity.

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

Returns:

The lifetime of the state.

Return type:

float | PlainQuantity[float]

get_spontaneous_transition_rates(unit=None)

Calculate the spontaneous transition rates for the Rydberg state.

Overloads:
  • self (Self), unit (None) → tuple[list[Self], PintArray]

  • self (Self), unit (str) → tuple[list[Self], NDArray]

Parameters:
  • self (Self)

  • unit (str | None)

Return type:

tuple[list[Self], NDArray[Any] | PlainQuantity[NDArray[Any]]]

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

Parameters:
  • unit (str | None) – The unit to which to convert the result. Default None will return a pint.Quantity.

  • self (Self)

Returns:

The relevant states and the transition rates.

Return type:

tuple[list[Self], NDArray[Any] | PlainQuantity[NDArray[Any]]]

property norm: float

Return the norm of the state (should be 1).

property nu: float

The effective principal quantum number nu, defined with reference to the reference ionization energy.

In contrast to nui, nu is defined with reference to the reference ionization energy (see reference_ionization_energy_au).

For states without hyperfine splitting, nui and nu are equal.

property nui: float

The effective principal quantum number nui, defined with reference to the ionization energy.

nui is defined with reference to the ionization energy of the Rydberg electron (see ionization_energy_au), i.e. via the binding energy

\[E = I - \frac{R_M}{\nu_i^2} = I_{\text{ref}} - \frac{R_M}{\nu^2}\]

where \(R_M = R_\infty \mu/m_e\) is the mass corrected Rydberg constant.

Therefore, nui is the quantum number that determines the radial wavefunction, see radial.

property radial: RadialKet

The radial part of the Rydberg electron.

property rydberg_kets: list[RydbergKet]
to_coupling_scheme(coupling_scheme)

Convert the Rydberg state to a different coupling scheme.

Parameters:

coupling_scheme (Literal['LS', 'JJ', 'FJ']) – The coupling scheme to which to convert the Rydberg state.

Return type:

RydbergState

Returns:

The Rydberg state in the new coupling scheme.

species: str

The atomic species of the Rydberg state.

angular: GenericT_AngularKet

The angular/spin part of the Rydberg electron.

n: int

The principal quantum number n of the Rydberg state.

For MQDT states, we define the corresponding principal quantum number n via the number of nodes in the radial wavefunction of the most dominant channel.

f_tot: float

The total angular momentum quantum number f_tot of the Rydberg state.