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) pl.plot(newsetup['looppos'], np.array(x[0])/10.0, 'g--', label='coil wind number / 10') pl.xlabel('Position') pl.ylabel('Field / Coil wind number') pl.ylim([-1.1, 1.1]) pl.title(r'pitch=%.1fmm, %.1fA, >%.1f$\Omega$, >%.1fW, %s' %(data['d0']*1000, curr, resist, power, basefile)) pl.legend(loc='best') pl.savefig('%s.png' %basefile) pl.savefig('%s.pdf' %basefile) pl.show()
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)) 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)