束团重整(ReorganizeBunch)
本模块介绍 PASS 中的束团重整命令 ReorganizeBunch ,用于在模拟过程中动态调整束团的分组方式。
功能说明
ReorganizeBunch 命令 只修改束团的索引范围 ( start_idx 和 end_idx ), 不修改任何粒子坐标 (x, px, y, py, z, dp, tag 等)。
Note
本命令仅重整束团的索引分配,不涉及物理上的散束或合束。真正的散束(bunch lengthening)和合束(bunch compression)是通过调节高频腔的电压和相位等参数实现的物理过程,而非索引重分配。
适用场景:
合并 :将多个束团的索引合并为更少的束团。粒子的 z 坐标保持不变,只是索引范围重新分配。例如注入时谐波数 \(h=4\) 产生 4 个束团,合并为 1 个束团
拆分 :将现有束团的索引重新分组为更多束团
代码位置
源文件:
PASS/commands/reorganize.py类名:
ReorganizeBunch(继承自Command)注册名:
reorganizebunchSchema 类:
ReorganizeBunchElement(PASS/para/schema/elements.py)
接口参数
属性名 |
JSON key |
类型 |
单位 |
说明 |
|---|---|---|---|---|
|
|
float |
m |
命令在环中的 s 位置 |
|
|
str |
命令名称,由序列键名自动填入 |
|
|
|
str |
操作模式,可选: |
|
|
|
int |
生效起始圈数(含,从 0 开始计数) |
|
|
|
int |
生效结束圈数(不含)。设为 -1 表示不限制上限,持续到模拟结束 |
|
|
|
int |
新的束团数量(必须 \(\ge 1\) ) |
物理说明
ReorganizeBunch 命令的设计理念是: 粒子的物理位置由 tracking 过程决定,束团身份只是索引标签。
粒子的 z 坐标随 tracking 自然演化(通过 RF 腔的能量调制和漂移中的滑相效应),不需要人为调整。ReorganizeBunch 只负责重新分配索引范围,使后续的诊断、切片等操作能正确识别新的束团结构。
索引分配方式
总粒子数 \(N_{\text{total}}\) 被尽可能均匀地分配到 new_num_bunch 个束团中:
其中 \(n\) 为新束团数, \(k = 0, 1, \ldots, n-1\) 。前 \(N_{\text{total}} \bmod n\) 个束团各多分一个粒子。
使用示例
以下示例展示如何在第 500 圈将 4 个束团合并为 1 个束团:
{
"ReorganizeBunch1": {
"S (m)": 0.0,
"Command": "ReorganizeBunch",
"Mode": "merge",
"Start turn": 500,
"End turn": -1,
"New num bunch": 1
}
}
应用场景
散束后合并索引 :注入时使用高谐波数(如 \(h=4\) )产生多个束团,然后关闭或降低 RF 电压使束团自然散开。在散束完成后使用 ReorganizeBunch 将索引合并为 1 个束团
再聚束后重新分组 :散束后重新施加 RF 电压使粒子重新聚束,使用 ReorganizeBunch 将索引重新分组
束团填充方案调整 :在不同模拟阶段使用不同的束团分组方式