螺线管(Solenoid)

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

PASS 中的螺线管采用 精确非线性映射 (Larmor 框架下的哈密顿量解析解)。纯螺线管(无多极场叠加)采用所声明均匀场模型的解析映射,仍受浮点舍入影响;叠加多极场时采用 Sol-Kick-Sol(SKS)辛积分器。

  • 核心特征:

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

    • 无纵向主场薄透镜模式;\(L=0\) 时只有横向积分多极分量起作用

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

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

    • \(k_s = 0\) 时使用多极 DKD;无横向多极分量时才退化为纯漂移

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

    • 支持孔径检查

以下接口中的字段用于 PASS.para.schema.elements.SolenoidItem 配置类; 元件名称由 Sequence.add(name, item) 的序列键给出,不是配置类字段。

接口参数

Python 配置字段

JSON 键

类型

单位

默认值

说明

s

S (m)

float

m

必填

元件出口或零长度作用点的纵向位置。

length

Length (m)

float

m

0.0

元件长度 (必须 \(\ge 0\) ; \(= 0\) 时仅保留横向多极动量更新)

ks

KS

float

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

0.0

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

knl

KiL

list[float]

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

[]

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

ksl

KiSL

list[float]

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

[]

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

num_slices

Num slices

int

1

1

外场本体切片数,默认 1(纯螺线管也有效)

integrator

Integrator

str

'adaptive'

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

aperture_type

Aperture type

str

—

'off'

孔径类型,默认 off

aperture_value

Aperture value

list

m / rad

[]

孔径参数值,默认 []

Note

  • knl / ksl 为可选参数。与启用的场误差相加后全零时,每个螺线管切片使用精确本体映射;num_slices 生效,integrator 不参与计算

  • 名义多极分量与启用的场误差相加后非零时,启用 SKS 积分器, num_slices 和 integrator 生效

  • ks = 0 且有长度时使用多极 DKD;名义与误差多极分量相加后全零时才退化为纯漂移

  • 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\) 时退化为纯漂移。

坐标约定

采用 纵向坐标与参考到达时间 的连续纵向坐标。 \(T_b\) 是理想参考粒子在当前位置的实际通过时刻,不是束团质心时刻; 局部映射中的 \(\beta_0\) 和 \(P_0\) 表示当前束团参考量。 \(p_x=P_x/P_0\) 是归一化动量,不是轨迹斜率。

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\)

纵向坐标, \(z=\zeta=\beta_b c(T_b-t_i)\)

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\) 时 KS 无效应,但名义横向多极分量及启用的场误差仍执行积分薄动量更新。

多极场叠加与 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 → 多极 DKD;无横向多极分量时为 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}\) 。这就是螺线管色品的物理来源——动量依赖的旋转角和聚焦强度。

绝对正、斜多极场误差与静态 DX/DY/DPSI 准直误差使用公共 元件误差 接口。 准直只移动磁场,孔径和 SC 边界保持在设计坐标系。

应用场景

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

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

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

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

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

元件内部空间电荷

正长度元件可设置 space_charge (JSON Space charge)为 ElementSpaceCharge 对象。Num slices 控制外场传输, Space charge.Num kicks 控制 SC 积分。调度规则、共享资源、 支持的后端和示例见 元件切片与内部空间电荷。