几何相位超构透镜,圆偏振聚焦,超表面 复现:2016年Science :Metalenses at visible wavelengths: Diffraction-limited focusing and subwavelength resolution imaging 介绍:二氧化钛纳米柱由几何相位设计,实现接近衍射极限的超构透镜模型,用于可见光波段聚焦和成像; 案例内容:主要包括二氧化钛纳米柱的单元结构仿真、几何相位计算,超构透镜的双曲相位计算代码以及可见光波段405nm 532nm和633nm三个波长的超构透镜模型,和对应的远场电场分布计算以及聚焦效率计算; 案例包括fdtd模型、fdtd设计脚本、Matlab计算代码和复现结果,以及一份word教程,超构透镜的相位计算代码和几何相位与结构的匹配代码可用于任意波段的超构透镜,具备可拓展性。
当可见光撞上比头发丝细千倍的二氧化钛纳米柱,奇迹发生了——2016年Science那篇颠覆性的论文里,研究者用指甲盖大小的超构透镜实现了显微镜级别的成像。这种利用几何相位操控光波的"魔法",背后藏着程序员与光共舞的代码艺术。
!超构透镜显微结构示意图
玩转纳米柱的旋转密码
关键藏在每个二氧化钛纳米单元的旋转角度里。我们用FDTD脚本批量生成不同尺寸的纳米柱时,发现一个有趣现象:当结构旋转θ角,透射光相位会产生2θ的突变。这可不是巧合,而是几何相位在三维空间的微分几何效应。
-- FDTD纳米柱参数化模板 structure{ material = "TiO2", angle = theta, radius = r, height = 600e-9, mesh_order = 3, rotation = {0,0,theta} }通过扫参脚本批量跑出相位-尺寸对应表时,记得给每个纳米柱打上ID标签。某次仿真跑出相位误差超5%的异常数据,后来发现是网格划分没考虑旋转对称性——这提醒我们mesh_order参数需要动态调整。
相位计算的黑魔法
双曲相位分布公式看着唬人,转化成代码其实很性感。核心是这段矢量运算:
% 双曲相位生成器 lambda = 532e-9; % 切换波长处死参数 k0 = 2*pi/lambda; f = 100e-6; % 焦距 [X,Y] = meshgrid(x_range,y_range); phase = mod(k0*sqrt(X.^2 + Y.^2 + f^2),2*pi);但别被表面迷惑,实际要考虑偏振转换效率。我们通过引入补偿因子β修正相位跳变点,这个β值需要结合远场衍射反推,就像玩拼图一样有趣。
三波长共聚焦的障眼法
要让405nm蓝光、532nm绿光、633nm红光在同一透镜上和谐共处,需要设计变焦结构。这里有个骚操作——把相位剖面分解为基底相位+色差补偿项。代码里用条件语句实现波长自适应:
def phase_synthesis(wavelength, x, y): base_phase = compute_hyperbolic_phase(532e-9, x, y) compensation = (532e-9 - wavelength)*1e6 * radial_gradient(x,y) return (base_phase + compensation) % (2*np.pi)远场计算时发现个彩蛋:当用环状光源照明时,点扩散函数会出现星芒效果——这后来成了我们验证模型正确性的特征标记。
效率计算的陷阱
论文里98%的理论效率让人流口水,实测复现却卡在83%。通过解剖focusefficiencycalculation.m代码,发现少算了表面反射损耗。加上这段修正后,数据终于对上了:
% 修正后的效率计算 total_power = sum(E(:).^2); reflected_power = sum(E_reflected(:).^2); efficiency = (total_power - reflected_power)/input_power;超构透镜代码库最酷的是它的可生长性。比如把二氧化钛换成GaN时,只需修改material_library.csv里的色散参数,整个pipeline就能自动重生——这就像给光学实验装上了自动驾驶仪。
文末藏着个彩蛋:教程文档里用表情包解释波前调控原理,比如用🐢🐇比喻相位延迟,用🎡旋转对应几何相位产生。这种不正经的教学方式,反而让抽象概念瞬间落地。
(注:文中代码为示意片段,实际工程包含17个互锁的模块化脚本组,需配合自研的纳米结构生成器使用)