Hi Lajos,
Sorry for the (super) delayed reply. I haven’t had much time recently to devote to pylcp code. Before I address your observations, a little bit of detail about how find_equilibrium_force works: it evolves the OBE for some
deltat and compute the average force over that
deltat. It then continues the evolution further for another
deltat, recomputing the force over that new time block, and checking for convergence with the last time block. Physically, the particle is being “dragged” through the light field to compute its force, and once the force stabilizes over a time block deltat,
the force is declared to be the “equilibrium” force. There are probably a nearly infinite number of ways to do this better.
But, given the way it is coded, the selection of deltat is paramount. The best way to pick your
deltat is to provide a functio through the
delta_func keyword argument that takes arguments r_initial and
v_initial, and computes the relevant
deltat. By default, there is a function to do that, the nested
default_deltat() function to which you refer. This function assigns deltat as either deltat_r/|r| or deltat_v/|v|,
depending on whether delta_r or delta_v is provided, or the maximum deltat_max. Use of deltat_max is
motivated by the fact that you might get a v or r magnitude really close to zero,
making deltat obsurdly large, larger than what is necessary for convergence. Another
possibility is that you can bypass this entire thing by setting
deltat_func=None and providing
deltat.
So, as to your first observation: yes, delta_tmax is only honored if
delta_v or delta_r is provided. If this is the use case though, you will get an error later in the code because deltat returned by default_deltat will be None.
None of this is in the documentation and clearly it should be; I will open an appropriate issue on GitHub.
Second, I think you are introducing a bug by reseting the position as you do. If you reset the position, then you effectively reset the spatial phase of the light field the atom last experienced in the time block to the spatial phase the atom first experienced
when it started in that time block. This will wash out the sub-Doppler forces, as can be seen by your force profiles with
reset_pos=True. Physically, it is akin to some sort of phase noise that is resetting the phase of the light field after each time block. As you observe, it will probably converge faster though, because now you only have to have the
density matrix itself evolve toward some sort equilibrium.
Hope that helps,
-Steve
--
Dr. Stephen Eckel
Physicist
Sensor Sciences Division
Fundamental Thermodynamics Group
100 Bureau Drive, Stop 8364
Gaithersburg, MD 20899-8364
(301) 975-8571