Closed sergey-tomin closed 9 years ago
c/c++ code will probably be needed when introducing space charge. At the same time, for most of the present applications the calculation speed is not critical. I propose to postpone this question for some time. When/if we will be introducing mesh methods, this shall be reconsidered. Probably the best way is to interface c++ code with cython, swig, ect. The problem is that python classes (element, transfer map, particle_array maybe some others) will need to be wrapped, which is lots of code and will impede introduction of new python features. I would not start doing that before more performance bottlenecks start appearing.
Привет Илья,
Меня интересует элемент „undulator“. Что такое Kx и Ky?
Функция write_lattice из модуля io не сохраняет этот элемент в файл. Можешь ли ты изменить эту функцию для сохранения undulator?
Игорь
Вот как этот элемент определен в элеганте
Привет Игорь! насчет сохранения это мой косяк, забыл добавить ондулятор. Уже сделал. Kx, Ky - deflection parameters (в Элеганте K-Dimensionless strength parameter.). В обычном пленарном однуляторе используй просто Kx .
Сергей.
Привет Сергей,
Как реализована фокусировка андулятора? Тестировалась ли она?
Почему при сохранении элемента cavity не сохраняется фаза?
Можно ли ввести в cavity параметер который включал бы и отключал бы rf-focusing?
Игорь
From: sergey-tomin [mailto:notifications@github.com] Sent: Sunday, December 07, 2014 8:05 PM To: iagapov/ocelot Cc: Zagorodnov, Igor Subject: Re: [ocelot] speed up calculations (#29)
Привет Игорь! насчет сохранения это мой косяк, забыл добавить ондулятор. Уже сделал. Kx, Ky - deflection parameters (в Элеганте K-Dimensionless strength parameter.). В обычном пленарном однуляторе используй просто Kx .
Сергей.
— Reply to this email directly or view it on GitHub https://github.com/iagapov/ocelot/issues/29#issuecomment-65948969 . https://github.com/notifications/beacon/AISyP38xwVNaogk37TlSg6q74px8QrV4ks5nVJxygaJpZM4C_lwU.gif
iii. делать не надо. Если что-то тестировать, то можно отключить в коде.
please open another issue for this discussion.
Я застрял с ускорительными элементами. Для ускорения on-crest чему должна быть равна фаза? 0 или 90 градусов? В элеганте это 90 градусов.
Я пытаюсь увидеть рост энергии используя
Energy = np.array(map(lambda p: p.E, tws)).
Но энергия остается постоянной. Что я делаю не так?
Это оптика
DRIFT_0.646679650799 = Drift(l = 0.646679650799, id = 'DRIFT_0.646679650799')
DRIFT_0.525731 = Drift(l = 0.525731, id = 'DRIFT_0.525731')
DRIFT_0.963 = Drift(l = 0.963, id = 'DRIFT_0.963')
DRIFT_0.4476 = Drift(l = 0.4476, id = 'DRIFT_0.4476')
DRIFT_0.3232 = Drift(l = 0.3232, id = 'DRIFT_0.3232')
DRIFT_0.6732 = Drift(l = 0.6732, id = 'DRIFT_0.6732')
DRIFT_0.8863 = Drift(l = 0.8863, id = 'DRIFT_0.8863')
DRIFT_0.2954 = Drift(l = 0.2954, id = 'DRIFT_0.2954')
DRIFT_1.736106 = Drift(l = 1.736106, id = 'DRIFT_1.736106')
DRIFT_0.348 = Drift(l = 0.348, id = 'DRIFT_0.348')
DRIFT_0.3485 = Drift(l = 0.3485, id = 'DRIFT_0.3485')
DRIFT_0.35955 = Drift(l = 0.35955, id = 'DRIFT_0.35955')
DRIFT_0.065 = Drift(l = 0.065, id = 'DRIFT_0.065')
DRIFT_0.64355 = Drift(l = 0.64355, id = 'DRIFT_0.64355')
DRIFT_2.7713 = Drift(l = 2.7713, id = 'DRIFT_2.7713')
DRIFT_0.1954 = Drift(l = 0.1954, id = 'DRIFT_0.1954')
DRIFT_1.588744 = Drift(l = 1.588744, id = 'DRIFT_1.588744')
Q1DBC2.U = Quadrupole(l = 0.1384, k1 = -5.986955, id = 'Q1DBC2.U')
Q1DBC2.D = Quadrupole(l = 0.1384, k1 = -5.986955, id = 'Q1DBC2.D')
Q1.1DBC2 = Quadrupole(l = 0.2768, k1 = 6.114656, id = 'Q1.1DBC2')
Q2DBC2 = Quadrupole(l = 0.2768, k1 = -3.462379, id = 'Q2DBC2')
Q2.2DBC2 = Quadrupole(l = 0.2768, k1 = 1.401877, id = 'Q2.2DBC2')
Q3DBC2.U = Quadrupole(l = 0.1384, k1 = 0.88379, id = 'Q3DBC2.U')
Q3DBC2.D = Quadrupole(l = 0.1384, k1 = 0.88379, id = 'Q3DBC2.D')
Q4DBC2 = Quadrupole(l = 0.2768, k1 = -3.2434, id = 'Q4DBC2')
Q5DBC2.U = Quadrupole(l = 0.1384, k1 = 3.2434, id = 'Q5DBC2.U')
Q5DBC2.D = Quadrupole(l = 0.1384, k1 = 3.2434, id = 'Q5DBC2.D')
Q6DBC2 = Quadrupole(l = 0.2768, k1 = -3.2434, id = 'Q6DBC2')
Q7DBC2.U = Quadrupole(l = 0.1384, k1 = 3.2434, id = 'Q7DBC2.U')
Q7DBC2.D = Quadrupole(l = 0.1384, k1 = 3.2434, id = 'Q7DBC2.D')
Q8DBC2 = Quadrupole(l = 0.2768, k1 = -3.2434, id = 'Q8DBC2')
Q9DBC2.U = Quadrupole(l = 0.1384, k1 = 3.2434, id = 'Q9DBC2.U')
Q9DBC2.D = Quadrupole(l = 0.1384, k1 = 3.2434, id = 'Q9DBC2.D')
Q10DBC2 = Quadrupole(l = 0.2768, k1 = -3.2434, id = 'Q10DBC2')
Q10.3DBC2 = Quadrupole(l = 0.3046, k1 = -5.49855, id = 'Q10.3DBC2')
Q11DBC2.U = Quadrupole(l = 0.1523, k1 = 6.360868, id = 'Q11DBC2.U')
Q11DBC2.D = Quadrupole(l = 0.1523, k1 = 6.360868, id = 'Q11DBC2.D')
Q12DBC2 = Quadrupole(l = 0.3046, k1 = -4.717402, id = 'Q12DBC2')
Q9ACC2.U = Quadrupole(l = 0.0925, k1 = 2.988514, id = 'Q9ACC2.U')
Q9ACC2.D = Quadrupole(l = 0.0925, k1 = 2.988514, id = 'Q9ACC2.D')
Q10ACC2.U = Quadrupole(l = 0.0925, k1 = -2.988514, id = 'Q10ACC2.U')
Q10ACC2.D = Quadrupole(l = 0.0925, k1 = -2.988514, id = 'Q10ACC2.D')
Q9ACC3.U = Quadrupole(l = 0.0925, k1 = 2.374885, id = 'Q9ACC3.U')
Q9ACC3.D = Quadrupole(l = 0.0925, k1 = 2.374885, id = 'Q9ACC3.D')
Q10ACC3.U = Quadrupole(l = 0.0925, k1 = -2.908592, id = 'Q10ACC3.U')
Q10ACC3.D = Quadrupole(l = 0.0925, k1 = -2.908592, id = 'Q10ACC3.D')
Q1UBC3.U = Quadrupole(l = 0.1523, k1 = 0.442439, id = 'Q1UBC3.U')
Q1UBC3.D = Quadrupole(l = 0.1523, k1 = 0.442439, id = 'Q1UBC3.D')
Q2UBC3 = Quadrupole(l = 0.3046, k1 = 0, id = 'Q2UBC3')
D1BC2 = Bend(l = 0.50832, angle = -0.314159, e1 = 0, e2 = -0.314159, tilt = 0, id = 'D1BC2')
D2BC2 = Bend(l = 0.50832, angle = 0.314159, e1 = 0.314159, e2 = 0, tilt = 0, id = 'D2BC2')
D3BC2 = Bend(l = 0.50832, angle = 0.314159, e1 = 0, e2 = 0.314159, tilt = 0, id = 'D3BC2')
D4BC2 = Bend(l = 0.50832, angle = -0.314159, e1 = -0.314159, e2 = 0, tilt = 0, id = 'D4BC2')
D1BC3 = Bend(l = 0.500367, angle = -0.066323, e1 = 0, e2 = -0.066323, tilt = 0, id = 'D1BC3')
C1.M1.ACC23 = Cavity(l = 1.0363, volt = 16534700.3937, delta_e = 0.0, freq = 1300000000, phi = 0, volterr = 0.0, id = 'C1.M1.ACC23')
C2.M1.ACC23 = Cavity(l = 1.0363, volt = 13042900.0854, delta_e = 0.0, freq = 1300000000, phi = 0, volterr = 0.0, id = 'C2.M1.ACC23')
C3.M1.ACC23 = Cavity(l = 1.0363, volt = 18794099.8077, delta_e = 0.0, freq = 1300000000, phi = 0, volterr = 0.0, id = 'C3.M1.ACC23')
C4.M1.ACC23 = Cavity(l = 1.0363, volt = 19410299.3011, delta_e = 0.0, freq = 1300000000, phi = 0, volterr = 0.0, id = 'C4.M1.ACC23')
C5.M1.ACC23 = Cavity(l = 1.0363, volt = 18588699.3408, delta_e = 0.0, freq = 1300000000, phi = 0, volterr = 0.0, id = 'C5.M1.ACC23')
C6.M1.ACC23 = Cavity(l = 1.0363, volt = 15507699.9664, delta_e = 0.0, freq = 1300000000, phi = 0, volterr = 0.0, id = 'C6.M1.ACC23')
C7.M1.ACC23 = Cavity(l = 1.0363, volt = 19102199.5544, delta_e = 0.0, freq = 1300000000, phi = 0, volterr = 0.0, id = 'C7.M1.ACC23')
C8.M1.ACC23 = Cavity(l = 1.0363, volt = 19718399.0479, delta_e = 0.0, freq = 1300000000, phi = 0, volterr = 0.0, id = 'C8.M1.ACC23')
C1.M2.ACC23 = Cavity(l = 1.0363, volt = 18662622.4518, delta_e = 0.0, freq = 1300000000, phi = 0, volterr = 0.0, id = 'C1.M2.ACC23')
C2.M2.ACC23 = Cavity(l = 1.0363, volt = 18662622.4518, delta_e = 0.0, freq = 1300000000, phi = 0, volterr = 0.0, id = 'C2.M2.ACC23')
C3.M2.ACC23 = Cavity(l = 1.0363, volt = 18662622.4518, delta_e = 0.0, freq = 1300000000, phi = 0, volterr = 0.0, id = 'C3.M2.ACC23')
C4.M2.ACC23 = Cavity(l = 1.0363, volt = 18662622.4518, delta_e = 0.0, freq = 1300000000, phi = 0, volterr = 0.0, id = 'C4.M2.ACC23')
C5.M2.ACC23 = Cavity(l = 1.0363, volt = 18662622.4518, delta_e = 0.0, freq = 1300000000, phi = 0, volterr = 0.0, id = 'C5.M2.ACC23')
C6.M2.ACC23 = Cavity(l = 1.0363, volt = 18662622.4518, delta_e = 0.0, freq = 1300000000, phi = 0, volterr = 0.0, id = 'C6.M2.ACC23')
C7.M2.ACC23 = Cavity(l = 1.0363, volt = 18662622.4518, delta_e = 0.0, freq = 1300000000, phi = 0, volterr = 0.0, id = 'C7.M2.ACC23')
C8.M2.ACC23 = Cavity(l = 1.0363, volt = 18662622.4518, delta_e = 0.0, freq = 1300000000, phi = 0, volterr = 0.0, id = 'C8.M2.ACC23')
lattice = (DRIFT_0.646679650799, D1BC2, DRIFT_0.525731, D2BC2, DRIFT_0.963, D3BC2, DRIFT_0.525731,
D4BC2, DRIFT_0.4476, Q1DBC2.U, Q1DBC2.D, DRIFT_0.3232, Q1.1DBC2, DRIFT_0.3232, Q2DBC2,
DRIFT_0.3232, Q2.2DBC2, DRIFT_0.3232, Q3DBC2.U, Q3DBC2.D, DRIFT_0.3232, Q4DBC2, DRIFT_0.6732,
Q5DBC2.U, Q5DBC2.D, DRIFT_0.6732, Q6DBC2, DRIFT_0.6732, Q7DBC2.U, Q7DBC2.D, DRIFT_0.6732,
Q8DBC2, DRIFT_0.6732, Q9DBC2.U, Q9DBC2.D, DRIFT_0.6732, Q10DBC2, DRIFT_0.8863, Q10.3DBC2,
DRIFT_0.2954, Q11DBC2.U, Q11DBC2.D, DRIFT_0.2954, Q12DBC2, DRIFT_1.736106, C1.M1.ACC23, DRIFT_0.348,
C2.M1.ACC23, DRIFT_0.3485, C3.M1.ACC23, DRIFT_0.3485, C4.M1.ACC23, DRIFT_0.3485, C5.M1.ACC23, DRIFT_0.3485,
C6.M1.ACC23, DRIFT_0.3485, C7.M1.ACC23, DRIFT_0.3485, C8.M1.ACC23, DRIFT_0.35955, Q9ACC2.U, Q9ACC2.D,
DRIFT_0.065, Q10ACC2.U, Q10ACC2.D, DRIFT_0.64355, C1.M2.ACC23, DRIFT_0.3485, C2.M2.ACC23, DRIFT_0.3485,
C3.M2.ACC23, DRIFT_0.3485, C4.M2.ACC23, DRIFT_0.3485, C5.M2.ACC23, DRIFT_0.3485, C6.M2.ACC23, DRIFT_0.3485,
C7.M2.ACC23, DRIFT_0.3485, C8.M2.ACC23, DRIFT_0.35955, Q9ACC3.U, Q9ACC3.D, DRIFT_0.065, Q10ACC3.U,
Q10ACC3.D, DRIFT_2.7713, Q1UBC3.U, Q1UBC3.D, DRIFT_0.1954, Q2UBC3, DRIFT_1.588744, D1BC3)
Оптика без ускорения совпадает. С ускорением нет. Прерывистой линией показаны данные из элеганта.
From: sergey-tomin [mailto:notifications@github.com] Sent: Monday, December 08, 2014 11:04 AM To: iagapov/ocelot Cc: Zagorodnov, Igor Subject: Re: [ocelot] speed up calculations (#29)
— Reply to this email directly or view it on GitHub https://github.com/iagapov/ocelot/issues/29#issuecomment-66048664 . https://github.com/notifications/beacon/AISyP8FuImvJP02O8NWQiA3FUvrSJ_ikks5nVW8BgaJpZM4C_lwU.gif
Я задал изменение энергии в ускорительном модуле через delta_e (через v не работает), но RF фокусировка не работает. Где в коде я могу найти как реализована RF фокусировка?
Корректоры Hcor и Vcor не сохраняются в файл.
Функция write_lattice из модуля io.
fixed
Я посылаю пример. Расхождение оптики из- за RF фокусировки показано на рисунке. Пример разархивировать с поддерикторией, которая содержит файлы из элеганта. Запускать twiss_s2e.py.
From: sergey-tomin [mailto:notifications@github.com] Sent: Tuesday, December 09, 2014 12:58 PM To: iagapov/ocelot Cc: Zagorodnov, Igor Subject: Re: [ocelot] speed up calculations (#29)
fixed
— Reply to this email directly or view it on GitHub https://github.com/iagapov/ocelot/issues/29#issuecomment-66272174 . https://github.com/notifications/beacon/AISyP5uOoEeDBUAka0AwDI5Kdw2laKFVks5nVtsugaJpZM4C_lwU.gif
куда посылаешь?
Куда то послал. Дай твой прямой адрес.
From: sergey-tomin [mailto:notifications@github.com] Sent: Tuesday, December 09, 2014 1:29 PM To: iagapov/ocelot Cc: Zagorodnov, Igor Subject: Re: [ocelot] speed up calculations (#29)
куда посылаешь?
— Reply to this email directly or view it on GitHub https://github.com/iagapov/ocelot/issues/29#issuecomment-66275413 . https://github.com/notifications/beacon/AISyPx9az_ba5BJaUy2EtLBYgM2EyXRFks5nVuJ9gaJpZM4C_lwU.gif
Мне Илья уже переслал, но вот на всякий случай tominsi@mail.ru
Igor, I see in your input file something like:
C1.M1.ACC23 = Cavity(l = 1.0363, volt = 16534700.3937, delta_e = 0.018, freq = 1300000000, phi = 0, volterr = 0.0, id = 'C1.M1.ACC23') C2.M1.ACC23 = Cavity(l = 1.0363, volt = 13042900.0854, delta_e = 0.018, freq = 1300000000, phi = 0, volterr = 0.0, id = 'C2.M1.ACC23')
so the cavities have different voltages but same delta_e and phi=0. Are you converting it right?
done
scipy.weave is unsupported now. We need to choose standard tool for speeding up some calculations. Maybe cython? Replace scipy.weave in code.