# print numberDensity(T) # print flux(T, mRb) # print influx(1e-3, T, mRb) r1 = 1e-3 r2 = r1 l = 100e-3 th_max = np.pi/2 atom = zs.Rb85() eta, vf = 0.7, 20 v0list = np.linspace(200, 550, 41) sllist = [] for v0 in v0list: sllist += [zs.slowerlength(atom.aslow, eta, v0, vf)] pl.figure(figsize=(11.69, 8.27)) pl.subplot(221) pl.plot(v0list, sllist) pl.xlabel('Maximum capture velocity (m/s)') pl.ylabel('Slower length (m)') pl.title(r'$v_f$=%d m/s, $\eta$=%g' %(vf, eta)) T = 273+80 vnorm = intMaxwell(1200, T) vfrac = [] for v0 in v0list: vfrac += [intMaxwell(v0, T)/vnorm] vfrac = np.array(vfrac)
if __name__ == "__main__": filename = sys.argv[1] atom = zs.Rb87() sim = np.load(filename)['simulation'][()] wire = sim['wire'] setup = sim['setup'] eta = sim['eta'] v0 = sim['v0'] vf = sim['vf'] looppos, segments, layer = setup['looppos'], setup['segments'], setup['layer'] print filename eta, v0, vf, detu, R = sim['eta'], sim['v0'], sim['vf'], sim['detu'], sim['R'] sl = zs.slowerlength(atom.aslow, eta, v0, vf) z = np.array([0]) bfield = zs.bideal(atom, z, eta, v0, vf, detu) z = np.append([-10*R], np.append(np.linspace(0, sl, 61), [sl+10*R])) ze = np.linspace(z[0], z[-1], 201) # print setup['csign'] # bf = lo.fieldcalc(ze, setup) # # pl.plot(ze, bf) # pl.plot(ze[1:], np.diff(bf)) series = 4 ratio = 1 setup['csign'] = [s*ratio if s < 0 else s for s in setup['csign']] # setup['csign'] = [s*ratio if s < 0 else s*ratio for s in setup['csign']]
atom = zs.K41() else: atom = zs.Rb87() # default ## sim = np.load(filename)['simulation'][()] wire = sim['wire'] setup = sim['setup'] eta = sim['eta'] v0 = sim['v0'] vf = sim['vf'] looppos, segments, layer = setup['looppos'], setup['segments'], setup['layer'] eta, v0, vf, detu, R = sim['eta'], sim['v0'], sim['vf'], sim['detu'], sim['R'] sl = zs.slowerlength(atom.aslow, eta, v0, vf) z = np.array([0]) bfield = zs.bideal(atom, z, eta, v0, vf, detu) z = np.append([-5.5*R], np.append(np.linspace(0, sl, 61), [sl+5.5*R])) ze = np.linspace(z[0], z[-1], 201) ## Print winding data for i in range(len(layer)): if np.diff(segments[i]) != 0: print "%7.2f mm to %7.2f mm: %3d turns / %3d layers" %((looppos[segments[i][0]]-wire[0]/2)*1000, (looppos[segments[i][1]-1]+wire[0]/2)*1000, np.diff(segments[i]), layer[i]) sta = looppos[segments[1][0]]-wire[0]/2 stb = looppos[segments[-2][1]-1]+wire[0]/2 # The upper boundary is the start of the next layer, need -1 efflen = zs.slowerlength(atom.aslow, eta, v0, vf) * 1000 coillen = (stb - sta)*1000 print "Effective length: %.1f mm" %(efflen) print "Slower coils' length: %.1f mm (%.1f mm extra)" %(coillen, (coillen-efflen))