AngularKetFJ

Class Methods

__init__([i_c, s_c, l_c, s_r, l_r, j_c, ...])

Initialize the Spin ket.

calc_matrix_element(other, operator, kappa, q)

Calculate the dimensionless angular matrix element.

calc_reduced_matrix_element(other, operator, ...)

Calculate the reduced angular matrix element.

calc_reduced_overlap(other)

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

get_qn(qn)

Get the value of a quantum number by name.

sanity_check([msgs])

Check that the quantum numbers are valid.

to_state([coupling_scheme])

Convert to state in the specified coupling scheme.

Class Attributes and Properties

j_c

Total core electron angular quantum number (s_c + l_c).

f_c

Total core angular quantum number (j_c + i_c).

j_r

Total rydberg electron angular quantum number (s_r + l_r).

coupled_quantum_numbers

Mapping of coupled quantum numbers to their constituent quantum numbers.

coupling_scheme

Name of the coupling scheme, e.g. 'LS', 'JJ', or 'FJ'.

f_tot

Total atom angular quantum number (including nuclear, core electron and rydberg electron contributions).

i_c

Nuclear spin quantum number.

l_c

Core electron orbital quantum number (usually 0).

l_r

Rydberg electron orbital quantum number.

m

Magnetic quantum number, which is the projection of f_tot onto the quantization axis.

quantum_number_names

Names of all well defined spin quantum numbers (without the magnetic quantum number m) in this class.

quantum_numbers

The quantum numbers corresponding to the quantum_number_names (without the magnetic quantum number m).

s_c

Core electron spin quantum number (0 for alkali atoms, 0.5 for alkaline earth atoms).

s_r

Rydberg electron spin quantum number (always 0.5).

class rydstate.angular.AngularKetFJ(i_c=None, s_c=None, l_c=0, s_r=0.5, l_r=None, j_c=None, f_c=None, j_r=None, f_tot=None, m=None, species=None)[source]

Initialize the Spin ket.

Parameters:
  • i_c (float)

  • s_c (float)

  • l_c (int)

  • s_r (float)

  • l_r (int)

  • j_c (float)

  • f_c (float)

  • j_r (float)

  • f_tot (float)

  • m (float | None)

  • species (str | SpeciesObject | None)

calc_matrix_element(other, operator, kappa, q)

Calculate the dimensionless angular matrix element.

Use the Wigner-Eckart theorem to calculate the angular matrix element from the reduced matrix element. We stick to the convention from Edmonds 1985 “Angular Momentum in Quantum Mechanics”, see equation (5.4.1). This means, calculate the following matrix element:

\[\left\langle self | \hat{O}^{(\kappa)}_q | other \right\rangle = <\alpha',f_{tot}',m'| \hat{O}^{(\kappa)}_q |\alpha,f_{tot},m> = (-1)^{(f_{tot} - m)} \cdot \mathrm{Wigner3j}(f_{tot}', \kappa, f_{tot}, -m', q, m) \cdot <\alpha',f_{tot}' || \hat{O}^{(\kappa)} || \alpha,f_{tot}>\]

where alpha denotes all other quantum numbers and \(<\alpha',f_{tot}' || \hat{O}^{(\kappa)} || \alpha,f_{tot}>\) is the reduced matrix element (see calc_reduced_matrix_element).

Parameters:
  • other (AngularKetBase) – The other AngularKet \(|other>\).

  • operator (Literal['spherical', '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 type \(\hat{O}_{kq}\) for which to calculate the matrix element. E.g. ‘spherical’, ‘s_tot’, ‘l_r’, etc.

  • kappa (int) – The rank \(\kappa\) of the angular momentum operator.

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

Return type:

float

Returns:

The dimensionless angular matrix element.

calc_reduced_matrix_element(other, operator, kappa)

Calculate the reduced angular matrix element.

We follow equation (7.1.7) from Edmonds 1985 “Angular Momentum in Quantum Mechanics”. This means, calculate the following matrix element:

\[\left\langle self || \hat{O}^{(\kappa)} || other \right\rangle\]
Return type:

float

Parameters:
  • self (Self)

  • other (AngularKetBase)

  • operator (Literal['spherical', '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'])

  • kappa (int)

calc_reduced_overlap(other)

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

If both kets are of the same type (=same coupling scheme), this is just a delta function of all spin quantum numbers. If the kets are of different types, the overlap is calculated using the corresponding Clebsch-Gordan coefficients (/ Wigner-j symbols).

Return type:

float

Parameters:

other (AngularKetBase)

get_qn(qn)

Get the value of a quantum number by name.

Return type:

float

Parameters:

qn (Literal['i_c', 's_c', 'l_c', 's_r', 'l_r', 's_tot', 'l_tot', 'j_c', 'j_r', 'j_tot', 'f_c', 'f_tot'])

i_c: float

Nuclear spin quantum number.

l_c: int

Core electron orbital quantum number (usually 0).

l_r: int

Rydberg electron orbital quantum number.

m: float | None

Magnetic quantum number, which is the projection of f_tot onto the quantization axis. If None, only reduced matrix elements can be calculated

quantum_numbers: tuple[float, ...]

The quantum numbers corresponding to the quantum_number_names (without the magnetic quantum number m).

s_c: float

Core electron spin quantum number (0 for alkali atoms, 0.5 for alkaline earth atoms).

s_r: float

Rydberg electron spin quantum number (always 0.5).

to_state(coupling_scheme=None)

Convert to state in the specified coupling scheme.

Parameters:

coupling_scheme (Optional[Literal['LS', 'JJ', 'FJ']]) – The coupling scheme to convert to (e.g. “LS”, “JJ”, “FJ”). If None, the state will be a trivial state (one component) in the current coupling scheme.

Return type:

AngularState[Any]

Returns:

The angular state in the specified coupling scheme.

quantum_number_names: ClassVar = ('i_c', 's_c', 'l_c', 's_r', 'l_r', 'j_c', 'f_c', 'j_r', 'f_tot')

Names of all well defined spin quantum numbers (without the magnetic quantum number m) in this class.

coupled_quantum_numbers: ClassVar = {'f_c': ('i_c', 'j_c'), 'f_tot': ('f_c', 'j_r'), 'j_c': ('s_c', 'l_c'), 'j_r': ('s_r', 'l_r')}

Mapping of coupled quantum numbers to their constituent quantum numbers.

coupling_scheme: Literal['LS', 'JJ', 'FJ'] = 'FJ'

Name of the coupling scheme, e.g. ‘LS’, ‘JJ’, or ‘FJ’.

j_c: float

Total core electron angular quantum number (s_c + l_c).

j_r: float

Total rydberg electron angular quantum number (s_r + l_r).

f_c: float

Total core angular quantum number (j_c + i_c).

f_tot: float

Total atom angular quantum number (including nuclear, core electron and rydberg electron contributions).

sanity_check(msgs=None)[source]

Check that the quantum numbers are valid.

Return type:

None

Parameters:

msgs (list[str] | None)