如何实现某些目标 1 如何开始使用 RP Fiber Power
作为该软件的初学者,您可以通过以下方式开始:
l 在电脑上安装软件。
l 在工作文件夹中拷贝演示文件夹。(不要编辑原始文件。)在Windows Explorer中双击其中一个脚本文件来启动软件。在软件中,您可以使用 File | Open 打开更多文件。阅读文件并按F8(Execute | Graphics)执行。
l 调用交互式输入表单,它允许您生成脚本,只需填写一些栏并按下这些表单上的执行按钮即可。
2 如何导入光谱数据
利用已经从 RP Photonics 以.inc 文件的形式获得的光纤数据文件是相当容易的。它们存储在一个特定的文件夹中,如果您得到任何此类新文件,只需将它们放入该文件夹即可。(如果访问权限有问题,可以将该文件夹使用到其他位置,请参见 Options | Change location of fiber data folder,。
如果你从其他来源得到光谱数据,你首先需要把它们转换成正确的格式。该软件要求函数定义波长相关的有效跃迁截面。(参见定义简单激光活性离子的页面)如果只需要几个波长的跃迁截面,您可以简单地定义如下功能:
s_a_Yb(lambda):=
ifabs(lambda - 975e-9 < 1e-9
then2.6e-24
else ifabs(lambda - 1030e-9) < 1e-9
then48e-27
s_e_Yb(lambda):=
ifabs(lambda - 975e-9) < 1e-9
then2.5e-24
else ifabs(lambda - 1030e-9) < 1e-9
then635e-27
然而,对于许多不同的波长值,使用列表数据的函数通常比较方便。理想情况下,这些数据以 CSV(逗号分隔值)格式的纯文本文件形式提供。作为一个例子,我们假设名为 Yb cross sections.dat 的数据文件如下所示:
850,22, 0.014
852,27.54, 0.02107
854,32.8, 0.02864
...
其中,第一列为波长,单位为纳米(例如,从850到1150,以2为步长),第二列和第三列分别以 1e-27 m2 为单位给出吸收和发射截面。然后可以在脚本中使用以下命令:
defarrays12[850, 1150, 2]
defarrays21[850, 1150, 2]
readlistl, s12[l], s21[l]
from"Yb cross sections.dat"
s_a_Yb(l):= if 850e-9 <= l <= 1150e-9
then1e-27 * s12~~[1e9 * l]
s_e_Yb(l):= if 850e-9 <= l <= 1150e-9
then1e-27 * s21~~[1e9 * l]
前两行定义数组。(第三个参数是波长步长尺寸。)readlist 命令将文件中的数据加载到两个数组中。最后,这两个函数访问这些数组。if-then 结构避免访问索引范围之外的数组元素,在这种情况下返回0。(在这种光谱区域中,横截面函数返回0很重要。)
可能需要更复杂的操作,例如,当数据点不等距时。在这种情况下,您可以使用RP Photonics的技术支持。
3如何选择合适的数值参数
对于没有超短脉冲的放大器和激光仿真,有两种类型的数值参数,必须选择合理的数值:
l 沿光纤的步长Nz(见第2.1节)应如此之小,以至于在任何一步内,光功率都不会发生强烈变化,除了光信道的功率非常低,因而饱和效应较弱。在脚本中,这个步长数作为set_fiber()函数的第二个参数给出。如有疑问,增加该值,直到计算出的输出功率或类似参数没有显著变化。
l 横向分辨率也应足够高,即掺杂环的定义应足够精细。建议对均匀掺杂区域进行细分,以准确地考虑到光强在这些区域内可能会发生实质性变化。同样,建议检查增加的分辨率是否对计算结果有显著影响。
对于超短脉冲传播的仿真,需要了解以下附加方面:
l 即使光纤非线性会导致单个z步长中脉冲的剧烈变化,也不一定要增加沿光纤的步数Nz。所使用的算法自动执行所需数量的较小的子步骤,以保持所需的数值精度。只有脉冲属性能检索到预先定义的数值网格上的脉冲,而不是根据自动完成的子步长在中间位置的脉冲。
l 必须适当选择数值网格参数:
l 时间宽度T必须足够大,以完全包含时间脉冲分布——不仅对于初始脉冲,而且对于整个传播。
注:如果脉冲的某一部分到达时间轨迹的末端,它不会消失,而是回到另一端。
注意,模拟受激拉曼散射需要高的时间分辨率。例如,对于二氧化硅光纤,时间分辨率应优于10 fs,理想情况下甚至优于5 fs。
l 频率分辨率将与网格的时间宽度成反比。因此,如果色散分布的光谱狭窄特征相关,则可能需要更长的时间网格。
l 在频域中,分辨率为1/T(即网格时间宽度的倒数),总覆盖光谱范围为N/T。该范围必须足够大,以完全包含光纤内所有位置的光谱脉冲分布。
l 如果需要覆盖宽的时间范围并且具有高的时间分辨率(即宽的频率范围),则网格点的数量需要很大。在简单的情况下,28=256点甚至更少是足够的,而在其他一些情况下,需要212=4096点甚至更多。
正确选择这些参数是用户的责任。如果数字分辨率增加一倍,则可以通过将T和N增加一倍(使用双倍的时间范围,但相同的光谱范围)或仅将N增加一倍(使用双倍的光谱范围)来检查结果是否有显著变化。
4如何以文本形式导出计算数据
您可能主要使用软件的图形输出,但在某些情况下,需要将计算数据写入文本文件。例如,您可能需要这样一个文件来将数据导入其他软件。常用的格式是CSV(逗号分隔值)格式,每行一个数据点上都有信息。
为此,您可以使用下面描述的几行脚本代码。请注意,这并不强制您在脚本级别上处理所有内容:您仍然可以使用交互式表单,并在带有附加定义的页面上插入脚本行。然后将这些行插入到生成的脚本中。
通常,使用循环结构将多个数据点上的信息写入输出文件。在第一个示例中,我们将位置相关的正向和反向传播信号功率值导出到一个文件中:
write"; position, forward power, backward power", >"Test.dat"
forz := 0 to L_f step L_f / No_z_steps do
write[z:f1, ", ",
P(signal1_fw,z):d4, ", ",
P(signal1_bw,z):d4],
>>"Test.dat"
在这里,第一个脚本行将一个单行头写入输出文件。然后,for循环用于循环变量z通过一系列值。对于每个值,write命令用于将三个值写入输出文件的一行:z位置和正向和反向功率。>>选项指示生成的行附加到现有文件。
如果不需要开头的标题行,也可以使用以下版本:
write [z:f1, ", ",
P(signal1_fw, z):d4, ", ",
P(signal1_bw, z):d4],
for z := 0 to L_f step L_f / No_z_steps,
>"Test.dat"
在这里,使用单个write命令,具有用于写入多行的for选项。
在其他情况下,您需要修改循环中的某些模型输入。然后,这些功率必须相应地重新计算。例如,我们可以改变放大器的信号输入功率,并将其与相应的信号输出功率一起写入文件:
write[P_in:f2, ", ",
(set_P_in(signal1_fw,P_in); P_out(signal1_fw)):d4],
forP_in := 0 to 0.5 step 0.05,
>"Test.dat"
在这里,第二行的复合表达式首先设置信道的输入功率signal1_fw,这将导致重新计算所有光功率和激发,然后检索新的输出功率。
对于更复杂的文件输出和输入(例如关于其他文件编码或二进制文件),有诸如open_file()、write()等专门的函数–有关详细信息,请参阅交互式帮助系统。
5如何跟踪脚本中的错误
开发脚本时,不可避免地会出现偶然的错误。但是,这个软件提供了一些在合理时间内跟踪的方法。这里有一些提示。
如果由于脚本解释器遇到严重错误(例如语法错误)而无法执行脚本,请尝试通过阅读左下角日志区域的内容来获取一些线索。
如果脚本执行,可能会出现更困难的情况,但不会按预期执行。以下操作可能会有所帮助:
自V7版本以来,该软件包含一个强大的调试器。这样,您就可以一个命令一个命令地执行脚本命令。此外,还可以调试表达式。
.在脚本中,放置一些show命令以在输出区域中显示一些量。这可能为你提供可能出了问题的线索。
如果您想尝试一些简化版本的脚本代码,您可以通过在代码前插入一行(*并在代码后插入一行*)来临时“注释”一些代码行。
有关您使用的函数,请参阅手册或在线帮助。确保你正确理解他们的作用。
作为一般建议,只需一步一步地引入更复杂的特性,并在每一步之后进行一些测试。否则,很难找出哪一步是错误的。
在困难情况下,考虑呼叫技术支持。
6如何建模双包层光纤设备
在双包层有源光纤中,信号或激光波有一个纤芯,通常为单模或仅支持很少的传播模式,而泵浦光被注入一个更大的内包层。只有纤芯掺杂了激光活性离子。由于泵浦光与纤芯的强度分布有一定的重叠,一些泵浦光被吸收,可以用于纤芯的激光过程。
利用该软件对包层泵浦装置进行建模的最简单方法是根据内包层的面积定义一个具有大强度分布的泵浦信道。通常情况下,假设顶帽强度分布填充整个包层和纤芯区域。然而,请注意,该模型基于一个重要的假设,即内包层中的强度分布在光纤中传播期间保持不变。特别是对于设计简单、在圆形内包层中具有中心纤芯,这一假设可能被违背,因为内包层的某些模式的功率优先被吸收,并且在一段距离后,模式分布使得吸收变弱。然后,强度分布在纤芯区域呈下降趋势。
有各种方法可以缓解这个问题。例如,可以使用对称性降低的包层形状(例如“D”形),或者强烈弯曲光纤以增强模式混合。这种方法可能并不完全有效,即,泵浦的吸收率可能仍然低于模型中的假设值。不幸的是,很难(由于各种原因)准确地模拟这种情况。
然而,在径向对称光纤设计的情况下,如果包层模式的数量不太多,则可以进行更精确的建模。这在之前描述的演示文件中完成。这里,我们使用模式求解器来计算所有的包层模式。然后,问题出现了,输入泵浦功率如何分布在包层模式上;这取决于泵浦源的光束特性和耦合光学,当然也取决于对准。第一种猜测是功率在所有包层模式上的均匀分布,尽管这通常不符合平滑的强度分布。
7如何建模光纤激光器的锁模
光纤激光器的锁模是一个先进而复杂的科学课题,因为这种激光器有许多不同的工作模式,而且这些模式经常表现出复杂的细节,部分原因是强非线性相互作用。利用RP Fiber Power,可以模拟光纤激光器中的脉冲演化。基本上,我们将在使用的脚本中按照以下步骤进行操作:
定义所有光学组件的参数,即所有涉及的光纤和可能的其他组件,如滤波器、可饱和吸收器等。
定义脉冲网格后,设置一个参数与预期腔内脉冲大致相似的启动脉冲。选择输出耦合器前面的位置作为谐振腔中的起始位置是很方便的,因为这样可以很容易地从该位置的内腔脉冲获得输出脉冲。
定义随后通过所有谐振腔组件传输当前脉冲的函数,以便执行完整的往返行程。然后可以多次调用该函数(例如,100次),希望脉冲参数收敛。(如果未正确选择谐振腔属性和初始脉冲属性,则可能无法实现收敛。)
如果实际建模增益饱和,则需要大量往返(可能数百万次),直到脉冲能量达到稳定状态。如果对增益动力学不感兴趣,那么根据给定输入脉冲能量达到的稳态,重新计算每次往返后的激光增益就更为方便。通常只模拟100次往返行程就足够了。
我们不仅可以定义显示最终脉冲的图表,还可以定义许多往返行程中脉冲参数的演变。
每次往返后,便于存储脉冲,以便以后使用交互式脉冲显示窗口方便地检查脉冲。
有一个全正常色散皮秒光纤激光器的演示文件。