Added calculation of heating rate in the ODT (requires correction).

This commit is contained in:
Karthik 2023-03-16 19:28:49 +01:00
parent 6976e0ef91
commit 294fe62c36
2 changed files with 319 additions and 311 deletions

File diff suppressed because one or more lines are too long

View File

@ -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):
@ -999,4 +1014,3 @@ def plotCollisionRatesAndPSD(Gamma_elastic, PSD, modulation_depth, new_aspect_ra
plt.show()
#####################################################################