Added calculation of heating rate in the ODT (requires correction).
This commit is contained in:
parent
6976e0ef91
commit
294fe62c36
File diff suppressed because one or more lines are too long
@ -81,9 +81,17 @@ def w(pos, w_0, lamb):
|
||||
return w_0*np.sqrt(1+(pos / z_R(w_0, lamb))**2)
|
||||
|
||||
#####################################################################
|
||||
# COLLISION RATES, PSD #
|
||||
# CALCULATIONS
|
||||
#####################################################################
|
||||
|
||||
def calculateHeatingRate(w_x, w_y, P, linewidth, detuning, wavelength = 1.064*u.um):
|
||||
U = trap_depth(w_x, w_y, P).decompose()
|
||||
Gamma_sr = ((linewidth * U) / (ac.hbar * detuning)).decompose()
|
||||
E_recoil = (ac.h**2 / (2 * DY_MASS * wavelength**2)).decompose()
|
||||
T_recoil = (E_recoil/ac.k_B).to(u.uK)
|
||||
HeatingRate = 2/3 * Gamma_sr * T_recoil
|
||||
return HeatingRate, T_recoil, Gamma_sr, U
|
||||
|
||||
def calculateAtomNumber(NCount, pixel_size, magnification, eta):
|
||||
sigma = 8.468e-14 * (u.m)**(2)
|
||||
return (1/eta * 1/sigma * NCount * pixel_size**2/magnification**2).decompose()
|
||||
@ -267,7 +275,7 @@ def crossed_beam_potential(positions, waists, P, options, alpha = DY_POLARIZABIL
|
||||
U_1 = - U_1_tilde * A_1 * np.exp(-2 * ((beam_1_positions[0,:]/w(beam_1_positions[1,:] + focus_shift_beam_1, waists[0][0], wavelength))**2 + (beam_1_positions[2,:]/w(beam_1_positions[1,:] + focus_shift_beam_1, waists[0][1], wavelength))**2))
|
||||
|
||||
R = rotation_matrix([0, 0, 1], np.radians(delta))
|
||||
beam_2_positions = np.dot(R, beam_1_positions) + beam_2_disp
|
||||
beam_2_positions = np.dot(R, positions + beam_2_disp)
|
||||
A_2 = 2*P[1]/(np.pi*w(beam_2_positions[1,:] + focus_shift_beam_2, waists[1][0], wavelength)*w(beam_2_positions[1,:] + focus_shift_beam_2, waists[1][1], wavelength))
|
||||
U_2_tilde = (1 / (2 * ac.eps0 * ac.c)) * alpha * (4 * np.pi * ac.eps0 * ac.a0**3)
|
||||
U_2 = - U_2_tilde * A_2 * np.exp(-2 * ((beam_2_positions[0,:]/w(beam_2_positions[1,:] + focus_shift_beam_2, waists[1][0], wavelength))**2 + (beam_2_positions[2,:]/w(beam_2_positions[1,:] + focus_shift_beam_2, waists[1][1], wavelength))**2))
|
||||
@ -299,7 +307,7 @@ def astigmatic_crossed_beam_potential(positions, waists, P, options, alpha = DY_
|
||||
U_1 = - U_1_tilde * A_1 * np.exp(-2 * ((beam_1_positions[0,:]/w(beam_1_positions[1,:] - (del_y_1/2) + focus_shift_beam_1, waists[0][0], wavelength))**2 + (beam_1_positions[2,:]/w(beam_1_positions[1,:] + (del_y_1/2) + focus_shift_beam_1, waists[0][1], wavelength))**2))
|
||||
|
||||
R = rotation_matrix([0, 0, 1], np.radians(delta))
|
||||
beam_2_positions = np.dot(R, beam_1_positions) + beam_2_disp
|
||||
beam_2_positions = np.dot(R, positions + beam_2_disp)
|
||||
A_2 = 2*P[1]/(np.pi*w(beam_2_positions[1,:] - (del_y_2/2) + focus_shift_beam_2, waists[1][0], wavelength)*w(beam_2_positions[1,:] + (del_y_2/2) + focus_shift_beam_2, waists[1][1], wavelength))
|
||||
U_2_tilde = (1 / (2 * ac.eps0 * ac.c)) * alpha * (4 * np.pi * ac.eps0 * ac.a0**3)
|
||||
U_2 = - U_2_tilde * A_2 * np.exp(-2 * ((beam_2_positions[0,:]/w(beam_2_positions[1,:] - (del_y_2/2) + focus_shift_beam_2, waists[1][0], wavelength))**2 + (beam_2_positions[2,:]/w(beam_2_positions[1,:] + (del_y_2/2) + focus_shift_beam_2, waists[1][1], wavelength))**2))
|
||||
@ -369,9 +377,16 @@ def extractTrapFrequency(Positions, TrappingPotential, axis):
|
||||
xdata = tmp_pos[lb:ub]
|
||||
Potential = tmp_pot[lb:ub]
|
||||
p0 = [1e3, tmp_pos[center_idx].value, -100]
|
||||
popt, pcov = curve_fit(harmonic_potential, xdata, Potential, p0)
|
||||
v = popt[0]
|
||||
dv = pcov[0][0]**0.5
|
||||
try:
|
||||
popt, pcov = curve_fit(harmonic_potential, xdata, Potential, p0)
|
||||
v = popt[0]
|
||||
dv = pcov[0][0]**0.5
|
||||
except:
|
||||
popt = np.nan
|
||||
pcov = np.nan
|
||||
v = np.nan
|
||||
dv = np.nan
|
||||
|
||||
return v, dv, popt, pcov
|
||||
|
||||
def computeTrapPotential(w_x, w_z, Power, options):
|
||||
@ -553,7 +568,7 @@ def computeTrapPotential(w_x, w_z, Power, options):
|
||||
EffectiveTrapDepthInKelvin = IdealTrapDepthInKelvin
|
||||
except:
|
||||
EffectiveTrapDepthInKelvin = np.nan
|
||||
|
||||
|
||||
TrapDepthsInKelvin = [IdealTrapDepthInKelvin, EffectiveTrapDepthInKelvin]
|
||||
|
||||
v_x = calculateCrossedBeamTrapFrequency(options['delta'], [w_x, w_z], Power, dir = 'x')
|
||||
@ -998,5 +1013,4 @@ def plotCollisionRatesAndPSD(Gamma_elastic, PSD, modulation_depth, new_aspect_ra
|
||||
plt.grid(visible=1)
|
||||
plt.show()
|
||||
|
||||
#####################################################################
|
||||
|
||||
#####################################################################
|
Loading…
Reference in New Issue
Block a user