用Python和FDTD仿真,手把手教你理解超表面中的几何相位与传输相位(附代码)
用Python和FDTD仿真理解超表面中的几何相位与传输相位
超表面作为二维人工结构材料,通过亚波长尺度的微纳结构实现对电磁波的精确调控。其中,几何相位和传输相位是两种核心的物理机制,它们在偏振转换、波前整形等领域展现出独特优势。本文将带您从Python代码实现和FDTD仿真两个维度,深入理解这两种相位调控原理。
1. 超表面相位调控基础
超表面单元结构对入射光的调控能力主要来源于两种物理机制:传输相位和几何相位。传输相位源于光波在介质中传播时的有效折射率变化,而几何相位则与结构旋转引入的偏振态转换相关。
1.1 传输相位的物理本质
传输相位基于介质等效折射率理论,其数学表达为:
φ_trans = 2πn_effh/λ其中:
n_eff:结构的等效折射率h:结构高度λ:入射光波长
在Python中,我们可以通过以下代码计算不同结构参数下的传输相位:
import numpy as np def calculate_transmission_phase(n_eff, height, wavelength): return 2 * np.pi * n_eff * height / wavelength # 示例:硅纳米柱在532nm波长下的传输相位 n_eff_x = 2.5 # x偏振方向等效折射率 n_eff_y = 3.0 # y偏振方向等效折射率 height = 850e-9 # 850nm wavelength = 532e-9 # 532nm phase_x = calculate_transmission_phase(n_eff_x, height, wavelength) phase_y = calculate_transmission_phase(n_eff_y, height, wavelength) print(f"x偏振传输相位:{phase_x:.2f} rad") print(f"y偏振传输相位:{phase_y:.2f} rad")1.2 几何相位的独特性质
几何相位(又称Pancharatnam-Berry相位)的产生与结构旋转角度直接相关。对于圆偏振光入射,几何相位的表达式为:
φ_geo = ±2θ其中θ是结构旋转角度,"±"分别对应左旋和右旋圆偏振光。
几何相位的一个关键特性是与波长无关,这使得基于几何相位的超表面器件具有宽带工作特性。下表对比了两种相位机制的主要特点:
| 特性 | 传输相位 | 几何相位 |
|---|---|---|
| 偏振依赖性 | 线偏振相关 | 仅圆偏振有效 |
| 波长相关性 | 强相关 | 无关 |
| 调控方式 | 改变结构尺寸 | 旋转结构角度 |
| 色散特性 | 受材料色散影响 | 无色散 |
2. FDTD仿真环境搭建
要直观观察超表面中的相位调控现象,我们选择Lumerical FDTD作为仿真工具。以下是建立超表面单元仿真模型的关键步骤。
2.1 基本仿真参数设置
# Lumerical FDTD脚本示例 - 基础设置 import lumapi fdtd = lumapi.FDTD() fdtd.addfdtd( dimension='2D', x=0, y=0, z=0, x_span=2e-6, y_span=2e-6, simulation_time=1000e-15, mesh_accuracy=2 ) # 光源设置 fdtd.addgaussian( name='source', injection_axis='y', wavelength_start=500e-9, wavelength_stop=600e-9, theta=0 ) # 监视器设置 fdtd.addpower( name='transmission', monitor_type=2, x=0, y=1e-6, z=0 )2.2 超表面单元建模
典型的超表面单元可采用硅纳米椭圆柱结构,其建模参数包括:
- 长轴直径:200-500nm
- 短轴直径:200-500nm
- 高度:850nm
- 旋转角度:0-180°
在FDTD中,我们可以通过参数扫描研究结构尺寸和旋转角度对相位调控的影响:
# 参数扫描示例 for angle in np.linspace(0, 180, 10): fdtd.addrect( name=f'nanorod_{angle}', x=0, y=0, z=0, x_span=300e-9, y_span=150e-9, z_span=850e-9, rotation_angle=angle, material='Si (Silicon)' ) # 运行仿真并记录结果 fdtd.run() transmission = fdtd.getresult('transmission', 'T')3. 琼斯矩阵分析与相位提取
琼斯矩阵是分析超表面偏振转换特性的有力工具。一个各向异性超表面单元的透射琼斯矩阵可表示为:
J = [txx txy; tyx tyy]3.1 从仿真结果提取琼斯矩阵元素
通过分别仿真x和y偏振光入射,我们可以提取完整的琼斯矩阵:
def extract_jones_matrix(fdtd, wavelengths): # x偏振入射 fdtd.setnamed('source','polarization_angle',0) fdtd.run() Ex = fdtd.getelectric('transmission') Ey = fdtd.getelectric('transmission', component='y') txx = Ex / Ex_incident tyx = Ey / Ex_incident # y偏振入射 fdtd.setnamed('source','polarization_angle',90) fdtd.run() Ex = fdtd.getelectric('transmission') Ey = fdtd.getelectric('transmission', component='y') txy = Ex / Ey_incident tyy = Ey / Ey_incident return np.array([[txx, txy], [tyx, tyy]]) jones_matrix = extract_jones_matrix(fdtd, 532e-9)3.2 相位差计算与偏振态分析
从琼斯矩阵元素可以计算传输相位差和几何相位:
def analyze_phases(jones_matrix): # 提取振幅和相位 txx_amp = np.abs(jones_matrix[0,0]) txx_phase = np.angle(jones_matrix[0,0]) tyy_amp = np.abs(jones_matrix[1,1]) tyy_phase = np.angle(jones_matrix[1,1]) # 传输相位差 transmission_phase_diff = tyy_phase - txx_phase # 几何相位分析(圆偏振入射) RCP_in = np.array([1, 1j])/np.sqrt(2) # 右旋圆偏振 output = jones_matrix @ RCP_in geo_phase = np.angle(output[0]) - np.angle(RCP_in[0]) return transmission_phase_diff, geo_phase4. 完整仿真案例:可调谐超表面设计
结合传输相位和几何相位,我们可以设计具有灵活相位调控能力的超表面。以下是一个完整的仿真案例:
4.1 结构参数设计
考虑由硅纳米椭圆柱组成的超表面,参数如下:
| 参数 | 值 | 可调范围 |
|---|---|---|
| 长轴直径 | 400nm | 300-500nm |
| 短轴直径 | 200nm | 200-400nm |
| 高度 | 850nm | 固定 |
| 旋转角度 | 0-180° | 连续可调 |
4.2 相位调控特性仿真
通过Python脚本自动化FDTD仿真流程:
def simulate_metasurface_unit(params): fdtd = lumapi.FDTD() setup_simulation(fdtd) # 创建纳米椭圆柱 fdtd.addellipse( name='nanorod', x=0, y=0, z=0, x_radius=params['major_axis']/2, y_radius=params['minor_axis']/2, z_span=params['height'], rotation_angle=params['angle'], material='Si' ) # 运行仿真 fdtd.run() # 提取结果 jones_matrix = extract_jones_matrix(fdtd, 532e-9) phase_diff, geo_phase = analyze_phases(jones_matrix) return { 'transmission_phase_diff': phase_diff, 'geometric_phase': geo_phase, 'transmission_efficiency': np.mean(np.abs(jones_matrix)**2) }4.3 结果分析与可视化
仿真完成后,我们可以绘制相位调控特性曲线:
import matplotlib.pyplot as plt angles = np.linspace(0, 180, 19) results = [simulate_metasurface_unit({'major_axis':400e-9, 'minor_axis':200e-9, 'height':850e-9, 'angle':angle}) for angle in angles] geo_phases = [r['geometric_phase'] for r in results] trans_phases = [r['transmission_phase_diff'] for r in results] plt.figure(figsize=(10,5)) plt.plot(angles, np.degrees(geo_phases), label='几何相位') plt.plot(angles, np.degrees(trans_phases), label='传输相位差') plt.xlabel('旋转角度 (度)') plt.ylabel('相位 (度)') plt.legend() plt.grid(True) plt.title('超表面单元相位调控特性') plt.show()在实际项目中,我们发现当结构旋转角度超过60°时,几何相位开始显著影响整体相位分布。而传输相位差则主���取决于椭圆的长短轴比例,与旋转角度关系较小。这种组合调控方式为实现多功能超表面器件提供了灵活的设计空间。
