-
Notifications
You must be signed in to change notification settings - Fork 78
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Improved energy calculation for high l states (l>5) and quantum defect updates for Cs and K. #173
base: draft_v3.6.0
Are you sure you want to change the base?
Conversation
Added more accurate energy for states with non-penetrating states (l>5). A (worse) approximation was used before which itself is based on the polarisation energy.
Updated qds for K and Cs and Core polarisabilities to include two new publications. Also added a property to each class a_eff_d and a_eff_q which are the effective dipole and quadrupole polarisabilities of the species Ion (e.g. Cs+). This is used when calculating the polarisation energy which is used for high l states (l >5)
Improved accuracy of high l states to include effective polarisability calculation of energies. Uses constants from literature for the effective polarisabilities. Also included hydrogenice fine stucture for these states (also g states) to remove degeneracy
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@johnny-sa Many thanks for this fantastic contribution, very nicely documented!
Could you please just review the comments above? I will try to release update version as soon as I hear back from you. Many thanks!
arc/alkali_atom_functions.py
Outdated
else: | ||
FS = (2*self.scaledRydbergConstant)*pow(scipy.constants.alpha,2)/(2*l*(l+1)*pow(n,3)) | ||
LI = -FS/(l+0.5) | ||
return -self.scaledRydbergConstant / ((n) ** 2) -0.5*LI*(j*(j+1)-l*(l+1)-s*(s+1)) - 2*self.scaledRydbergConstant*defect |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
What is difference between l==4
and l>=4
cases here? It seems to me that second one is just expansion for small defect
value right? If so, I would rather keep one case (without expansion). Please comment.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
What is meaning of FS
and LS
? Note that we try in general to stick to convention of camelCase
naming of variables.
Additionally, where can you please add in code comment that references this equations in the literature? I am maybe looking at wrong place, but I cannot find them.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
What is difference between
l==4
andl>=4
cases here? It seems to me that second one is just expansion for smalldefect
value right? If so, I would rather keep one case (without expansion). Please comment.
I think that the expansion is needed in the case of l>=5 (not l>=4) as we are assuming that the energy difference is due to a perturbation and that there are no other effects (penetration, exchange interaction). i.e. We are not really calculating a quantum defect but an energy correction. I have simply used getQuantumDefect'
as a way of obtaining a change in energy using the stored n,l,j values.
If you would like, it may be more appropriate to define one (or two) new functions to remove this confusion. i.e. getPolarisationEnergy' (and
getHydrogenFS' splitting for the other) so that it is clear l>5 is treated differently.
That is, a correction to the hydrogenic energy level from some polarisation energy calculated from perturbation theory.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
What is meaning of
FS
andLS
? Note that we try in general to stick to convention ofcamelCase
naming of variables.Additionally, where can you please add in code comment that references this equations in the literature? I am maybe looking at wrong place, but I cannot find them.
Apologies, FS and LS are constants that I defined that are used in the convention of The Theory Of Atomic Spectra by [Shortley, G.h] (pg. 193 onwards).
and from https://staff.fnwi.uva.nl/j.t.m.walraven/walraven/Publications_files/2023-AtomicPhysics.pdf section 4.5.2 onwards. FS and LS were mainly defined to improve the readability of the code (but are completely arbitrary). They could be renamed to fineStructSplit (for FS).
This is a bit hard to follow so I propose the following changes (following Foot. Atomic Physics pg. 37-38. So the code now reads.
`if l <= 3:
return -self.scaledRydbergConstant / ((n - defect) ** 2)
elif l == 4:
fineStructSplit = -(2self.scaledRydbergConstant)pow(scipy.constants.alpha,2)/(2l(l+0.5)*(l+1)*pow(n,3))
if j == l + 0.5:
fineStructSplit *= 0.5*l
elif j == l - 0.5:
fineStructSplit *= -1*0.5*(l+1)
return -self.scaledRydbergConstant / ((n - defect) ** 2) - fineStructSplit
else:
fineStructSplit = -(2*self.scaledRydbergConstant)*pow(scipy.constants.alpha,2)/(2*l*(l+0.5)*(l+1)*pow(n,3))
if j == l + 0.5:
fineStructSplit *= 0.5*l
elif j == l - 0.5:
fineStructSplit *= -1*0.5*(l+1)
return -self.scaledRydbergConstant / ((n) ** 2) - fineStructSplit - 2*self.scaledRydbergConstant*defect`
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
What is difference between
l==4
andl>=4
cases here? It seems to me that second one is just expansion for smalldefect
value right? If so, I would rather keep one case (without expansion). Please comment.I think that the expansion is needed in the case of l>=5 (not l>=4) as we are assuming that the energy difference is due to a perturbation and that there are no other effects (penetration, exchange interaction). i.e. We are not really calculating a quantum defect but an energy correction. I have simply used
getQuantumDefect'
as a way of obtaining a change in energy using the stored n,l,j values.If you would like, it may be more appropriate to define one (or two) new functions to remove this confusion. i.e.
getPolarisationEnergy' (and
getHydrogenFS' splitting for the other) so that it is clear l>5 is treated differently.That is, a correction to the hydrogenic energy level from some polarisation energy calculated from perturbation theory.
To add to this, it is also how a recent treatment of alkali metal energies has been done. See https://journals.aps.org/pra/abstract/10.1103/PhysRevA.100.012501 Section VII.
defect = ( | ||
0.5 * (self.a_d_eff * r4 + self.a_q_eff * r6) | ||
) | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I believe above is correct based on your numerical results, however, is there some reference where these equations have been originally derived, that we can reference in commend directly in code?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I believe the original is from J. E. Mayer and M. G. Mayer, Phys. Bev. 43, 605
(1933).
The Freeman and Kleppner Physical Review A 14.5 (1976): 1614 I reference cites this work.
On overview is also given in pgs 340-364 `Spectroscopy_of_alkali_Rydberg_states' in Gallagher's Rydberg atoms (which they themselves cite Mayer and Mayer as the origin)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
if you are referring to the expectation values see https://journals.aps.org/pra/abstract/10.1103/PhysRevA.42.1123 or more appropriately https://journals.aps.org/pra/abstract/10.1103/PhysRevA.9.1087
Changed format of hydrogenic fine structure splitting (L.S coupling) for high l states. Added references for calculating polarisation energy.
Overview
These changes are aimed at improving the way arc calculates the quantum defect (and hence energy) of states with high angular momentum (l>5). This will improve accuracy of Stark maps etc. arc has an edge case where quantum defects for states with l >= 5 are approximated by scaling the measured (tabled) value of the g (l=4) quantum defect.
I also include some updates to the Caesium and potassium quantum defects which will improve the calculation of energies. These are from Deiglmayr, Johannes, et al. Physical Review A 93.1 (2016): 013424. and Peper, Michael, et al. Physical Review A 100.1 (2019): 012501.
Methods
The code replaces the current method by direct calculation of the polarisation energy (effective adiabatic polarisation energy) which is more accurate than the current method. This requires two constants$\alpha_{d}$ and $\alpha_{q}$ , the effective dipole and quadrupole polarizability of the Ion species (Cs+, Rb+... etc.) and the expectation values of the hydrogenic wavefunction (where closed forms exist). The former are taken from the available literature which are referenced in the code. The latter is calculated, (r4 and r6). I have also added hydrogenic fine structure splitting to high l states to lift degeneracy.
Examples
Most improvements are to the calculation of h (l=5) levels which are over ~100MHz different from measured. The others improve from ~15 MHz to <5 MHz accuracy.
Details
The current approximation in the code is
This approximation is from [1] and is based on the formula for the polarisation energy (for an introduction see [2]) that is
By approximating$$\langle r^{-4} \rangle \approx \frac{3}{2n^{3}l^{5}}$$ and taking the $\langle r^{-6}\rangle$ expression to be zero, we find
which is the current approximation. Instead, the code calculates the full expression for the polarisation and adds this onto the hydrogenic energy. We also add hydrogenic energy splitting's to states with l>5 (which is set to be zero presently). This is expected and seen in [4] as there is little core penetration in high angular momentum states.
References:
[1] - Gallagher, Thomas F. "Rydberg atoms."
[2] - Freeman and Kleppner Physical Review A 14.5 (1976): 1614.
[3] - Safinya, K. A., T. F. Gallagher, and W. Sandner. Physical Review A 22.6 (1980): 2672.
[4] - Berl, S. J., et al. Physical Review A 102.6 (2020): 062818.
[5] - Unpublished own work (in prep.)