RP 系列 | 使用 RP 光纤功率软件进行超短脉冲仿真

2021-05-14 15:29发布

显示了如何在超短脉冲(例如锁模光纤激光器,体激光器,再生放大器和光纤放大器)中进行数值模拟-特别是使用 RP Photonics 的 RP Fiber Power 软件。所使用的概念涉及功能调用,而不是用于通过各种光学组件发送脉冲的命令,因此具有极高的灵活性,从而允许用户实施相当复杂的仿真。

从V4开始,我们的软件 RP Fiber Power 可用于模拟超短脉冲的传播。对于许多人来说,了解其工作原理可能会很有用,无论您已经拥有该软件,还是考虑将其用于研究和开发。我们在该领域进行了实质性的软件改进。

这些功能不仅限于光纤中的脉冲传播,还将介绍如何考虑各种其他光学元件。因此,如果您正在使用锁模体激光器再生放大器,请确保同样可以将相同的软件应用于此。到目前为止,仅对于同步泵浦光学参量振荡器放大器,该软件不可用。

对于打算使用 Matlab 或其他编程环境自己开发此类仿真的人来说,本文也应该是有用的。然而,实现超短脉冲与光学组件相互作用的所有细节。对于某些元素而言,这非常简单,而对于其他元素(例如,光纤,甚至可能是活性纤维),这是一件相当复杂的事情。尽管这样做可能会学到很多东西,但是您肯定会花费很多时间。使用此类功能的软件,您可以专注于物理学和技术,可以快速地获得所需的结果。本质上,是要开始大型学习活动还是要快速产生结果的其他需求。使用此类软件时,您还将学到很多有关物理的知识。

概念

模拟 RP 光纤功率中超短脉冲传播的基本概念与我们早期产品 RP ProPulse 的概念不同。我们首先不介绍软件系统,我们使用脚本语言的某些功能来定义或加载初始脉冲,然后再通过光学元件发送该脉冲。可以使用其他功能来检索“当前脉冲”的各种属性,即当前(在看到某些元素之后)的脉冲。

这种方法的优点是它最灵活。提到的函数可以在任何表达式中使用,并且我们可以利用这些表达式的强大控制结构:if-then 语句,while-do 循环,for 循环,repeat-until 等。您可以通过多种方式使用此类表达式,例如,进行各种初始化,也可以在生成任何图形图的过程中使用。事实证明,这种灵活性对于任何实际的研究或开发工作都是必不可少的。

示例:锁模光纤激光器

在大多数情况下,主要是在锁模激光器的稳态下获得的脉冲。通常,由于它是由涉及光学增益和损耗(可能与波长有关),色散,光纤非线性,饱和吸收等复杂的相互作用而导致的,因此无法直接计算出该稳态。在大多数情况下,仅能模拟稳态的演化。一定数量的谐振器往返行程中的一些初始脉冲,希望系统在合理数量的往返行程中将接近稳态。在某些情况下,没有这样的稳定状态。有不稳定的激光器,其研究当然在科学上也很有趣。我们也注重喜欢研究启动过程的细节。
初始脉冲的细节通常并不严格;您只是不想离开稳定状态就可以快速达到目标。您只需粗略地猜测诸如脉冲能量和持续时间之类的参数,并生成高斯未扰动的起始脉冲,例如:
; 参数:
ls:= 1060 nm {中心波长}
T_range:= 25 ps {时间范围的宽度}
N_t:= 2 ^ 10 {网格点数}
dt:= T_range / N_t {时间分辨率}
E0:= 10 nJ {初始脉冲能量}
tau0:= 1 ps {初始脉冲持续时间}
chirp0:= 0 GHz / ps {初始chi}

 
calc {计算以下复合表达式}
 开始
 set_pulse_grid(T_range,N_t,l_s); {定义脉冲网格}
 startpulse_G(E0,tau0,chirp0); {产生起始脉冲}

 结尾


基本上由时间范围的宽度,数值点的数量和中心波长定义的,脉冲网格必须足够大,能够很好地容纳所有阶段的脉冲。同样,时间分辨率必须足够高以适应整个脉冲带宽。对于许多批量激光器模拟,256个点就足够了,但是对于强c脉冲(在光纤激光器中经常发生),则可能需要1024个点甚至更多点。(对于超连续谱的生成,可能甚至需要数万个。)

在某些时候,您必须定义所涉及的纤维。从本质上讲,需要为每个模型定义一个用于连续波仿真的模型,此外,还要为其分配一些超短脉冲传播所需的属性:本质上,是色散和非线性指数,在某些情况下,还需要更多有关受激拉曼散射的详细信息(此处不予考虑)。以下是线性谐振器中具有有源和无源光纤的模型的使用代码,其中不包括各种参数的定义:
calc {定义纤维}
 开始
   {主动光纤:}
   set_device(1);
   set_fiber(L_active,20,'Yb');
   add_ring(r_co,N_Yb);
   泵:= addinputchannel(P_pump_in,l_p,'I_p',0,转发);
   signal_active_fw:= addinputchannel(0,l_s,'I_s',0,forward);
   signal_active_bw:= addinputchannel(0,l_s,'I_s',0,向后);
   set_GVD(GVD_af);
   set_n2(n2_f); {非线性指标}
   finish_fiber();
   {无源光纤:}
   set_device(2);
   set_fiber(L_passive,5,'-');
   signal_passive_fw:= addinputchannel(0,l_s,'I_s',0,forward);
   signal_passive_bw:= addinputchannel(0,l_s,'I_s',0,向后);
   set_GVD(GVD_pf);
   set_n2(n2_f); {非线性指标}
   finish_fiber();
 结尾;


通常假定起始脉冲是刚好在到达输出耦合器之前的腔内脉冲。因此,造成一些损耗的输出耦合器将成为谐振器往返中首先看到的光学元件。之后,循环脉冲可能会看到有源光纤,一根或多根无源光纤,可饱和吸收器和/或光调制器,以及其他光学元件。定义执行完整谐振器往返的函数通常很方便:

DoResonatorRoundTrip():= 
 {模拟脉冲的一个谐振器往返行程。}
 开始
   全球允许所有人;
   pp_multiply_expr_f('r_FBG%(f)');
     {光纤布拉格光栅作为输出耦合器}
   pp_fiber(1,signal_active_fw); {主动光纤}
   pp_fiber(2,signal_passive_fw); {无源光纤}
   pp_sat_abs(dR_S,tau_S,E_sat_S); {SESAM}
   pp_loss(loss_S); {SESAM损失}
   pp_fiber(2,signal_passive_bw); {无源光纤}
   pp_fiber(1,signal_active_bw); {主动光纤}
   pp_center(1); {使脉动居中}
   calc_dyn(0,T_rt,T_rt);
     {增益恢复的动态模拟}
 结尾
我们的示例基于线性谐振器,在到达另一端(SESAM,可饱和吸收器)之后,我们函数中使用的各种参数必须在其他地方定义。
最后一个函数调用在一个往返时间内模拟光纤的泵送,以补充存储的能量。此后,很容易模拟一些往返行程并在这些之后显示腔内脉冲的一些参数:
计算
 对于j:= 1到1000
 开始
   DoResonatorRoundTrip();
   store_pulse(j);
 结尾
显示“能量:”,E_p():d3:“ J”
显示“持续时间:”,tau_p():d3:“ s”
显示“带宽:”,dl_p():d3:“ m”


在这里,我们还存储了所有脉冲,以便以后可以调用它们以进行其他计算和生成图表,还可以使用交互式脉冲显示窗口检查它们。

这里显示的简单方法实际上存在一个问题:通常需要进行大量往返操作,直到光纤的增益稳定在最终水平。本质上,存在弛豫振荡只有经过大量往返之后,这些信息才会消失。如果您想学习这些,那就很好了。但是,如果您想快速找到稳定状态,则可以应用一些其他技巧:使用几行代码(此处未显示),您可以在每次往返过程中根据脉冲能量重新计算光纤的增益,只需好像增益可以立即做出响应。这样,您可以有效地抑制张弛振荡,并更快地获得最终结果。另一种可能性是人为地将增益饱和度大幅度提高(例如100),同时将有效脉冲重复频率降低相同因子。这将非常有效地加速弛豫振荡,从而极大地节省了计算时间。

当然,另一个问题是您可能不确定要达到稳定状态需要往返多少次。因此,您可能想要定义一个模拟往返的函数,直到基本脉冲属性(能量,持续时间,带宽)不再实质改变为止:
FindSteadyState(tol,N_max):= 
 {找到稳定状态,
   由相对变化的时间定义
   E_out和tau的连续三个步骤的总和小于tol。
   如果在N_max个步骤内找到稳定状态,则返回1,
   否则为0。}
 开始
   var n_sc,N,E1,E2,tau1,tau2,df1,df2;
   N:= 0; {往返次数}
   n_sc:= 0;
     {脉冲参数变化很小的往返次数}
   E1:= E_p(); tau1:= tau_p(); df1:= df_p();
   重复
     inc(N);
     DoResonatorRoundTrip();
     E2:= E_p(); tau2:= tau_p(); df2:= df_p();
     如果abs(E2 / E1-1)<= tol
        和abs(tau2 / tau1-1)<= tol
        和abs(df2 / df1-1)<= tol
     然后inc(n_sc)
     否则n_sc:= 0;
     E1:= E2; tau1:= tau2; df1:= df2;
   直到n_sc = 3或N> = N_max;
   (n_sc = 3);
 结尾
然后,您可以随时调用该函数以有效地计算出稳态。如果有效,它将返回1;如果在给定的最大往返次数内找不到稳态,它将返回0。您可以根据情况轻松修改该策略的详细信息。
我们为您提供该功能的应用示例。假设我们要生成一个图,在该图中我们要绘制稳态脉冲能量和持续时间作为泵浦功率的函数:
“泵功率的变化”
x:400、600
“泵浦功率(mW)”,@ x
y:0、20
框架

 
!对于x:= CS_x1至CS_x2步骤20

 开始
   set_device(1); {主动光纤}

   set_P_in(泵,x * mW);
   如果FindSteadyState(0.01,1000)然后
   开始
     点(x + i * E_p()/ nJ,“ R”);
       {实心矩形,以nJ为单位的脉冲能量}
     点(x + i * tau_p()/ ps,“ t”);
       {脉冲持续时间以ps为单位的空心三角形}
   结尾;
 结尾

其他情况

上面的示例向您展示了如何在不使用太多代码的情况下实现相对复杂的仿真。以下是一些针对可能情况的示例:

  • 考虑一个由种子激光器的连续脉冲序列馈送的放大器系统。同样,您可以模拟脉冲能量如何向稳态发展。您还可以研究,例如,如果您在脉冲之间有随机的时间间隔,或者只是缺少一些脉冲,或者是一系列脉冲串,或者泵浦功率或种子脉冲的特性发生波动等,那么它是如何波动的。

  • 再生放大器工作使得一个有时注入种子脉冲,然后让它在演变一定数量往返,然后喷射它。在抽运放大器晶体一段时间后,可以执行下一个放大周期。在这里,可以轻松实现一种功能,该功能可以在给定数量的谐振器往返行程下模拟完整的放大周期。同样,可以使用一种函数来模拟这种放大循环,直到达到稳态为止。有些系统会出现分叉甚至混乱的情况,请参阅一些在线示例案例

赞赏支持