arc.calculations_atom_pairstate.PairStateInteractions.getC6perturbatively_anglePairs#

PairStateInteractions.getC6perturbatively_anglePairs(anglePairs, nRange, energyDelta, degeneratePerturbation=False, returnInteractionMatrix=False)[source]#

Calculates \(C_6\) from second order perturbation theory.

Calculates \(C_6=\sum_{\rm r',r''}|\langle {\rm r',r''}|V|\ {\rm r1,r2}\rangle|^2/\Delta_{\rm r',r''}\), where \(\Delta_{\rm r',r''}\equiv E({\rm r',r''})-E({\rm r1, r2})\) When second order perturbation couples to multiple energy degenerate states, users shold use degenerate perturbation calculations by setting degeneratePerturbation=True .

This calculation is faster then full diagonalization, but it is valid only far from the so called spaghetti region that occurs when atoms are close to each other. In that region multiple levels are strongly coupled, and one needs to use full diagonalization. In region where perturbative calculation is correct, energy level shift can be obtained as \(V(R)=-C_6/R^6\)

Parameters:
  • anglePairs (list/array) - contains lists/arrays of pairs of (theta, phi) – i.e. azimuthal and polar orientations of atomic pair state in rad

  • nRange (int) – number of the pair state we should be looking

  • energyDelta (float) – ( \(\Delta E/h\) in Hz) between the original pair state and the other pair states that we are including in calculation

  • degeneratePerturbation (bool) – use degenerate perturbation theory. This should be used whenever angle between quantisation and interatomic axis is non-zero, as well as when one considers non-stretched states.

  • returnInteractionMatrix (bool) – Option to return the interaction matrix V(r)*R^6 in [GHz]

Output:
C6 (list) - list of arrays of C6 values in [GHz] for the [n1,l1,j1,mj1; n2,l2,j2,mj2]

state specified in the PairStateInteraction class initialisation

if degeneratePerturbation == False:
C6hop (list) - list of arrays containing C6 value in [GHz] for the

[n1,l1,j1,mj1; n2,l2,j2,mj2] -> [n2,l2,j2,mj2; n1,l1,j1,mj1] state hopping contribution

elif degeneratePerturbation == True:

C6 (list) - list of arrays containing eigenvalues of the full

interaction matrix in [GHz]

eigenvectors (list) - list of arrays containing the corresponding list of eigenvectors

\(\{m_{j_1}=-j_1, \ldots, m_{j_1} = +j1\}\bigotimes \ \{ m_{j_2}=-j_2, \ldots, m_{j_2} = +j2\}\) basis

if returnInteractionMatrix == True:

Imat_rot (list) - list of arrays containing interaction matrices, fine-structure

basis resolved for atomState1 == atomState2: [n1,l1,j1, mj1; n2,l2,j2,mj2] with \(\{m_{j_1}=-j_1, \ldots, m_{j_1} = +j1\}\bigotimes \ \{ m_{j_2}=-j_2, \ldots, m_{j_2} = +j2\}\) for aomState != atomState2: first basis above, then basis with the atomStates interchanged