LLRFLibsPy库中sim_ncav_step_simple函数解读
source code: Github
这个函数 sim_ncav_step_simple
用于模拟腔体在一个时间步长内的响应,使用简单的离散腔体方程(欧拉方法进行离散化)。下面是对这个函数的详细解读。
函数签名
1 | def sim_ncav_step_simple(half_bw, detuning, vf_step, vb_step, vc_step0, Ts, beta = 1e4): |
函数描述
模拟腔体在一个时间步长内对前向电压和束流驱动电压的响应。该函数适用于具有恒定质量因数(QL)和失谐的常规导电腔体,采用欧拉方法进行离散化。
参数
half_bw
:浮点数,腔体的半带宽(常量),单位为弧度/秒。detuning
:浮点数,腔体的失谐(常量),单位为弧度/秒。vf_step
:复数,本时间步的前向电压。vb_step
:复数,本时间步的束流驱动电压。vc_step0
:复数,上一个时间步的腔体电压。Ts
:浮点数,采样时间,单位为秒。beta
:浮点数,输入耦合因子(常规导电腔体需要;对于超导腔体,可以使用默认值,或者可以指定更准确的结果)。
返回值
status
:布尔值,表示成功(True)或失败(False)。vc_step
:复数,本时间步的腔体电压。vr_step
:复数,本时间步的腔体反射电压。
函数实现
输入检查:
- 检查
half_bw
、Ts
和beta
是否为正值。如果任何一个参数不符合要求,返回False
和None
。
1
2if (half_bw <= 0.0) or (Ts <= 0.0) or (beta <= 0.0):
return False, None, None- 检查
进行一步计算:
- 使用欧拉方法离散化腔体方程,计算本时间步的腔体电压
vc_step
和反射电压vr_step
。
1
2
3vc_step = (1 - Ts * (half_bw - 1j*detuning)) * vc_step0 + \
2 * half_bw * Ts * (beta * vf_step / (beta + 1) + vb_step)
vr_step = vc_step - vf_step- 公式解释:
vc_step
通过考虑上一个时间步的腔体电压vc_step0
、当前时间步的前向电压vf_step
和束流驱动电压vb_step
计算得到。vr_step
是当前时间步的腔体电压vc_step
减去前向电压vf_step
。
- 使用欧拉方法离散化腔体方程,计算本时间步的腔体电压
返回计算结果:
- 返回
True
表示计算成功,以及本时间步的腔体电压vc_step
和反射电压vr_step
。
1
return True, vc_step, vr_step
- 返回
示例使用
假设我们有以下参数,使用该函数进行模拟:
1 | half_bw = 2 * np.pi * 100 # 100 Hz 半带宽 |
该示例展示了如何使用 sim_ncav_step_simple
函数计算腔体在一个时间步长内的电压响应,并输出结果。