รหัสฟิสิกส์เครื่องเร่งอนุภาค
เครื่องเร่งอนุภาคประจุเป็นเครื่องจักรที่ซับซ้อนซึ่งใช้อนุภาคประจุพื้นฐานและเร่งให้มีพลังงานสูงมากฟิสิกส์เครื่องเร่งอนุภาคเป็นสาขาหนึ่งของฟิสิกส์ที่ครอบคลุมทุกแง่มุมที่จำเป็นในการออกแบบและใช้งานอุปกรณ์ และเพื่อทำความเข้าใจพลวัตที่เกิดขึ้นของอนุภาคประจุ มีแพ็กเกจซอฟต์แวร์ที่เกี่ยวข้องกับแต่ละโดเมน เอกสารสรุปของกลุ่มรหัสเครื่องเร่งอนุภาค Los Alamos ฉบับปี 1990 [ 1 ]ให้บทสรุปของรหัสมากกว่า 200 รหัส รหัสบางส่วนยังคงใช้งานอยู่ในปัจจุบัน แม้ว่าหลายรหัสจะล้าสมัยแล้วก็ตาม ดัชนีอีกอันหนึ่งของรหัสจำลองเครื่องเร่งอนุภาคที่มีอยู่และในอดีตอยู่ที่ เว็บไซต์ CERN CARE/HHH [ 2 ]
รหัสพลศาสตร์อนุภาคเดี่ยว
สำหรับการใช้งานหลายอย่าง การติดตามอนุภาคเดี่ยวผ่านสนามไฟฟ้าและสนามแม่เหล็กที่เกี่ยวข้องก็เพียงพอแล้ว รหัสเก่าที่ผู้เขียนดั้งเดิมหรือสถาบันต้นสังกัดไม่ได้ดูแลรักษาอีกต่อไป ได้แก่ BETA, [ 3 ] AGS, ALIGN, COMFORT, DESIGN, DIMAD, HARMON, LEGO, LIAR, MAGIC, MARYLIE, PATRICIA, PETROS, RACETRACK, SYNCH, [ 4 ] TRANSPORT, TURTLE และ UAL รหัสเก่าบางส่วนได้รับการดูแลรักษาโดยองค์กรเชิงพาณิชย์สำหรับสิ่งอำนวยความสะดวกด้านเครื่องเร่งอนุภาคทางวิชาการ อุตสาหกรรม และการแพทย์ที่ยังคงใช้รหัสเหล่านั้นอยู่ TRACE 3-D และ TURTLE เป็นหนึ่งในรหัสเก่าแก่ที่ได้รับการดูแลรักษาในเชิงพาณิชย์[ 5 ]
รหัสหลักที่ได้รับการดูแลรักษา ได้แก่:
| พลศาสตร์อนุภาคเดี่ยว | การติดตามการหมุน | แผนที่เทย์เลอร์ | ปฏิสัมพันธ์ระหว่างลำแสงอ่อนและลำแสงแรง | การติดตามสนามแม่เหล็กไฟฟ้า | ผลกระทบรวมของพลังงานระดับสูง | ผลกระทบจากรังสีซินโครตรอน | การติดตามรังสี | เวกฟิลด์ส | ขยายได้ | หมายเหตุ | |
|---|---|---|---|---|---|---|---|---|---|---|---|
| กล่องเครื่องมือเร่งความเร็ว (AT), [ 6 ] | ใช่ | ใช่[ 7 ] | เลขที่ | เลขที่ | เลขที่ | ใช่ | เลขที่ | เลขที่ | เลขที่ | ใช่ | |
| อัสตรา[ 8 ] | ใช่ | เลขที่ | เลขที่ | เลขที่ | ใช่ | ใช่ | เลขที่ | เลขที่ | ใช่ | เลขที่ | สำหรับการจำลองประจุอวกาศ |
| BDSIM [ 9 ] | ใช่ | เลขที่ | เลขที่ | เลขที่ | ใช่ | เลขที่ | เลขที่ | เลขที่ | เลขที่ | ใช่ | สำหรับการจำลองปฏิสัมพันธ์ระหว่างอนุภาคและสสาร |
| Bmad (ประกอบด้วย PTC) [ 10 ] | ใช่ | ใช่ | ใช่ | ใช่ | ใช่ | ใช่ | ใช่ | ใช่ | ใช่ | ใช่ | จำลองโครงสร้างลำแสงที่เป็นเอกลักษณ์ของ PTC และจำลองรังสีเอ็กซ์ |
| คอสซี่ อินฟินิตี้[ 11 ] | ใช่ | ใช่ | ใช่ | เลขที่ | ใช่ | เลขที่ | เลขที่ | เลขที่ | เลขที่ | ใช่ | แผนที่ถ่ายโอนเชิงอนุพันธ์พีชคณิตลำดับใดๆ |
| ไดนาค[ 12 ] | ใช่ | เลขที่ | เลขที่ | เลขที่ | เลขที่ | เลขที่ | เลขที่ | เลขที่ | เลขที่ | เลขที่ | |
| สง่างาม[ 13 ] | ใช่ | เลขที่ | เลขที่ | เลขที่ | ใช่ | ใช่ | ใช่ | เลขที่ | ใช่ | เลขที่ | |
| ImpactX [ 14 ] | ใช่ | ใช่ | เลขที่ | ใช่ (ผ่าน WarpX) | ใช่ (ผ่าน WarpX) | ใช่ | ใช่ | เลขที่ | ใช่ | ใช่ | การรองรับ GPU หลายโหนด |
| MAD8 และ MAD-X (รวมถึง PTC) [ 15 ] | ใช่ | เลขที่ | ใช่ | ใช่ | เลขที่ | เลขที่ | ใช่ | เลขที่ | เลขที่ | เลขที่ | |
| MAD-NG [ 15 ] | ใช่ | เลขที่ | ใช่ | ใช่ | เลขที่ | เลขที่ | ใช่ | เลขที่ | เลขที่ | ใช่ | ขยายได้ และฝัง LuaJIT ไว้ภายใน |
| MERLIN++ [ 16 ] [ 17 ] | ใช่ | ใช่ | เลขที่ | เลขที่ | เลขที่ | เลขที่ | เลขที่ | เลขที่ | ใช่ | ใช่ | อื่นๆ: ปฏิสัมพันธ์ระหว่างลำแสงกับสสาร, การติดตามอนุภาคขนาดใหญ่แบบแบ่งส่วน |
| โอเซลอต[ 18 ] | ใช่ | เลขที่ | เลขที่ | เลขที่ | เลขที่ | ใช่ | ใช่ | ใช่ | ใช่ | ใช่ | |
| OPA [ 19 ] | ใช่ | เลขที่ | เลขที่ | เลขที่ | เลขที่ | เลขที่ | เลขที่ | เลขที่ | เลขที่ | เลขที่ | |
| โอปอล[ 20 ] | ใช่ | เลขที่ | ใช่ | เลขที่ | ใช่ | ใช่ | เลขที่ | เลขที่ | ใช่ | ใช่ | ทำงานบนแล็ปท็อปและบนซีพียูที่มี 10,000 คอร์ |
| PLACET [ 21 ] | ใช่ | เลขที่ | เลขที่ | เลขที่ | เลขที่ | ใช่ | ใช่ | เลขที่ | ใช่ | ใช่ | เครื่องเร่งอนุภาคเชิงเส้น (LINAC) รวมถึงการจำลองสนามคลื่นรบกวน |
| โฆษณา[ 22 ] | ใช่ | เลขที่ | เลขที่ | เลขที่ | เลขที่ | เลขที่ | เลขที่ | เลขที่ | เลขที่ | ใช่ | |
| พีทีซี[ 23 ] | ใช่ | ใช่ | ใช่ | ใช่ | ใช่ | เลขที่ | เลขที่ | เลขที่ | เลขที่ | ใช่ | |
| SAD [ 24 ] | ใช่ | เลขที่ | เลขที่ | ใช่ | เลขที่ | ใช่ | ใช่ | เลขที่ | ใช่ | เลขที่ | |
| SAMM [ 25 ] | ใช่ | ใช่ | เลขที่ | เลขที่ | เลขที่ | เลขที่ | เลขที่ | เลขที่ | เลขที่ | เลขที่ | |
| ซิกแทร็ก[ 26 ] | ใช่ | เลขที่ | ใช่ | ใช่ | เลขที่ | เลขที่ | เลขที่ | เลขที่ | เลขที่ | เลขที่ | สามารถใช้งานบนBOINC ได้ |
| Xsuite [ 27 ] | ใช่ | ใช่ | เลขที่ | ใช่ | ใช่ | ใช่ | ใช่ | เลขที่ | ใช่ | ใช่ | รองรับการติดตาม ด้วย CPUและGPU หลายตัว |
| Zgoubi [ 28 ] [ 29 ] | ใช่ | ใช่ | เลขที่ | เลขที่ | ใช่ | เลขที่ | ใช่ | เลขที่ | เลขที่ | ใช่ |
คอลัมน์
- การติดตามการหมุน
- การ ติดตาม การหมุนของอนุภาค
- แผนที่เทย์เลอร์
- การสร้าง แผนที่อนุกรม เทย์เลอร์ลำดับสูงที่สามารถนำมาใช้จำลองการเคลื่อนที่ของอนุภาค และยังสามารถใช้สำหรับสิ่งต่างๆ เช่น การหาค่าความแรงของการสั่นพ้องของอนุภาคเดี่ยวได้อีกด้วย
- ปฏิสัมพันธ์ระหว่างลำแสงอ่อนและลำแสงแรง
- สามารถจำลองการปฏิสัมพันธ์ระหว่างลำแสงได้โดยใช้หลักการที่ว่าลำแสงหนึ่งมีขนาดคงที่ ดูรายการโค้ดสำหรับการปฏิสัมพันธ์ระหว่างลำแสงแรงสูงได้ด้านล่าง
- การติดตามสนามแม่เหล็กไฟฟ้า
- สามารถติดตาม (เรย์เทรซ) อนุภาคผ่านสนามแม่เหล็กไฟฟ้าใดๆ ได้
- ผลกระทบรวมของพลังงานระดับสูง
- ปฏิสัมพันธ์ระหว่างอนุภาคในลำแสงสามารถส่งผลกระทบสำคัญต่อพฤติกรรม การควบคุม และพลวัตได้ ผลกระทบโดยรวมมีหลายรูปแบบ ตั้งแต่การกระเจิงภายในลำแสง (Intrabeam Scattering : IBS) ซึ่งเป็นการปฏิสัมพันธ์โดยตรงระหว่างอนุภาค ไปจนถึงสนามคลื่น (wakefields) ซึ่งเกิดจากการส่งผ่านโดย ผนัง ห้องสุญญากาศของเครื่องจักรที่อนุภาคเคลื่อนที่อยู่ โดยทั่วไป ผลกระทบของการปฏิสัมพันธ์โดยตรงระหว่างอนุภาคจะน้อยลงเมื่อลำแสงอนุภาคมีพลังงานสูง ที่พลังงานต่ำมากประจุในอวกาศจะมีผลกระทบอย่างมากต่อลำแสงอนุภาคทำให้ยากต่อการคำนวณ โปรดดูรายการโปรแกรมที่สามารถจัดการกับแรงประจุในอวกาศที่พลังงานต่ำได้ด้านล่าง
- ผลกระทบจากรังสีซินโครตรอน
สามารถจำลองผลกระทบของการปล่อยรังสีซินโครตรอนต่ออนุภาคที่กำลังติดตามได้
- การติดตามรังสี
- ความสามารถในการติดตามรังสีซินโครตรอน (ส่วนใหญ่เป็นรังสีเอ็กซ์ ) ที่เกิดจากการเร่งความเร็วของอนุภาคที่มีประจุ
นี่ไม่ใช่การจำลองผลกระทบของการปล่อยรังสีซินโครตรอนต่ออนุภาคที่กำลังติดตาม
- เวกฟิลด์ส
- ปฏิสัมพันธ์ทางแม่เหล็กไฟฟ้าระหว่างลำแสงและผนังห้องสุญญากาศที่ล้อมรอบลำแสงนั้นเรียกว่าสนามเวคฟิลด์ สนามเวคฟิลด์สร้างแรงที่ส่งผลต่อวิถีการเคลื่อนที่ของอนุภาคในลำแสงและอาจทำให้วิถีการเคลื่อนที่นั้นไม่เสถียรได้
- ขยายได้
- การเขียนโค้ดแบบโอเพนซอร์สและเชิงวัตถุ ทำให้การขยายขีดความสามารถทำได้ค่อนข้างง่าย
รหัสประจุอวกาศ
ปฏิสัมพันธ์ภายในตัวเอง (เช่น ประจุอวกาศ) ของลำแสงอนุภาคที่มีประจุสามารถทำให้ลำแสงขยายตัว เช่น การยืดตัวของกลุ่มอนุภาค หรือการกระเจิงภายในลำแสง นอกจากนี้ ผลกระทบจากประจุอวกาศอาจทำให้เกิดความไม่เสถียรและการสูญเสียลำแสงที่เกี่ยวข้อง โดยทั่วไป ที่พลังงานค่อนข้างต่ำ (ประมาณพลังงานที่ค่าสัมประสิทธิ์แกมมาเชิงสัมพัทธภาพน้อยกว่า 10 หรือประมาณนั้น) สมการปัวซงจะถูกแก้เป็นระยะๆ ในระหว่างการติดตามโดยใช้ อัลกอริธึม แบบอนุภาคในเซลล์ผลกระทบจากประจุอวกาศจะลดลงที่พลังงานสูงขึ้น ดังนั้นที่พลังงานสูงขึ้น ผลกระทบจากประจุอวกาศอาจถูกจำลองโดยใช้อัลกอริธึมที่ง่ายกว่า ซึ่งคำนวณได้เร็วกว่าอัลกอริธึมที่ใช้ที่พลังงานต่ำกว่ามาก โค้ดที่จัดการกับผลกระทบจากประจุอวกาศที่พลังงานต่ำ ได้แก่:
- อัสตรา[ 8 ]
- บีแมด
- CST Studio Suite [ 30 ]
- GPT [ 31 ]
- ผลกระทบ[ 32 ]
- ImpactX [ 33 ]
- mbtrack [ 34 ]
- ORBIT, [ 35 ] PyORBIT [ 36 ]
- โอปอล[ 37 ]
- PyHEADTAIL [ 38 ]
- Synergia [ 39 ]
- TraceWin [ 40 ]
- ทรานฟ์[ 41 ]
- VSim [ 42 ]
- วาร์ป[ 43 ]
- Xsuite [ 27 ]
ที่ระดับพลังงานสูงขึ้น ผลกระทบจากประจุในอวกาศ ได้แก่ปรากฏการณ์ทูเช็ก (Touschek effect)และการแผ่รังสีซินโครตรอนแบบสอดคล้องกัน (Coherent Synchrotron Radiation: CSR) โค้ดที่รองรับการจัดการประจุในอวกาศที่ระดับพลังงานสูง ได้แก่:
- บีแมด
- สง่างาม
- อิมแพ็คเอ็กซ์
- แมรี่ลี
- เศร้า
รหัสเอฟเฟกต์ลำแสงต่อลำแสง "แรงมาก"
เมื่อลำแสงสองลำชนกัน สนามแม่เหล็กไฟฟ้าของลำแสงหนึ่งจะส่งผลกระทบอย่างมากต่ออีกลำแสงหนึ่ง เรียกว่า ผลกระทบระหว่างลำแสง (beam-beam effects) การจำลองแบบ "อ่อน-แรง" (weak-strong) จะจำลองลำแสงหนึ่ง (เรียกว่าลำแสง "แรง" เนื่องจากส่งผลกระทบต่ออีกลำแสงหนึ่ง) เป็นการกระจายตัวแบบคงที่ (โดยทั่วไปคือการกระจายแบบเกาส์เซียน) ซึ่งมีปฏิสัมพันธ์กับอนุภาคของลำแสง "อ่อน" อีกอันหนึ่ง วิธีนี้ช่วยลดความซับซ้อนของการจำลองลงอย่างมาก การจำลองแบบ "แรง-แรง" (strong-strong) เต็มรูปแบบนั้นซับซ้อนกว่าและใช้เวลาในการจำลองนานกว่า โค้ดสำหรับการจำลองแบบแรง-แรง ได้แก่...
รหัสการคำนวณอิมพีแดนซ์
ปรากฏการณ์รวมหมู่ที่สำคัญประเภทหนึ่งอาจสรุปได้ในแง่ของการตอบสนองของลำแสงต่อ " อิมพีแดนซ์ " ดังนั้นงานที่สำคัญอย่างหนึ่งคือการคำนวณอิมพีแดนซ์นี้สำหรับเครื่องจักร รหัสสำหรับการคำนวณนี้ได้แก่
แม่เหล็กและรหัสการสร้างแบบจำลองฮาร์ดแวร์อื่นๆ
ในการควบคุมลำแสงอนุภาคประจุ จำเป็นต้องสร้างสนามไฟฟ้าและสนามแม่เหล็กที่เหมาะสม มีซอฟต์แวร์หลายแพ็กเกจที่ช่วยในการออกแบบและทำความเข้าใจเกี่ยวกับแม่เหล็ก โพรง RF และองค์ประกอบอื่นๆ ที่สร้างสนามเหล่านี้ โค้ดต่างๆ ได้แก่
ปัญหาเกี่ยวกับคำอธิบายโครงสร้างแลตติสและการแลกเปลี่ยนข้อมูล
เนื่องจากงานสร้างแบบจำลองมีความหลากหลาย จึงไม่มีรูปแบบข้อมูลทั่วไปรูปแบบใดที่พัฒนาขึ้นมา สำหรับการอธิบายเค้าโครงของตัวเร่งความเร็วและองค์ประกอบที่เกี่ยวข้อง จะใช้สิ่งที่เรียกว่า "ไฟล์แลตติส" มีความพยายามมากมายในการรวมรูปแบบไฟล์แลตติสที่ใช้ในโค้ดต่างๆ ความพยายามในการรวมรูปแบบหนึ่งคือ Accelerator Markup Language และ Universal Accelerator Parser [ 55 ] ความพยายามอีกประการหนึ่งในแนวทางที่เป็นหนึ่งเดียวสำหรับโค้ดตัวเร่งความเร็วคือ UAL หรือ Universal Accelerator Library [ 56 ]ณ ปี 2023 ไม่มีรูปแบบใดได้รับการดูแลรักษาอีกต่อไป
รูปแบบไฟล์ที่ใช้ใน MAD อาจเป็นรูปแบบที่พบได้ทั่วไป โดยมีรูทีนการแปลงเพื่อแปลงเป็นรูปแบบอินพุตที่จำเป็นสำหรับโค้ดอื่น โค้ด Elegant มีรูปแบบข้อมูลที่เรียกว่า SDDS พร้อมชุดเครื่องมือที่เกี่ยวข้อง หากใช้ โค้ดที่เขียนด้วย Matlabเช่น Accelerator Toolbox ก็จะสามารถใช้เครื่องมือทั้งหมดใน Matlab ได้
สำหรับการแลกเปลี่ยนตำแหน่งอนุภาคและสนามแม่เหล็กไฟฟ้า มาตรฐาน OpenPMD [ 57 ] กำหนดรูปแบบที่สามารถนำไปใช้กับรูปแบบไฟล์เช่นHDF5ได้
รหัสในแอปพลิเคชันของเครื่องเร่งอนุภาค
เครื่องเร่งอนุภาคมีแอปพลิเคชันมากมาย ตัวอย่างเช่น แอปพลิเคชันที่สำคัญสองอย่างคือฟิสิกส์อนุภาค พื้นฐาน และ การผลิต รังสีซินโครตรอน เมื่อทำการสร้างแบบจำลองสำหรับการทำงานของเครื่องเร่งอนุภาคใดๆ ผลลัพธ์ของการจำลองพลศาสตร์ลำแสงอนุภาคประจุต้องถูกป้อนเข้าสู่แอปพลิเคชันที่เกี่ยวข้อง ดังนั้น สำหรับการจำลองแบบเต็มรูปแบบ จำเป็นต้องรวมโค้ดไว้ในแอปพลิเคชันที่เกี่ยวข้อง สำหรับฟิสิกส์อนุภาค การจำลองอาจดำเนินการต่อในเครื่องตรวจ จับด้วยโค้ดเช่นGeant4
ตัวอย่างเช่น สำหรับสิ่งอำนวยความสะดวกการแผ่รังสีซินโครตรอน ลำแสงอิเล็กตรอนจะสร้างลำแสงเอ็กซ์เรย์ จากนั้นจะเดินทางลงไปตามลำแสงก่อนที่จะถึงการทดลอง ดังนั้นซอฟต์แวร์จำลองลำแสงอิเล็กตรอนจะต้องเชื่อมต่อกับ ซอฟต์แวร์จำลอง เลนส์เอ็กซ์เรย์ เช่น SRW [ 58 ] Shadow [ 59 ] McXTrace [ 60 ]หรือ Spectra [ 61 ] Bmad [ 10 ]สามารถจำลองได้ทั้งลำแสงเอ็กซ์เรย์และลำแสงอนุภาคประจุ เอ็กซ์เรย์ถูกใช้ในการทดลองซึ่งอาจถูกจำลองและวิเคราะห์ด้วยซอฟต์แวร์ต่างๆ เช่น แพลตฟอร์มวิทยาศาสตร์ DAWN [ 62 ] OCELOT [ 63 ]ยังรวมถึงการคำนวณการแผ่รังสีซินโครตรอนและแบบจำลองการแพร่กระจายของเอ็กซ์เรย์ด้วย
เครื่องเร่งอนุภาคอุตสาหกรรมและการแพทย์ถือเป็นอีกหนึ่งพื้นที่ของการใช้งานที่สำคัญ การสำรวจในปี 2013 ประมาณการว่ามีเครื่องเร่งอนุภาคอุตสาหกรรมประมาณ 27,000 เครื่อง และเครื่องเร่งอนุภาคทางการแพทย์อีก 14,000 เครื่องทั่วโลก[ 64 ]และจำนวนดังกล่าวก็เพิ่มขึ้นอย่างต่อเนื่องนับตั้งแต่นั้นมา[ 65 ] รหัสที่ใช้ในสถานประกอบการเหล่านั้นมีความแตกต่างกันอย่างมาก และมักจะประกอบด้วยรหัสแบบดั้งเดิมและรหัสที่กำหนดเองซึ่งพัฒนาขึ้นสำหรับการใช้งานเฉพาะ รหัสวงโคจรขั้นสูง (AOC) [ 66 ]ที่พัฒนาขึ้นที่Ion Beam Applicationsเป็นตัวอย่างหนึ่ง
ดูเพิ่มเติม
- รายชื่อโค้ดจากห้องปฏิบัติการฟิสิกส์ลำแสงอนุภาค UCLA ที่เก็บถาวรเมื่อวันที่ 17 กรกฎาคม 2018 ที่Wayback Machine
- การเปรียบเทียบรหัสเร่งความเร็ว