Note
Go to the end to download the full example code.
Cooling forces#
Calculating the transversal cooling forces for BaF and CaF.
Steady state cooling forces…
from MoleCool import System, np, plt, pi, c, open_object
import os.path
from scipy.special import jv
def compute_eom_sidebands(modulation_index, max_order=10):
orders = np.arange(-max_order, max_order + 1)
intensities = jv(orders, modulation_index)**2
intensities /= np.sum(intensities)
return orders, intensities
if __name__ == '__main__':
if not os.path.isfile("cooling_forces_CaF.pkl"):
CaF cooling#
Initialize levels#
We load the predefined constants of \(^{138}\text{BaF}\) and \(\text{CaF}\) (similarly to Optical cycling 12+4).
system = System(load_constants = 'CaF',
description = 'cooling_forces_CaF')
# set up electronic states
system.levels.add_electronicstate('X','gs')
system.levels.X.load_states(v=[0])
system.levels.add_electronicstate('B','exs')
system.levels.B.load_states(v=[0])
Velocity and magnetic field#
system.set_v0([0, 0.05, 0])
system.Bfield.turnon(
strength = 0.2e-4,
direction = np.array([0.,0.,1.]),
)
Laser system#
detuning = np.arange(-18, 22, 0.3333) * system.levels.B.Gamma *1e6
EOM_sideband_orders, EOM_sideband_ratios = compute_eom_sidebands(1.84, 3)
for k_dir in [[0, 1, 0], [0, -1, 0]]:
system.lasers.add_sidebands(
lamb = system.levels.wavelengths.loc[('X',0),('B',0)]*1e-9,
FWHM = 4e-3,
P = 50e-3,
offset_freq = detuning, #22.3e6 + detuning,
mod_freq = 1e6,
sidebands = 72 * EOM_sideband_orders,
ratios = EOM_sideband_ratios,
k = k_dir, # y-direction laser
pol_direction = [1, 0, 1] # pol_direction
)
OBEs evaluation#
system.steadystate.update(dict(
t_ini = 5e-6,
period = 'standingwave',
maxiters = 10,
condition = [0.05,1]
))
system.multiprocessing.update(dict(
maxtasksperchild = 5,
show_progressbar = True,
savetofile = True,
# processes = 30,#v0_arr.shape[0],
random_evaluation = False,
))
system.calc_OBEs(
# t_int = 30e-6, #30.4e-6
dt = 'auto',#1e-9,
method = 'RK45',
#rtol=1e-4,atol=1e-6,
magn_remixing = True,
verbose = True,
steadystate = True,
rounded = False,
freq_clip_TH = 500,
)
BaF cooling#
Initialize levels#
if not os.path.isfile("cooling_forces_BaF.pkl"):
system = System(load_constants = '138BaF',
description = 'cooling_forces_BaF')
# set up electronic states
system.levels.add_electronicstate('X','gs')
system.levels.X.load_states(v=[0])
system.levels.add_electronicstate('A','exs')
system.levels.A.load_states(v=[0])
Velocity and magnetic field#
system.set_v0([0, 0, 0.05])
system.Bfield.turnon(
strength = 0.5e-4,
angle = 45,
direction = np.array([0.,0.,1.]),
)
Laser system#
detuning = np.arange(-20,20,0.3333)
EOM_sideband_orders, EOM_sideband_ratios = compute_eom_sidebands(2.5, 3)
for k in [[0.,0.,1.],[0.,0.,-1.]]:
system.lasers.add_sidebands(
lamb = system.levels.wavelengths.loc[('X',0),('A',0)]*1e-9,
I = 5000,
# I = 500.,
pol = 'lin',
k = k,
mod_freq = 39.3e6,
ratios = EOM_sideband_ratios,
sidebands = EOM_sideband_orders,
offset_freq = detuning*1e6*system.levels.A.Gamma + 20e6,
)
OBEs evaluation#
system.steadystate.update(dict(
t_ini = 20e-6,
period = 'standingwave',
maxiters = 10,
condition = [0.05,1], #[0.1,10]
))
system.multiprocessing.update(dict(
maxtasksperchild = 5,
show_progressbar = True,
savetofile = True,
# processes = 45,#2,#v0_arr.shape[0],
random_evaluation = False,
))
out = system.calc_OBEs(
# t_int = 30e-6, #30.4e-6
dt = 1e-9,#0.4e-9,#'auto',#1e-9,
method = 'RK45',
# rtol=1e-4,atol=1e-6,
magn_remixing = True,
verbose = True,
steadystate = True,
rounded = False,
freq_clip_TH = 500,#500#,'auto',
)
Loading results#
plt.figure()
for label in ["BaF", "CaF"]:
fname = f"cooling_forces_{label}"
system = open_object(fname)
if label == 'BaF':
F = system.results.vals['F'][:,2]
else:
F = system.results.vals['F'][:,1]
lamb = system.levels.wavelengths.iloc[0,0]*1e-9
Gamma = system.levels.calc_Gamma()[0]
offset = dict(BaF=-7.92, CaF=-3.85)[label] # in terms of Gamma
det = (system.lasers[3].omega - 2*pi * c/lamb) / Gamma + offset
# plotting
plt.axhline(0, color='k', alpha=0.6)
plt.plot(det, F / 1e-21, label = label)
plt.xlabel('Detuning $\Delta$ ($\Gamma$)')
plt.ylabel('Force ($10^{-21}$ N)')
plt.legend()