TwoJManifold

TwoJManifold#

class TwoJManifold(atom, nG, lG, jG, nE, lE, jE)#

Bases: AtomManifold

TwoJManifold ground/excited manifolds (\(J_g\rightarrow J_e\)).

Builds combined state list, operators, linewidths, reduced DME, saturation intensity and Doppler temperature for an alkali D-line transition.

Examples:

% Example1: Build D1/D2 manifolds from an alkali atom
alk = Alkali("Rubidium87");
D1  = alk.D1;                    % :class:`TwoJManifold` (D1)
D2  = alk.D2;                    % :class:`TwoJManifold` (D2)
Isat = D2.SaturationIntensity(max(D2.FGround),max(D2.FGround), ...
                              max(D2.FExcited),max(D2.FExcited));
% Example2: Hamiltonians and dressed states vs bias field
B   = MagneticField(bias=[0;0;2e-4]);
Hz  = D2.HamiltonianAtomBiasField(B);
[tbl,U] = D2.BiasDressedStateList(B);
Constructor Summary
TwoJManifold(atom, nG, lG, jG, nE, lE, jE)#

Construct a TwoJManifold.

Parameters:
  • atom (Atom) – Atom context

  • nG (int32) – Ground principal quantum number

  • lG (int32) – Ground \(L\)

  • jG (double) – Ground \(J\)

  • nE (int32) – Excited principal quantum number

  • lE (int32) – Excited \(L\)

  • jE (double) – Excited \(J\)

Property Summary
DopplerTemperature double#

Doppler temperature [K]

EnergyExcited double#

Excited hyperfine energies [Hz]

EnergyGround double#

Ground hyperfine energies [Hz]

FExcited double#

Excited hyperfine \(F\)

FGround double#

Ground hyperfine \(F\)

FOperator cell#

Hyperfine spin operators (block-diagonal)

HFSCoefficientExcited#

[A,B] excited hyperfine coefficients (Hz)

HFSCoefficientGround#

[A,B] ground hyperfine coefficients (Hz)

IOperator cell#

Nuclear spin operators (block-diagonal)

JExcited double#

Excited \(J\)

JGround double#

Ground \(J\)

JOperator cell#

Electronic spin operators (block-diagonal excited/ground)

LExcited int32#

Excited \(L\)

LGround int32#

Ground \(L\)

LandegFExcited double#

Excited Landé \(g_F\)

LandegFGround double#

Ground Landé \(g_F\)

LandegJExcited double#

Excited Landé \(g_J\)

LandegJGround double#

Ground Landé \(g_J\)

LifetimeExcited double#

Excited-state lifetime [s]

MFExcited double#

Excited \(M_F\)

MFGround double#

Ground \(M_F\)

NExcited int32#

Excited principal quantum number

NGround int32#

Ground principal quantum number

NaturalLinewidth double#

Natural linewidth [Hz] (no 2π)

ReducedDipoleMatrixElement double#

\(\langle J_g\Vert d\Vert J_e\rangle\) [C·m]

ReducedSaturationIntensity double#

Reduced Isat [W/m^2]

ReducedSaturationIntensityLu double#

Reduced Isat [mW/cm^2]

StateList table#

Combined state table with labels and flags

Method Summary
BiasDressedStateList(B, isPlot, options)#

Compute dressed states versus bias field and assemble blocks.

Parameters:
  • B (MagneticField) – Magnetic field

  • isPlot (logical, optional) – Plot results

  • samplingSize (double, optional) – Number of bias samples

Returns:

Dressed state table, unitary U, and branch map

Return type:

table, double, cell

DipoleMatrixElement(fG, mfG, fE, mfE, q, U)#

Dipole matrix element \(\langle f_G,m_F^G| d_q | f_E,m_F^E\rangle\) [C·m].

Selection rule: \(m_F^E + q = m_F^G\). Sign of \(q\) follows Steck’s convention.

\[m_F^E = m_F^G + q\]
Parameters:
  • fG (double) – Ground \(F\)

  • mfG (double) – Ground \(M_F\)

  • fE (double) – Excited \(F'\)

  • mfE (double) – Excited \(M_F'\)

  • q (double) – Spherical component (\(-1,0,+1\))

  • U (double, optional) – Basis transform

Returns:

Dipole matrix element [C·m]

Return type:

double

DipoleMatrixElementNu(fG, mfG, fE, mfE, q, U)#

Dipole matrix element normalized by reduced DME (Steck tables).

\[d_\nu = \frac{\langle f_G m_F^G | d_q | f_E m_F^E \rangle}{\langle J_G \Vert d \Vert J_E \rangle}\]
Returns:

Dimensionless ratio

Return type:

double

HamiltonianAtom(fRot, U)#

Diagonal Hamiltonian with rotating-frame shift on excited states.

\[H_a = U^\dagger \, \operatorname{diag}\big(E - f_\mathrm{rot}\,\chi_\mathrm{exc}\big) \, U\]
Parameters:
  • fRot (double, optional) – Rotating-frame frequency [Hz]

  • U (double, optional) – Basis transform

Returns:

Hamiltonian matrix [Hz]

Return type:

double

HamiltonianAtomBiasField(B, U)#

Zeeman Hamiltonian from OneJManifold blocks.

\[H_Z = U^\dagger \, \mathrm{blkdiag}\big(H_Z^{(e)}, H_Z^{(g)}\big) \, U\]

where each block uses \(H_Z = \mu_B ( g_J \mathbf{J} + g_I \mathbf{I} )\cdot\mathbf{B} / h\).

Parameters:
  • B (MagneticField) – Magnetic field object

  • U (double, optional) – Basis transform

Returns:

Hamiltonian matrix [Hz]

Return type:

double

HamiltonianAtomLaser(laser, fRot, U)#

Atom-light interaction Hamiltonian \(H_\mathrm{AL}(t)\).

\[H_{\mathrm{AL}}(t) = \sum_{q=-1}^{+1} \frac{\Omega^*}{2}\, e_q\, \Sigma_q\, e^{i\Delta t} + \mathrm{h.c.}\]
Parameters:
  • laser (Laser) – Driving field

  • fRot (double, optional) – Rotating-frame frequency [Hz]

  • U (double, optional) – Basis transform

Returns:

Function handle H(r,t) [Hz]

Return type:

function_handle

HamiltonianAtomLaserOrigin(laser, fRot, U)#

Atom-light interaction Hamiltonian \(H_\mathrm{AL}(t=0,r=0)\).

\[H_{\mathrm{AL}}(t) = \sum_{q=-1}^{+1} \frac{\Omega^*}{2}\, e_q\, \Sigma_q\, e^{i\Delta t} + \mathrm{h.c.}\]
Parameters:
  • laser (Laser) – Driving field

  • fRot (double, optional) – Rotating-frame frequency [Hz]

  • U (double, optional) – Basis transform

Returns:

Function handle H(r,t) [Hz]

Return type:

function_handle

LaserDressedStateListLargeDetuning(laser)#

Compute laser-dressed states for large detuning limit.

Calculates the AC Stark-shifted energy levels for both ground and excited state manifolds in the presence of a laser field. The method combines dressed states from separate ground and excited manifolds, properly indexing and energy-shifting the excited states by the transition frequency. Valid in the large detuning limit where laser detuning exceeds hyperfine splitting.

Parameters:

laser (Laser) – Laser object specifying field parameters

Returns:

Combined state table with AC Stark energy shifts

Return type:

table

Returns:

Table with columns from StateList plus EnergyShift containing AC Stark shifts [Hz]. Excited states are energy-shifted by the transition frequency and indexed after ground states.

Notes:

The method creates separate OneJManifold objects for ground and excited states, computes their individual AC Stark shifts, then combines them with proper energy referencing and state indexing.

LaserDressedStateListSmallDetuning(laser, isPlot, options)#

Compute laser-dressed states for small detuning regime using exact diagonalization.

Calculates AC Stark-shifted energy levels by exactly diagonalizing the combined atomic and atom-laser interaction Hamiltonians. Valid in the small detuning regime where the laser detuning is comparable to or smaller than the hyperfine splitting, allowing application of the rotating wave approximation. Uses adiabatic continuation via eigenshuffle() to track eigenstate evolution with laser intensity.

Parameters:
  • laser (Laser) – Laser object specifying field parameters

  • isPlot (logical, optional) – Flag to generate AC Stark shift plot vs intensity

  • samplingSize (double, optional) – Number of intensity points for adiabatic continuation (default: 1000)

Returns:

Dressed state table, unitary transformation matrix, and AC Stark map

Return type:

(table, double, cell)

Returns:

  • dressedStateList: Table with StateList columns plus EnergyShift [Hz] and DressedState eigenvectors

  • U: Unitary transformation matrix connecting bare to dressed states

  • acMap: Cell array {intensityList, energyMatrix} for plotting AC Stark shifts vs intensity

Notes:

The method constructs the total Hamiltonian \(H = H_{\text{atom}} + \sqrt{s} H_{\text{AL}}\) where \(s\) ranges from 0 to 1, corresponding to laser intensities from 0 to the full intensity. The eigenshuffle() algorithm ensures consistent eigenstate tracking during the adiabatic sweep, preventing level crossings from scrambling state assignments.

LoweringOperator(q, U)#

Spherical lowering operator (see Steck Eq. 7.407).

\[\Sigma_q = \sum_{g,e} |g\rangle\langle e|\, d_\nu(g\leftarrow e;q)\]
ReducedRabiFrequency(laser)#

Reduced Rabi frequency for linearly polarized light.

\[\Omega = -\sqrt{\frac{I}{2 I_{\mathrm{sat}}^{(\mathrm{red})}}}\, \Gamma\]
Parameters:

laser (Laser) – Driving field

Returns:

\(\Omega\) [Hz]

Return type:

double

SaturationIntensity(fG, mfG, fE, mfE, U)#

Saturation intensity for specified sublevels.

\[I_{\mathrm{sat}} = \frac{I_{\mathrm{sat}}^{(\mathrm{red})}}{|d_\nu|^2}\]
Returns:

\(I_{sat}\) [W/m^2]

Return type:

double

getMIMJ()#

Compute \((M_I,M_J)\) labels by adiabatic mapping.

Returns:

Table of MI, MJ per basis state

Return type:

table