RydbergStateSQDTDivalent
Class Methods
|
Initialize the Rydberg state. |
|
|
|
Calculate the matrix element. |
|
Calculate the reduced matrix element. |
|
Calculate the reduced overlap <self|other> (ignoring the magnetic quantum number m). |
|
|
|
Get the binding energy of the Rydberg state, relative to its ionization energy. |
|
Calculate the black body transition rates of the Rydberg state. |
|
Get the energy of the Rydberg state. |
|
Label representing the state. |
|
Calculate the lifetime of the Rydberg state. |
|
Calculate the spontaneous transition rates for the Rydberg state. |
|
Convert the Rydberg state to a different coupling scheme. |
Class Attributes and Properties
Return the channel coefficients as numpy array. |
|
Return the norm of the state (should be 1). |
|
The effective principal quantum number nu, defined with reference to the reference ionization energy. |
|
The effective principal quantum number nui, defined with reference to the ionization energy. |
|
The radial part of the Rydberg electron. |
|
The atomic species of the Rydberg state. |
|
The angular/spin part of the Rydberg electron. |
|
The principal quantum number n of the Rydberg state. |
|
The total angular momentum quantum number f_tot of the Rydberg state. |
- class rydstate.rydberg_state.RydbergStateSQDTDivalent(species, n, *, l, s, j=None, f=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.s (
int) – Total electron spin quantum number, i.e. 0 for singlet and 1 for triplet states.j (
int|None) – Total electron angular momentum quantum number. Optional, if it is uniquely determined by l and s (i.e. for l = 0).f (
float|None) – Total angular momentum quantum number, including the nuclear spin. Optional, if it is uniquely determined by j (i.e. for species without nuclear spin).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 (seereference_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 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.