nikolasibalic/ARC-Alkali-Rydberg-Calculator

Dipole-quadrupole and quadrupole-quadrupole couplings

SylvainDLDK opened this issue · 1 comments

Hi Nikola,

I hope you are doing well!

I was having some fun using the PairStateInteractions class to look at couplings beyond dipole-dipole (so dipole-quadrupole and quadrupole-quadrupole). I noticed something weird in the results, and I think this is some bug in the function __makeRawMatrix2.

Here is what I tried.

I set up a calculation using:

calc = arc.PairStateInteractions(rb, 43,2,2.5,43,2,2.5,2.5,2.5,interactionsUpTo = 2)
calc.defineBasis(
    theta = 0,
    phi = 0,
    nRange = 4,
    lrange = 2,
    energyDelta = 10e9,
    progressOutput = True
    )

So I start from the 43D,43D state and I expect quadrupole-quadrupole couplings to nS,n'G states.
However, these states are not present in calc.basisStates or calc.channel

Looking into the code, I see that the function __makeRawMatrix2 is in charge of finding all the channels of interaction. And, at line 653-659 of calculations_atom_pairstate.py, I find the following:

l1start = l - 1
if l == 0:
    l1start = 0

l2start = ll - 1
if ll == 0:
    l2start = 0

which select the lowest angular momentum Lstart to which the initial state can couple to. Here, for an initial state |n,L>, the code will select only |n,L-1> states, while this should depend on the type of coupling (dipole or quadrupole). This explains why I never find a S state in calc.channel when starting from a D state.

This problem only affects the lower angular momentum Lstart. The largest angular momentum Lmax is correctly calculated as

l1max = max(l + self.interactionsUpTo, lrange) + 1
l1max = min(l1max, n1 - 1)

I propose to replace the lines 653-659 by:

l1start = max(l - self.interactionsUpTo,0)
l2start = max(ll - self.interactionsUpTo,0)

I tried this on my computer, and this worked fine -> I can now see nS;n'G state in the list of channels calc.channel

What do you think?

Cheers,
Sylvain

Hi Sylvain,

I started a new position a month ago, so it took me some time to get round to ARC again. I hope you are doing well too!

You are absolutely right. Thank you for reporting this bug, finding its root cause, and identifying and testing solution. This has been implemented and released in new version 3.1.0.

Best wishes,
Nikola