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

2021-08-11 16:21发布

光纤参数的定义

基本光纤参数通过函数调用定义如下:

set_fiber(L_f, N_z, gainsystem$)函数set_fiber()有三个参数:

光纤长度(这里称为L_f),单位为米

沿光纤的数值步长

例如,对于4 m长的光纤,N_z=40,步长尺寸为10 cm。更大的步长可以提高输出功率的精度和光纤内部量(如局部功率)的分辨率,但需要更长的计算时间。请注意,步长数太少可能导致精度差,而不会生成错误消息。

增益系统,定义为“Yb”(用于掺镱增益介质)或“Er”(铒)等字符串,用于简化增益模型;对于更复杂的增益系统,给出空字符串,“-”表示未掺杂光纤。

所有这些参数都可以是常量、变量或一些数学表达式。

在模拟环形激光器配置的情况下,调用函数(没有参数)

make_ring()

此外,还必须确定激光活性离子数密度的横向分布。通常,浓度分布假定在光纤轴周围的特定环内是恒定的,但每个环可以有不同的浓度值。我们通过调用函数来定义环结构

add_ring(r, N_dop)

首先是半径为r且离子浓度为N_Dop(单位为离子每立方米)的内环,然后是增加r为所有其他环。这里,r总是外半径,而内半径是前一个环的外半径。没有必要定义一个掺杂浓度为零的外部区域,因为这无论如何都不会导致增益或损耗。

请注意,软件总是假设每个环中的信道的光学强度为恒定的,基于在该环中传播的光功率的分数(使用强度分布函数计算)和环的面积。因此,例如,为了考虑饱和效应的径向依赖性,可能必须定义具有相同掺杂浓度的多个环。例如,假设你有一个半径为r_co的纤芯,你想把它分成五部分,你可以写下for j := 1 to 5 do add_ring((j / 5) * r_core, N_dop),而不是add_ring(r_core, N_dop)。

如果必须考虑方位角依赖性,则在调用add_ring()之前,必须使用类似set_phi_steps(4)的函数调用定义方位角步数。注意,add_ring()函数定义了整个环的一些掺杂浓度,而没有该属性的方位角依赖性。可通过函数set_N_dop()定义掺杂剂浓度的额外方位角依赖性。

可以定义多达30个环和128个方位角步数。

如果要使用矩形网格而不是环形结构,则必须定义最小和最大x和y值,以及函数调用的步长,如set_xy_steps(x_min, x_max, dx, y_min, y_max, dy)。此后,必须通过对每个网格段调用一次set_N_dop(k, x, y, N)来定义掺杂分布,其中N是k型离子和位置x和y的密度。

例1:高数值孔径大纤芯多模光纤

具有较高数值孔径的多模光纤是最简单的情况,因为所有光信道的光场强度可以假定为在纤芯内恒定,而在纤芯外为零。在这里,一个像add_ring(r_core, N_dop)这样的函数调用就足够了。

例2:具有均匀掺杂的阶跃单模光纤

在这种情况下,一个简化的解决方案是像之前一样定义单个环,并使用例如光信道的高斯强度分布。然而,软件只计算每个光信道与纤芯的重叠程度,而忽略纤芯内光强度的变化。

一个更精确的简单扩展是使用几个具有相同掺杂浓度的环。对于3个环,例如,可以读取:

for j := 1 to 3 do add_ring(r_core * (j / 3), N_dop)

尽管这定义了与之前完全相同的掺杂分布,软件随后考虑了具有不同光强度的三个环。这增加了精度,但也增加了计算时间。当然,当使用过渡截面数据时,不能获得更高的精度,过渡截面数据是使用简单的模式强度的顶帽近似值从测量数据计算得出的。(这并不少见。)

例3:少模光纤

在这个例子中,我们考虑只支持模式LP01和LP11的光纤。在一个环中仅使用4个方位段可能就足够了。然后,我们可以先调用set_phi_steps(4)以获得4个方位角段,然后使用类似于add_ring(5e-6, 20e24)的调用定义单个环。

重新定义环结构

通过调用add_ring(0,0)或set_xy_steps(),如果需要重新定义,可以重置整个掺杂剂结构(即,可以删除所有之前定义的环,还可以重置方位角段的数量,或者更改矩形网格)。

也可以用函数N_dop(i, r, phi)或N_dop(i, x, y)来调用i型离子在一定半径和方位角的掺杂浓度。

光谱数据的定义

接下来我们需要提供光谱数据。原则上,只有在需要自己定义光纤数据时,才需要了解本节中的以下内容。

该软件区分了两种不同的激光活性离子情况:

具有简单能级机制的离子,只有一个亚稳态。

具有更复杂能级机制的离子,可能涉及更多的亚稳态水平和能量转移。

这些情况下所需的输入将在接下来的两个小节中讨论。此后,另一小节总结了光谱数据文件的一些规则。

简单能级系统

激光活性离子的基本模型如下:

每一个离子都有一个基态和一个亚稳态,即上层激光能级。这些能级的分数粒子数如下,用n1和n2表示,n1 + n2 = 1。

分数激励n2的时间演化由以下微分方程描述:

微信图片_20210809102056.jpg

其中

微信图片_20210809104007.jpg

是上态寿命,q是描述淬火效应的参数(例如,通过合作上转换造成的),

微信图片_20210809104153.jpg

是指数为i的光波的重叠系数,

微信图片_20210809104242.jpg

是光功率,A是纤芯面积,

微信图片_20210809104348.jpg

是光子能量,

微信图片_20210809104348.jpg

是吸收横截面,

微信图片_20210809104428.jpg

是辐射横截面。

 掺杂离子与光强度的耦合是由所谓的有效截面决定的,它与波长有关。另一个重要的光谱参数是上态寿命,即2能级寿命。

在软件中,光谱数据通过各种变量和函数进行定义:

在掺镱增益介质的情况下,激光活性离子的上态寿命必须定义为一个名为tau_Yb的变量。(变量名始终使用增益系统的名称构造,如函数set_fiber()所示)

淬火过程可以用一个附加变量来描述,例如,对于掺Yb的介质,q_Yb被定义为上述方程中的参数q。

 对于掺镱增益介质,吸收和发射截面必须定义为函数,例如s_a_Yb(l)和s_e_Yb(l)。函数参数是以米为单位的波长。

横截面函数可以用不同的方式定义。一种可能是使用一些分析公式。使用G. C. Valley, Opt. Fiber Technol. 7, 21 (2001)的数据,我们可以使用:

f(l,l_c,l_w,n) := exp(-abs((l - l_c) / l_w)^n)

s_a_Yb(l) := 1e-24 *

  (0.09 * f(l, 913e-9, 8e-9, 2)

  + 0.13 * f(l, 950e-9, 40e-9, 4)

  + 0.2 * f(l, 968e-9, 40e-9, 2.4)

  + 1.08 * f(l, 975.8e-9, 3e-9, 1.5))

c := 2.9979e8

h := 6.626e-34

l0 := 975e-9

kT := 1.38e-23*293

s_e_Yb(l) := s_a_Yb(l) * exp(h * c * (1 / l0 – 1 / l) / kT)

tau_Yb := 1.5e-3

这适用于铒/镱掺杂放大器的纤芯玻璃中的镱横截面。

另一种可能是使用表格值。例子:

defarray s_abs_Yb[900, 1100, 1], s_em_Yb[900, 1100, 1]

readlist l, s_abs_Yb[l], s_em_Yb[l]:

  900, 725, 11

  901, 737, 12

  ...

s_abs_Yb(l) := 1e-24 * s_abs_Yb~[l / 1e-9]

s_em_Yb(l) := 1e-24 * s_em_Yb~[l / 1e-9]

第一行定义了保存数据的两个数组。命令readlist将数据填充到数组中。最后,定义了横截面函数,从数组中得到它们的结果。在特定的情况下,它们也会重新调整波长(因为对于给定的阵列,这些波长以纳米为单位)和结果。颚化符(~)表示当出现与特定数组索引不完全对应的函数参数时,使用线性插值。

扩展能级系统

如果激活的光纤中含有的激光活性离子过于复杂,则在软件中用更复杂的函数调用来描述其性质。例如,如果处理一个具有不止一个亚稳态的能级系统,或者如果必须包括能量转移,那么这个部分是相关的。然后可以有多种类型的离子,每个离子都有一些掺杂浓度(可能具有径向依赖性)和两个或更多的电子能级。

数据的提供方式如下:

对于每种类型的离子,调用函数def_ion(IonType$, l1, l2),其中IonType$是离子的名称(例如“Er”),l1是第一能级的编号,l2是最后能级的编号。例如,如果模型中需要3能级的铒和2能级的镱,请调用def_ion('Er', 1, 3)和def_ion('Yb', 4, 5)。请注意,能级是按顺序编号;因此很明显,5能级是Yb的激发能级。在一个离子系统中,能级数必须按照增加激发能的顺序分配,即基态总是第一位的。

如果有多个离子类型,或者如果掺杂剂浓度不是径向对称的,则使用函数set_N_dop(k, r, phi, N)或set_N_dop(k, x, y, N)定义完整的掺杂剂分布。这里,k是离子类型(例如,第二个离子为2),r和phi分别是径向坐标和方位角坐标,N是掺杂剂浓度。对于矩形网格,r和phi替换为x和y。

 定义影响粒子数的所有过程。共有五种不同类型的过程,均通过上文讨论的铒-镱系统的示例进行解释:

def_spont(5, 4, 1 / tau_Yb)定义了以给定速率(每秒事件数和起始能级中的离子)从能级5到能级4的自发跃迁。显然,这两个能级必须属于同一类型的离子。

 def_stim(4, 5, 's_a_Yb')定义了从4能级到5能级的受激跃迁,其中第三个参数是可计算跃迁截面的函数名称。(该函数必须有波长作为参数。)软件自动识别与该跃迁相关的光信道,同时忽略了那些跃迁截面为零的信道。因此,对于超出其跃迁范围的波长,给定函数实际返回零是非常重要的。这些跃迁的类型可以是吸收(如给出的例子中所示)或受激辐射(当给出的第一个能级高于第二个能级时),它们对光场的影响将自动计算出来。

def_stim_cl(1, 2, 's_a_Er', cs)定义了cs尺寸的团簇中离子的受激跃迁(吸收)。(例如,对于离子对,我们使用cs=2。)这里,通过激发团簇内的邻域离子,可以阻止跃迁对能级粒子数的影响。这一特性可用于模拟成对诱导的猝灭:基态铒离子总是可以吸收泵浦辐射,但如果团簇的另一个离子已经被激发,则对能级粒子数没有影响,因为双激发通过上转换过程导致快速的能量损失。

def_quench(2, 1, 2, Q21)定义了一个淬火过程,其中从2能级到1能级的转变发生,速率为Q21乘以起始能级分数粒子数的平方。如果第三个参数是3而不是2,则速率将是Q21乘以起始能级别分数粒子数的立方。

 def_upcon(2, 1, 3, 2, U)定义了一个上转换过程,从2能级的两个离子开始,其中一个到1能级,另一个到3能级,并且消耗起始能级的速率是U乘以起始能级分数粒子数的平方。如果第四个参数是3而不是2,则速率将是U乘以起始能级分数粒子数的立方。离子进入1能级和3能级的速率是起始2能级消耗速率的一半。

def_transfer(5, 4, 1, 3, T_YbEr) 定义能量转移,其中一个离子从5能级转移到4能级,另一个离子从1能级转移到3能级。对于所涉及的两个离子(当然,如果能量转移只涉及一种离子的话除外),这个过程的速率一般是不同的:对于铒离子,它是T_YbEr乘以镱浓度乘以5能级和1能级的分数粒子数,而对于镱,它是T_YbEr乘以铒浓度乘以5能级和1能级的分数粒子数。

光谱数据文件规则

原则上,具有光谱数据集的文件只是include文件(扩展名为.inc),当通过include命令调用时,就像它们的内容被复制到主脚本中一样。因此,相同的规则适用于所有脚本代码。但是,当此类数据文件与交互表单结合使用时,有一些特殊的规则是相关的:

如果一个数据集应出现在激活的光纤的交互式表单的参数集列表中,则相应的数据文件必须存储在光谱数据文件夹中。

文件名应始终以表示活动离子类型的两个字母开头。例如,它可以是掺镱光纤的“Yb-my special glass.inc”。

 当使用简单能级系统的增益模型时,例如对于掺镱光纤,文件应定义以下内容:

s_a_Yb(l) 和s_e_Yb(l)分别是吸收和发射截面的函数。

tau_Yb是上态寿命。

当使用扩展能级系统的增益模型,需要定义函数def_ionsystem(),其中包含导致不同能量能级之间跃迁的所有过程的定义。执行交互式表单时,将检查光谱数据文件是否包含def_ionsystem()函数的定义。如果找到该函数,将在生成的脚本中的掺杂分布定义之后插入对该函数的调用。

赞赏支持