# AC Stark Maps#

The following classes provide methods for calculating AC Stark Maps for Rydberg manifolds using Floquet or other approximate methods.

## Basis Generation#

class StarkBasisGenerator(atom)[source]#

Base class for determining the basis of the Rydberg manifold and associated properties.

Defines logic for determining the basis of states to include in a calculation and obtains the energy levels and dipole moments to build the Hamiltonian from the provided ARC atom.

This class should be inherited from to create a specific calculation.

Parameters
 `defineBasis`(n, l, j, mj, q, nMin, nMax, maxL) Initializes basis of states around state of interest

### Attributes#

 `basisStates` List of basis states for calculation in the form [ [n,l,j,mj], ...]. `H` Diagonal elements of Stark-matrix. `V` Off-diagonal elements of Stark-matrix divided by electric field value. `bareEnergies` bareEnergies is list of energies corresponding to `basisStates`.

## Shirley’s Method#

class ShirleyMethod(atom)[source]#

Calculates Stark Maps for a single atom in a single oscillating field

Uses Shirley’s Time Independent Floquet Hamiltonian Method 1. More detail can be found in the review of Semiclassical Floquet Theories by Chu 2 and its application in Meyer et al 3.

For examples demonstrating basic usage see Shirley Method Examples.

Parameters

Examples

AC Stark Map calculation

```>>> from arc import Rubidium85, ShirleyMethod
>>> calc = ShirleyMethod(Rubidium85())
>>> calc.defineBasis(56, 2, 2.5, 0.5, 0, 45, 70, 10)
>>> calc.defineShirleyHamiltonian(fn=1)
>>> calc.diagonalise(0.01, np.linspace(1.0e9, 40e9, 402))
>>> print(calc.targetShifts.shape)
(402,)
```

References

1

J. H. Shirley, Physical Review 138, B979 (1965) https://link.aps.org/doi/10.1103/PhysRev.138.B979

2

Shih-I Chu, “Recent Developments in Semiclassical Floquet Theories for Intense-Field Multiphoton Processes”, in Adv. At. Mol. Phys., vol. 21 (1985) http://www.sciencedirect.com/science/article/pii/S0065219908601438

3

D. H. Meyer, Z. A. Castillo, K. C. Cox, P. D. Kunz, J. Phys. B: At. Mol. Opt. Phys., 53, 034001 (2020) https://doi.org/10.1088/1361-6455/ab6051

### Calculate#

 `defineBasis`(n, l, j, mj, q, nMin, nMax, maxL) Initializes basis of states around state of interest `defineShirleyHamiltonian`(fn[, debugOutput]) Create the Shirley time-independent Floquet Hamiltonian. `diagonalise`(eFields, freqs[, ...]) Finds atom eigenstates versus electric field and driving frequency

### Attributes#

 `basisStates` List of basis states for calculation in the form [ [n,l,j,mj], ...]. `H0` diagonal elements of Floquet-matrix (detuning of states) calculated by `defineShirleyHamiltonian` with units GHz relative to ionization energy. `B` off-diagonal elements of Floquet Hamiltonian. `dT` diagonal prefactors of frequency elements of Floquet Hamiltonian. `eFields` Saves electric field (in units of V/m) for which energy levels vs frequency are calculated `freqs` Saves frequency (in units of Hz) for which energy levels vs electric field are calculated `targetShifts` This is the shift of the target state relative to the zero field energy for an applied field of `eField` and `freq`. `eigs` Array of eigenValues corresponding to the energies of the atom states for the electric field eField at the frequency freq. `eigVectors` Array of eigenvectors corresponding to the eigenValues of the solve. `transProbs` Probability to transition from the target state to another state in the basis.

## RWA Approximation#

class RWAStarkShift(atom)[source]#

Approximately calculates Stark Maps for a single atom in a single oscillating field

Assumes the rotating wave approximation applies independently for the field interaction with all possible dipole transitions. Approximation is generally reasonable for weak driving fields such that no more than a single resonance contributes significantly to the overall Stark shift. When field is far-detuned from all transitions, error tends to a factor of 2.

For an example of usage and comparison to other methods see RWAStarkShift Example.

Parameters

atom (`AlkaliAtom`) – ={ `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` } Select the alkali metal for energy level diagram calculation

Examples

Approximate AC Stark Map calculation

```>>> from arc import Rubidium85, RWAStarkShift
>>> calc = RWAStarkShift(Rubidium85())
>>> calc.defineBasis(56, 2, 2.5, 0.5, 0, 45, 70, 10)
>>> calc.findDipoleCoupledStates()
>>> calc.makeRWA(0.01, np.linspace(1.0e9, 40e9, 402))
>>> print(calc.starkShifts.shape)
(402,)
```

### Calculate#

 `defineBasis`(n, l, j, mj, q, nMin, nMax, maxL) Initializes basis of states around state of interest `findDipoleCoupledStates`([debugOutput]) Finds the states in `basisStates` that directly couple to `targetState` via single photon electric dipole transitions. `makeRWA`(efields, freqs[, maxRes, zip_inputs]) Calculates the total Rotating-Wave Approximation AC stark shift

### Attributes#

 `basisStates` List of basis states for calculation in the form [ [n,l,j,mj], ...]. `dipoleCoupledStates` List of basis states that are dipole coupled to the target state. `dipoleCoupledFreqs` Transition frequencies in Hz between `targetState` and `dipoleCoupledStates`. `starkShifts` Saves results of `makeRWA` caclulations.