RP Fiber Power 光纤激光器及激光器设计软件一脚本语言12-17

2021-08-26 17:10发布

12 输入信道和ASE信道

在光纤中传播的每一个光波都由一个所谓的信道来描述,该信道可以是一个输入信道或ASE信道,其特征在于波长、耦合强度、传播方向等参数。有两种不同的信道:.输入信道允许注入光功率,例如泵浦功率或信号输入功率。它们有一定的波长,而且(名义上)没有带宽。.ASE信道不能有输入。相反,它们由激发的增益介质提供荧光,当然,这也会受到激光增益和任何损耗的影响。在任何情况下,每个信道都有一个特定的传播方向,可以是forward(值为1的预定义变量)或backward(-1)。对于以后引用某个信道(例如检索其输出功率),每个信道在定义时都会获得一个参考号。例如,第三个定义的信道获得参考号3。在所有信道定义之后,必须调用函数finish_fiber()。在此之前,不可能调用函数来计算光功率等。通常,所有信道都是在脚本的开头定义的,并且在计算过程中不进行修改,除了可以修改输入功率。但是,稍后可以通过使用函数clearchannels()删除所有定义的信道,并再次使用函数定义所有信道来重新定义信道。这可能是可取的,例如,在最初使用较少的ASE信道进行更近似(但更快)的计算后,最终绘图需要增加ASE信道的数量。特别是在激光中,前向和后向传播信道相互耦合。通常,光信道中的所有光功率在连续波计算中限制为1 mW,在动态计算中限制为5 mW。在模拟体设备时,这些限制可能是不需要的。在这种情况下,可以将变量NoPowerLimit设置为非零值以抑制这些限制。以下两个部分提供了进一步的详细信息。 

12.1 输入信道输入信道用函数addinputchannel()定义。例子:

pump := addinputchannel(P_p_in, l_p, 'I_p',loss_p, backward)

signal := addinputchannel(P_s_in, l_s, 'I_s',loss_s, forward)

变量pump和signal存储两个信道对应的参考号。我们得到一个参考号为1的反向传播泵浦信道和一个参考号为2的正向传播信号信道。这些值存储在变量中,以便以后访问信道(例如,用于检索功率或修改输入功率)。

函数addinputchannel()的参数为:

.输入功率,如正向传播信号的左光纤端面功率和反向传播泵的右光纤端面功率。

.波长(单位:米)

.指定模式强度横向依赖性的函数

.背景损耗(单位:dB/m)(不包括掺杂剂吸收)

.传播方向,可以是forward或backward

模式分布函数(第三个参数)可以用不同的方式定义:

.可以指定用户定义函数的名称(例如’I_s’),在大多数情况下,该函数只有一个参数r,即径向坐标,但如果存在方位角依赖关系,它也可能依赖于r和phi。如果使用函数set_xy_steps()定义了矩形网格,则强度函数的参数必须是x和y。

.如果折射率分布已用set_n_profile()定义,则还可以引用计算模式函数。例如,对于LP01模式,第三个参数可以是’I_lm(0,1)’,对于cos(phi)依赖的LP11模式,可以是’I_lm(1,1,cos)’。

.另一种可能是在圆括号中指定参数,后面跟着一个任意的数学表达式。示例:’(r) exp(-2 * (r / w)^2)’

作为以第一种方式定义的强度分布函数的示例,泵浦波如下:

w_p := 5 um

I_p(r) := exp(-2 * (r / w_p)^2)

信道的输入功率稍后可以通过函数set_P_in(ch, P)进行修改,其中第一个参数是信道号,第二个参数是新的输入功率。例子:

calc set_P_in(pump, P_p)

修改其他参数也有类似的函数:set_lambda(ch, l)修改波长,set_dlambda(ch,l)修改ASE信道带宽,set_loss(ch, lo)修改寄生损耗。

12.2 ASE信道ASE信道用函数addASEchannel()定义。例子:

ASE_fw := addASEchannel(l_s, 10e-9, 1, ’I_s’,0, forward)

ASE_bw := addASEchannel(l_s, 10e-9, 1, ’I_s’,0, backward)

结果值是信道参考号,与函数addinputchannel()的方法相同。参数为:

.波长(单位:米)

.带宽(单位:米)

.空间模式的数量(例如,对于具有两个偏振方向的单模光纤,为2个)

.指定模式强度径向依赖性的函数(有关详细信息,请参阅函数addinputchannel()的说明)

.背景损耗(单位:dB/m)

.传播方向

模式强度的函数必须有一个参数r(仅用于径向相关性)或两个参数r和phi。

ASE信道没有输入,但由自发辐射提供。

通常,为了正确地对整个ASE谱进行采样,有一个完整的ASE信道阵列。下面给出了所用代码的示例:

l1_ASE := 960 nm { minimum ASE wavelength }

l2_ASE := 1080 nm { maximum ASE wavelength }

dl_ASE := 5 nm { ASE bandwidth in m }

defarray c_ASE_fw[l1_ASE, l2_ASE, dl_ASE]

defarray c_ASE_bw[l1_ASE, l2_ASE, dl_ASE]

w_ASE := 5.5 um

l_s := 0

I_ASE(r) := exp(-2 * (r / w_ASE)^2)

calc

  for l := l1_ASE to l2_ASE step dl_ASE do

  begin

    c_ASE_fw[l] :=

      addASEchannel(l, dl_ASE, 1, 'I_ASE', l_s,forward);

    c_ASE_bw[l] :=

      addASEchannel(l, dl_ASE, 1, 'I_ASE', l_s,backward);

  end;

这里,首先定义了ASE波长范围和各个ASE信道的宽度。然后定义两个数组来存储所有ASE信道的参考号。最后,定义了信道。

12.3光纤端面反射有一个函数set_R(channel,R1,R2),用于定义某个正向传播信道在光纤两端面的反射率。这主要用于激光建模。

例如,光纤激光器可定义为:

pump := addinputchannel(P_p_in, l_p, 'I_p',0, forward)

signal_fw := addinputchannel(P_s_in, l_s,'I_s', 0, forward)

signal_bw := addinputchannel(P_s_in, l_s,'I_s', 0, backward)

calc set_R(signal_fw, 1, 0.90)

在这里,激光波长的反射率在左端(带泵浦输入)为100%,在右端(用于激光输出)为90%。实际上,set_R()的调用将两个信道耦合在一起。(后向信道signal_bw没有明确指定,而是自动识别为相应的信道,因为它具有相同的波长。)

还可以定义反射镜内部和外部的局部损耗。

注意,在调用finish_fiber()之前必须调用函数set_R()。

对于超短脉冲模拟(第5.21节),端部反射率被忽略。

13 局部内部和外部损耗通过类似set_loss_int(channel,loss_int1, loss_int2)的函数调用,可以定义局部功率损耗,分别应用于左侧或右侧光纤端面和对应端面镜之间的路径。换言之,这些损耗在端面镜反射前后(甚至在环形谐振腔中)均有效。

同样,通过set_loss_ext(channel,loss_ext1, loss_ext2)可以定义适用于端面镜之外的局部功率损耗。

在任何情况下,损耗值必须介于0和1之间。例如,0.1意味着10%的功率损耗。

前向传播光信道对光纤的有效输入功率为P_in* (1 – loss_ext1) * (1 – R1) * (1 – l_int1),其中P_in为输入功率,R1为左侧的反射率。正向传播光信道的有效输出功率将为P_fiber * (1 – l_int2) * (1 – R2)* (1 – loss_ext2),其中P_fiber是光纤端面的功率,R2是右侧的反射率。

对于相应的反向传播光信道,这些损耗不必多带带设置。

通过函数sp_gain()、sp_gain_dyn()和NF()考虑设置的局部损耗。

对于超短脉冲模拟,忽略局部损耗。

14 检索计算结果许多函数可用于从计算中检索所有结果:

.P(ch, z)通过线性插值计算z位置处参考号为ch的信道的内功率。

.P_out(ch)是信道的输出功率。对于反射光纤端面,它是在端面之前的功率乘以反射面的透射率。

. I(channel, z, r, phi)计算光纤在纵向位置z、半径r和方位角phi处的强度。对于矩形网格,r和phi替换为x和y。如果给定负z值,则计算功率为1W的光强。

.sp_gain(ch)是信道的内部单通功率增益(以分贝为单位)。考虑到光纤的寄生损耗,也包括通过函数set_loss_int()和set_loss_ext()定义的额外损耗,但不包括端面反射率。

.gs_abs(ch)是信道的基态吸收(单位:分贝/米)(即非激发状态下光纤的吸收)。

.NF(ch)是信号或ASE信道的噪声指数。

. n(z, l)是位置z处激光活性离子能级l的分数激发,在横向尺寸中平均,在z方向上进行线性插值。

. n_tr(z, r, phi, l)是给定位置z、半径r(无插值)和方位角phi下激光活性离子能级l的分数激发。对于矩形网格,r和phi替换为x和y。

. n_av(l)是l能级的分数激发,在整个光纤上平均。

.E_sat(ch)是某些光信道的饱和能量。(它是针对强度最高的环计算的,因此显示出最强的饱和效应。)

这种函数的调用会根据需要自动开始计算所需数据。例如,函数P()的第一次调用计算光纤上所有信道的功率,因此需要一些时间;随后的调用可以使用已经计算的数据。数据会自动重新计算,例如,当输入功率的变化使以前的结果无效时。

使用set_P_in(ch, P),可以修改信道ch的输入功率。如果此后调用上述函数之一,这些数据将自动重新计算。

15 修改模型参数如果某些模型参数需要修改,则可以通过修改相应的变量并再次执行整个模型定义来完成。如果已经定义了一个函数来执行整个模型定义,那么这并不太麻烦。作为一个例子,假设需要修改激光活性离子的淬火参数q。我们可以简单地修改相应的变量,然后再次调用def_model()。

一些修改可以在不重新定义整个模型的情况下完成:

. 可以使用函数set_N_dop()更改掺杂浓度值。

. 通过使用新的长度值L调用函数set_L(L),可以修改光纤长度。请注意,数值步长不会改变。因此,如果在set_fiber()中定义的步长数不足,使用大参数调用函数可能会导致不适当的大步长,从而导致低精度。

.通过调用函数recalc_spectro(),可以从相应的函数和变量中再次读取光谱数据。例如,有依赖于全局变量T_fiber的跃迁截面的函数,表明光纤的温度。更改该变量后,必须调用函数recalc_spectro(),否则修改后的值将被忽略。

.所有信道定义都可以用clear_channels()删除。

.可以使用set_P_in()修改信道的输入功率。

16 在不同设备之间切换通过类似set_device(j)的函数调用,可以在不同的放大器或激光设备之间切换,其中j是介于1和10之间的数字。默认情况下,软件始终使用设备1。如果一个切换到另一个,可以再次定义光纤属性、信道、输入功率等,并计算输出。可以随时在不同设备之间切换,以修改某些参数或计算某些输出。

例如,在分析多级放大器时,此功能非常有用。将每一级放大器视为一个设备。例如,在图表中,可以将第二级的输出功率绘制为第一级输入功率的函数。这在演示文件中进行了演示。

另一种可能的用途是在不同版本的放大器或激光设计之间切换。这可能比为这些设备使用多带带的脚本更方便。

17 噪声指数的计算对于光放大器,计算所谓的噪声指数通常是有意义的。这被定义为一个系数,该系数表示放大输出的噪声功率谱密度与输入噪声功率谱密度乘以放大系数的比值,假设输入噪声处于散粒噪声水平。(有关详细信息,请参阅https://www.rp-photonics.com/noise_figure.html)通常以分贝表示。

RP Fiber Power允许使用函数NF(ch)计算某个ASE信道的噪声指数,其中ch是信号的信道数。这个噪声指数是一个系数(噪声功率比);要将其转换为分贝,取10 * lg(NF(ch))。

如果指定了信号信道而不是ASE信道,软件将搜索ASE信道,其波长区间包含信号波长且具有相同传播方向的。噪声指数是针对一个在端面没有反射的单通道计算的。这意味着使用的ASE信道必须没有端面反射,也没有输入功率。

如果已为具有set_loss_int()或set_loss_ext()的信号信道设置了一些集中损耗,则相应的ASE信道也必须设置相同的损耗;否则,获得的噪声指数将不正确。

为了熟悉这个概念,您可以测试以下情况:

.对于没有背景损耗的高增益四级放大器,噪声指数必须为≈3 dB。

.对于准三级放大器,噪声指数更高。对于反向泵浦,噪声指数优于正向泵浦。

.如果只有10dB的背景损耗,但没有放大,则噪声指数为10dB。在这种情况下,信号被衰减,而噪声保持在散粒噪声水平。


赞赏支持