StarkMap#

class StarkMap(atom)[source]#

Calculates Stark maps for single atom in a field

This initializes calculation for the atom of a given type. For details of calculation see Zimmerman 1. For a quick working example see Stark map example snippet.

Parameters

atom (arc.alkali_atom_functions.AlkaliAtom or arc.divalent_atom_functions.DivalentAtom) – ={ arc.alkali_atom_data.Lithium6, arc.alkali_atom_data.Lithium7, arc.alkali_atom_data.Sodium, arc.alkali_atom_data.Potassium39, arc.alkali_atom_data.Potassium40, arc.alkali_atom_data.Potassium41, arc.alkali_atom_data.Rubidium85, arc.alkali_atom_data.Rubidium87, arc.alkali_atom_data.Caesium, arc.divalent_atom_data.Strontium88, arc.divalent_atom_data.Calcium40 arc.divalent_atom_data.Ytterbium174 } Select the alkali metal for energy level diagram calculation

Examples

State \(28~S_{1/2}~|m_j|=0.5\) polarizability calculation

>>> from arc import *
>>> calc = StarkMap(Caesium())
>>> calc.defineBasis(28, 0, 0.5, 0.5, 23, 32, 20)
>>> calc.diagonalise(np.linspace(00.,6000,600))
>>> print("%.5f MHz cm^2 / V^2 " % calc.getPolarizability())
0.76705 MHz cm^2 / V^2

Stark map calculation

>>> from arc import *
>>> calc = StarkMap(Caesium())
>>> calc.defineBasis(28, 0, 0.5, 0.5, 23, 32, 20)
>>> calc.diagonalise(np.linspace(00.,60000,600))
>>> calc.plotLevelDiagram()
>>> calc.showPlot()
<< matplotlib plot will open containing a Stark map >>

Examples

Advanced interfacing of Stark map calculations (StarkMap class) Here we show one easy way to obtain the Stark matrix (from diagonal mat1 and off-diagonal part mat2 ) and basis states (stored in basisStates ), if this middle-product of the calculation is needed for some code build on top of the existing ARC package.

>>> from arc import *
>>> calc = StarkMap(Caesium())
>>> calc.defineBasis(28, 0, 0.5, 0.5, 23, 32, 20)
>>> # Now we have matrix and basis states, that we can used in our own code
>>> # Let's say we want Stark map at electric field of 0.2 V/m
>>> eField = 0.2 # V/m
>>> # We can easily extract Stark matrix
>>> # as diagonal matrix (state detunings)
>>> #  + off-diagonal matrix (propotional to electric field)
>>> matrix = calc.mat1+calc.mat2*eField
>>> # and the basis states as array [ [n,l,j,mj] , ...]
>>> basisStates = calc.basisStates
>>> # you can do your own calculation now...

References

1

M. L. Zimmerman et.al, PRA 20:2251 (1979) https://doi.org/10.1103/PhysRevA.20.2251

Calculate#

defineBasis(n, l, j, mj, nMin, nMax, maxL[, ...])

Initializes basis of states around state of interest

diagonalise(eFieldList[, drivingFromState, ...])

Finds atom eigenstates in a given electric field

Analyse#

getPolarizability([maxField, showPlot, ...])

Returns the polarizability of the state (set during the initalization process).

getState(state, electricField, minN, maxN, maxL)

Returns basis states and coefficients that make up for a given electric field the eigenstate with largest contribution of the original state.

exportData(fileBase[, exportFormat])

Exports StarkMap calculation data.

Visualise#

plotLevelDiagram([units, highlightState, ...])

Makes a plot of a stark map of energy levels

showPlot([interactive])

Shows plot made by plotLevelDiagram

savePlot([filename])

Saves plot made by plotLevelDiagram

Attributes#

Internal variables of the class. This is for low-level access to intermediate results (low level API).

s

spin manifold in which we are working default value of 0.5 is correct for Alkaline Atoms.

y

y[i] is an array of eigenValues corresponding to the energies of the atom states at the electric field eFieldList[i].

ax

pointer towards matplotlib figure axis after plotLevelDiagram is called to create figure

fig

pointer towards matplotlib figure after plotLevelDiagram is called to create figure

mat1

diagonal elements of Stark-matrix (detuning of states) calculated by defineBasis in the basis basisStates.

mat2

off-diagonal elements of Stark-matrix divided by electric field value. To get off diagonal elemements multiply this matrix with electric field value. Full Stark matrix is obtained as fullStarkMatrix = mat1 + mat2 *eField. Calculated by defineBasis in the basis basisStates.

basisStates

List of basis states for calculation in the form [ [n,l,j,mj], ...].

eFieldList

Saves electric field (in units of V/m) for which energy levels are calculated

highlight

highlight[i] is an array of values measuring highlighted feature in the eigenstates at electric field intensity eFieldList[i].

indexOfCoupledState

Index of coupled state (initial state passed to defineBasis) in basisStates list of basis states