MADX (Methodical Accelerator Design) Yöntemli Hızlandırıcı Tasarımı Programı için PTC (Polymorphic Tracking Code) Çok Biçimli İzleme Programı Öznur METE CERN, 21 Mayıs 2012 e-posta: oznur.mete@cern.ch www: www.cern.ch/omete 1
/ MADX -PTC 1 2 Bu derste... MADX e yeni başlayanlar için kısa bir giriş olarak HPFBU2012 okulundaki MADX dersinin ufak bir bölümüne göz atacağız. HPFBU2012 de işlenen MADX derslerine aşağıdaki bağlantılardan ulaşabilirsiniz: MADX 1, 2, 3: https://indico.cern.ch/conferencetimetable.py?confid=149935#20120216.detailed MADX 4: https://indico.cern.ch/conferencetimetable.py?confid=149935#20120218.detailed Daha önce düzenli örgü kusurları ve bunların düzeltilmesi ve yeni geliştirilen bir madx akıllı yazım programı olan MADED ile ilgili de yaptığımız bir diğer dersle ilgili belgelere ise aşağıdaki bağlantıdan ulaşabilirsiniz: https://indico.cern.ch/conferencedisplay.py?confid=182397 Bu dersin ilerleyen bölümlerinde PTC kütüphanesi ile ilgili bazı bilgiler edinip, MADX içinde nasıl kullanıldığını gösteren örnekler üzerinde çalışacağız.
/ MADX -PTC 1 3 Giriş Genel amaçlı hızlandırıcı örgü tasarım programları hakkında... Doğrusal ve dairesel hızlandırıcılar için kullanılabilirler. Özellikleri tanımlanmış bir hızlandırıcı için optik parametreleri hesaplarlar. İstenilen nicelikleri hesaplarlar (denkleştirme / matching). Hızlandırıcı üzerinde oluşabilecek kusurları benzetimini yapabilirler ve bu kusurları düzeltebilirler. Demet dinamiği benzetimi yaparlar.
/ MADX -PTC 1 4 Giriş MADX Şu anda kullanacağımız son hali aslında yıllar sürmüş uzun bir gelişim zincirinin son halkasıdır. 20 yıldan fazladır, CERN deki çeşitli hızlandırıcıların tasarımında ve benzetim çalışmalarında kullanıldı (PS, SPS, LEP, LHC, gelecek nesil hızlandırıcılar, demet hatları). Şu anda gündemde olan sürümleri: MAD8, MAD9, MADX (PTC, polymorphic tracking code -- çok biçimli izleme kodu). Temel olarak büyük projeler (LEP, LHC, CLIC...) için tasarlanmış bir programdır.
/ MADX -PTC 1 5 Şimdi biraz ısınmaya başlayalım Herhangi bir optik tasarım programı için ne tür veriler gerekir? Hızlandırıcının tanımı: Herbir hızlandırıcı bileşeninin tanımı. Bileşenlerin özellikleri. Bileşenlerin konumları. Demetin (ya da demetlerin) tanımı. Programın ne yapmasının istenildiğine dair yönergeler.
/ MADX -PTC 1 6 Şimdi biraz ısınmaya başlayalım Deneyelim... x: ==> angle = 2*pi/1232; x: ==> value, angle; x: ==> value, asin(1,0)*2; x: ==> dx = gauss()*2.0; x: ==> value, dx; x: ==> value, dx; x: ==> dx := gauss()*2.0; x: ==> value, dx; x: ==> value, dx; Yeni öğrenenler için...
/ MADX -PTC 1 7 Şimdi biraz ısınmaya başlayalım Deneyelim... Bir önceki yazdıklarımızı bir dosya içine yazalım. Yeni öğrenenler için... > madx x: ==> call, file=dosyam.dosya; > madx < dosyam.dosya (linux)
/ MADX -PTC 1 8 Bir adım daha... Basit MADX iş kütüğü yönergeleri Öncelikle girdi dosyasını ya da dosyalarını tanımlayacağız. Sonra kullanılacak demetin özelliklerini tanımlayacağız. Çeşitli hesaplamaları başlatacağız. (Twiss hesapları, hataların atanması, yörünge düzeltmeleri v.b....) Hangi parametrelerin sonuçlarını istediğimizi ve sonuçların çıktı biçimini belirleyeceğiz. Gerekli parametreleri denkleştireceğiz.
/ MADX -PTC 1 9 Bir adım daha... Kullanacağımız MADX iş kütüğü
/ MADX -PTC 1 10 Bir adım daha... Kullanacağımız MADX iş kütüğü Girdi dosyasını çağırmalıyız: call, file= sps.seq ; Burada hızlandırıcının tanımlandığı bir dosya seçiyoruz. Bu birkaç dosyaya da paylaştırlmış olabilir.
/ MADX -PTC 1 11 Bir adım daha... Kullanacağımız MADX iş kütüğü Demetin türü ve özelliklerini tanımlamalıyız: Parçacık türü Enerjisi Yayınımı, içindeki parçacık sayısı,...
/ MADX -PTC 1 12 Bir adım daha... Kullanacağımız MADX iş kütüğü Hızlandırıcıyı etkinleştirmeliyiz: USE, sequence = hpfbu_sps; sps.seq içinde başka diziler de bulunabilir. USE komutu ile belirlenen dizi kullanılır.
/ MADX -PTC 1 13 Bir adım daha... Kullanacağımız MADX iş kütüğü SELECT komutu ile üzerinde çalışacağımız parametreleri seçmeliyiz. Seçilen parametrelerle şunlar yapılabilir: Twiss parametrelerinin hesabı Örgü fonksiyonlarının kaydedilmesi Beta fonksiyonun çizdirilmesi...
/ MADX -PTC 1 14 Bir adım daha... Kullanacağımız MADX iş kütüğü Bir komut çalıştıralım; dairesel hızlandırıcı çevresinde örgü parametrelerinin hesaplanması: twiss; ya da twiss, file=output; ya da twiss, sequence=hpfbu_sps;
/ MADX -PTC 1 15 Bir adım daha... Kullanacağımız MADX iş kütüğü Bir komut çalıştıralım; beta fonksiyonu ve dağılım için bir grafik çıktı oluşturalım.
/ MADX -PTC 1 16 Bir adım daha... Kullanacağımız MADX iş kütüğü Bir komut çalıştıralım; hızlandırıcının geometrisini gözden geçirip sonucu bir çıktı dosyasına yazalım.
/ MADX -PTC 1 17 Bir adım daha... MADX Sonuç Çıktısına Bir Örnek madx uzantılı dosyayı çalıştırdığımızda komut satırında görülen program çıktısı.
/ MADX -PTC 1 18 Bir adım daha... MADX Sonuç Çıktısına Bir Örnek madx uzantılı dosyayı çalıştırdığımızda oluşacak twiss.out dosyasından bir kesit. 1
/ MADX -PTC 1 19 Bir adım daha... MADX Sonuç Çıktısına Bir Örnek 2 madx uzantılı dosyayı çalıştırdığımızda oluşacak twiss.out dosyasından bir kesit.
/ MADX -PTC 1 20 Bir adım daha... MADX Grafik Çıktısına Bir Örnek: Beta fonksiyonları
/ MADX -PTC 1 21 Bir adım daha... MADX Grafik Çıktısına Bir Örnek: Dağılım fonksiyonu
/ MADX -PTC 1 22 Bir adım daha... MADX Grafik Çıktısına Bir Örnek: Hızlandırıcı Tarama Geometrik tarama sonucu x, y, z, theta cinsinden mutlak koordinatları verecektir. Tarama sonucunun olumlu olması için x in z ye karşı çizimi bir halka vermelidir.
/ MADX -PTC 1 23 PTC, Polymorphic Tracking Code PTC E.Forest tarafindan hazırlanan bir tekme (kick) kodudur. Tüm hızlandırıcı bileşenleri üzerinden symplectic toplamaya* (integration) izin verir. Symplectic toplama sayesinde kod kullanıcıya hassasiyet (integrasyon türü ve adım sayısı) ve kesinlik (Hamiltonian in tanımı) konusunda tam kontrol sağlar. Kesinliğin derecesini kullanıcı ve kullanıcının bilgisayarının hızı belirler. Kod özünde eşleme biçimlendirmesine (map formalism) dayandırılmıştır. PTC kodu, istenilen özellikleri hesaplayan modüller yaratmak için pekçok değişik şekilde kullanılabilecek bir kütüphanedir. MADX içine de PTC kodunu kullanan bir takım alt programlar eklenmiştir. Bu alt programlar çeşitli komutlarla çağırılır: ptc_twiss, ptc_normal, ptc_track, ptc_track_line Yukarıda verilen MADX-PTC komutları ile hesaplama yapabilmek için, bir PTC ortamı, MADX girdi betiği içinde özel komutlarla başlatılmalı, uygun işlemleri yapmak üzere ayarlanmalı ve kapatılmalıdır. * http://iopscience.iop.org/0951-7715/3/2/001/pdf/0951-7715_3_2_001.pdf
/ MADX -PTC 1 24 PTC, Polymorphic Tracking Code Komut Özeti PTC_CREATE_UNIVERSE, sector_nmul_max=integer, sector_nmul=integer, ntpsa=logical, symprint=logical; PTC_CREATE_LAYOUT, time=logical, model=integer, method=integer, nst=integer, exact=logical, offset_deltap=double, errors_out=logical, magnet_name=string, resplit=logical, thin=double, xbend=double, even=logical;... PTC_READ_ERRORS, overwrite=logical;... PTC_MOVE_TO_LAYOUT, index=integer;... PTC_ALIGN;... PTC_TWISS;... PTC_TRACK; PTC_TRACK_END;... PTC_END;
/ MADX -PTC 1 25 PTC, Polymorphic Tracking Code Komut Özeti PTC ortamı yaratıldıktan sonra görüldüğü gibi bu ortamda istenilen hesaplamayı yapacak alt-programları (modules) çalıştıracak komutlar kullanılabilmektedir. MADX içinde kullanılabilecek çok çeşitli komutları, bu komutların özelliklerini ve altprogramları MADX internet sayfasındaki Documentation bölümünden okuyabilirsiniz. Bu derste göreceğimiz örnekler için kullanılacak MADX-PTC komutları: CREATE_UNIVERSE CREATE_LAYOUT PTC_TWISS PTC_TRACK
/ MADX -PTC 1 26 PTC, Polymorphic Tracking Code PTC_CREATE_UNIVERSE PTC_CREATE_UNIVERSE, sector_nmul_max=integer, sector_nmul=integer, ntpsa=logical, symprint=logical; PTC_CREATE_UNIVERSE komutu PTC ortamının kurulması için kullanılmaktadır. Seçenekler Anlamı Varsayılan Değeri Türü sector_nmul_max sector_nmul Maxwell denklemlerinin hangi dereceye kadar çözüleceğini belirleyen genel bir PTC değişkennidir. Sector_nmul den küçük olması hataya sebep olur. Maxwell denklemlerinin çözümünde hangi dereceye kadar olan çokkutupluların hesaba katılacağını belirleyen genel bir PTC değişkennidir. 10 Tamsayı 10 Tamsayı ntpsa Bu parametre C++ da yazılmış DA (differential algebra)* paketini çağırır. DA paketi çok sayıda DA parametresinin etkin bir şekilde hesaplanmasını sağlar..false. Mantıksal symprint Bu gösterge symplecticity** durumunun çıktı olarak yazdırılıp yazdırılmayacağını belirler. Bunu TRUE olarak bırakmak tavsiye edilir..true. Mantıksal * http://bt.pa.msu.edu/pub/papers/pada/pada.pdf ** http://www.slac.stanford.edu/cgi-wrap/getdoc/slac-pub-9939.pdf
/ MADX -PTC 1 27 PTC, Polymorphic Tracking Code PTC_CREATE_LAYOUT PTC_CREATE_LAYOUT, time=logical, model=integer, method=integer, nst=integer, exact=logical, offset_deltap=double, errors_out=logical, magnet_name=string, resplit=logical, thin=double, xbend=double, even=logical; PTC_CREATE_LAYOUT komutu belirtilen toplama (integration) yöntemine göre PTC serimini belirler ve onu, en son USE komutunda belirlenen güncel MADX dizisi ile doldurur. Seçenekler Anlamı Varsayılan Değeri Türü time Kullanılacak koordinat sistemi ile ilgili çeşitli seçimler yapmamıza yarar. (Ayrıntı: http://mad.web.cern.ch/mad/).true. Mantıksal model Bileşen türü: 1 (Sürüklenme-Tekme-Sürüklenme), 2 (Matris-Tekme-Matris) veya 3 (Delta-Matris-Tekme- Matris). 1 Tamsayı method Toplama sırası (2, 4, 6) 2 Tamsayı nst Toplama adımlarının sayısı: 1, 2, 3,... 1 Tamsayı
PTC, Polymorphic Tracking Code PTC_CREATE_LAYOUT Seçenekler Anlamı Varsayılan Değeri Türü exact Hesaplamaları tam Hamiltonian ile mi yoksa genişletilmiş Hamiltonian ile mi yapmak istediğimizi bildirir..false. Mantıksal offset_deltap Referans parçacığın görece sapması. (Sadece 6D durumunda) 0.0 Double errors_out Çeşitli hata türlerine ilişkin çıktı alma bildirimini vermek için kullanılır..false. Mantıksal magnet_name Hata yazma durumunda hatalarının yazılacağı magnetlerin isimleri. NULL String resplit Bu uyarı ile RESPLIT yöntemi uygulanır. Bu ise METHOD ve NST özelliklerinde verilen değerlerin magnet kuvvetlerıne uygun olarak yenilenmesini sağlar..false. Mantıksal thin Bu ana RESPLIT özelliğidir. Dörtkutupluları kuvvetlerine göre bölmek için kullanılır. 0.001 Double xbend Bu özellik ise ikikutupluları bölmek için kullanılır. -1 (kapalı) Double even / MADX -PTC 1 Toplama için adımlamanın bir çift sayı olmasını sağlamak için kullanılır. Özellikle Twiss parametrelerini magnetlelerin ortasında hesaplamak istiyorsak bu özelliğin TRUE olmasına dikkat etmeliyiz. 28
/ MADX -PTC 1 29 PTC, Polymorphic Tracking Code PTC_TWISS PTC_CREATE_UNIVERSE; PTC_CREATE_LAYOUT, model=integer,method=integer, nst=integer, [exact];... SELECT, flag=ptc_twiss, clear; SELECT, flag=ptc_twiss, column=name, s, beta11,...,beta33,alfa11,..., alfa33,gama11,...,gama33, beta11p,...,beta33p,alfa11p,...,alfa33p,gama11p,...,gama33p, mu1,...,mu3, disp1,...,disp4, disp1p,...,disp4p, disp1p2,...,disp4p2, disp1p3,...,disp4p3, [eign], eign11,...,eign16,...,eign61,...,eign66;... PTC_TWISS;... PTC_END;
/ MADX -PTC 1 30 PTC, Polymorphic Tracking Code PTC_TWISS PTC_TWISS, icase=integer, deltap=double, closed_orbit, slice_magnets, range=string, file[=string], table[=string], initial_matrix_table, initial_matrix_manual, initial_map_manual, beta0=string, betx=double, alfx=double, mux=double, bety=double, alfy=double, muy=double, dx=double, dpx=double, dy=double, dpy=double, x=double, px=double, y=double, py=double, t=double, pt=double, re11=double, re12=double,...,re16=double,... re61=double, re62=double,...,re66=double; PTC_TWISS komutu G. Ripken s yöntemi* ile TWISS parametrelerini hesaplar. En son USE satırında belirtilmiş demet hattı üzerinde hesaplama yapar. Bu komut kullanılırken çeşitli seçenekler belirtilebilir. Bu seçeneklerden en önemlileri yukarıdaki komut örneğinde belirtilmiştir. PTC_TWISS komutunun uygulamaları normal TWISS komutu ile benzerdir. İki temel şekilde görevlendirilebilir: Bir periyodik çözümün hesaplanması veya başlangıç şartları verilen bir çözümün bulunması. * http://frs.home.cern.ch/frs/xdoc/ptc_twiss/1988_ripken.pdf
/ MADX -PTC 1 31 PTC, Polymorphic Tracking Code PTC_TWISS
/ MADX -PTC 1 32 PTC, Polymorphic Tracking Code PTC_TWISS
/ MADX -PTC 1 33 PTC, Polymorphic Tracking Code PTC_TRACK PTC_TRACK, deltap=double, icase=integer, closed_orbit, element_by_element, turns=integer, dump, onetable, maxaper=double array, norm=integer, norm_out, file[=string], extension=string, ffile=integer, radiation, radiation_model1, radiation_energy_loss, radiation_quadr, beam_envelope, space_charge; PTC_TRACK komutu ince mercek kabullenmesi altında izleme alt programını çağırarak gezinge izleme hesaplarını başlatır. Yine, komutun en önemli özellikleri yukarıdaki özette verilmiştir. Çeşitli özel durumlar için kullanılmak üzere başka özelliklerde bulunmaktadır. İzleme, element_by_element seçeneği seçilerek her bileşen için ya da turn_by_turn seçeneği seçilerek her dönü için koordinat dönüşümü yapılarak gerçekleştirilebilir. İzleme paralel yapılan bir işlemdir. Yani, koordinat dönüşümleri, belirtilen parçacıklar için, her bileşen üzerinden ya da her dönü başına aynı anda hesaplanır. Bu işlemler sırasında PTC sürekli olarak parçacıkların verilen aperture içinde kalıp kalmadığını kontrol edecektir.
/ MADX -PTC 1 34 PTC, Polymorphic Tracking Code PTC_TRACK
/ MADX -PTC 1 35 PTC, Polymorphic Tracking Code ÖRNEK: PTC_TWISS ve PTC_TRACK komutlarının kullanımı Bugün üzerinde çalışacağımız iş kütüğünden bir kesit.
/ MADX -PTC 1 36 PTC, Polymorphic Tracking Code ÖRNEK: PTC_TWISS ve PTC_TRACK komutlarının kullanımı PTC ortamını oluşturalım, kullanacağımız modeli belirleyelim..
/ MADX -PTC 1 37 PTC, Polymorphic Tracking Code ÖRNEK: PTC_TWISS ve PTC_TRACK komutlarının kullanımı 6 parçacık için başlangıç koşullarını belirleyelim.
/ MADX -PTC 1 38 PTC, Polymorphic Tracking Code ÖRNEK: PTC_TWISS ve PTC_TRACK komutlarının kullanımı Parçacıkları izleme komutunu verelim. icase=4, evre uzayının dört boyutlu olacağını gösterir. closed_orbit, kapalı halka için hesap yapılacağını gösterir. dump, parçacık koordinatlarının text kütüklerine yazılacağını gösterir. turns=1000, izlemenin kaç dönü boyunca yapılacağını gösterir. ffile=1, koordinatların ffile ile verilen dönü sonunda çıktı olarak basılacağını gösterir.
/ MADX -PTC 1 39 PTC, Polymorphic Tracking Code ÖRNEK: PTC_TWISS ve PTC_TRACK komutlarının kullanımı İstediğimiz parçacık için enine ve boyuna evre uzayını çizdirebiliriz.
/ MADX -PTC 1 40 PTC, Polymorphic Tracking Code ÖRNEK: PTC_TWISS ve PTC_TRACK komutlarının kullanımı PTC_TRACK alt programından çıkalım.
/ MADX -PTC 1 41 PTC, Polymorphic Tracking Code ÖRNEK: PTC_TWISS ve PTC_TRACK komutlarının kullanımı TWISS alt programı çalıştıktan sonra saklamak istediğimiz parametreleri seçelim.
/ MADX -PTC 1 42 PTC, Polymorphic Tracking Code ÖRNEK: PTC_TWISS ve PTC_TRACK komutlarının kullanımı TWISS alt programını çağıralım, hesaplanan parametrelerin, PTC_twiss.twiss1 kütüğüne yazılmasını söyleyelim.
/ MADX -PTC 1 43 PTC, Polymorphic Tracking Code ÖRNEK: PTC_TWISS ve PTC_TRACK komutlarının kullanımı PTC ortamını kapatalım.
/ MADX -PTC 1 44 PTC, Polymorphic Tracking Code ÖRNEK: PTC_TWISS ve PTC_TRACK komutlarının kullanımı Bu örnek için sizlere MADX örneklerinden üç kütük sağlandı. fv9_1.madx (önceki sayfalardaki komutların da bulunduğu genel iş kütüğü) fv9.seq (üzerinde hesaplamalar yapacağımız hızlandırıcı dizisinin verildiği kütük) fv9.opt (dizide bulunan çeşitli magnetik bileşenlerin kuvvetlerinin verildiği kütük) Şimdi hep birlikte bu dosyalara göz atalım ve madx uzantılı iş dosyasını aşağıdaki komutu kullanaral çalıştıralım. madx < fv9_1.madx
/ MADX -PTC 1 45 PTC, Polymorphic Tracking Code Ödev PTC_TRACK ve PTC_TWISS komutları için kullanılabilecek çeşitli özelliklerin (attributes) ayrıntılarını MADX internet sayfalarında Documentation/MADX User s Guide Index sayfalarından inceleyiniz. Yine Documentation sayfasında MAD-X Examples bölümü bulunmaktadır. Buradaki PTC_TRACK ve PTC_TWISS dizinlerinde bulunan örnekleri inceleyiniz. MADX internet sayfası: http://mad.web.cern.ch/mad/