# arc.calculations_atom_pairstate.PairStateInteractions.diagonalise#

PairStateInteractions.diagonalise(rangeR, noOfEigenvectors, drivingFromState=[0, 0, 0, 0, 0], eigenstateDetuning=0.0, sortEigenvectors=False, progressOutput=False, debugOutput=False)[source]#

Finds eigenstates in atom pair basis.

ARPACK ( scipy.sparse.linalg.eigsh) calculation of the noOfEigenvectors eigenvectors closest to the original state. If drivingFromState is specified as [n,l,j,mj,q] coupling between the pair-states and the situation where one of the atoms in the pair state basis is in $$|n,l,j,m_j\rangle$$ state due to driving with a laser field that drives $$q$$ transition (+1,0,-1 for $$\sigma^-$$, $$\pi$$ and $$\sigma^+$$ transitions respectively) is calculated and marked by the colourmaping these values on the obtained eigenvectors.

Parameters
• rangeR (array) – Array of values for distance between the atoms (in $$\mu$$ m) for which we want to calculate eigenstates.

• noOfEigenvectors (int) – number of eigen vectors closest to the energy of the original (unperturbed) pair state. Has to be smaller then the total number of states.

• eigenstateDetuning (float, optional) – Default is 0. This specifies detuning from the initial pair-state (in Hz) around which we want to find noOfEigenvectors eigenvectors. This is useful when looking only for couple of off-resonant features.

• drivingFromState ([int,int,float,float,int]) – Optional. State of one of the atoms from the original pair-state basis from which we try to drive to the excited pair-basis manifold, assuming that the first of the two atoms is already excited to the specified Rydberg state. By default, program will calculate just contribution of the original pair-state in the eigenstates obtained by diagonalization, and will highlight it’s admixure by colour mapping the obtained eigenstates plot. State is specified as $$[n,\ell,j,mj, d]$$ where $$d$$ is +1, 0 or -1 for driving $$\sigma^-$$ , $$\pi$$ and $$\sigma^+$$ transitions respectively.

• sortEigenvectors (bool) – optional, False by default. Tries to sort eigenvectors so that given eigen vector index corresponds to adiabatically changing eigenstate, as detirmined by maximising overlap between old and new eigenvectors.

• progressOutput (bool) – optional, False by default. If true, prints information about the progress of the calculation.

• debugOutput (bool) – optional, False by default. If true, similarly to progressOutput=True, this will print information about the progress of calculations, but with more verbose output.