RP Fiber Power 版本
RP Fiber Power的版本历史
该软件一直受到多年来广泛的发展计划,这大大扩展了其功能,以及用户界面的质量。
V1
这是第1个版本。 它仅限于光纤激光器和放大器的连续波计算,并且只能通过脚本进行控制。
V2
版本2引入了交互式表单。 至少对于更简单的模拟,现在可以简单地通过填写表单来工作,而V1必须通过脚本来控制。 例如,屏幕截图显示了输入某些信号参数的表单:
当您基于这些表单执行计算时,程序将根据您的表单输入自动编写脚本文件,然后执行该脚本。如果您需要编写脚本以获得更大的灵活性,可以稍后查看该脚本并对其进行扩展。此外,可以通过表单注入一些脚本代码,以添加一些专门的功能。因此,您可以将表单的便利性与脚本编程的灵活性结合使用。
此外,V2中引入了动态仿真。这意味着泵浦和信号功率以及一些其他量(例如激光谐振腔的末端反射率)可以具有任意时间依赖性(例如以数学表达式的形式定义)。例如,这对于Q开关光纤激光器和脉冲放大器的建模非常重要。
V3
版本3引入了模式求解器,它可以根据给定的折射率分布计算光纤模式的属性。现在有许多功能通过访问所有这些模式属性,包括幅度和强度分布,传播常数,有效模式半径和模式区域,以及色散。下面的动画图形是使用脚本生成的。
此外,还添加了一些交互式表格,用于定义折射率分布并生成一些预定义的图表。
V4
版本4引入了超短脉冲传播 - 不仅在光纤内,还通过各种光学元件,如光学滤波器,调制器和脉冲压缩器。可以使用某些函数调用生成任意的起始脉冲然后通过各种组件传播它。例如,很容易定义一个功能,它模拟锁模激光器的谐振腔中的一次往返;它只包含通过谐振腔元件发送脉冲的功能。
现在可以研究用于超短脉冲的锁模光纤激光器(或固体激光器)和放大器。例如,请参阅锁模光纤激光器和啁啾脉冲放大器系统的案例研究。
可以使用新的交互窗口来检查所获得的脉冲。例如,您可以研究脉冲如何在长光纤内或在激光谐振腔中的多次往返中演变。
脉冲显示窗口提供了脚本语言中的各种功能,用于定义脉冲,通过组件传播脉冲,以及在时域和频域中访问许多脉冲属性。由于强大的脚本功能,即使是最复杂的模拟也可以轻松设置。
V5
版本5提供了模拟光束传播的方法,不仅在光纤和其他波导中,也在更复杂的设备(如多芯光纤和光纤耦合器)以及自由空间部分中模拟光束传播。 可以引入任意弯曲(也具有变化的弯曲半径)。
新功能可以研究大范围的影响 - 例如,弯曲光纤中的弯曲损耗和模式失真,倏逝波耦合器中的耦合现象,双包层光纤中的模式相关吸收,以及光纤和体激光晶体中的增益引导效应。 可以包括来自激光活性掺杂剂的放大以及光纤非线性。
V6
版本6允许用户创建以脚本定义的自定义表单,即以文本形式。 这意味着可以根据特定应用定制交互式表单。 下面的屏幕截图只是包含选项卡和图形控件的自定义表单的示例。
下面是用于定义其中一个选项卡控件的代码,其中包含各种输入栏。 简单但灵活的命令定义编辑哪些变量,显示哪些单位,最小和最大允许值是多少等。
$tabcontrol, size = (620, 0) $tab "Fiber details" Core material: ########################## $input (combobox: "Yb-germanosilicate", "Yb-phosphosilicate") fiber$ Yb concentration: ############ Core diameter: ############ $input N_Yb:d6:" / m^3", min = 0, max = 1e30 $input d_co:d6:"m", min = 0, max = 1e-3 Pump mode radius: ############ Fiber length: ############ $input w_p:d6:"m", min = 0, max = 1e-3 $input L_f:d6:"m", min = 0, max = 1000 Signal mode radius: ############ $input w_s:d6:"m", min = 0, max = 1e-3 $ $tab "Operation parameters" Pump power: ############ at ########## # backward $input P_p_in:d6:"W", min = 0, max = 10, bgcolor = (if P_p_in > 10 then rgb(1, 0.8, 0.8) else white) $input l_p:d6:"(n)m" $input (checkbox) bw_pump Signal input power: ############ at ########## $input P_s_in:d6:"W", min = 0, max = 10 $input l_s:d6:"(n)m" $tabcontrol end
您可以自己制作此类表格,或通过技术支持制作,然后享受非常方便的日常工作处理。 当给出这样的表格时,任何人都可以很容易地完成某些计算而不用自己处理底层脚本代码。 如果以后需要其他功能,只需相应地扩展表单即可。
V7
版本7引入了各种功能强大且非常有用的工具来开发脚本:
· 语法突出显示
有许多改进的脚本编辑器具有非常方便的功能,例如语法突出显示:命令或功能的识别名称和关键字用不同的颜色突出显示。 此外,软件以不同方式显示注释和字符串常量等内容。
参数帮助
为了便于回忆许多支持函数的必需参数,我们引入了所谓的参数帮助。 如果只需键入一个函数名,后跟“(”到编辑器中,您将显示参数帮助;稍后您还可以单击一个函数参数来获取:
语法检查
您可以快速调用脚本的语法检查而不执行它。 这可以特别方便地避免执行需要很长计算时间并且在完成之前可能遇到语法错误的脚本。
自动代码重新格式化
您可以根据标准规则自动重新格式化脚本。 这样,即使您在编写它们时有些草率,您也可以获得一致的格式化,从而获得可读性很好的脚本。
例如,脚本最初可能包含以下部分:
R_min:=150 mm { minimum curvature radius } L_bend:=R_min*(90 deg) show "L_bend: ",L_bend:d3:"m" z1_bend:=(L_f-L_bend)/2 z2_bend:=(L_f+L_bend)/2 R(z):= if z<z1_bend then 0 else if z<z2_bend then R_min else 0 theta(z):= if z<z1_bend then 0 else if z<z2_bend then -(z-z1_bend)/R_min else -pi/2 Just press Ctrl-R in the editor, and thereafter it reads as follows: 只需在编辑器中按Ctrl-R,然后如下所示: R_min := 150 mm { minimum curvature radius } L_bend := R_min * (90 deg) show "L_bend: ", L_bend:d3:"m" z1_bend := (L_f - L_bend) / 2 z2_bend := (L_f + L_bend) / 2 R(z) := if z < z1_bend then 0 else if z < z2_bend then R_min else 0 theta(z) := if z < z1_bend then 0 else if z < z2_bend then -(z - z1_bend) / R_min else -pi / 2
调试器
使用新的调试器,您可以按命令执行脚本,并随时检查系统的状态。 只需单击一行左侧即可创建断点(以绿色显示,请参见下面的屏幕截图)。 同样,您可以调试表达式。 在开发复杂的仿真脚本时,这非常有用。