静电偏转器(ElSeparator)
PASS.commands.element.elseparator.ElSeparator 描述具有循环束无场区、
薄隔板、有场区和高压电极的静电偏转元件,注册命令为 ElSeparator。
CPU/GPU 对正长度使用相对论均匀静电场解析本体映射和硬边电势匹配,
对零长度使用按各粒子入口纵向速度计算的一次等效冲量。进入有场区本身不代表损失;通过 ES 的存活粒子继续进入下游晶格,
由后续实际孔径决定是否以及在哪里损失。
以下接口中的字段用于 PASS.para.schema.elements.ElSeparatorItem 配置类;
元件名称由 Sequence.add(name, item) 的序列键给出,不是配置类字段。
输入参数
Python 配置字段 |
JSON 键 |
类型 |
单位 |
默认值 |
说明 |
|---|---|---|---|---|---|
|
|
|
m |
|
元件出口或零长度作用点的纵向位置。 |
|
|
|
m |
|
非负给定长度,不随倾角缩放。 |
|
|
|
V |
|
有符号极板间电压差,与 VL 二选一;非零 V 要求正长度。 |
|
|
|
V m |
|
有符号电压差沿纵向的积分,支持正长度和零长度。 |
|
|
|
m |
|
正的电极净间隙。 |
|
|
|
m |
|
沿 u 方向靠循环束无场区的表面 d。 |
|
|
|
m |
|
非负有效材料厚度。 |
|
|
|
rad |
|
按上述投影与冲量公式定义的倾角。 |
|
|
|
— |
|
已有真空孔径几何。 |
|
|
|
m / rad |
|
已有真空孔径几何。 |
|
|
|
1 |
|
严格正整数,设置内部 SC 调度;孤立解析本体不依赖细分。 |
|
|
|
— |
|
可选内部 SC 配置,要求正长度。 |
输入配置
根据所模拟装置指定 V 或 VL、间隙和隔板几何。以下人为示例采用手动多边形,
规定 -0.05 < x < 0.0201、|y| < 0.02,内部 septum 仍吸收粒子。
使用时应替换为装置对应的数值;每次通过使用同一个给定强度输入。
{
"Command": "ElSeparator",
"S (m)": 1.0,
"Length (m)": 1.0,
"V (V)": 1000.0,
"Gap (m)": 0.01,
"Septum position (m)": 0.01,
"Septum thickness (m)": 0.0001,
"Tilt (rad)": 0.0,
"Num slices": 16,
"Aperture type": "polygon",
"Aperture value": [[-0.05, -0.02], [0.0201, -0.02], [0.0201, 0.02], [-0.05, 0.02]]
}
对这个 1 m 元件,把 V (V) 替换为 "VL (V m)": 1000.0,积分强度相同。
若还把 Length (m) 改为 0,则在 S=1 m 处使用薄模型:对截面内有场区的
存活粒子施加相同输入积分强度对应的等效冲量,但不产生有限长度模型的横向位移和飞行时间。
例如 (x,y)=(0.005,0) 存活且不受场,(0.01005,0) 在 septum 材料内损失,
(0.015,0) 通过入口检查并受到电场冲量。
注入时序见 多圈注入与横向涂抹。在 ES 出口给定的新粒子从该平面 开始跟踪。Injection 生成或加载坐标,不额外施加几何接受截断; 粒子随后实际通过 ElSeparator 时,由该元件按有限长度或薄模型计算偏转和损失。
长度、倾角和时间
Length (m) 是用户给定的纵向跟踪长度 L。S (m) 是出口,入口为 S-L。
Tilt (rad) 是绕纵向轴的横截面旋转,不是元件轴线的俯仰或偏航。
传播、场积分、损失位置和参考时间均不乘除 cos(tilt)。
水平、垂直和倾斜 ES 使用同一套实现。
沿用当前 PASS 的倾角约定,只计算临时几何坐标:
粒子数组始终保存在束流坐标系。局部法向冲量直接分解为
tilt=0 对应水平,tilt=+/-pi/2 对应垂直;电压及电荷符号决定偏转极性。 倾角加 pi 会反转几何法向。隔板位置的正负不再单独决定有场侧。
每个参考传播子段 ds(包括空束团)更新
设计参考时钟保持无场参考通过时间约定;有场粒子的实际飞行时间由电场解析映射计算,
循环束无场区则使用标准漂移,
没有额外倾角时间修正或到达修正状态。零长度实例在所在截面检查几何与动量,
对有场区内的存活粒子施加 VL 冲量,再检查冲量后的动量有效性。
x、y、z 和参考时间均不变。它不能判断被省略的真实长度内部的碰撞;
要分辨这些轨迹和损失位置,应使用有限长度模型。
Num slices 不会重复薄冲量,内部空间电荷仍要求正长度。
几何和电压
记 d 为 Septum position (m),t 为 Septum thickness (m),
g 为 Gap (m),高压电极内表面为 uc=d+t+g。
这些位置相对于参考轨道,不是环的几何中心。对于任意局部 v,各区域为:
循环束无场区:u < d;
septum 材料区:d <= u <= d+t;
有场区:d+t < u < uc;
高压电极材料区:u >= uc。
电极表面属于吸收材料边界。 厚度为零的隔板仍是闭合平面,接触或穿越都会判损。 这是有效材料吸收模型,不是离散丝阵列或多重散射模拟。
入口接触判定允许坐标存储和旋转的舍入误差:离材料表面不超过
4*epsilon*(abs(x*cos(tilt))+abs(y*sin(tilt))) 时视为接触,
epsilon 为粒子数据类型的机器精度。这避免零厚度 septum 上的粒子因浮点误差漏判。
未来直线交点仍使用输入的实际表面位置,不平移材料边界。
电极和有场区理想化为覆盖任意局部 v。另一侧管壁及横向净空由独立真空孔径描述,
可用手动多边形给出沿 v 对称的限制。这假设模拟接受范围处于电极的有效覆盖范围,
不模拟有限高度的边缘场。多边形是外部接受边界,不能代替内部 septum 材料。
Aperture type: off 只关闭外围真空孔径检查,不关闭电极碰撞判定。
V (V) 定义为隔板电势减去高压电极电势。
VL (V m) 是该电压差沿纵向的积分,不是积分电场:
有限长度均匀场模型中,输入 V 时 Eu=V/g、VL=V*L;输入 VL 时 Eu=VL/(g*L)。 零长度模型中,VL 是独立输入的真实装置积分强度,不因跟踪长度为零而变为零。 零长度的等效归一化冲量为
其中 beta0*c*ps/A 是入口纵向速度。集中冲量期间冻结用于计算冲量的入口状态, 保持 dp 不变,因此它不是有限电极的完整映射。PASS 保存 px=Px/P0、py=Py/P0, 冲量是归一化机械动量增量,不是角度;不要再额外除以 (1+delta)。 有限长度采用下述能量自洽的映射。
PASS 保存正的参考刚度幅值,冲量显式包含电荷符号。
每次执行读取当前束团的 beta 和刚度,RF 通过 set_reference_energy
更新这些量。因此加速过程中恒定电压不意味着恒定归一化冲量。
V 与 VL 必须恰好有一个非 null,零值合法,同时给出或均未给出都会报错。
零长度时非零 V 报错并提示改用 VL;V=0 可用于纯几何检查。
两种输入都必须给出 Gap 和 Septum position。
旧 Voltage (V)、电极高度/中心及 EX/EY/EXL/EYL 字段均不接受。
零强度时仍检查材料和真空孔径。
传播与碰撞
septum 和外部无场区电势为零。记 uf=d+t,有场区本体电势为 Phi=-Eu*(u-uf),高压电极电势为 -V。令 W=energy/(P0*c)、mu=mc/P0、 k=q*Eu/(P0*c)。入口将机械能改为 W+k*(u-uf),出口减去 k*(u-uf), 横向动量和坐标在边界匹配中不变。这表示理想零宽度纵向边缘冲量, 不是实测边缘场分布。
均匀本体中 ps、pv 不变。对正向距离 ds,令 a=k*ds/ps,解析映射为
实现使用稳定增量和零场极限,避免直接相减接近的双曲函数。 接近零时使用短级数是浮点求值方法,不是近轴物理近似。 没有其它改变能量的作用时,穿过完整静态元件的存活粒子恢复入口机械能。 若在入口或出口不能保持正向纵向动量,则在该边界移出正向跟踪; 这种情况不代表撞上材料。
入口、出口匹配各执行一次,不在内部切片或 SC 节点重复执行。 中心 SC 回调在前半本体片之后执行,边界回调在整片之后执行; 两者都获得对应的设计参考时刻和束流坐标系中的机械动量。 循环束无场区的存活粒子也参与 SC。位置和权重见 元件切片与内部空间电荷。 无内部 SC 时一次解析本体传播即可,Num slices 不改变外场结果; 有 SC 时仍需检验分裂集体映射的收敛。
电极交点由本体能量与位置关系求解,保留两个动量分支以覆盖转向和擦边接触。 真空管壁采用解析曲线的保守区间界限寻找首次接触,线性函数和坐标极值包含 区间内转向点,椭圆界限覆盖整个区间,因此不会仅因两个端点都在孔径内而漏掉 非凸孔径的中途越界。候选接触区间在纵向缩小到 1e-12*max(1, 子段长度) 米,同时使用按几何尺度缩放的 64 倍双精度 epsilon 容差。 在擦边情况下,空间容差可能对应更大的纵向接触位置不确定度。 损失位置仍存储在现有 float32 数组。无场运动继续使用解析直线交点。
粒子停在首次接触处,保留该点的机械状态;在本体内损失的粒子不再接受出口匹配。 后续调用保留首次损失记录,材料与管壁竞争最早接触。 已有孔径 off、default、rectangle、circle、ellipse、rectcircle、rectellipse、 racetrack、octagon、polygon 均保留,孔径位于束流坐标系。 Tilt 旋转电极和电场,不旋转单独输入的真空室。
如果手动输入的多边形先在局部坐标中定义,需要逐个顶点转换到束流坐标:
顶点应按边界顺序输入,不需要重复首点闭合。自交、非相邻边接触、重复顶点及 孔径尺寸格式错误,在 schema 校验和完整输入预检中都会报错。
Tilt=0 时高压电极位于 +x 一侧,Tilt=pi 时布局反向。 改变电压符号只改变受力方向,不改变电极几何。
漂移与近似范围
ES 与 漂移节(Drift) 共享 CPU 漂移因子及 CUDA 内联漂移函数。 令 T=px^2+py^2、ps=sqrt((1+delta)^2-T),定义
该有理化形式保留单精度中的微小纵向滑移。 非正总动量、非正纵向动量和非有限纵向动量判为无效; 不再人为抬高正的纵向动量。跟踪不会折叠存储的 z 坐标。
有限长度映射在给定的理想均匀本体和硬边模型内不作小角度展开, 精度仍受浮点运算和碰撞定位容差限制。它没有三维边缘场图、有限高度场、 离散丝结构、材料散射或次级粒子。薄模型还省略实际本体轨迹、能量交换和通过时间变化, 集中冲量期间冻结入口纵向速度,不宣称它是有限硬边模型的严格 L 趋零极限。
CPU 和 CUDA 实现在同一源文件中。GPU 的解析场轨迹和曲线碰撞界限使用双精度, 粒子数组保持选定的 float32 或 float64 存储。内部 SC 节点写回粒子状态, 每个元件按设备和数据类型缓存编译内核,不原地旋转坐标数组。
没有内部 SC 节点时,厚元件 GPU 跟踪将入口、本体和出口合并为一次内核调用。 场外粒子使用精确直线轨迹和连续的材料、孔径检查,并在存储舍入后再次检查终点。 存活的场外轨迹若进入间隙,必先接触吸收电极。场内粒子保留解析硬边各阶段及 各阶段对应的存储精度舍入。存在内部 SC 节点时仍分段跟踪,使空间电荷冲量作用于中间状态。