# PairStateInteractions#

class PairStateInteractions(atom, n, l, j, nn, ll, jj, m1, m2, interactionsUpTo=1, s=0.5, s2=None, atom2=None)[source]#

Calculates Rydberg level diagram (spaghetti) for the given pair state

Initializes Rydberg level spaghetti calculation for the given atom species (or for two atoms of different species) in the vicinity of the given pair state. For details of calculation see Ref. 1. For a quick start point example see interactions example snippet. For inter-species calculations see inter-species interaction calculation snippet.

Parameters
• n (int) – principal quantum number for the first atom

• l (int) – orbital angular momentum for the first atom

• j (float) – total angular momentum for the first atom

• nn (int) – principal quantum number for the second atom

• ll (int) – orbital angular momentum for the second atom

• jj (float) – total angular momentum for the second atom

• m1 (float) – projection of the total angular momentum on z-axis for the first atom

• m2 (float) – projection of the total angular momentum on z-axis for the second atom

• interactionsUpTo (int) – Optional. If set to 1, includes only dipole-dipole interactions. If set to 2 includes interactions up to quadrupole-quadrupole. Default value is 1.

• s (float) – optional, spin state of the first atom. Default value of 0.5 is correct for arc.alkali_atom_functions.AlkaliAtom but for arc.divalent_atom_functions.DivalentAtom it has to be explicitly set to 0 or 1 for singlet and triplet states respectively. If s2 is not specified, it is assumed that the second atom is in the same spin state.

• s2 (float) – optinal, spin state of the second atom. If not specified (left to default value None) it will assume spin state of the first atom.

• atom2 (arc.alkali_atom_functions.AlkaliAtom or arc.divalent_atom_functions.DivalentAtom) – optional, specifies atomic species for the second atom, enabeling calculation of inter-species pair-state interactions. If not specified (left to default value None) it will assume spin state of the first atom.

References

1

T. G Walker, M. Saffman, PRA 77, 032723 (2008) https://doi.org/10.1103/PhysRevA.77.032723

Examples

Advanced interfacing of pair-state is2=None, atom2=Nonenteractions calculations (PairStateInteractions class). This is an advanced example intended for building up extensions to the existing code. If you want to directly access the pair-state interaction matrix, constructed by defineBasis, you can assemble it easily from diagonal part (stored in matDiagonal ) and off-diagonal matrices whose spatial dependence is $$R^{-3},R^{-4},R^{-5}$$ stored in that order in matR. Basis states are stored in basisStates array.

>>> from arc import *
>>> calc = PairStateInteractions(Rubidium(), 60,0,0.5,                 60,0,0.5, 0.5,0.5,interactionsUpTo = 1)
>>> # theta=0, phi = 0, range of pqn, range of l, deltaE = 25e9
>>> calc.defineBasis(0 ,0 , 5, 5, 25e9, progressOutput=True)
>>> # now calc stores interaction matrix and relevant basis
>>> # we can access this directly and generate interaction matrix
>>> # at distance rval :
>>> rval = 4  # in mum
>>> matrix = calc.matDiagonal
>>> rX = (rval*1.e-6)**3
>>> for matRX in self.matR:
>>>     matrix = matrix + matRX/rX
>>>     rX *= (rval*1.e-6)
>>> # matrix variable now holds full interaction matrix for
>>> # interacting atoms at distance rval calculated in
>>> # pair-state basis states can be accessed as
>>> basisStates = calc.basisStates


## Calculate#

 defineBasis(theta, phi, nRange, lrange, ...) Finds relevant states in the vicinity of the given pair-state getC6perturbatively(theta, phi, nRange, ...) Calculates $$C_6$$ from second order perturbation theory. Returns Le Roy radius for initial pair-state. diagonalise(rangeR, noOfEigenvectors[, ...]) Finds eigenstates in atom pair basis.

## Analyse#

 getC6fromLevelDiagram(rStart, rStop[, ...]) Finds $$C_6$$ coefficient for original pair state. getC3fromLevelDiagram(rStart, rStop[, ...]) Finds $$C_3$$ coefficient for original pair state. getVdwFromLevelDiagram(rStart, rStop[, ...]) Finds $$r_{\rm vdW}$$ coefficient for original pair state. exportData(fileBase[, exportFormat]) Exports PairStateInteractions calculation data.

## Visualise#

 plotLevelDiagram([highlightColor, ...]) Plots pair state level diagram showPlot([interactive]) Shows level diagram printed by PairStateInteractions.plotLevelDiagram savePlot([filename]) Saves plot made by PairStateInteractions.plotLevelDiagram

## Attributes#

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

 atom1 the first atom type (isotope) s1 total spin angular momentum, optional (default 0.5) interactionsUpTo Specifies up to which approximation we include in pair-state interactions. basisStates List of pair-states for calculation. originalPairStateIndex index of the original n,l,j,m1,nn,ll,jj,m2 pair-state in the PairStateInteractions.basisStates basis. channel states relevant for calculation, defined in J basis (not resolving $$m_j$$. coupling List of matrices defineing coupling strengths between the states in J basis (not resolving $$m_j$$ ). matrixElement matrixElement[i] gives index of state in PairStateInteractions.channel basis (that doesn't resolve $$m_j$$ states), for the given index i of the state in PairStateInteractions.basisStates ( $$m_j$$ resolving) basis. matDiagonal Part of interaction matrix in pair-state basis that doesn't depend on inter-atomic distance. matR Stores interaction matrices in pair-state basis that scale as $$1/R^3$$, $$1/R^4$$ and $$1/R^5$$ with distance in matR[0], matR[1] and matR[2] respectively.