宽带任意阶贝塞尔光束模型与超表面实现案例
宽带任意阶 贝塞尔光束 超表面 模型 fdtd 案例内容主要包括文章的两个贝塞尔光束模型一个零阶贝塞尔光束一个一阶贝塞尔光束采用二氧化钛介质单元执行几何相位来构建 案例包括fdtd模型、fdtd设计脚本、Matlab计算代码和复现结果以及一份word教程附带计算超表面的远场光场分布的脚本可以得到任意位置的贝塞尔光场.在光学微纳结构领域用超表面生成贝塞尔光束这事儿最近挺火。今天咱们玩点有意思的——用二氧化钛纳米柱搞出任意阶数的贝塞尔光束。先剧透下效果零阶光束能稳定传输不扩散一阶光束自带旋转相位这俩货在激光加工、光镊领域都有大用场。模型核心在于几何相位调控也就是通过旋转纳米柱改变局域相位。举个栗子当纳米柱旋转角度θ时产生的附加相位是2θ。这招妙在只需要改变结构方向就能实现相位分布比传统高度调制省事多了。二氧化钛的折射率够高~2.4可见光用矩形柱设计还能实现双自由度相位控制。来看段FDTD设计脚本里的关键参数设定unit_size 300 # 单元尺寸nm height 600 # 柱体高度 material td.material_library[TiO2]() beam_wavelength 532 # 工作波长 # 贝塞尔光束参数 order 0 # 阶数可调 cone_angle 20 # 锥角决定光束特性这段代码定义了超表面的基本结构参数。unit_size需要小于工作波长避免高阶衍射锥角直接决定贝塞尔光束的无衍射范围。通过修改order参数就能切换零阶或一阶模式生成。宽带任意阶 贝塞尔光束 超表面 模型 fdtd 案例内容主要包括文章的两个贝塞尔光束模型一个零阶贝塞尔光束一个一阶贝塞尔光束采用二氧化钛介质单元执行几何相位来构建 案例包括fdtd模型、fdtd设计脚本、Matlab计算代码和复现结果以及一份word教程附带计算超表面的远场光场分布的脚本可以得到任意位置的贝塞尔光场.相位分布生成是重头戏Matlab代码里用到了极坐标转换function phase generate_bessel_phase(order, r, theta) k0 2*pi/532e-9; kr k0 * sin(cone_angle*pi/180); phase exp(1i*order*theta) .* besselj(order, kr*r); end这里kr对应贝塞尔函数的横向波矢theta是方位角坐标。当order0时生成环形相位对应零阶贝塞尔order1则引入螺旋相位项生成一阶涡旋光束。实测发现相位梯度必须足够陡峭否则远场会出现模式混杂。远场计算脚本有个实用技巧——角谱法传播def angular_spectrum_propagation(E0, wavelength, z): dx 300e-9 # 采样间隔 k 2*np.pi/wavelength # 傅里叶变换到频域 E_f np.fft.fftshift(np.fft.fft2(E0)) # 构建传递函数 fx np.fft.fftshift(np.fft.fftfreq(E0.shape[0], dx)) fy np.fft.fftshift(np.fft.fftfreq(E0.shape[1], dx)) FX, FY np.meshgrid(fx, fy) H np.exp(1j*k*z*np.sqrt(1-(wavelength*FX)**2-(wavelength*FY)**2)) # 频域相乘并逆变换 E_prop np.fft.ifft2(np.fft.ifftshift(E_f * H)) return np.abs(E_prop)**2这个传播算法能快速计算任意传播距离的光场分布比传统FDTD省了80%计算时间。实测在z50μm处零阶光束仍保持亚波长量级的束腰直径验证了无衍射特性。遇到的最大坑点纳米柱的旋转角度必须精确对应目标相位分布。有次把角度量化到10度步长结果远场出现明显旁瓣。后来改用1度分辨率才解决。建议用参数扫描确定单元结构别直接套用理论公式。最后放个实测彩蛋通过叠加不同阶数的相位分布可以生成花瓣状复合光场。把order参数改成[0,1,2]数组马上得到三叶草光束。自己动手试试看说不定能调出更有意思的光场形态呢
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2476973.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!