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

Numbers do not agree #113

Closed laserroger closed 2 years ago

laserroger commented 2 years ago

I tried to use quantum defect data and the Rydberg constant to obtain the state's energy but I found numbers do not agree. Here is my test:

from arc import * 
atom=Rubidium85()
Ry = physical_constants["Rydberg constant"][0]
me = physical_constants["electron mass"][0]
mRb85 = atom.mass
RyRb85 = Ry * mRb85 / (mRb85 + me)
def Rb85Energy(n, l, j):
    waveVector = - RyRb85 / (n - atom.getQuantumDefect(n, l, j))**2
    return waveVector * physical_constants["speed of light in vacuum"][0] * physical_constants["Planck constant"][0] / physical_constants["atomic unit of charge"][0]

and if I use the built-in atom.getEnergy, I will get

atom.getEnergy(5,0,0.5)
-4.177126523766669

and if I use my defined Rb85Energy, it is

Rb85Energy(5,0,0.5) 
-4.117703252397007

Let me know if something I did was incorrect! Thank you!

nikolasibalic commented 2 years ago

Hi @laserroger, thank you for your question.

For low-lying states (like 5 S_1/2) energy estimated by quantum defect calculations is not that precise (quantum defects are fitted over certain ranges of experimental energies, work well for extrapolation to high-n but there is usually limit for extrapolation to low n). That is why built-in .getEnergy will use quantum defects only for n>self.minQuantumDefectN as you can see here. The value of minQuantumDefectN is set by comparing at measured experimental values and QD calculated values such that once the two start diverging, we use experimentally measured values if they exist.

For Rb85 in your example, minQuantumDefectN is set to 8.

This is the main reason for difference. Above 8, you should get same results, except for smaller difference in which we calculate scaled Rydberg constant (assuming that total atom mass includes valence electron mass).

Please let me know if this answers your question.

laserroger commented 2 years ago

thanks, that's very helpful!

Hi @laserroger, thank you for your question.

For low-lying states (like 5 S_1/2) energy estimated by quantum defect calculations is not that precise (quantum defects are fitted over certain ranges of experimental energies, work well for extrapolation to high-n but there is usually limit for extrapolation to low n). That is why built-in .getEnergy will use quantum defects only for n>self.minQuantumDefectN as you can see here. The value of minQuantumDefectN is set by comparing at measured experimental values and QD calculated values such that once the two start diverging, we use experimentally measured values if they exist.

For Rb85 in your example, minQuantumDefectN is set to 8.

This is the main reason for difference. Above 8, you should get same results, except for smaller difference in which we calculate scaled Rydberg constant (assuming that total atom mass includes valence electron mass).

Please let me know if this answers your question.