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