显示了如何在超短脉冲(例如锁模光纤激光器,体激光器,再生放大器和光纤放大器)中进行数值模拟-特别是使用 RP Photonics 的 RP Fiber Power 软件。所使用的概念涉及功能调用,而不是用于通过各种光学组件发送脉冲的命令,因此具有极高的灵活性,从而允许用户实施相当复杂的仿真。
从V4开始,我们的软件 RP Fiber Power 可用于模拟超短脉冲的传播。对于许多人来说,了解其工作原理可能会很有用,无论您已经拥有该软件,还是考虑将其用于研究和开发。我们在该领域进行了实质性的软件改进。
这些功能不仅限于光纤中的脉冲传播,还将介绍如何考虑各种其他光学元件。因此,如果您正在使用锁模体激光器或再生放大器,请确保同样可以将相同的软件应用于此。到目前为止,仅对于同步泵浦光学参量振荡器和放大器,该软件不可用。
概念
模拟 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);
{增益恢复的动态模拟}
结尾计算
对于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);
结尾“泵功率的变化”
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为单位的空心三角形}
结尾;
结尾其他情况
考虑一个由种子激光器的连续脉冲序列馈送的放大器系统。同样,您可以模拟脉冲能量如何向稳态发展。您还可以研究,例如,如果您在脉冲之间有随机的时间间隔,或者只是缺少一些脉冲,或者是一系列脉冲串,或者泵浦功率或种子脉冲的特性发生波动等,那么它是如何波动的。
甲再生放大器工作使得一个有时注入种子脉冲,然后让它在演变一定数量往返,然后喷射它。在抽运放大器晶体一段时间后,可以执行下一个放大周期。在这里,可以轻松实现一种功能,该功能可以在给定数量的谐振器往返行程下模拟完整的放大周期。同样,可以使用一种函数来模拟这种放大循环,直到达到稳态为止。有些系统会出现分叉甚至混乱的情况,请参阅一些在线示例案例。