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()
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()