LLRFLibsPy库中for_ref_volt2power函数解读
source code:Github
这个函数 for_ref_volt2power
用于将校准后的前向和反射信号(以物理单位表示,单位为伏特)转换为前向和反射功率(单位为瓦特)。它基于LLRF(低电平射频)系统中对腔体的参数和信号的定义。
函数签名
1 | def for_ref_volt2power(roQ_or_RoQ, QL, |
函数描述
将校准后的前向和反射信号(以物理单位,V)转换为前向和反射功率(W)。
参数
roQ_or_RoQ
:浮点数,腔体的r/Q(线性加速器)或R/Q(环形加速器),单位为欧姆(Ω)。QL
:浮点数,腔体的加载质量因子。vf_pcal
:复数的numpy数组,前向波形(校准到物理单位)。vr_pcal
:复数的numpy数组,反射波形(校准到物理单位)。beta
:浮点数,输入耦合因子(对于常规导电腔体需要;对于超导腔体,可以使用默认值,或者可以指定更准确的结果)。machine
:字符串,’linac’(线性加速器)或’circular’(环形加速器),用于选择r/Q或R/Q。
返回值
status
:布尔值,表示成功(True)或失败(False)。for_power
:numpy数组,前向功率波形(如果输入不为None),单位为瓦特。ref_power
:numpy数组,反射功率波形(如果输入不为None),单位为瓦特。C
:浮点数(复数),校准系数:功率_W = C * 电压_V^2。
函数实现
输入检查:
- 检查
roQ_or_RoQ
、QL
和beta
是否为正值。如果任何一个参数不符合要求,返回False
和None
。
1
2if (roQ_or_RoQ <= 0.0) or (QL <= 0.0) or (beta <= 0.0):
return (False,) + (None,)*3- 检查
计算加载电阻:
- 根据机器类型(’linac’或’circular’),计算加载电阻
RL
。
1
2
3
4if machine == 'circular':
RL = roQ_or_RoQ * QL
else:
RL = 0.5 * roQ_or_RoQ * QL- 根据机器类型(’linac’或’circular’),计算加载电阻
**计算将电压转换为功率的系数
C
**:- 使用给定的公式计算转换系数
C
。
1
C = beta / (beta + 1) / (2 * RL)
- 使用给定的公式计算转换系数
如果前向电压和反射电压有效,转换电压为功率:
- 如果
vf_pcal
不为None
,计算前向功率for_power
。 - 如果
vr_pcal
不为None
,计算反射功率ref_power
。
1
2
3for_power = ref_power = None
if vf_pcal is not None: for_power = C * np.abs(vf_pcal)**2
if vr_pcal is not None: ref_power = C * np.abs(vr_pcal)**2- 如果
返回计算结果:
- 返回
True
表示计算成功,以及前向功率、反射功率和校准系数C
。
1
return True, for_power, ref_power, C
- 返回
示例使用
假设我们有以下参数,使用该函数进行功率转换:
1 | roQ_or_RoQ = 100 # Ohm |
该示例展示了如何使用for_ref_volt2power
函数将校准后的前向和反射电压波形转换为前向和反射功率,并输出结果。