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