螺线管(Solenoid)

本模块介绍 PASS 中的螺线管元件 Solenoid ,用于模拟带电粒子在纵向磁场中的运动。螺线管产生沿束流方向的均匀磁场 \(B_z\),通过 Larmor 旋转效应耦合水平与垂直平面,同时提供横向聚焦。

PASS 中的螺线管采用 精确非线性映射 (Larmor 框架下的哈密顿量解析解)。纯螺线管(无多极场叠加)时映射零误差;叠加多极场时采用 Sol-Kick-Sol(SKS)辛积分器。

代码位置

  • 源文件: PASS/commands/element/solenoid.py

  • 类名: Solenoid (继承自 Command

  • 注册名: solenoid

  • 核心特征:

    • 采用精确螺线管映射(Larmor 旋转 + 聚焦, \(p_z\) 逐粒子计算)

    • 无薄透镜模式(螺线管无薄透镜极限, \(L=0\) 时无效应)

    • 支持多极场叠加( knl / ksl ),使用 SKS 积分器

    • 支持 uniform(2阶蛙跳)和 yoshida4(4阶 Yoshida 组合)积分器

    • \(k_s = 0\) 时自动退化为纯漂移

    • 色品效应通过逐粒子 \(p_z\) 自然引入

    • 支持孔径检查

坐标约定

PASS 采用归一化曲线坐标,六维相空间变量为 \((x, p_x, y, p_y, z, \delta)\)

变量

符号

定义

x

\(x\)

水平偏移(相对于参考轨道)

px

\(p_x\)

归一化水平动量, \(p_x = P_x / P_0\)

y

\(y\)

垂直偏移

py

\(p_y\)

归一化垂直动量, \(p_y = P_y / P_0\)

z

\(\zeta\)

纵向坐标, \(\zeta = s - \beta_0 c t\)

dp

\(\delta\)

相对动量偏差, \(\delta = P / P_0 - 1\)

其中 \(P_0\) 为参考粒子动量, \(\beta_0 = v_0 / c\) 为参考粒子归一化速度。

螺线管磁场与归一化强度

螺线管产生沿束流方向( \(s\) 轴)的均匀磁场:

\[\vec{B} = (0, \, 0, \, B_z)\]

归一化螺线管强度定义为:

\[k_s = \frac{q_0 B_z}{P_0}\]

其中 \(q_0\) 为参考粒子电荷, \(P_0\) 为参考粒子动量。 PASS 中用户直接指定 \(k_s\)ks )。

定义半强度:

\[\text{sk} = \frac{k_s}{2}\]

Larmor 旋转角为:

\[\theta = \frac{\text{sk} \cdot L}{p_z} = \frac{k_s L}{2 p_z}\]

其中 \(p_z\) 为粒子的归一化纵向动量分量(逐粒子不同,见下文), \(L\) 为螺线管长度。

物理推导

哈密顿量

在直线坐标系中,螺线管的哈密顿量为:

\[H_{\text{sol}} = \frac{p_\tau}{\beta_0} - \sqrt{(1+\delta)^2 - p_x^2 - p_y^2} + \frac{k_s^2}{8}(x^2 + y^2) - \frac{k_s}{2}(x p_y - y p_x)\]

其中各项物理含义:

物理含义

\(-\sqrt{(1+\delta)^2 - p_x^2 - p_y^2}\)

自由传播(精确漂移)

\(\frac{k_s^2}{8}(x^2 + y^2)\)

螺线管聚焦(等效四极分量)

\(-\frac{k_s}{2}(x p_y - y p_x)\)

Larmor 旋转( \(x\) - \(y\) 耦合)

Note

Larmor 旋转项 \(-\frac{k_s}{2}(x p_y - y p_x)\) 同时依赖位置和动量 ,这是螺线管与四极铁的本质区别。四极铁的踢角项仅依赖位置,可以将哈密顿量干净地分裂为漂移和踢角两部分(DKD 积分器)。螺线管的 Larmor 旋转项不可分裂为纯位置或纯动量的部分,因此 不能使用普通漂移做 DKD 积分

Larmor 框架与精确解

做 Larmor 变换——将横截面坐标系绕 \(s\) 轴旋转角度 \(\theta = \text{sk} \cdot s / p_z\) ,定义 Larmor 框架下的正则动量:

\[p_{k1} = p_x + \text{sk} \cdot y\]
\[p_{k2} = p_y - \text{sk} \cdot x\]

在 Larmor 框架中, \(p_{k1}\)\(p_{k2}\)守恒量 (不随 \(s\) 变化),因此纵向动量分量:

\[p_z = \sqrt{(1+\delta)^2 - p_{k1}^2 - p_{k2}^2}\]

在整个螺线管内逐粒子恒定。这使得螺线管映射可以 精确求解 ,无需近似。

精确螺线管映射

给定螺线管长度 \(L\) , Larmor 旋转角:

\[\theta = \frac{\text{sk} \cdot L}{p_z}\]

映射分为旋转和漂移两步:

步骤 1:Larmor 旋转 (将坐标旋转到 \(s=L\) 处的 Larmor 框架)

\[\text{rps}_0 = \cos\theta \cdot x + \sin\theta \cdot y\]
\[\text{rps}_1 = \cos\theta \cdot p_x + \sin\theta \cdot p_y\]
\[\text{rps}_2 = \cos\theta \cdot y - \sin\theta \cdot x\]
\[\text{rps}_3 = \cos\theta \cdot p_y - \sin\theta \cdot p_x\]

步骤 2:Larmor 框架中的漂移 (等效漂移长度 \(\sin\theta / \text{sk}\)

\[x' = \cos\theta \cdot \text{rps}_0 + \frac{\sin\theta}{\text{sk}} \cdot \text{rps}_1\]
\[p_x' = \cos\theta \cdot \text{rps}_1 - \text{sk} \cdot \sin\theta \cdot \text{rps}_0\]
\[y' = \cos\theta \cdot \text{rps}_2 + \frac{\sin\theta}{\text{sk}} \cdot \text{rps}_3\]
\[p_y' = \cos\theta \cdot \text{rps}_3 - \text{sk} \cdot \sin\theta \cdot \text{rps}_2\]

纵向坐标更新

\[\Delta\zeta = L \cdot \left(1 - \frac{1+\delta}{p_z \cdot \text{rvv}}\right)\]

其中 \(\text{rvv} = \beta / \beta_0\) 为粒子速度与参考粒子速度之比:

\[\beta = \frac{(1+\delta) \, \beta_0 \gamma_0}{\sqrt{1 + \left[(1+\delta) \, \beta_0 \gamma_0\right]^2}}\]

Note

  • \(p_z\) 逐粒子不同(包含 \(\delta\) 和 Larmor 动量的贡献),因此映射是 精确非线性

  • \(k_s \to 0\) 时, \(\sin\theta/\text{sk} \to L/p_z\) ,映射退化为精确漂移

为什么螺线管没有薄透镜模式

四极铁的薄透镜极限( \(L \to 0\)\(k_1 \to \infty\)\(k_1 L = \text{const}\) )给出有限的动量踢角 \(\Delta p_x = -k_{1L} \cdot x\) ,物理上自洽。

螺线管的薄透镜极限( \(L \to 0\)\(k_s \to \infty\)\(k_s L = \text{const}\) )存在根本困难:

  • Larmor 旋转角 \(\theta = k_s L / (2 p_z)\) 有限 ✓

  • 聚焦项 \(\text{sk} \cdot \sin\theta = (k_s/2) \cdot \sin\theta \to \infty\) 发散 ✗

位置和动量的缩放行为不对称:旋转角有限但聚焦力发散,薄透镜极限不存在。

因此 PASS 中螺线管 \(L = 0\)无效应 (恒等映射),不提供薄透镜模式。

多极场叠加与 SKS 积分器

当螺线管内部叠加横向多极场分量( \(k_{nl}\) / \(k_{sl}\) )时,总哈密顿量为:

\[H = H_{\text{sol}} + H_{\text{mult}}\]

其中 \(H_{\text{mult}}\) 为多极铁踢角哈密顿量(仅依赖位置)。由于 \(H_{\text{sol}}\)\(H_{\text{mult}}\) 不对易,需要分裂算符法。

PASS 采用 Sol-Kick-Sol (SKS)积分器,与四极铁的 DKD 完全平行:

\[\mathcal{M}_{\text{SKS}}(\Delta s) = \text{Sol}\!\left(\frac{\Delta s}{2}\right) \circ \text{Kick}(\Delta s) \circ \text{Sol}\!\left(\frac{\Delta s}{2}\right)\]

其中:

  • Sol = 精确螺线管映射( _solenoid_exact_cpu ),处理 \(B_z\)

  • Kick = 多极铁踢角(Horner 递归),处理横向多极场

漂移算子

踢角算子

场景

四极铁 DKD

自由漂移 drift_exact

四极踢角 quad_kick

\(B_z = 0\) ,仅横向梯度场

螺线管 SKS

螺线管映射 solenoid_exact

多极踢角 multipole_kick

\(B_z \neq 0\) ,叠加横向多极场

Note

SKS 中的 “Sol” 不是自由漂移,而是螺线管精确映射。螺线管内 \(B_z\) 始终存在,粒子不是在无场空间漂移。如果错误地使用自由漂移替代螺线管映射,将丢失 Larmor 旋转效应。

uniform 积分器(2阶辛)

每个切片采用 Sol-Kick-Sol 结构,即二阶蛙跳(leapfrog):

\[S_2(\Delta s) = \text{Sol}\!\left(\frac{\Delta s}{2}\right) \circ \text{Kick}(\Delta s) \circ \text{Sol}\!\left(\frac{\Delta s}{2}\right)\]

每个切片误差为 \(O(\Delta s^3)\) ,全局误差为 \(O(\Delta s^2)\)

yoshida4 积分器(4阶辛)

通过组合三个二阶 SKS 步构造四阶辛映射 [Yoshida 1990]:

\[S_4(\Delta s) = S_2(z_1 \Delta s) \circ S_2(z_0 \Delta s) \circ S_2(z_1 \Delta s)\]

其中 Yoshida 系数为:

\[z_1 = \frac{1}{2 - 2^{1/3}} \approx 1.3512\]
\[z_0 = 1 - 2 z_1 \approx -1.7024\]

每个切片误差为 \(O(\Delta s^5)\) ,全局误差为 \(O(\Delta s^4)\)

整体追踪流程

根据是否有多极场叠加,螺线管有两种追踪路径:

====== 厚透镜 (length > 0) ======

无多极场 (knl/ksl 全零):
  单段精确螺线管映射 Sol(L, ks)
  [零误差,无需切片]

有多极场 (knl/ksl 非零):
  切片1 → 切片2 → ... → 切片N
  (每个切片: Sol(ds/2) → Kick(ds) → Sol(ds/2))
  其中 ds = L / N

特殊情况:
  ks = 0 → 退化为纯漂移 Drift(L)
  L = 0 → 无效应(螺线管无薄透镜极限)

完整映射为:

无多极场:

\[\mathcal{M} = \text{Sol}(L, k_s)\]

有多极场( \(N\) 个切片):

\[\mathcal{M} = \left[\mathcal{M}_{\text{SKS}}(\Delta s)\right]^N\]

色品效应

螺线管的色品效应通过逐粒子 \(p_z\) 表达式自然引入。

在 Larmor 框架中, \(p_z\) 依赖 \(\delta\) 和 Larmor 动量 \(p_{k1}, p_{k2}\)

\[p_z = \sqrt{(1+\delta)^2 - (p_x + \text{sk} \cdot y)^2 - (p_y - \text{sk} \cdot x)^2}\]

不同动量偏差 \(\delta\) 的粒子有不同的 \(p_z\) ,因此有不同的 Larmor 旋转角 \(\theta = \text{sk} \cdot L / p_z\) 和不同的等效漂移长度 \(\sin\theta / \text{sk}\) 。这就是螺线管色品的物理来源——动量依赖的旋转角和聚焦强度。

接口参数

属性名

JSON key

类型

单位

说明

s

s (m)

float

m

元件在束线中的纵向位置

length

length (m)

float

m

元件长度 (必须 \(\ge 0\)\(= 0\) 时无效应)

name

name

str

元件名称

ks

ks

float

\(\text{m}^{-1}\)

螺线管归一化强度 \(k_s = q_0 B_z / P_0\) ,默认 0

knl

kil

list

\(\text{m}^{-n}\)

多极铁法向积分强度数组 \(K_{nL}\) ,默认 []

ksl

kisl

list

\(\text{m}^{-n}\)

多极铁斜向积分强度数组 \(K_{sL}\) ,默认 []

num_slice

num slices

int

切片数,默认 1(仅多极场叠加时有效)

integrator

integrator

str

积分器,可选: adaptive (默认 uniform )、 uniformyoshida4

aperture_type

aperture type

str

孔径类型,默认 off

aperture_value

aperture value

list

孔径参数值,默认 []

Note

  • knl / ksl 为可选参数。不指定或全零时,螺线管使用单段精确映射(零误差),忽略 num_slicesintegrator

  • 指定非零 knl / ksl 时,启用 SKS 积分器, num_slicesintegrator 生效

  • ks = 0 且有长度时,元件退化为纯漂移

  • length = 0 时,螺线管无效应(不提供薄透镜模式)

使用示例

纯螺线管(精确映射)

{
    "SOL1": {
        "S (m)": 10.0,
        "Command": "Solenoid",
        "Length (m)": 1.0,
        "ks": 2.0,
        "Aperture Type": "off"
    }
}

长度 1.0 m,归一化强度 \(k_s = 2.0\) 。使用单段精确螺线管映射,零误差。

弱螺线管

{
    "SOL2": {
        "S (m)": 20.0,
        "Command": "Solenoid",
        "Length (m)": 2.0,
        "ks": 0.5,
        "Aperture Type": "off"
    }
}

弱场螺线管, Larmor 旋转角较小。

反向磁场螺线管

{
    "SOL3": {
        "S (m)": 30.0,
        "Command": "Solenoid",
        "Length (m)": 1.5,
        "ks": -3.0,
        "Aperture Type": "off"
    }
}

\(k_s < 0\) 表示反向磁场, Larmor 旋转方向相反。

螺线管叠加四极场(SKS 积分器)

{
    "SOL4": {
        "S (m)": 40.0,
        "Command": "Solenoid",
        "Length (m)": 1.0,
        "ks": 2.0,
        "KiL": [0.0, 0.1],
        "Kisl": [],
        "Num Slices": 4,
        "Integrator": "yoshida4",
        "Aperture Type": "off"
    }
}

螺线管( \(k_s = 2.0\) )叠加四极分量( \(K_{1L} = 0.1\) ),4 个切片,4 阶辛积分器。 KiL 数组第 0 项为 \(K_{0L}\) (偶极),第 1 项为 \(K_{1L}\) (四极)。

零场退化(纯漂移)

{
    "SOL5": {
        "S (m)": 50.0,
        "Command": "Solenoid",
        "Length (m)": 1.0,
        "ks": 0.0,
        "Aperture Type": "off"
    }
}

\(k_s = 0\) 时退化为纯漂移。

应用场景

  • 低能束流传输线 :低能段 \(\beta\gamma\) 较小,螺线管聚焦效率高于四极铁,常用于注入器和低能传输线

  • 电子冷却器 :螺线管约束电子束与离子束共线运动,用于冷却横向发射度

  • 对撞机探测器螺线管 :大型实验探测器(如 CMS、ATLAS)的螺线管磁场对束流光学有显著影响,需在 lattice 模型中精确计入

  • 超导螺线管 :高场超导螺线管中的多极场误差可通过 knl / ksl 参数叠加建模

  • 旋转对称束流 :螺线管的 Larmor 旋转可用于消除 \(x\) - \(y\) 耦合或产生特定旋转对称的束流分布