print "Slower tube length:", zn-zp ze = np.linspace(zp-0.07, zn+0.25, 1001) zex = ze xfield = zex*0 for c in coils: R = R0 + (c[2]-0.5)*wthick pos = np.linspace(c[0], c[1], c[3]) print c for p in pos: xfield += lo.loopfield(zex-p, 1, R, wthick)*c[4]*1e4 pl.figure(figsize=(11.69, 8.27)) pl.plot(ze, lo.fieldcalc(ze, setup)*current * 1e4, 'r-', linewidth=3, label='Simulation with calculated positions') pl.plot(zex+zstart, xfield*current, 'b--', linewidth=3, label='Simulation with measured positions') pl.plot(zpos, mesfield, 'ko', markersize=10, label='Measured') pl.xlabel("Position (m)", fontsize=16) pl.ylabel("Field (G)", fontsize=16) pl.title(title) pl.xlim([ze[0], ze[-1]]) pl.plot([zp, zp], [-100, 100], 'k-.', linewidth=4, label='Slower tube end') pl.plot([zn, zn], [-100, 100], 'k-.', linewidth=4) pl.legend(loc='upper right') Bget = lambda z : lo.fieldcalc(z, setup)*current * 1e4 zlist = [zp-0.07, zp-0.035, zp, zn, zn+0.035, zn+0.07] Blist = ["%.1f" %Bget([z])[0] for z in zlist] print Blist
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']] # Get the needed current to run the coils: bf = lo.fieldcalc(ze, setup) B0 = zs.bideal(atom, 0, eta, v0, vf, detu) I = B0[0] / lo.fieldcalc(0, setup)[0] print "Current:", I bf *= I k = atom.k # # bf = bf*0 # # detu = 0 # fulldetu = k*v - 2*np.pi*zs.uprimehbar*bf - detu*1e6*2*np.pi # pl.plot(ze, fulldetu/2/np.pi/1e6) # pl.show() # x = (k*v - 2*np.pi*zs.uprimehbar*bf - detu*1e6*2*np.pi)/2/np.pi/1e6 # x = bf*1e4
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)) layers = lo.getLayerNumber(setup) fig = pl.figure(figsize=(fh, fw)) fig.text(0.5, 0.95, '%s: slower = %g m, Max B = %g G' %(filename, sl, max(bfield)*1e4 ), horizontalalignment='center') ## Layers plot pl.subplot(211) pl.plot(looppos, layers[0], 'k.') pl.xlim([looppos[0], looppos[-1]]) pl.ylim([0, max(layer)+1]) pl.xlabel('Position (m)') pl.ylabel('Layer number') ## Field plot pl.subplot(212) pl.plot(ze, lo.fieldcalc(ze, setup)/lo.fieldcalc(0, setup), 'k-', linewidth=3) pl.plot(ze, ze*0, 'k--', linewidth=1) pl.xlim([looppos[0], looppos[-1]]) pl.xlabel('Position (m)') pl.ylabel('Normalized B field') pl.savefig("%s.pdf" %(filename)) pl.savefig("%s.png" %(filename)) pl.show()
data = np.load(filename) newsetup = data['setup'][()] # zl, ideal = zip(*data['ideal']) # print zl, ideal zl = data['ideal'][0] ideal = data['ideal'][1] d0 = data['d0'] # print data['setup'] # print newsetup['layer'] # print data.files zeropos = 31 zz = np.append(np.linspace(-0.3, 0.01, zeropos), np.linspace(0, 1.1, 201)) curr = layer.bideal(0)/layer.fieldcalc(zz, newsetup, d=d0)[zeropos] print 'Current = %.2f A' %(curr) wirelen = layer.totalcoillength(newsetup, d=d0) print 'Wire length = %.3f m ' %(wirelen) resist = 0.334 * wirelen / 100.0 power = resist * curr*curr print 'Minimum power = %.2f W' %(power) pl.figure(figsize=(11.69, 8.27), dpi=100) pl.plot(zl, layer.normalize(ideal, 1), 'ko', markersize=6, label='fitted field') pl.plot(zz, layer.normalize(layer.fieldcalc(zz, newsetup, d=d0), zeropos), 'r-', linewidth=2.4, label='coil field') x = layer.getLayerNumber(newsetup)
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)) layers = lo.getLayerNumber(setup) fig = pl.figure(figsize=(fh, fw)) fig.text(0.5, 0.95, '%s: slower = %g m, Max B = %g G' %(filename, sl, max(bfield)*1e4 ), horizontalalignment='center') pl.subplot(211) pl.plot(looppos, layers[0], 'k.') pl.xlim([looppos[0], looppos[-1]]) pl.ylim([0, max(layer)+1]) pl.xlabel('Position (m)') pl.ylabel('Layer number') pl.subplot(212) pl.plot(ze, lo.fieldcalc(ze, setup)/lo.fieldcalc(0, setup), 'k-', linewidth=3) pl.plot(ze, ze*0, 'k--', linewidth=1) pl.xlim([looppos[0], looppos[-1]]) pl.xlabel('Position (m)') pl.ylabel('Normalized B field') outdata = zip(ze, lo.fieldcalc(ze, setup)) outfile = "".join([filename, ".txt"]) np.savetxt(outfile, outdata) # pl.savefig("%s.pdf" %(filename)) # pl.savefig("%s.png" %(filename)) pl.show()
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 = 0 ratio = 0.5 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']] # Get the needed current to run the coils: bf = lo.fieldcalc(ze, setup) B0 = zs.bideal(atom, 0, eta, v0, vf, detu) I = B0[0] / lo.fieldcalc(0, setup)[0] print "Current:", I bf *= I k = atom.k # # bf = bf*0 # # detu = 0 # fulldetu = k*v - 2*np.pi*zs.uprimehbar*bf - detu*1e6*2*np.pi # pl.plot(ze, fulldetu/2/np.pi/1e6) # pl.show() # x = (k*v - 2*np.pi*zs.uprimehbar*bf - detu*1e6*2*np.pi)/2/np.pi/1e6 # x = bf*1e4
vf = sim['vf'] sl = zs.slowerlength(atom.aslow, eta, v0, 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'] bideal = zs.bideal(atom, 0, 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) ze = np.linspace(0.4, z[-1], 201) # for i, s in enumerate(segments): # print i, s, layer[i] f1 = lo.fieldcalc(ze, setup)/lo.fieldcalc(0, setup) pl.plot(ze, lo.fieldcalc(ze, setup)/lo.fieldcalc(0, setup), 'k-', linewidth=1) print setup['segments'] segments[18] = [302, 302] segments[19] = [302, 304] segments[20] = [304, 304] print setup['segments'] f2 = lo.fieldcalc(ze, setup)/lo.fieldcalc(0, setup) pl.plot(ze, lo.fieldcalc(ze, setup)/lo.fieldcalc(0, setup), 'r-', linewidth=1) simulation = {'R': R, 'eta': eta,
if i > 239: looppos[i] += delta cstart = looppos[segments[1][0]] 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) # delta2 = 0.008 delta2 = 0 zadjust = -0.019 - 0.058 + cstart + delta2 zpos = mesdata[:, 0] / 100 + zadjust mesfield = mesdata[:, 1] pl.figure(figsize=(11.69, 8.27)) pl.plot(ze, lo.fieldcalc(ze, setup) * current * 1e4, "r-", linewidth=3, label="Simulation") pl.plot(zpos, mesfield, "ko", label="Measured") pl.xlabel("Position (m)", fontsize=16) pl.ylabel("Field (G)", fontsize=16) pl.legend(loc="upper right") pl.title(title) pl.savefig("%s.pdf" % (outname)) pl.savefig("%s.png" % (outname)) pl.show()
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'] ## Slower length d = wire[0]/2 # half wire diameter l1 = segments[1][0] l2 = segments[-2][1]-1 slength = (looppos[l2]+d) - (looppos[l1]-d) sizes[j, i] = slength * 100 # turn into cm ## Current bideal = zs.bideal(atom, 0, eta, v0, vf, detu) bthis = lo.fieldcalc(0, setup) I0 = bideal / bthis currents[j, i] = I0 ## Power totallen = lo.totalcoillength(sim['setup'], sim['R'], sim['wire'][0]) resistance = sim['wire'][1] * totallen power = resistance * I0**2 powers[j, i] = power ## Weight volume = totallen * ((sim['wire'][0]/2)**2 * np.pi) weight = volume * weightUnit weights[j, i] = weight ## Plot the Power vs. Weight curve