Пример #1
0
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
Пример #2
0
    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
Пример #3
0
    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()
Пример #4
0
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)
Пример #5
0
    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()
Пример #6
0
    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
Пример #7
0
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,
Пример #8
0
    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()
Пример #9
0
        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