def main(): print("Test") acc = Accelerator() width = 0.4 height = 0.2 t0 = Transformator("T0", width, height) p1 = Pipe(width, height, 1.0) s0 = Screen("Screen", width, height, 0.2, 0.2) t1 = Transformator("T1", width, height) q1 = QuadrupoleMagnet("UN4QD11", width, height, 1.0, 0.8) q2 = QuadrupoleMagnet("UN4QD12", width, height, 1.0, -0.8) sl1 = Slit("Slit1", width, height) p2 = Pipe(width, height, 3.0) sl2 = Slit("Slit2", width, height) k1 = HorizontalKickerMagnet("kicker", width, height, 0.02) p3 = Pipe(width, height, 3.0) t2 = Transformator("T2", width, height) m1 = SectorBendingMagnet("UN4MU1", width, height, length=1.0, angle=0.5) t3 = Transformator("T3", width, height) s1 = Screen("Screen1", width, height, 0.2, 0.2) s2 = Screen("Screen2", width, height, 0.2, 0.2) # acc.append_devices([t0]) acc.append_devices([t0, s0, p1, t1, q1, sl1, q2, sl1, p2, sl2, s1, k1, p3, t2, m1, t3, s2]) sl2.set_positions(xpos_left=-0.01, xpos_right=0.01, ypos_bottom=-0.01, ypos_top=0.01) n = 80000 ''' acc.reset() simulate(accelerator=acc, num_of_particles=n, threaded=False, measure_time=True) print(t0.count.value, " particles in T0\n") print(s0.num_of_particles(), " particles in S0\n") ''' acc.reset() simulate(accelerator=acc, num_of_particles=n, threaded=True, measure_time=True) print(t0.count.value, " particles in T0\n") print(s0.num_of_particles(), " particles in S0\n") s1.show() s2.show()
q2 = QuadrupoleMagnet("UN4QD12", width, height, 1.0, -0.5) sl1 = Slit("Slit1", width, height) p2 = Pipe(width, height, 3.0) sl2 = Slit("Slit2", width, height) k1 = HorizontalKickerMagnet("kicker", width, height, 0.02) p3 = Pipe(width, height, 3.0) t2 = Transformator("T2", width, height) m1 = SectorBendingMagnet("UN4MU1", width, height, length=1.0, angle=0.5) t3 = Transformator("T3", width, height) s1 = Screen("Screen1", width, height, 0.2, 0.2) s2 = Screen("Screen2", width, height, 0.2, 0.2) #acc.append_devices([t0]) #print(repr(acc)) sl1.set_positions(xpos_left=-0.01, xpos_right=0.01, ypos_bottom=-0.01, ypos_top=0.01) acc.append_devices([t0, p1, sl1, s0, t1, q2, p2, sl2, s1, k1, p3, t2, m1, t3, s2]) #print(acc.to_xml()) acc.to_file('acc.xml') xml_root = ET.parse('acc.xml').getroot() acc2 = Accelerator(xml_root=xml_root) print(acc) print(acc2) acc.start_simulation(100000) acc.get_device_by_nomenclature("Screen1").show() print("T0:", acc.get_device_by_nomenclature("T0").count.value) print("T1:", acc.get_device_by_nomenclature("T1").count.value)