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

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.

getLeRoyRadius()

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.