OpticalLattice

OpticalLattice#

class OpticalLattice(atom, laser, name, options)#

Bases: OpticalPotential

OpticalLattice models 1D optical lattice band structure and couplings.

Provides band energies and states via BandEnergy, BlochState, BlochStateFourier, BlochStatePeriodic, Berry connection BerryConnection, amplitude-modulation couplings AmpModCoupling, and frequency scalings (AxialFrequency, RadialFrequency) derived from the Laser and Atom parameters. Quasi- momentum \(q\) is in [1/m], lattice spacing \(a=\lambda/2\) in [m], and wavevector \(\mathbf{k}\) in [rad/m].

Constructor Summary
OpticalLattice(atom, laser, name, options)#

OpticalLattice constructor.

Parameters:
  • atom (Atom) – Atomic species and structure data

  • laser (Laser) – Lattice-forming laser/beam

  • name (string, optional) – Identifier for this lattice

  • manifold (string, optional) – Hyperfine manifold used for polarizability calculations

  • stateIndex (double, optional) – Sublevel index within the chosen manifold

Property Summary
AmpMod#

Cached amplitude-modulation response (implementation-dependent)

AmpModCoupling#

Cached amplitude-modulation coupling \(A_{mn}(q)\); size ~ (nBands x nBands x n_q)

AxialFrequency#

Best-available \(f_z\) in [Hz]

BandEnergy#

Cached band energies \(E_n(q)\) in [Hz]; size ~ (nBands x n_q)

BandIndexMax#

Maximum band index included (largest \(n\) requested)

BandIndexMaxFourier = 101#

Plane-wave cutoff (odd) : number of Fourier components \(n_{\mathrm{max}}\)

BandIndexMaxFourierDefault = 101#

Default plane-wave cutoff \(n_{\mathrm{max}}\) (odd)

BerryConnection#

Cached Berry connection \(\mathcal{A}_{mn}(q)\); size ~ (nBands x nBands x n_q)

BlochState#

Cached Bloch states \(\phi_{n,q}(x)\) (functions or arrays)

BlochStateFourier#

Cached plane-wave coefficients \(F_{j n}(q)\); size ~ (n_max x nBands x n_q)

BlochStatePeriodic#

Cached periodic part \(u_{n,q}(x)\) (functions or arrays)

Depth#

Best-available depth \(V_0\) in [Hz]

DepthKd#

Lattice depth from Kapitza–Dirac calibration \(V_0\) in [Hz]

DepthLaser#

Depth from laser intensity \(V_0\) in [Hz]

DepthLu#

Dimensionless depth \(V_0/E_r\) (in recoil units)

DepthSpec#

Lattice depth from spectroscopy \(V_0\) in [Hz]

HarmonicFrequency#

Best-available \(f_0\) in [Hz]

LatticeSpacing#

Lattice spacing \(a=\lambda/2\) in [m]

QuasiMomentumList#

Quasi-momentum sampling \(q\) in [1/m]

RadialFrequency#

Best-available \(f_\rho\) in [Hz]

RadialFrequencySlosh#

Measured radial slosh frequency \(f_\rho\) in [Hz]

SpaceList#

Spatial sampling list \(x\) or grid specification (implementation-dependent)

Method Summary
HamiltonianAmpModFourier1D(q, wf, nMax)#

Build time-dependent Fourier-space Hamiltonian under amplitude modulation.

Parameters:
  • q (double) – Quasi-momentum in [1/m]

  • wf (Waveform) – Modulation waveform \(m(t)\)

  • nMax (double) – Plane-wave cutoff (odd)

Returns:

Function handle \(H(t)\) that yields the Hamiltonian matrix

Return type:

function_handle

computeAll1D(nq, n, x)#

Precompute bands, plane-wave coeffs, and couplings on a uniform q-grid.

Parameters:
  • nq (double, optional) – Number of q samples

  • n (double, optional) – Max band index n to include

computeAmpModCoupling1D(q, n)#

Compute amplitude-modulation coupling matrix between bands.

Parameters:
  • q (double, optional) – Quasi-momentum grid in [1/m]

  • n (double, optional) – Band indices

Returns:

Coupling matrix \(A_{mn}(q)\)

Return type:

double array (nBands x nBands x n_q)

computeBand1D(q, n, x, options)#

Compute 1D Bloch bands and states for quasimomentum \(q\) and band index \(n\).

Parameters:
  • q (double) – Quasi-momentum in [1/m] (can be vector)

  • n (double) – Band indices (0=s,1=p,…) (vector of nonnegative integers)

  • x (double, optional) – Spatial grid \(x\) in [m] for real-space wavefunctions (optional)

  • nMax (double, optional) – Plane-wave cutoff (odd) overriding default

Returns:

Band energies \(E_n(q)\) in [Hz]

Return type:

double array (length(n) x length(q))

Returns:

Fourier coefficients \(F_{j n}(q)\)

Return type:

double array (nMax x length(n) x length(q))

Returns:

Bloch states \(\phi_{n,q}(x)\) in real space

Return type:

function_handle cell or double array depending on \(x\)

Returns:

Periodic parts \(u_{n,q}(x)\) when requested

Return type:

function_handle cell or double array

computeBandPopulation1D(psicj, n, x)#

Compute band populations from real-space wavefunction \(\psi(x)\).

Parameters:
  • psicj (double) – Conjugate row-vectors of \(\psi\) (nPsi x N_x)

  • n (double, optional) – Band index/indices (0=s,1=p,…)

  • x (double, optional) – Spatial grid \(x\) in [m] (optional)

Returns:

Populations per state and band (nPsi x nBands)

Return type:

double

computeBandPopulationFourier1D(ucj, q, n)#

Compute band populations from Fourier-periodic part \(u(x)\).

Parameters:
  • ucj (double) – Conjugate row-vectors of \(u\) in Fourier basis (n_u x nFourier)

  • q (double, optional) – Quasi-momentum samples in [1/m]

  • n (double, optional) – Band index/indices (0=s,1=p,…)

Returns:

Populations per q and band (n_q x nBands)

Return type:

double

computeBerryConnection1D(q, n)#

Compute Berry connection \(\mathcal{A}_{mn}(q)\) from plane-wave \(F_{jn}(q)\).

Parameters:
  • q (double, optional) – Quasi-momentum grid in [1/m]

  • n (double, optional) – Band indices

Returns:

Berry connection \(\mathcal{A}_{mn}(q)\)

Return type:

double array (nBands x nBands x n_q)

computeFloquetAmpMod1D(q, n, wf, isShuffle)#

Compute Floquet quasi-energies and modes under amplitude modulation.

Parameters:
  • q (double) – Quasi-momentum samples in [1/m]

  • n (double) – Band indices used for projection

  • wf (Waveform) – Modulation waveform \(m(t)\)

Returns:

Quasi-energies \(E_F\) in [Hz]

Return type:

double array (nBands x n_q)

Returns:

Floquet modes projected onto plane-wave basis

Return type:

double array (nMax x nBands x n_q)

computeQuasimomentumDistribution1D(psicj, n, x)#
computeTransitionFrequency1D(q, n1, n2)#

Compute transition frequencies \(|E_{n_2}(q)-E_{n_1}(q)|\).

Parameters:
  • q (double) – Quasi-momentum in [1/m]

  • n1 (double) – Lower band index \(n_1\)

  • n2 (double) – Upper band index \(n_2\)

Returns:

Transition frequency in [Hz] (same shape as \(q\))

Return type:

double

computeTransitionQuasiMomentum1D(freq, n1, n2)#

Compute quasi-momentum \(q\) at which \(|E_{n_2}(q)-E_{n_1}(q)|=f\).

Parameters:
  • freq (double) – Target transition frequency in [Hz]

  • n1 (double) – Lower band index \(n_1\)

  • n2 (double) – Upper band index \(n_2\)

Returns:

Resonant \(q\) values in [1/m]

Return type:

double

computeTransitionQuasiMomentumFast1D(freq, n1, n2)#

Approximate resonant \(q\) using linearized \(\Delta E(q)\) near two roots.

Parameters:
  • freq (double) – Target transition frequency in [Hz]

  • n1 (double) – Lower band index \(n_1\)

  • n2 (double) – Upper band index \(n_2\)

Returns:

Estimated resonant \(q\) in [1/m]

Return type:

double

plotAmpModCoupling1D(n, isPlotDiagonal)#

Plot amplitude-modulation coupling amplitude and phase versus \(q\).

Parameters:
  • n (double, optional) – Band indices (vector)

  • isPlotDiagonal (logical, optional) – Whether to include diagonal terms \(m=n\)

plotBand1D(n)#

Plot 1D band energies \(E_n(q)\) versus quasi-momentum \(q\).

Parameters:

n (double, optional) – Band indices to plot (0=s,1=p,…)

plotBandTransition1D(freq, n)#

Plot vertical transition lines at resonance for frequency \(f\).

Parameters:
  • freq (double, optional) – Modulation frequency \(f\) in [Hz]

  • n (double, optional) – Band indices (0=s,1=p,…) used for overlays

plotBerryConnection1D(n, isPlotDiagonal)#

Plot Berry connection amplitude and phase versus \(q\).

Parameters:
  • n (double, optional) – Band indices (vector)

  • isPlotDiagonal (logical, optional) – Whether to include diagonal terms \(m=n\)

removeGauge()#

Fix gauge to make \(\mathcal{A}_{nn}(q)\) single-valued and smooth.

spaceFunc()#

Build lattice potential \(V(\mathbf{r})\) for 1D standing wave or Gaussian.

Returns:

function handle mapping \(\mathbf{r}\) to \(V(\mathbf{r})\) [Hz]

Return type:

function_handle

updateIntensity()#

Set laser intensity to achieve target depth \(V_0\).