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.