多极铁(Multipole)
本模块介绍 PASS 中的通用多极铁元件 Multipole ,用于模拟带电粒子在任意阶多极磁铁中的运动。与四极铁、六极铁、八极铁等单阶元件不同,多极铁通过 knl / ksl 数组同时支持任意阶(含混合阶)多极分量,适用于场误差注入、组合多极元件、高阶多极铁等场景。
PASS 中的多极铁支持 厚元件 ( length > 0 )和 薄透镜 ( length = 0 )两种模式,厚元件采用精确漂移-动量更新-漂移(DKD-exact)辛积分方案,支持 uniform(2阶)和 yoshida4(4阶)两种辛积分器。动量更新采用 Horner 嵌套求值。
核心特征:
支持任意阶多极分量(
knl/ksl数组,最高阶由数组长度决定)支持正分量(
knl)和斜分量(ksl)及其组合支持薄透镜模式(
length = 0,仅施加多极动量更新)支持厚透镜模式(
length > 0,DKD-exact 辛积分)支持 uniform(2阶蛙跳)和 yoshida4(4阶 Yoshida 组合)积分器
Horner 嵌套求值,向量化实现,无逐粒子分支
零场(所有
knl/ksl分量为零)时自动退化为纯漂移支持孔径检查
单阶退化与四极铁/六极铁/八极铁逐粒子一致
以下接口中的字段用于 PASS.para.schema.elements.MultipoleItem 配置类;
元件名称由 Sequence.add(name, item) 的序列键给出,不是配置类字段。
接口参数
Python 配置字段 |
JSON 键 |
类型 |
单位 |
默认值 |
说明 |
|---|---|---|---|---|---|
|
|
|
m |
|
元件出口或零长度作用点的纵向位置。 |
|
|
|
m |
|
磁铁长度, \(= 0\) 为薄透镜 |
|
|
|
— |
|
正分量积分强度数组 \([K_{0L}, K_{1L}, \ldots]\) |
|
|
|
— |
|
斜分量积分强度数组 \([K_{0sL}, K_{1sL}, \ldots]\) |
|
|
|
— |
|
MAD-X 位选择值;2 启用内置多极端场,4 启用四极 F1/F2。 |
|
|
|
— |
|
内置端场的最高极序:2 为四极,3 为六极,4 为八极。 |
|
|
|
— |
|
屏蔽物理入口的全部已启用端场映射。 |
|
|
|
— |
|
屏蔽物理出口的全部已启用端场映射。 |
|
|
|
1 |
|
厚透镜切片数 |
|
|
|
— |
|
积分器,可选: |
|
|
|
— |
|
孔径类型 |
|
|
|
m / rad |
|
孔径参数值 |
Note
knl 和 ksl 数组长度不需要相同,短的数组自动补零。最高阶数 \(N\) 由较长数组的长度决定( \(N = \max(\text{len}) - 1\) )。
正、斜分量的时变强度可设置 is_ramping=True 与
ramping_file="magnet_ramp.tfs"``(JSON:``Is ramping、Ramping file)。
TFS 列名、单位和入口采样约定见 磁铁 ramping。每个非空 bunch 在入口
采样一次,强度在整个元件内冻结。运行时名义强度保留最后执行的 bunch 入口值,
场误差独立保存。同一页面也说明 update_strengths 的用法。
端场映射在物理两端各执行一次,使用启用后的总正、斜分量强度。 选择值、极序截断、零长度限制与 MAD-X/PTC 对比约定见 物理入口和出口端场映射。
使用示例
薄透镜多极铁(场误差注入)
{
"MPE1": {
"S (m)": 10.0,
"Command": "multipole",
"Length (m)": 0.0,
"KiL": [0.0, 0.0, 0.001, 0.0005],
"KiSL": [0.0, 0.0, 0.0003, 0.0001],
"Aperture type": "off"
}
}
零长度多极铁,含二阶和三阶场误差分量。用于模拟磁铁安装误差或加工误差对束流的影响。
厚透镜多极铁(组合元件)
{
"MP1": {
"S (m)": 20.0,
"Command": "multipole",
"Length (m)": 0.5,
"KiL": [0.0, 0.3, 5.0, 200.0],
"KiSL": [0.0, 0.0, 0.0, 0.0],
"Num slices": 5,
"Integrator": "yoshida4",
"Aperture type": "off"
}
}
厚透镜组合多极铁,同时含四极、六极、八极正分量,5 个切片,4 阶辛积分。
单阶多极铁(等价于八极铁)
{
"MP2": {
"S (m)": 30.0,
"Command": "multipole",
"Length (m)": 0.0,
"KiL": [0.0, 0.0, 0.0, 500.0],
"KiSL": [0.0, 0.0, 0.0, 200.0],
"Aperture type": "off"
}
}
仅含三阶分量( knl=[0,0,0,500] , ksl=[0,0,0,200] ),表示同时具有正、斜分量的薄透镜八极场,与 Octupole 使用相同的场展开约定。
高阶多极铁(十极铁)
{
"MP3": {
"S (m)": 40.0,
"Command": "multipole",
"Length (m)": 0.0,
"KiL": [0.0, 0.0, 0.0, 0.0, 10000.0],
"KiSL": [0.0, 0.0, 0.0, 0.0, 0.0],
"Aperture type": "off"
}
}
四阶多极铁(十极铁), knl=[0,0,0,0,10000] 。专用元件只支持到八极(三阶),多极铁可支持任意阶。
坐标约定
采用 纵向坐标与参考到达时间 的连续纵向坐标。 \(T_b\) 是理想参考粒子在当前位置的实际通过时刻,不是束团质心时刻; 局部映射中的 \(\beta_0\) 和 \(P_0\) 表示当前束团参考量。 \(p_x=P_x/P_0\) 是归一化动量,不是轨迹斜率。
PASS 采用归一化曲线坐标,六维相空间变量为 \((x, p_x, y, p_y, z, \delta)\) :
变量 |
符号 |
定义 |
|---|---|---|
|
\(x\) |
水平偏移(相对于参考轨道) |
|
\(p_x\) |
归一化水平动量, \(p_x = P_x / P_0\) |
|
\(y\) |
垂直偏移 |
|
\(p_y\) |
归一化垂直动量, \(p_y = P_y / P_0\) |
|
\(\zeta\) |
纵向坐标, \(z=\zeta=\beta_b c(T_b-t_i)\) |
|
\(\delta\) |
相对动量偏差, \(\delta = P / P_0 - 1\) |
其中 \(P_0\) 为参考粒子动量, \(\beta_0 = v_0 / c\) 为参考粒子归一化速度, \(s\) 为沿参考轨道的弧长, \(t\) 为时间。
纵向动量分量定义为:
荷质比因子:
对于同种粒子束 \(\chi = 1\) 。
多极磁场与归一化强度
通用多极磁铁的磁场在横向平面内展开为泰勒级数。用复数表示:
其中 \(K_n\) 为 \(n\) 阶归一化多极强度(单位 \(\text{m}^{-n-1}\) ), \(N\) 为最高阶数。 \(1/n!\) 是泰勒展开的自然系数。
展开前几阶:
阶数 \(n\) |
\(n!\) |
元件类型 |
磁场表达式 |
|---|---|---|---|
0 |
1 |
弯转磁铁 |
\(B_y + i B_x = \frac{P_0}{q_0} K_0\) |
1 |
1 |
四极铁 |
\(B_y + i B_x = \frac{P_0}{q_0} K_1 (x + i y)\) |
2 |
2 |
六极铁 |
\(B_y + i B_x = \frac{P_0}{q_0} \frac{K_2}{2} (x + i y)^2\) |
3 |
6 |
八极铁 |
\(B_y + i B_x = \frac{P_0}{q_0} \frac{K_3}{6} (x + i y)^3\) |
归一化积分强度定义为:
其中 \(L\) 为磁铁长度, \(K_{nL}\) 为正分量, \(K_{nsL}\) 为斜分量。PASS 中用户通过 knl 数组指定 \([K_{0L}, K_{1L}, K_{2L}, \ldots]\) ,通过 ksl 数组指定 \([K_{0sL}, K_{1sL}, K_{2sL}, \ldots]\) 。
Note
knl 和 ksl 输入积分多极强度,不预除以阶乘。场展开中的 \(1/n!\) 由内部求值包含。
整体跟踪流程
根据磁铁长度,多极铁有两种跟踪模式:
薄透镜模式 ( \(L = 0\) )
====== 薄透镜 (length = 0) ======
单次多极动量更新 Kick(knl, ksl)
[位置不变,仅动量跳变]
厚透镜模式 ( \(L > 0\) )
====== 厚透镜 (length > 0) ======
切片1 → 切片2 → ... → 切片N
(每个切片: Drift(ds/2) → Kick(ds) → Drift(ds/2))
其中 ds = L / N
knl_eff = kn * ds, ksl_eff = ks * ds
若所有 knl/ksl 分量为零:退化为单次精确漂移 Drift(L)
完整映射为:
薄透镜:
厚透镜(N 个切片):
其中每个切片的 DKD 映射为:
Note
薄透镜模式不改变粒子的位置坐标 \((x, y, z)\) ,仅施加动量动量更新
厚透镜模式的色品等效应通过精确漂移中的 \(p_z\) 表达式自然引入
当所有
knl/ksl分量为零时,厚透镜退化为纯漂移,避免无意义的空动量更新循环
物理推导
哈密顿量
在直线坐标系中(多极铁无曲率, \(h = 0\) ),通用多极铁的哈密顿量为:
其中求和项为势能部分。将其拆分为传播部分(精确漂移 \(H_D\) )和动量更新部分( \(H_K\) ):
动量更新映射
由哈密顿方程 \(\Delta p_x = -\frac{\partial H_K}{\partial x} \Delta s\) , \(\Delta p_y = -\frac{\partial H_K}{\partial y} \Delta s\) ,对积分强度 \(K_{nL} = K_n \cdot \Delta s\) 求得:
其中 \((x+iy)^n\) 的实部对应正分量,虚部对应斜分量。
Note
复数场约定为 \(B_y + i B_x = \frac{P_0}{q_0} \sum_n \frac{K_n}{n!} (x+iy)^n\) ( 不含共轭 )。使用共轭 \(\overline{(x+iy)^n}\) 会导致 \(\Delta p_y\) 符号错误,此约定已通过六极铁交叉验证确认。
Horner 嵌套求值
多极动量更新的核心是计算多项式:
其中 \(c_n = \chi \cdot K_{nL} / n!\) 。直接展开高阶项计算量大且数值不稳定。PASS 采用 Horner 嵌套求值。
Horner 递推从最高阶系数开始,逐步向下:
index = order
dpx_mul = chi * knl[order] / order! # 最高阶系数
dpy_mul = chi * ksl[order] / order!
while index > 0:
zre = dpx_mul * x - dpy_mul * y # Re[(dpx_mul + i*dpy_mul) * (x + iy)]
zim = dpx_mul * y + dpy_mul * x # Im[(dpx_mul + i*dpy_mul) * (x + iy)]
index -= 1
dpx_mul = chi * knl[index] / index! + zre
dpy_mul = chi * ksl[index] / index! + zim
dpx = -dpx_mul # px 取负(弧度约定)
dpy = +dpy_mul # py 不取负
其中 zre 和 zim 是复数乘法 \((\text{dpx\_mul} + i \cdot \text{dpy\_mul}) \cdot (x + i y)\) 的实部和虚部。
最终动量更新为:
注意 \(\Delta p_x\) 取负(弧度约定), \(\Delta p_y\) 不取负。
各阶展开结果
将 Horner 递推展开,前几阶结果为:
阶数 |
\(\Delta p_x\) (正分量) |
\(\Delta p_y\) (正分量) |
|---|---|---|
\(n=0\) |
\(-\chi K_{0L}\) |
\(0\) |
\(n=1\) |
\(-\chi K_{1L} \cdot x\) |
\(+\chi K_{1L} \cdot y\) |
\(n=2\) |
\(-\chi K_{2L}/2 \cdot (x^2 - y^2)\) |
\(+\chi K_{2L} \cdot x y\) |
\(n=3\) |
\(-\chi K_{3L}/6 \cdot (x^3 - 3xy^2)\) |
\(+\chi K_{3L}/6 \cdot (3x^2 y - y^3)\) |
斜分量的动量更新通过复数乘法 \(i \cdot z^n\) 自然交换实虚部:将上表中 \(\Delta p_x\) 的正分量公式移至 \(\Delta p_y\) ,将 \(\Delta p_y\) 的正分量公式移至 \(\Delta p_x\) 并取负。
Note
Horner 递推对任意阶 \(N\) 通用。当 knl / ksl 数组只有单阶非零分量时,多极铁退化为对应的单阶元件(四极铁/六极铁/八极铁等),动量更新公式与硬编码版本逐粒子一致。
精确漂移映射
漂移部分采用精确漂移(Table 1.1, map D, Eq. 1.86-1.88),与四极铁/六极铁/八极铁完全相同:
其中:
精确漂移保留了 \(p_z\) 的完整非线性,自然引入色品、高阶色散和路径长度效应。
辛积分器
Uniform(2阶蛙跳)
每个切片执行 Drift-Kick-Drift:
这是2阶辛积分器,截断误差 \(O(\Delta s^2)\) 。
Yoshida4(4阶组合)
将3个 DKD 步组合为4阶辛积分器:
其中 Yoshida 系数为:
截断误差 \(O(\Delta s^4)\) 。
自然包含的效应
DKD-exact 对理想多极铁自然包含所有非线性效应,无需额外项:
效应 |
来源 |
|---|---|
自然色品 |
精确漂移中 \(p_z\) 的 \(\delta\) 依赖性 |
高阶非线性色散 |
\(p_z\) 的完整平方根表达式 |
路径长度效应( \(R_{56}\) 等) |
精确漂移的 \(z\) 更新 |
各阶多极动量更新的完整非线性 |
Horner 递推保留 \((x+iy)^n\) 的所有项 |
分裂映射的截断误差在 uniform 下为 \(O(\Delta s^2)\),在 yoshida4 下为 \(O(\Delta s^4)\)。有限精度运算也会带来误差;系数、子步及粒子存储的 精度约定见 积分计算精度。
参考轨道范围
多极铁使用直线参考轨道,未提供用于弯曲参考轨道的 hxl 曲率修正。
绝对正、斜多极场误差与静态 DX/DY/DPSI 准直误差使用公共 元件误差 接口。 准直只移动磁场,孔径和 SC 边界保持在设计坐标系。
应用场景
场误差注入 :将 MAD-X 导出的磁铁场误差以多极铁形式插入束线,模拟安装误差和加工偏差
组合多极元件 :同一位置同时施加多个阶数的多极动量更新(如四极+六极+八极组合)
高阶多极铁 :十极铁( \(n=4\) )、十弯转磁铁( \(n=5\) )等超出专用元件范围的高阶元件
非线性效应研究 :研究高阶多极场对束流动力学的影响,如动态孔径、共振驱动
参考文献
Xsuite Physics Guide, Sec 1.10.3 (精确漂移), Sec 1.10.5 (多极铁)
Xsuite 源码:
xtrack/beam_elements/elements_src/multipole.h,track_magnet.h,track_magnet_kick.h,track_magnet_drift.hYoshida, H., “Construction of higher order symplectic integrators”, Phys. Lett. A 150 (1990)
MAD-X 物理手册:多极磁场与非线性传输
Wiedemann, H., “Particle Accelerator Physics”, Ch. 4 (非线性束流动力学)
元件内部空间电荷
正长度元件可设置 space_charge (JSON Space charge)为
ElementSpaceCharge 对象。Num slices 控制外场传输,
Space charge.Num kicks 控制 SC 积分。调度规则、共享资源、
支持的后端和示例见 元件切片与内部空间电荷。