Numerical calculations and Monte Carlo simulations of stimulated slowing of Yb atoms with amplitude-modulated light
This repo contains Python codes developed for the work published in T. Na Narong, et al. Physical Review A (2021) [1]. We numerically calculate optical forces on Yb atoms to design a stimulated slowing experiment with counter-propagating bichromatic and amplitude-modulated light. We also run Monte Carlo simulations of >20,000 atoms to evaluate the slowing efficiency.
We derived the time-dependent Hamiltonian matrix H(t) for the two-level atom, and then used the mesolve
function from the QuTiP library to solve the Linblad Master Equation for density matrix. The stimulated force is calculated from the Hamiltonian and density matrix, then integrated to update the atom's velocity and position.
Assuming all atoms are independent, we developed Monte Carlo simulations to predict which atoms are successfully slowed and trapped by the MOT for given input experimental parameters. The simulations account for the laser Gaussian beam profile, atomic beam divergence and gravity.
Atoms' initial positions, velocities, and departure times from the oven are set by GenerateBatchAtoms.py
. Running this file generates v_input.npy
, r_input.npy
, t_input.npy
, to be loaded when running the simulation files. The input_files folder contains these files with 5000 or 20000 atoms as examples.
These files define a class MCSolver
, which contains functions to numerically solve the Master Equation for the density matrix and the stimulated force, and functions to run Monte Carlo simulations with parallel computing.
SSMCSolver_BCF.py
Bichromatic force (BCF) from overlapping CW beamsSSMCSolver_square.py
Polychromatic force (PCF) from square-wave AM light
RandomInitialize.py
defines functions to sample atoms' starting velocities (effusion distribution) and positions (uniform).
RunMC_local_BCF.py
Use this to test run on your local computer to make sure all files are ready. The following files run Monte Carlo simulations from input_files.RunMC_allinput_BCF_chirp.py
runs the simulation with pre-set v,r,t inputs.RunMC_allinput_squareAM_chirp.py
runs the simulation with pre-set v,r,t inputs (for square wave settings)
To submit simulations jobs on the Sherlock cluster, you need to first create a bash (.sh) script that specifies computing resources. To easily vary simulation parameters and submit multiple jobs at once, I find it easier to run a Python script on Sherlock (see examples in the folder submission_files).
For example, running ./submission_files/submit_single_BCF_chirp.py
with appropriate arguments will create a bash file (.sh) and other text files (.txt) that contain printed program outputs and error messages in your Sherlock directory. See SHERLOCK-GUIDE.md for details.
- Python 3.6
- Numpy
- QuTiP: Quantum Toolbox in Python
- multiprocessing
- matplotlib
- pandas
- jupyter notebook
- Na Narong, Tanaporn, TianMin Liu, Nikhil Raghuram, and Leo Hollberg. "Stimulated slowing of Yb atoms on the narrow 1S0→3P1 transition." Physical Review A 104, no. 5 (2021): 053117. https://doi-org/10.1103/PhysRevA.104.053117