예제 #1
0
        x_ranges4.append((-h * (i + 1), -(r**2 - (h * (i + 1))**2)**.5))
        x_ranges5.append((-h * (i + 1), -(r**2 - (h * (i + 1))**2)**.5))
        y_ranges6.append((-h * (i + 1), -(r**2 - (h * (i + 1))**2)**.5))
        y_ranges7.append((-h * (i + 1), -(r**2 - (h * (i + 1))**2)**.5))
        x_ranges8.append((h * (i + 1), (r**2 - (h * (i + 1))**2)**.5))

xlist = [
    x_ranges1, x_ranges2, x_ranges3, x_ranges4, x_ranges5, x_ranges6,
    x_ranges7, x_ranges8
]
ylist = [
    y_ranges1, y_ranges2, y_ranges3, y_ranges4, y_ranges5, y_ranges6,
    y_ranges7, y_ranges8
]
''' Now build your own world '''
w = World(1)
# first build the dc electrodes
i = 0
r = [0, 0, 185e-6]
for xr, yr in zip(x_ranges, y_ranges):
    i = i + 1
    w.add_electrode(str(i), xr, yr, 'dc')
    for xrp, yrp in zip(xlist[i - 1], ylist[i - 1]):
        w.dc_electrode_dict[str(i)].extend([[xrp, yrp]])
    w.dc_electrode_dict[str(i)].expand_in_multipoles(r)

C = w.multipole_control_matrix(r, ['Ex', 'Ey', 'U3', 'U4'],
                               r0=10**-3)  #compute the control matrix

#write control matrix to file
f = open('ringtrapCMartix.csv', 'w')
cx1 = -45.e-6
cx2 = 45.e-6

rfy1 = -5280.e-6
rfy2 = 9475.e-6

lx1 = -490.e-6
lx2 = -190.e-6
rx1 = 325.e-6
rx2 = 625.e-6

# y coords of the dc electrodes
y_ranges = 1e-6 * np.array([(0, 300.), (305., 605.), (610., 910.),
                            (915., 1215.), (1220., 1320.), (1325., 1625.),
                            (1630., 1930.), (1935., 2235), (2240., 2540.),
                            (2545., 2995.), (3000., 3450.)])
''' Now build your own world '''
w = World()
# first build the left electrodes
for num, yr in zip(range(1, 12), y_ranges):
    w.add_electrode(str(num), (lx1, lx2), yr, 'dc')
# now the right electrodes
for num, yr in zip(range(12, 23), y_ranges):
    w.add_electrode(str(num), (rx1, rx2), yr, 'dc')
# add the center
w.add_electrode('23', (cx1, cx2), (rfy1, rfy2), 'dc')
# add the RF
w.add_electrode('rf1', (smallrfx1, smallrfx2), (rfy1, rfy2), 'rf')
w.add_electrode('rf2', (bigrfx1, bigrfx2), (rfy1, rfy2), 'rf')
#w.drawTrap()
예제 #3
0
upper_y_edges = lower_y_edges + dy


#y-range tuples for the outer electrodes
yranges = list(map(lambda i: (lower_y_edges[i], upper_y_edges[i]), y_indices))

xrangeRight = (160*u,160*u + dx)
xrangeLeft = (-160*u - dx, -160*u)



#create a world object and start filling in electrodes
#axes_permutation = 1 means that y lies in the trap plane, and z is the normal
# direction (height)
FTrapWorld = World(axes_permutation=1)

#left electrodes, 1-10
for i in range(1, 11):
    yrange = yranges[i-1]
    FTrapWorld.add_electrode(str(i), xrangeLeft, yrange, 'dc')
    FTrapWorld.add_electrode(str(i+10), xrangeRight, yrange, 'dc')	
	
FTrapWorld.add_electrode('21', centerxRange, centeryRange, 'dc')
FTrapWorld.add_electrode('RF1', RF1xRange, RFyRange, 'rf')
FTrapWorld.add_electrode('RF2', RF2xRange, RFyRange, 'rf')

plt.ion()
FTrapWorld.drawTrap()