Hello Everyone,
First and foremost thank you for making this nice package available!
I am currently working with the package and ran into some issues and hoped someone here might be able to help me with that...
Firstly, my goal is to rewrite both 02_F2_to_F3_1D_molasses.ipynb and 10_recoil_limited_MOT.ipynb examples for the Rb-87 cooling transition of |F=2, mF=2> to [F'=3, mF=3>
So my first issue is a rather simple one: Suppose I want to implement a Gaussian Beam with a beam diameter of 2cm @ 1/e^2. I am using the units native to PyLCP, so x is in terms of 1/k. What would be the correct way to implement the beam radius here? I am currently doing this:
pylcp.laserBeams([
{'kvec':np.array([0., 0., 1.]), 'pol':pol[0],
'pol_coord':pol_coord, 'delta':delta, 's':s, 'wb':1.},
{'kvec':np.array([0., 0., -1.]), 'pol':pol[1],
'pol_coord':pol_coord, 'delta':delta, 's':s, 'wb':1.},
], beam_type=pylcp.gaussianBeam)
My 2nd issue is with the script 10_recoil_limited_MOT.ipynb:
- When looking at the example
Recoil-limited MOT — pylcp 1.0.0 documentation in cell [5], I get the first error when trying to set the starting condition of the atom: "ValueError: Npop has only 4 entries for 12 states". My fix to that was the following:
tmax = 0.05/(t0)
if isinstance(eqn1, pylcp.obe):
eqn1.set_initial_position(np.array([0., 0., 0.]))
eqn1.set_initial_velocity(np.array([0., 0., 0.]))
eqn1.set_initial_rho_equally()
eqn1.evolve_motion([0, tmax], random_recoil=True, progress_bar=True, max_step=1.)
now, t0 here is defined as 1/gamma and for Rb87, this is O(10³) smaller than the example with strontium, as gamma = 2*np.pi*5.75e6 Hz (See down below, how I adjusted the units in this script for Rb-87). Consequently, if I dont adjust tmax above, I get runtimes of the single atom simulation of ~12 hours, which is of course not feasible. When I'm reducing tmax, the results are not really informative I assume... Is there anything I am doing wrong here? Help would be much appreciated!
rb87 = atom('87Rb')
taulab = rb87.state[2].tau # Lifetime of 6P_{3/2} state (in seconds)
k = 2*np.pi/780E-7 # cm^{-1}
x0 = 1/k # our length scale in cm
gamma = 2*np.pi*5.75e6 # 5.75 MHz linewidth
t0 = 1/gamma # our time scale in s
gradBlab = 15 # About 15 G/cm is a typical gradient for Rb
# Magnetic field gradient parameter (the factor of 3/2 comes from the
# excited state g-factor.)
alpha = cts.value('Bohr magneton')*1e-4*gradBlab*x0*t0/cts.hbar
# The unitless mass parameter:
mass = 87*cts.value('atomic mass constant')*(x0*1e-2)**2/cts.hbar/t0
# Gravity
g = -np.array([0., 0., 9.8*t0**2/(x0*1e-2)])
- Lastly, I am thinking about how to possibly implement a Pyramid MOT with the package but have no Idea where to start.. has anyone maybe already done something like that and could give me a hint?
I hope my description of the problems is sufficient enough, if not I would be glad to provide more infos on my scripts etc.
Cheers,
Vanessa Grauer