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
orarc.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 partmat2
) and basis states (stored inbasisStates
), 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
Calculate#
|
Initializes basis of states around state of interest |
|
Finds atom eigenstates in a given electric field |
Analyse#
|
Returns the polarizability of the state (set during the initalization process). |
|
Returns basis states and coefficients that make up for a given electric field the eigenstate with largest contribution of the original state. |
|
Exports StarkMap calculation data. |
Visualise#
|
Makes a plot of a stark map of energy levels |
|
Shows plot made by |
|
Saves plot made by |
Attributes#
Internal variables of the class. This is for low-level access to intermediate results (low level API).
spin manifold in which we are working default value of 0.5 is correct for Alkaline Atoms. |
|
y[i] is an array of eigenValues corresponding to the energies of the atom states at the electric field eFieldList[i]. |
|
pointer towards matplotlib figure axis after |
|
pointer towards matplotlib figure after |
|
diagonal elements of Stark-matrix (detuning of states) calculated by |
|
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 = |
|
List of basis states for calculation in the form [ [n,l,j,mj], ...]. |
|
Saves electric field (in units of V/m) for which energy levels are calculated |
|
highlight[i] is an array of values measuring highlighted feature in the eigenstates at electric field intensity eFieldList[i]. |
|
Index of coupled state (initial state passed to |