💥💥💞💞欢迎来到本博客❤️❤️💥💥
🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。
⛳️座右铭:行百里者,半于九十。
📋📋📋本文目录如下:🎁🎁🎁
目录
💥1 概述
摘要
本文对对非线性波导中超短激光脉冲的传播动态进行数值模拟和分析。建模方法基于广泛使用的脉冲包络的广义非线性薛定谔方程。所提供的软件实现了线性色散、脉冲自陡化和拉曼效应的影响。重点在于实现输入脉冲射击噪声,即模拟量子噪声的经典背景场,这在科学文献中经常没有得到充分的介绍。我们讨论并实现了基于纯谱相位噪声和高斯噪声的常用量子噪声模型。可以计算结果频谱的相干性质。我们通过在科学文献中记录的光子晶体光纤中再现超连续谱生成过程的结果来演示软件的功能。
关键词 广义非线性薛定谔方程 量子噪声 光谱相干性 Python
激光脉冲在非线性波导中的传播支持超连续谱的产生[1, 2, 3]。从光谱狭窄的输入脉冲开始,线性和非线性效应的相互作用引起了巨大的光谱展宽,产生了从紫外到红外的平坦光谱[[4]]。这样的效应可以在光子晶体光纤(PCFs)等地方实现[5, 6],在那里可以使用约100fs的脉冲持续时间、峰值功率约10kW和传播长度约1m产生超连续谱[[4]]。由此产生的宽广、平坦的光谱具有高光谱密度,例如在光频计量[[7]]和光学技术[[2]]中有应用。
广义非线性薛定谔方程(GNLS)提供了一个灵活的理论框架,用于研究与超连续谱产生相关的复杂物理过程[[1]]。为了模拟激光脉冲的传播动态,它结合了线性色散、脉冲自陡化[8, 9]和拉曼效应[[10]]的影响。这解释了支持广泛展宽的超连续谱产生的各种过程,例如调制不稳定性[[11]]、孤子裂解[12, 13]和拉曼孤子的自频移[[10]]。它进一步为建模光学“流浪波”[14, 15, 16, 17]和在光事件视界中的孤子和色散波的相互作用[18, 19, 20, 21]提供了基础。GNLS描述了实值光场,使用传播坐标的一阶非线性波动方程,在固定参考频率下以复值包络形式。它已被证明在单个周期范围内产生可靠的结果[[22]]。总的来说,GNLS提供了对输入脉冲传播动态的经典描述。由GNLS描述的基本现象容易受到噪声的影响。在试图在量子级别上模拟噪声时,存在一个基本问题,因为严格描述量子噪声源需要引入量子力学算符[23, 24, 25, 26],这与经典场不兼容。然而,当输入脉冲中的光子数很大时,存在半经典方法,通过使用低功率的经典背景场随机化物理相互作用,通过初始条件进入GNLS来考虑量子涨落。这样的输入脉冲噪声是通过简单地将非相干的随机噪声场添加到相干输入脉冲中来建模的。我们考虑了常用的每个频率模式一个光子[3, 27, 28, 29, 30]和每个时间模式半个光子[31, 32, 33]的噪声模型,并进一步实现了基于量子场理论(QFT)的零点场的经典模拟[[34]]。通过扰动初始条件包括噪声符合Wigner方法,这是一种在光纤中模拟量子噪声的高效计算方法[25, 26, 35]。考虑由噪声扰动的独立模拟运行集合,可以研究模拟光谱的相干性质。在数值模拟中考虑逐个脉冲的波动对于动态是至关重要的,并使得可以更好地与使用多脉冲测量技术的实际实验进行比较[27, 28]。详细文章见第4部分。
📚2 运行结果
部分代码:
# -- RIGHT SUB-FIGURE: ANGULAR FREQUENCY-DOMAIN PROPAGATION CHARACTERISTICS # ... MAIN PLOT def _setColorbar_2(im, refPos): """colorbar helper""" x0, y0, w, h = refPos.x0, refPos.y0, refPos.width, refPos.height cax = f.add_axes([x0, y0 + 1.05 * h, w, 0.08 * h]) cbar = f.colorbar(im, cax=cax, orientation="horizontal", extend='both') cbar.ax.tick_params( color="k", labelcolor="k", bottom=False, direction="out", labelbottom=False, labeltop=True, top=True, size=2, pad=0, ) cbar.ax.tick_params(which="minor", bottom=False, top=False) return cbar _norm = lambda x: x/np.max(x) _truncate = lambda x: np.where(x>1.e-20,x,1.e-20) _dB = lambda x: np.where(x>1e-20,10.*np.log10(x),10*np.log10(1e-20)) # ... RESTORE PHYSICAL ORDER IN THE FREQUENCY DOMAIN w_ = nfft.ifftshift(w) # ... POST PROCESS INTENSITY SO AS TO AVOID VISUALIZATION ARTIFACTS Iw_ = _truncate(_norm(np.abs(nfft.ifftshift(uw, axes=-1)) ** 2)) # ... EXPRESS SPECTRUM AS FUNCTION OF WAVELENGTH c0 = 0.29979 w0 = 2.2559 lam = 1e3*2*np.pi*c0/(w_+w0) # ... RESTRICT TO WAVELENGTH RANGE OF INTEREST lam_mask = np.logical_and(lam>lam_lim[0],lam<lam_lim[1]) lam_ = lam[lam_mask] I_lam_ = Iw_[:,lam_mask] # ... PLOT SPECTRUM im2 = ax2.pcolorfast( lam_, z, _dB(I_lam_[:-1, :-1]), norm=col.Normalize(vmin=-45, vmax=1), cmap=cmap, ) cbar2 = _setColorbar_2(im2, ax4.get_position()) cbar2.set_ticks((-40,-30,-20,-10,0)) cbar2.ax.set_title( r"$|u_\Omega(z)|^2/{\rm{max}}\left(|u_\Omega(z)|^2\right)$", color="k", y=2., fontsize=6 ) ax2.tick_params(axis='y', length=2., pad=2, top=False, labelleft=False) ax2.set_ylim(z_lim) ax2.set_yticks(z_ticks) ax2.tick_params(axis='x', length=2., pad=2, top=False) ax2.set_xlim(lam_lim) ax2.set_xticks(lam_ticks) ax2.set_xlabel(r"Wavelength $\lambda = 2\pi c/(\omega_0+\Omega)~(\mathrm{nm})$") # ... UPPER RIGHT PLOT ax4.plot(lam_ , _dB(I_lam_[-1]), color='#1f77b4', linewidth=0.75) ax4.tick_params(axis='x', length=2., pad=2, top=False, labelbottom=False) ax4.set_xlim(lam_lim) ax4.set_xticks(lam_ticks) ax4.tick_params(axis='y', length=2., pad=2, top=False, labelleft=False, left=False, right=True, labelright=True) ax4.set_ylim((-90,5)) ax4.set_yticks((-80,-40,0)) ax4.set_ylabel('$|\mathcal{u}_\Omega(z=1 \mathrm{cm})|^2~\mathrm{(dB)}$',labelpad=1) ax4.yaxis.set_label_position('right') plt.show()
🎉3 参考文献
文章中一些内容引自网络,会注明出处或引用为参考文献,难免有未尽之处,如有不妥,请随时联系删除。
Authors Oliver Melchert