26模型特定函数参考
尽管这些函数已经在其他各部分中进行了解释,但在这里您可以找到一个参考部分,列出RP Fiber Power的所有模型特定的函数。
26.1定义或修改光纤模型的函数
以下函数可用于定义模型:
l set_fiber(L_f, N_z,gainsystem$):定义光纤参数,见第脚本语言。
l set_phi_steps(n):如果强度分布函数并非全部径向对称,则定义方位角步数(最多128步)
l make_ring():表示假定为环形激光器配置
l add_ring(r, N_dop):定义具有外半径r的掺杂环。如果掺杂剂浓度不是径向对称的,则可以使用函数set_N_dop()(见下文)。最多可定义30个环。
l def_ion(IonType$, l1, l2):定义某些类型的激光活性离子的名称和能级
l set_N_dop(k, r, phi, N):在半径r和方位角phi处定义(或修改)离子类型数k的掺杂浓度(数密度)N。如果phi为负,则为整个环设置掺杂浓度。如果使用矩形网格,坐标r和phi将替换为x和y。
l def_spont(l1, l2, R):定义了一个自发(辐射或非辐射,但不是光诱导)从能级l1到能级l2的跃迁,具有给定的速率r。
l def_stim(l1, l2, ’sigma’):定义从能级l1到能级l2的受激(光诱导)跃迁,跃迁横截面函数的名称为sigma()。
l def_quench(l1, l2, p, Q):定义一个淬火过程,其中发生从能级l1到l2的跃迁,速率为Q乘以起始能级中分数粒子数的平方(对于p=2)或立方体(对于p=3)。Q的单位是m3/s(p=2)或m6/s(p=3)。(有关详细信息,请参阅在线帮助系统。)
l def_upcon(l1, l2, l3, p,K):定义一个上转换过程,从能级l1中的两个离子开始,其中一个到能级l2,另一个到能级l3。开始能级的消耗率是K乘以开始能级中分数粒子数的平方(对于p=2)或立方(对于p=3)。K的单位为m3/s(p=2)或m6/s(p=3)。离子进入终态能级l2和l3的速率是耗尽起始能级速率的一半。(有关详细信息,请参阅在线帮助系统。)
l def_transfer(l1, l2, l3,l4, K):定义能量转移过程,其中一个离子从能级l1转移到l2,另一个离子从能级l3转移到l4。K的单位为m3/s。
l addinputchannel(P_in,lambda, 'I', loss, direction):定义输入信道。给定的强度函数(第三个参数)也可能依赖于r和phi。如果已使用set_n_profile()定义折射率分布,则还可以引用计算模式函数。例如,对于LP01模式,第三个参数可以是'I_lm(0,1)',对于cosφ依赖的LP11模式,可以是'I_lm(1,1,cos)'。
l addASEchannel(lambda,dlambda, M, 'I(r) ', loss, direction):定义ASE信道。强度函数也可能依赖于r和phi,或者可以与addinputchannel()一样引用计算模式函数。
l set_R(ch, R1, R2):设置耦合信道的反射率。
l set_loss_int(channel,li1,li2) :定义局部功率损耗,分别应用于左侧或右侧光纤端面和对应末端镜之间的路径。
l set_loss_ext(channel, le1,le2) :定义适用于末端镜外部的局部功率损耗。
l clear_channels():删除所有信道定义,以便从头重新定义信道。
l finish_fiber():调用以指示模型定义的结尾。
l checkplausibility():打开或关闭合理性检查。默认情况下,“合理性检查”处于打开状态,您可能希望在处理极端参数值时将其关闭,其中“合理性检查”会生成错误消息。
l set_lambda(ch, l):修改信道ch的波长(也可以在完成整个光纤定义后修改)
l set_dlambda(ch, dl):修改ASE信道ch的波长带宽
l set_loss(ch, l):修改信道ch的寄生损耗
26.2获取计算结果的函数
以下函数可用于获得用模型计算的结果(不包括用于动态仿真、模式求解器和超短脉冲的函数):
l P(ch, z):光信道在某一位置的功率传播。
l P_out(ch):信道输出功率,考虑到端面可能的反射。
l I(ch, z, r, phi):通道ch在纵向位置z、径向位置r和方位角phi处的光强。对于矩形网格,r和phi替换为x和y。如果给定负z值,则计算光功率为1W的光强。
l sp_gain(ch):信道的内部单通功率增益(以分贝为单位)
l 考虑到光纤的寄生损耗,以及通过函数set_loss_int()和set_loss_ext()定义的额外损耗,但不考虑端面反射率。
l gs_abs(ch):信道的基态吸收(单位是分贝/米)
l E_sat(ch):信道饱和能量
请注意,饱和能量是根据具有最高光强的横环段计算的(取每个环的平均光强)。对于这一量级的脉冲能量,必须预料到离子激发的显著变化。
l NF(ch):信道噪声指数
l n(z, l):激光活性离子在某一位置z的能级l的分数激发,横向平均。
l n_tr(z, r, phi, l):在一定的纵向位置z、径向位置r和方位角phi处激光活性离子的能级l的分数激发。对于矩形网格,r和phi替换为x和y。
l n_av(l):激光活性离子能级l的平均分数激发(纵向和横向整个光纤的平均值)
l N_dop(k, r, phi):径向位置r和方位角phi处k型离子的掺杂浓度。对于矩形网格,r和phi替换为x和y。
l E_sat(ch):是某些光信道的饱和能量。
l set_P_in(ch, P):设置信道的输入功率
l get_lambda(ch):检索信道ch的波长
26.3模式求解器函数
l set_n_profile('n_f',r_core)将折射率分布函数与光纤关联。这是模式求解器的基本输入。第二个参数是纤芯半径。软件假设折射率在这个半径之外保持不变。通过再次调用这个函数,可以修改折射率分布。所有模式将根据需要重新计算。
l ModeExists(l, m, lambda)如果存在相应的模式,则返回1,否则返回0。
l A_lm(l, m, lambda, r)是波长lambda在半径r处的模式指数l和m的振幅。必须将其与cos(l phi)或 sin(l phi)相乘,才能获得完整的模式函数。该函数(包括方位角因子)经过归一化,使得其平方模量在整个区域(纤芯和包层)上的积分是统一的。
l A_lm_xy(l, m, lambda, x,y)是笛卡尔坐标x和y位置的振幅,假设cos(l phi)相关。为了获得sin(l phi)依赖性,取 A_lm_xy(-l, m, lambda, x,y)(即负l的值)。还有一个函数A_lm_xy_oam%(l, m, lambda, x, y),提供轨道角动量模式的复振幅(振幅与exp(ilφ)成比例)
l I_lm(l, m, lambda, r)是1 W光功率的强度。它是A_lm(l, m, lambda, r)的平方模量。它不包括非零l的方位角依赖性;要包括这一点,必须用2 cos(l phi)^2或2 sin(l phi)^2乘以它。
l I_lm_xy(l, m, lambda, x,y)是笛卡尔坐标x和y位置的强度,假设cos(l phi)依赖于正l, sin(l phi)依赖于负l。
l A_ff_lm(l, m, lambda, ax,ay)是角坐标ax和ay的远场振幅(以弧度表示,而不是以度表示)。
l I_ff_lm(l, m, lambda, ax,ay)是角坐标ax和ay的远场强度(以弧度表示,而不是以度表示)。
l beta_lm(l, m, lambda)计算模式的传播常数,即单位传播距离的相位变化。
l n_eff_lm(l, m, lambda)计算模式的有效折射率。
l w_lm_x(l, m, lambda)和w_lm_y(l, m, lambda)分别计算x或y方向具有coslφ依赖性(正l)或sinlφ依赖性(负l)的模式函数的近场模式半径(基于第二个力矩)。
l w_ff(lambda)根据常用的测量方法,从远场发散计算出基模的模式半径。仅对于近似高斯模式分布,结果与w_lm_x(0, 1, lambda)很好地一致。
l A_eff_lm(l, m, lambda)计算模式的有效模式面积,定义为
注意,这不是π乘以x和y方向模式半径的乘积。
l p_core_lm(l, m, lambda) 计算在纤芯内引导的模式功率的分数。
l v_g_lm(l, m, lambda)计算模式的群速度。
l n_g_lm(l, m, lambda)计算模式的群折射率。
l GVD_lm(l, m, lambda)计算模式的群速度色散(以s2/m为单位)。
l GVD_ps_lm(l, m, lambda)以ps/(nm km)为单位计算模式的群速度色散。
l NoModes(lambda) 返回模式数,不考虑偏振。例如,对于单模光纤(仅限LP01模式)为1,对于双模光纤(仅限LP01和LP11模式)为2。
l NoModes_h(lambda)与NoModes(lambda)相似,但它考虑了l不为零的模式的不同方向(coslφ和sinlφ版本)。例如,对于模式为LP01和LP11的光纤为3,因为后者具有coslφ和sin lφ版本。
l l_max(lambda)返回所有模式最大l值。
l m_max(lambda) 返回所有模式最大m值。
l cut_off(l, m) 返回模式的截止波长,即模式存在的波长。
26.4数值光束传播函数
l bp_set_device(j) 定义一个光束传播设备,该设备以1到100之间的数字作为参考。例如,这个定义以下的函数调用定义网格或光通道,始终引用当前设置的光束传播设备。
l bp_set_direction(backward) 反转传播方向,bp_set_direction(forward)再次反转传播方向。
l bp_set_R('R_x(z)', '0') 意味着x方向的曲率半径由先前定义的函数R_x(z)给出,而y方向没有曲率。(无限曲率半径指定为零。)
l bp_set_grid(x_max, N_x, y_max,N_y, z_max, N_z, N_s) 定义光信道的数字网格。它涵盖了x的范围,从-x_max到+x_max,步长为N_x。步长尺寸为2 x_max/N_x(注意系数2),步数必须是2的幂。类似的规则适用于y方向。z的范围是从0到z_max,N_z步长,因此z步长尺寸是dz=z_max/N_z。每个dz步长数值细分为N_s子步长。(N_s的值也可以在仿真过程中自动更改–请参见函数bp_set_N_s()。
l bp_set_reflection('x') 仅在x方向设置网格的反射边界。类似地,使用bp_set_reflection('y')或bp_set_reflection('xy')(用于所有边界的反射)。
l bp_set_reflection('(x /a_x)^2 + (y / a_y)^2 >= 1') (作为网格内边界的示例)定义椭圆反射边界:反射部分是表达式计算为非零值的部分。
l bp_set_n2('n2(x, y)') 将材料的非线性指数设置为依赖于x和y或径向坐标r的表达式。
l bp_set_XPM(r) 设置交叉相位调制(XPM)的相对强度。参数的默认值是2,但对于交叉偏振信道,可以使用2/3。
注意:不要将上述函数与适用于超短脉冲传播模型的set_n2()和set_XPM()函数混淆。
l bp_set_SRS('g_R') 设置拉曼增益系数,该系数可能取决于光学频率差df和径向坐标r,或者取决于x和y。这是考虑受激拉曼散射所必需的。
l bp_set_SRS_steps(N) 定义受激拉曼散射增加的数值步长尺寸。
l bp_set_N_dop('Yb','N_dop(x, y)') 定义光纤中激光活性离子的类型,及其浓度(单位为1/m3)作为x和y的函数。
l bp_set_I_p('I_p(x, y, z)',lambda_p) 定义具有给定强度分布(第一个参数)和波长(第二个参数)的泵浦波。bp_set_I_s('I_s(x, y, z)',lambda_s)同样的用于信号波。
l bp_set_dt(dt) 定义动态仿真的时间间隔。它决定了在每个传播步长之后,光场作用于激光活性离子的时间。
l bp_do_pumping(t) 仅在给定时间内模拟泵浦波的影响。如果没有泵浦波,它只模拟激励的衰减。
l bp_set_excitation(x, y, z,n) 为某些位置设置激光活性离子的激发度(0到1之间)。
l bp_excitation(x, y, z) 在某个位置恢复激光活性离子的激发度(0到1之间)。
l bp_set_alpha(alpha) 定义线宽增强因子,即振幅/相位耦合的参数。一个z步长中的相位变化是线宽增强因子乘以振幅增益。
l bp_define_channel(lambda) 定义用于光束传播的光信道,其中lambda是信道的真空波长,函数结果是信道数(例如,第二个定义的信道为2)。
l bp_set_n(func$)定义了折射率分布。参数是一个字符串,它根据x和y定义一个数学表达式。例如,'n_f(sqrt(x^2 + y^2))'将引用以前定义的径向坐标函数。
l bp_set_n_z(func$, test$)定义也可能依赖z的折射率函数。第二个参数是用于确定是否必须重新计算某个z位置的折射率的函数:仅当测试函数的值更改时才重新计算。
l bp_set_n_smooth(r) 使计算的折射率分布平滑;r可以介于0(无平滑)和10(强平滑)之间。1表示大多数情况下只有直接相邻的点用于平滑。
l bp_set_N_s('N_s(z)', u) 为每个z步长后重新计算N_s指定一个z相关表达式(第一个参数)。该值必须介于0(有效值为1)和1000之间。如果第二个参数不是零,则将在每个子步长中重新计算空间因子(由折射率和曲率半径产生)。
l bp_set_loss(func$)定义线性损耗分布。参数是x和y的函数,其值表示以dB/m为单位的局部传播损耗。例如,使用bp_set_loss('((x^2 + y^2)/ (10 um)^2)^4')可以定义在网格边缘急剧上升的损耗。
l bp_set_A_factors(z, 'f%(x,y)') 定义一个复因子,当达到某个z位置时,该因子将应用于空间域中的复场振幅。(可为多个z位置定义此类系数。)如果给定的z值为负值,则在每个z步长进后应用这些振幅。
l bp_set_A_f_factors(z,'f%(f_x, f_y)') 与函数bp_set_A_factors()相同,但在空间傅立叶域。
l bp_set_A0(func$)将当前信道的初始振幅分布定义为x和y的函数。例如,'sqrt(P / (0.5 * pi *w0^2)) * exp(-(x^2 + y^2) / w0^2)'将定义具有功率P、高斯半径w0和零复相位的高斯函数。振幅按比例缩放,使其模量平方等于光强度(每单位面积功率)。
l bp_set_A(z, func$)定义一个振幅分布,就像bp_set_A0(func$)一样,但在任意z位置。
l bp_copy_A(d, ch, z) 将某个光束传播装置d和信道ch在z位置的场分布复制到当前传播信道的初始场分布。(所涉及的光信道必须具有相同的波长。)例如,可以复制同一传播信道末端的场,以便在不需要更多内存的情况下开始进一步传播。如果两个场具有不同的数值网格(在大小或分辨率方面),则使用二次插值计算新场值。在z_ow之后的z位置的先前的场值将被丢弃,以便在必要时通过光束传播重新计算它们。
l bp_set_color(j) 定义分布查看器窗口中信道的颜色设置。参数1对应于第一个可能的设置,2对应于第二个设置,等等。
l bp_set_label(s$)为当前光信道设置文本标签,该标签可显示在光束分布查看器中。
l bp_remove_channel(j) 移除光信道,例如为了节约内存。
l bp_A%(x, y, z) 为给定的位置和当前选定的光信道提供复振幅。
l bp_I(x, y, z) 是光强度(振幅的平方模量)。
l bp_I_max(z) 是分布的最大光强。
l bp_P(z) 是指光功率,即整个区域的综合强度。
l bp_x_m(z) 是给定z坐标下光束分布的平均x位置。计算为强度分布的“重心”。以类似的方式,bp_y_m(z)是平均y位置。
l bp_w_x(z)和bp_w_y(z) 根据强度分布的第二个力矩,分别计算x和y方向的光束半径。
l bp_A_eff(z)计算有效模式面积为
。请注意,这与基于强度分布的第二个力矩的光束半径没有直接关系;这些不同半径的比率取决于强度分布的形状。
l bp_A_f%(fx, fy, z) 在傅立叶空间中传递振幅分布。(使用x-y平面中的二维傅立叶变换。)
l bp_theta_x(z)和bp_theta_y(z) 计算光束的半角发散,如果在该位置的光束分布被释放到真空中。
l bp_M2_x(z)和bp_M2_y(z) 分别计算了x和y方向的光束质量M2系数。如果已知波前是平的,例如对于无损耗光纤中的模式,可以使用更快版本的bp_M2_x_col(z)和bp_M2_y_col(z)。
l bp_set_interpol(1) 会导致x-y平面中的线性插值,以便稍后调用函数,例如bp_I(x, y, z)。使用参数2而不是1,可以得到二次插值,参数0关闭插值。
l bp_set_storage(x_max, N_x,y_max, N_y, N) 定义一个存储区域,该存储区域有一个带给定扩展名的数值网格,以及x和y方向上的点数。在该函数调用之后,可以用0到N光束分布。
l bp_store_profile(z, j) 使用存储位置j将当前光束分布存储在存储区域中给定的z位置。
l bp_get_stored()使用bp_I(x, y, z)或bp_P(z)等函数使存储的光束分布可访问。
l bp_save_grid(FileName$)将当前光束传播设备的所有网格数据(即所有信道的三维振幅分布)保存到具有给定名称的二进制文件中。如果成功则返回1,否则返回0。
l bp_load_grid(FileName$)从具有给定名称的文件中加载当前光束传播设备的所有网格振幅数据(即所有信道)。如果成功则返回1,否则返回0
l bpv_show(r)显示(对于非零r)或隐藏光束分布查看器。
l bpv_set_device(j)设置一个特定的光束传播设备作为查看器的光源。
l bpv_set_channel(j)设置一个特定的光束传播信道。
l bpv_set_domain(s$)使用参数'real space'或'Fourier space'设置空间域。
l bpv_set_interpolation(s$)使用参数'none'、'linear'或'quadratic'设置插值。
l bpv_set_resolution(s$)使用参数'coarse'、'middle'或'fine'设置分辨率。
l bpv_set_color(s$)使用参数'default'、'red'、'green'、'blue'或'user'设置颜色。
l bpv_set_plot(s$)使用参数'intensity'、'amplitude'或'function'设置绘图。
l bpv_set_function(s$)设置绘图函数。
l bpv_set_log_scaling(r) 打开(r≠0)或关闭(r=0)对数缩放。
l bpv_set_remove_fast_phase(r) 打开(r≠0)或关闭(r=0)移除z方向的快速相位变化。
l bpv_set_plane(s$)使用参数'xy'、'xz'或'yz'设置显示平面。
l bpv_set_show_parameters(r) 打开或关闭参数显示。
l bpv_set_show_grid_lines(r) 打开或关闭网格线的显示。
l bpv_set_scaling(j) 将颜色值的缩放比例设置为10到+10之间的一些分贝数。
l bpv_set_zoom(j) 设置缩放级别。x和y坐标范围减小了系数2j。
l bpv_set_position(r) 将x、y或z位置(取决于显示平面)设置为特定值(以米为单位,如果为yz或xz平面设置了傅里叶空间,则以1/m为单位)。
26.5专门用于动态仿真的函数
l set_P_in_dyn(ch,Filename$):定义信道ch的时间相关输入功率
l set_R_dyn(ch, R1$, R2$):定义给定信道的光纤两端的时间相关反射率
l set_loss_int_dyn(signal,'l1(t)', 'l2(t)'):为光纤左侧和右侧的局部损耗(介于0和1之间)定义时间相关函数。
l set_delays(T1, T2):定义活性光纤左侧和右侧分别发生的额外时间延迟(以秒为单位)(用于动态激光仿真)
l calc_P_dyn_z(ch, 1):表示必须为该光信道存储位置相关的动态功率
l calc_n_dyn_z(1):表示该光信道必须存储位置相关的动态激发。
l calc_dyn(t1, t2, dt):启动一个动态仿真
l calc_dyn_cond(t1, t2, dt,cond$)启动一个动态仿真,只要满足某个条件,该模拟就会完成。
l P_out_dyn(ch, t):动态仿真中信道的输出功率
l P_dyn(ch,z, t):动态仿真中信道z位置处的功率
l P_out_dyn_max(ch):信道的最大输出功率
l t_peak(ch) :最大输出功率的时间位置
l n_av_dyn(l, t):激光活性离子能级l的时间相关平均分数激发(纵向和横向整个光纤的平均值)
l sp_gain_dyn(ch, t) 信道的时间相关单通功率增益
26.6用于超短脉冲仿真的函数
定义数值网格:
l set_pulse_grid(T, N,lambda) 定义了时间域的数值网格。T是时间范围的宽度,N是数值样本数(必须是2的幂次),lambda是中心波长。
初始脉冲的定义:
l startpulse_G(E, tau,chirp) 定义一个高斯形状的初始脉冲,其中E是脉冲能量,tau是脉冲持续时间(最大一半时的全宽)和chirp啁啾参数(光频率变化的速率,单位为Hz/s)。假设光谱最大值在所选光信道的中心波长处。
l startpulse_s(E, tau,chirp) 定义sech2形脉冲。脉冲形状(没有啁啾)是基本孤子脉冲的典型。
l startpulse_t("A0%")定义了基于时间脉冲分布的任意初始脉冲。参数是先前定义的脉冲分布函数的名称,由复包络函数A0%(t)给出。
l startpulse_f("A0%")定义了初始脉冲的光谱分布,由函数A0%(f)定义,其中f是绝对光频率。
光纤属性和光纤特定仿真参数的定义:
l set_GVD(GVD) 定义光纤的恒定群速度色散(以s2/m为单位)。
l set_GVD_l("GVD_fiber(l)") 定义光纤的波长相关的群速度色散。参数可以是与波长l相关的任何表达式。
l set_n_eff("n_eff(l)") 定义与波长相关的光纤有效折射率。可以使用模式求解器获取波长相关的有效折射率,请参见函数n_eff_lm()。
l 如果函数pp_fiber_2p()用于通过光纤发送两个脉冲,则默认情况下,第二个脉冲将看到与第一个脉冲相同的色散。但是,可以调用函数set_GVD2()、set_GVD_l2()或set_n_eff2()(与上面描述的函数类似,调用这些函数后)为第二个脉冲定义不同的色散。
l set_n2(n2) 设置光纤的非线性折射率。参数必须是以m2/W为单位的值,例如,二氧化硅2.6e-20。结合光信道的有效模式面积,确定了非线性的强度。
l set_ss(s) 定义非线性自陡峭系数。如果给定值为1,则取自陡效应的正常值。这是合适的,如果非线性折射率和光纤的有效模式面积与波长无关。可以用较大的值来模拟非线性折射率和有效模面积波长依赖性的影响。
l set_dnr("h_R(t)",f_R) 定义了导致受激拉曼散射的延迟非线性响应的参数。第一个参数是(先前定义的)拉曼响应函数。f_R是介于0和1之间的参数,它规定了延迟非线性响应的相对强度。
l 如果函数pp_fiber_2p()用于通过光纤发送两个脉冲,则可以使用函数set_XPM(x)设置非线性交互(本质上是交叉相位调制)的强度。这里,x是一个无量纲参数,默认值是2。这意味着脉冲2的相位变化每瓦脉冲1的功率是自相位调制的2倍。这是两个脉冲以相同的偏振方向在同一光信道中传播的情况。如果偏振方向是线性但相互正交的,并且介质是各向同性的(例如玻璃),则x的正确值为2/3。例如,还可以修改该值以考虑减少的空间重叠。
l set_gain_sat(r) 定义一个人为修改增益饱和强度的因子(但仅限于超短脉冲模拟)。例如,如果参数为0,则忽略增益饱和;如果系数为100,则增强100倍。
例如,如果您模拟常规脉冲串的放大,其中每个脉冲在输出时仅达到放大器饱和能量的1/1000,则在使用set_gain_sat(100)后,只能模拟第一百个的脉冲,这样可以通过大大减少的计算工作量来学习增益和输出脉冲能量的演变。
l set_pulse_tolerance(tol) 设置超短脉冲模拟精度的公差。参数的默认值为10-2。这意味着时间或频率积分振幅误差的平方根约是脉冲能量平方根的10-2倍。如果需要更高的精度,计算时间可能更长,在某些情况下,可能无法达到所需的精度。通常,这种情况会触发一个数值错误,从而中止计算。但是,可以通过使用负参数调用函数来抑制这种中止。公差就是这个参数的模。
l set_auto_center(1) 在每个传播步长之后,在时间域中激活脉冲的自动居中。这意味着脉冲不能“消失”。通过使用参数0调用函数,可以再次关闭该设置。
l set_fiber_step_expr(expr$)定义表达式(字符串形式),该表达式将在光纤中的每个数值步长之后进行计算。这可用于许多目的,例如,设置某些变量或在满足某个条件时显示某些内容,用于衰减或过滤光纤中的脉冲或使其在时间域居中。有关详细信息,请参阅在线文档。
通过光学元件传播脉冲:
许多函数可用于通过各种光学元件传播当前脉冲:
l pp_fiber(fn, ch) 使用光通道ch将脉冲通过光纤fn传播。光纤编号fn通常为1,但光纤编号fn可能不同,如果已经使用set_device()定义了不同的光纤。指定的光信道决定了脉冲的传播方向(向前或向后)、强度分布(与非线性效应相关)和背景损耗。当脉冲从另一端离开光纤时,产生的脉冲将是这种脉冲。
请注意,在调用pp_fiber(ch)之前,必须按照上面的说明定义光纤细节。
利用函数get_pulse(z),可以在光纤中的特定位置获得脉冲。(请注意,下一个脉冲传播将从该脉冲开始, 因此稍后您可能需要调用get_pulse(L_f),以确保使用正确的脉冲进一步传播,假设传播方向是正向的。)
l pp_fiber_2p(fn, ch1, ch2,p2_in, p2_out) 在光纤中传播两种不同的脉冲,它们可以通过非线性相互作用。两个脉冲的光信道ch1和ch2可以相同,但不必相同。当第一个脉冲取自当前脉冲时,第二个脉冲取为索引p2_in的存储脉冲(见函数store_pulse()),交互后的第二个脉冲将用索引p2_out存储。第二个脉冲在光纤中的某个位置可以用get_pulse2()获得。
注意,两个脉冲原则上也可以组合在一个时间或频率轨迹中,并通过pp_fiber()传播。但是,如果脉冲的中心波长非常不同,那么pp_fiber_2p()更适合。在这种情况下,使用pp_fiber()时,频率轨迹必须非常宽。
l pp_dispersion(D2, D3, D4) 应用二阶、三阶和四阶的色散。这些参数的单位分别为s2、s3和s4。(对于任意阶数的色散,请使用pp_phase_shift_f()或pp_phase_shift_expr_f(),请参见下文。)
l pp_compress(order) 计算脉冲的色散压缩。函数调用的参数确定压缩的详细信息:
l 如果它是零,那么假设一个完美的压缩器,它将所有频率的光谱相位设置为零。
l 如果在2到6之间,则应用达到相应阶数的色散,以使压缩脉冲的峰值功率最大化。
l 如果在−2和−6之间,则应用达到相应阶数(参数模数)的色散,以使压缩脉冲的持续时间最小化。
最大峰值功率的优化通常更可取。对最小脉冲持续时间的优化可能导致略有不同的结果。
l pp_grating_pair(g, d, m,theta, f) 应用一对衍射光栅(用于透射或反射)的色散,线间距g、垂直距离d、衍射阶数m(通常为-1)和入射角theta(在光束和的法向之间,以弧度表示)。色散效应乘以系数f,例如,用f=2表示双通。
还有函数dispersion_grating_pair(g, d, m, theta, f, lambda,order),用于计算(但不适用于脉冲)某一波长上某一阶的色散。
l pp_prism_pair(n_expr$,alpha, d, h_tot, l_ref, f) 应用一对棱镜的色散(所有阶)。这里,n_expr$是将棱镜材料的折射率作为波长l的函数传递的表达式(例如,假设已经定义了这样的函数,它可以是"n_silica(l)")alpha是棱镜的顶角(即输入面和输出面之间的角度,以弧度表示),d是棱镜之间的距离(从顶点到顶点测量),h在参考波长l_ref下光束的总插入量(即光束轴和棱镜顶点之间的距离之和),f是乘以计算出的单通色散的系数(例如,双通为2)。
还有一个函数dispersion_prism_pair(n_expr$, alpha,d, h_tot, l_ref, f, lambda, order)用于计算(但不适用于脉冲)特定波长下特定阶数的色散。
l pp_loss(fl)模拟与波长无关的线性损耗。参数是分数功率损耗(例如,10%的损耗为0.10)。对于波长相关的损耗,使用函数pp_multiply_f()或pp_multiply_expr_f()(见下文)。
l pp_multiply_t(f_t%[])将整个时间轨迹(即时间振幅)与具有给定名称的数组内容相乘。数组需要有一个适当的索引范围;通常,它覆盖整个时间轨迹,尽管这不是严格要求的。数组中的步长尺寸不必与时间轨迹的步长尺寸一致;将应用线性插值。
例如,该函数可用于主动锁模效应的建模(与时间相关的传输或相位调制)。
l pp_multiply_f(f_f%[])与pp_multiply_t()相似,但在频域。例如,该函数可用于模拟光谱滤波器或具有任意波长依赖性的色度色散。
l pp_multiply_expr_t(expr$)将整个时间轨迹与从表达式计算出的复值相乘(取决于时间t),该表达式作为字符串参数给出。这可能比使用pp_multiply_t()更方便,因为您不需要数组,但是表达式的计算速度要慢得多,特别是当您需要重复应用函数时。
l pp_multiply_expr_f(expr$)将整个频率轨迹与从表达式(取决于光频率f)计算出的复值相乘,该表达式作为字符串参数给出。
l pp_phase_shift_t(dphi[])使用阵列中的相位变化值来改变时域中的光相位。
l pp_phase_shift_expr_t(expr$)使用依赖于时间变量t的表达式中的相位变化值更改时域中的光相位。这可能比函数pp_phase_shift_t()更方便,因为不需要数组;但是,表达式的计算速度较慢。
l pp_phase_shift_f(dphi[])使用阵列的相位变化值改变频域中的光相位。
l pp_phase_shift_expr_f(expr$)利用由光频率f决定的表达式中的相位变化值改变频域中的光学相位。
l pp_SPM(gamma) 应用自相位调制(SPM)发生的非线性光学元件。参数是一个单位为rad/W的非线性系数。
l pp_sat_abs(loss, tau,E_sat) 应用具有一些初始功率损失(例如,0.10代表10%)、恢复时间tau和饱和能量E_sat的可饱和吸收体。如果恢复时间为非零,则具有给定初始(不饱和)损失、恢复时间和饱和能量的缓慢可饱和吸收体。如果恢复时间为零,则有一个快速可饱和吸收体(瞬间将损耗调整为光功率),最后一个参数是饱和功率(而不是能量)。
l pp_TPA(beta) 应用具有双光子吸收(TPA)的元素。时间域中的光功率根据
衰减,其中P(t)是入射功率。
l pp_noise(p) 向脉冲添加白色(频率无关)随机噪声。如果参数为正,则参数直接决定噪声功率。如果它是负的,它的模定义了相对于量子噪声极限的噪声功率。例如,这种噪声(p=-1)可用于向起始脉冲添加量子噪声,这样不仅可以模拟受激拉曼散射,而且可以模拟光纤中的自发拉曼散射:量子噪声充当拉曼放大的种子。
l pp_center(w) 将脉冲在时间域居中,即,它移动时间轨迹,使最大功率发生在t=0。如果参数为非零,则时间轨迹边缘的振幅可以“环绕”。使用函数dt_c()可以获得由pp_center()函数的所有调用应用的总时间移位。
l pp_shift_t(dt, wrap) 通过dt移动时间脉冲包络(不影响相位)。如果wrap不为零,振幅可以在时间轨迹的边缘环绕。
l pp_shift_phi(dphi) 通过dphi改变整个脉冲的光相位。
l pp_add_pulse(j, f%)将索引j存储的脉冲振幅乘以f%加到当前脉冲。例如,这可用于干涉仪的建模。
在每次这样的函数调用之后,可以使用下一节中介绍的函数获得脉冲属性。可以应用任何光学元件序列。
获取时间脉冲特性
l P_t(t) 返回时间相关的光功率,单位为W=J/s(不要将其与函数P(ch,z)混淆)。
l A%(t)是复脉冲包络函数,归一化使其平方模量为光功率。
l E(t)是电场强度,定义为
tau_p_th(th) 是脉冲宽度,其中阈值th指定在峰值低多少的位置处测量宽度。例如,th=0.5给出了FWHM(半峰全宽)。
l 函数t_min()、t_max()和ts()返回时间轨迹的范围和步长尺寸。
获取光谱脉冲特性
l P_f(f)返回与绝对光频率有关的功率谱密度,单位为J/Hz。
l P_l(l)返回与波长有关的功率谱密度,单位为J/m。
l A_f%(f)是频率相关的复振幅(f是绝对频率值,而不是相对于参考频率)。
l Phi_f(f)是光谱相位(即A_f%(f) 的相位),投射到范围–π到+π。还有函数Phi_f_c(f)是一个连续相位。类似地,函数Phi_l(l)和Phi_l_c(l)有波长参数。
l T_g(f)是绝对频率f的光谱分量的群延迟。
l f_p()是频率,其中谱功率密度P_f(f)是峰值(使用最大值周围的二次插值)。l_p()是波长,其中P_l(l)达到其最大值。
l P_f_max()是P_f(f)的最大值,P_l_max()是P_l(l)的最大值。
l f_m()是平均频率,l_m()是相应的波长。
l df_p()是以Hz为单位的脉冲带宽(FWHM),dl_p()是波长域(以米为单位)的脉冲带宽(FWHM)。
l df_p2()是脉冲带宽,计算为频域功率谱密度的第二矩的两倍。
l df_p_th(th)和dl_p_th(th)计算频域和波长域的宽度,阈值条件类似于tau_p_th(th)。
l 函数f_min()、f_max()和fs()返回频率轨迹的范围(使用绝对频率,而不是相对于参考频率的值)。
l I_tf(t,tau,f)是时间t周围的光谱强度。它是通过将时间振幅与高斯函数乘以FWHM tau得到的,然后取其光谱。结果是在绝对频率f下频谱中的功率密度(以W/Hz为单位)。该函数可用于绘制频谱图。
l I_tl(t, tau, l)类似于I_tf(t, tau,f),但使用波长参数。
l I_tf_max(t, tau)给出变量f的I_tf(t, tau, f)的最大值。
获取全局脉冲属性
l E_p()返回脉冲能量。
l TBP()是时间带宽积,由脉冲宽度和带宽的FWHM值计算得出。例如,对于未啁啾的孤子脉冲,它是0.315。
l TBP2()是一个类似的量,根据时域和频域中脉冲功率的第二矩计算,并进行归一化,使其成为1,为未啁啾高斯脉冲的理想情况。与TBP()相比,后一个数量考虑了卫星脉冲。
l 如果当前脉冲无效(否则为空字符串),则pulse_error$()返回当前脉冲的错误字符串。如果一个脉冲计算不成功,这可以用来找出问题的原因。
存储和调用脉冲
l 用save_pulse_t(n$),脉冲可以保存在一个文件中,其中函数参数是文件名。这将保存时域信息。使用save_pulse_f(n$)可以保存频域信息。在任何情况下,如果需要,加载后将自动重新计算其他域。
l 用load_pulse(n$)可以从文件中加载脉冲,其中参数是文件名。
如果成功,保存和加载函数将返回值1,否则返回0。
l 可以在主内存中存储多达10000个脉冲。这些脉冲可以用0到9 999之间的存储索引来区分。我们可以用store_pulse(j)来存储当前脉冲,然后用recall_pulse(j)来调用它。如果成功,后一个函数将返回1,否则返回0。
脉冲描述
l describe_pulse(description$)可用于修改当前脉冲的描述。
l pulse_description()检索当前脉冲的描述。
修改脉冲轨迹的尺寸
l set_pulse_size_t(N)修改脉冲网格尺寸,同时保留时域中的数字分辨率。参数N必须是2的幂。
l 同样,set_pulse_size_f(N)修改脉冲网格尺寸,同时保留频域中的数字分辨率。
更改脉冲显示窗口的设置
以下函数可用于自动修改或检索脉冲显示窗口的设置:
l 如果函数参数为非零,则pdw_show(x)显示脉冲显示窗口(就像通过菜单Window | Pulse display window一样)。
l pdw_display_t('phase')决定了在时域中显示的量。参数可以是相应下拉框中的任何值。pdw_display_f('phase')在频域起相同的作用。
l 如果函数参数为非零,则pdw_autoscale_t(x)和pdw_autoscale_f(x)打开时域和频域的自动缩放。
l 如果x不为零,则pdw_statistics(x)打开统计显示。
l 如果x不为零,pdw_highres(x)开启统计数据的更高分辨率。
l 如果x不为零,pdw_grid(x)打开坐标系中网格的显示。
l 如果x不为零,则pdw_steps(x)打开数值步长的显示。
l pdw_set_position_mode(x)打开当前脉冲(x=0)、存储脉冲(x=1,见函数store_pulse())或光纤内脉冲(x=2)的显示。
l pdw_set_position(p)设置位置。在显示存储脉冲的模式中,位置是脉冲索引。如果光纤中有脉冲,则为光纤中的z值。
l pdw_get_position(p)从表单中获取位置。在显示存储脉冲的模式中,位置是脉冲索引。如果光纤中有脉冲,则为光纤中的z值。
l 如果函数参数为非零,则pdw_lastcalc(x)将打开上次计算脉冲的显示。