基于LLRFLibsPy库的基带模式和通带模式射频腔仿真示例

source code:Github

这个示例代码展示了如何比较两种不同的腔体模型:包括基波模式和通带模式的完整模型以及仅包含通带模式的模型。

导入必要的库和模块

1
2
3
4
5
6
7
import numpy as np
import matplotlib.pyplot as plt

from set_path import *
from rf_sim import *
from rf_control import *
from rf_calib import *

导入了NumPy和Matplotlib库以进行数值计算和绘图。还导入了自定义模块set_pathrf_simrf_controlrf_calib,这些模块包含了与RF(射频)系统仿真和控制相关的函数。

定义腔体参数

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
pi = np.pi                                 # 短写pi
fs = 1e6 # 采样频率,Hz
Ts = 1 / fs # 采样时间,s
N = 2048 # 脉冲中的点数

f0 = 1.3e9 # RF工作频率,Hz
roQ = 1036 # 腔体的r/Q,Ohm
QL = 3e6 # 负载品质因数
RL = 0.5 * roQ * QL # 负载电阻(根据Linac约定),Ohm
ig = 0.016 # RF驱动功率等效电流,A
ib = 0.008 # 平均束流电流,A
t_fill = 510 # 腔体充填期长度,采样点
t_flat = 1300 # 平顶期结束时间,采样点

pb_modes = {'freq_offs': [-800e3, -3e6], # 腔体通带模式的偏移频率,Hz
'gain_rel': [-1, 1], # 通带模式相对于π模的增益
'half_bw': [np.pi*216, np.pi*210]} # 通带模式的半带宽,rad/s

half_bw = pi * f0 / QL # 腔体的半带宽,rad/s
detuning = half_bw # 腔体的失谐,rad/s
beta = 1e4 # 腔体的输入耦合因子

这里定义了一些基本的腔体参数,例如采样频率、腔体工作频率、品质因数、束流电流等,以及通带模式的具体参数。

生成包含基波和通带模式的腔体模型

1
2
3
4
5
6
7
8
9
10
result = cav_ss(half_bw, detuning = detuning, beta = beta, passband_modes = pb_modes, plot = True)
status = result[0]
Arf = result[1] # 腔体模型的A, B, C, D矩阵用于RF驱动
Brf = result[2]
Crf = result[3]
Drf = result[4]
Abm = result[5] # 腔体模型的A, B, C, D矩阵用于束流驱动
Bbm = result[6]
Cbm = result[7]
Dbm = result[8]

调用 cav_ss 函数生成包含基波和通带模式的腔体模型,并获取状态空间模型的A, B, C, D矩阵。如果plot参数设为True,则会绘制频率响应图。

生成仅包含通带模式的腔体模型

1
2
status2, Apb, Bpb, Cpb, Dpb = cav_ss_passband(pb_modes)
ss_freqresp(Apb, Bpb, Cpb, Dpb, plot = True, plot_pno = 10000, plot_maxf = 4e6)

调用 cav_ss_passband 函数生成仅包含通带模式的腔体模型,并同样获取A, B, C, D矩阵。随后调用 ss_freqresp 函数绘制频率响应图,用于比较两种模型的频率响应。

example-sim-cavity-basic-passband-1.png

example-sim-cavity-basic-passband-2.png

总结

该示例代码的目的是:

  1. 定义腔体参数,包括基波和通带模式的参数。
  2. 生成包含基波和通带模式的完整腔体模型,并绘制其频率响应图。
  3. 生成仅包含通带模式的腔体模型,并绘制其频率响应图。
  4. 通过绘图比较这两种模型的频率响应,以分析不同模型的特性和差异。

这段代码展示了如何使用状态空间模型来模拟和分析RF腔体的频率响应特性。