nikolasibalic / ARC-Alkali-Rydberg-Calculator

Object-oriented Python library for computation of properties of highly-excited Rydbeg states of alkali and divalent atoms.
https://atomcalc.org
BSD 3-Clause "New" or "Revised" License
86 stars 72 forks source link

(ARC 3.2) Two-photon excitation Rabi frequency (twoPhotonRydbergExcitation()) does not agree with the result of published paper #112

Closed azhutov closed 1 year ago

azhutov commented 2 years ago

I was trying to verify the output of twoPhotonRydbergExcitation() function for Rb87 following the experimental and theoretical results of https://arxiv.org/pdf/0711.0401.pdf paper.

The paper suggests that two-photon transition $\ket{5S_{1/2}, F=2, mf=2}\rightarrow \ket{5P{3/2}, F=3, mF=3} \rightarrow \ket{43D{5/2}, m_J=1/2}$ with pi-pi polarized light has Rabi frequencies $$\Omega_R=2\pi\times 0.55 \text{ MHz} \text{ (theory)}$$ $$\Omega_R=2\pi\times 0.49 \text{ MHz} \text{ (experiment)}$$ whereas the output of twoPhotonRydbergExcitation() function results in $$\Omega_R\approx2\pi\times 0.26 \text{ MHz} \text{ (ARC)}$$

# references
# https://arxiv.org/pdf/0711.0401.pdf # paper, figure 3
# https://www-atoms.physics.wisc.edu/papers/2009Urban.pdf # phd thesis, page 153

P1 = 1.85e-6 # 1.85 uW
w1 = 10e-6 # 10 um
q1 = 0 # pi-polarization
P2 = 10.7e-3 # 10.7 mW
w2 = 10e-6 # 10 um
q2 = 0 # pi-polarization

# Ground State (|5S1/2, F=2, m_F=+2>)
fg = 2
mfg = 2
# Excited state (|53/2, F=3, m_F=+2>)
ne = 5
le = 1
je = 1.5
# Rydberg state (|43d5/2, J=1/2, m_J=+1/2>)
nr = 43
lr = 2
jr = 2.5
mjr = 0.5

SPD = 'SPD'

# detuning
Delta0 = -2 * np.pi * 3.4 * GHz

[Omega_eff, ACg, ACr, Psc] = atom.twoPhotonRydbergExcitation(P1, w1, q1, P2, w2, q2, Delta0, fg, mfg, ne, le, je, nr, lr, jr, mjr)
print('\nRydberg Excitation 5S1/2 |%d,%d> to %d%c |%d/2,%d/2> via %dP_%d/2' %
      (fg, mfg, nr, SPD[lr], 2*jr, 2*mjr, ne, je*2))
print('\n\tParameters:\tDelta/2pi = %2.2f GHz, P1 = %1.2f uW, w1 = %2.1f um, q1=%d, P2 = %1.2f mW, w2 = %.1f um, q2=%d'
print('\n\tResults:\tOmega_eff/2pi = %2.5f MHz\n\t\t\tACg/2pi = %2.5f MHz\n\t\t\tACr/2pi = %2.5f MHz\n\t\t\tDelta_AC/2pi = %2.5f MHz'
      % (Omega_eff/(2.0 * np.pi)*1e-6, ACg/2.0/np.pi*1e-6, ACr/2.0/np.pi*1e-6, (ACg-ACr)/2.0/np.pi*1e-6))

The output of the code:

Screen Shot 2022-07-04 at 10 52 51 AM

What could be the reason for such discrepancy? Thank you

ARC version: ARC-Alkali-Rydberg-Calculator 3.2.0

nikolasibalic commented 1 year ago

Hi @jonathanpritchard do you have some time to check this?

jonathanpritchard commented 1 year ago

Hi @nikolasibalic I just had a quick look at this and found an issue but not the one described by @azhutov. When I run atom.twoPhotonRydbergExcitation() using the parameters above it throws an error regarding the triangle rule when decomposing self.getSphericalMatrixElementHFStoFS(je=1.5, fe=0, mfe=0, jr=2.5, mjr=0.5, qc=0). This only impacts calculation of the AC shift term, so suppressing these errors I can force the function to evaluate and approximately the same values as the paper at 0.6 MHz. The resulting discrepancy comes from the difference in radial matrix elements (ARC is using 0.032ea0 rather than 0.029ea0 quoted in paper).

image

I will take a look at the code throwing an error to work out why it isn't evaluating properly for the fe=0 is zero case but @azhutov did you edit your source locally to suppress the error to arrive at the numerical result you posted above? Even on the ARC-Dev branch where the code was originally developed this throws the same error so it should never have returned a value.

jonathanpritchard commented 1 year ago

This is now fixed following the latest commit to enforce a triangle rule check on getSphericalMatrixElementHFStoFS() and the issue is closed.