一、创建结构
deleteall;
####################################################
# 1x2 port MMI coupler
# MMI coupler with taper between MMI region and input/output
# waveguides.
#
# Input properties
# total length
# coupler length
# coupler width
# waveguide width
# taper length
# taper width
# z span
# separation
# material
#
# Tags: MMI multimode interference coupler taper
#
# Copyright 2014 Lumerical Solutions Inc
#####################################################
# simplify variable names by removing spaces
total_length = %total length%;
coupler_length = %coupler length%;
coupler_width = %coupler width%;
taper_length = %taper length%;
taper_width = %taper width%;
waveguide_width = %waveguide width%;
z_span = %z span%;
# add MMI coupling region
addrect;
set("name","MMI_core");
set("material",material);
set("x",0);
set("x span",coupler_length);
set("y",0);
set("y span",coupler_width);
set("z",0);
set("z span",z_span);
# add tapered regions
addpoly;
set("name","left taper");
set("material",material);
set("z",0);
set("z span",z_span);
# calculate x, y vertex positions
x= [-coupler_length/2-taper_length; -coupler_length/2; -coupler_length/2; -coupler_length/2-taper_length];
y= [waveguide_width/2; taper_width/2; -taper_width/2; -waveguide_width/2];
V=[x,y];
set("vertices",V);
addpoly;
set("name","right upper taper");
set("material",material);
set("z",0);
set("z span",z_span);
# calculate x, y vertex positions
x= [coupler_length/2+taper_length; coupler_length/2; coupler_length/2; coupler_length/2+taper_length];
y= [waveguide_width/2; taper_width/2; -taper_width/2; -waveguide_width/2] + separation/2;
V=[x,y];
set("vertices",V);
addpoly;
set("name","right lower taper");
set("material",material);
set("z",0);
set("z span",z_span);
# calculate x, y vertex positions
x= [coupler_length/2+taper_length; coupler_length/2; coupler_length/2; coupler_length/2+taper_length];
y= [waveguide_width/2; taper_width/2; -taper_width/2; -waveguide_width/2] - separation/2;
V=[x,y];
set("vertices",V);
参数名 | 依赖关系 | 图片中的值 | 物理意义 |
---|---|---|---|
taper_width | 应≈MMI宽度/2 | 1.1 μm | 确保锥形区斜率平缓(避免模式激发高阶模) |
separation | 需>2×输出波导宽度 | 3.14 μm | 防止输出波导间串扰(0.4 μm波导需间距≥0.8 μm) |
z_span | 需匹配波导层厚度 | 0.22 μm | 标准SOI硅波导高度 |
二、添加EME
-
number of modes=20
:
覆盖所有可能的高阶模(如TE0-5, TM0-5),避免能量泄漏。 -
subcell method=none/CVCS
:none
:用于均匀区域(如第2组32μm)加速计算。CVCS
:用于复杂边界(如第3组10μm)提升精度。
Energy Conservation 选项对比表
选项 | 专业定义 | 通俗理解 | 适用场景 | 用户图中选择 |
---|---|---|---|---|
none | 不强制能量守恒,允许数值误差导致的能量波动 | "放任不管"模式:仿真速度快,但可能出现能量不合理的现象(如总功率>100%) | 快速调试或验证几何结构时使用 | 未选中(风险高) |
make passive | 强制系统为无源(忽略增益和非线性效应),但不严格保证能量守恒 | "节能模式":关闭所有"主动耗能"功能(如激光增益),但允许少量计算误差 | 无源器件仿真(如硅光波导、MMI耦合器) | 当前选中(推荐) |
conserve energy | 严格满足能量守恒,通过数值修正确保输入=输出+损耗 | "强迫症模式":精确到小数点后多位,但计算速度慢20%以上 | 高精度需求(如谐振腔Q值计算、非线性效应仿真) | 未选中(计算量大) |
怎么区分对称和反对称?
为啥 是z min
对称而不是 z max
?
-
z min
(衬底侧):
通常为硅波导与SiO₂衬底界面,电场自然对称(TE模 Ey 连续)。 -
z max
(上表面):
可能覆盖金属电极或空气,边界条件需根据实际设置:- 金属(图中选择):强制 Et=0,模拟理想导体屏蔽。
三、添加全局监视器
为什么"x resolution=1000"?
- 物理需求:
高分辨率(如1000点)可精确捕捉场突变(如波导边缘倏逝场),避免锯齿状伪影。、
"x resolution=1000" 是控制监视器水平方向精度的核心参数:
太高(如5000)→ 计算慢,但可解析纳米级细节
太低(如100)→ 丢失场振荡信息(如光子晶体禁带)
建议根据 x span
和结构特征动态调整,通常硅光器件设 500-2000 为宜。
EME vs FDTD vs FDE 监视器对比表
特性 | EME 监视器 | FDTD 监视器 | FDE(无监视器) |
---|---|---|---|
工作原理 | 基于模式展开法,记录复数形式的模式振幅和相位(Aneiϕn) | 直接记录时域电场/磁场随时间变化(E(t),H(t)) | 直接求解静态模式场分布(E(x,y),H(x,y)),无需动态记录 |
数据存储 | 必须勾选 save data (保存频域复数场) | 自动保存时域场(无需额外设置) | 结果直接存储在模式对象中(如 mode1 ) |
输出类型 | 频域数据(与波长/频率绑定) | 时域数据(需傅里叶变换转为频域) | 静态空间分布(单波长) |
典型用途 | 分析模式耦合、相位干涉(如MMI分光比) | 模拟瞬态效应(如脉冲传播、非线性效应) | 获取波导/腔体的本征模式(如 neff) |
用户图中体现 | 需手动勾选 save data 并指定文件名(如 field_profile ) | 无类似界面(默认记录所有时域场) | 无监视器界面,结果通过 getelectric("mode1") 直接获取 |
通俗比喻 | 像录音机的“分轨录制”——分开记录每个乐器的声音(模式) | 像录像机——直接录下所有声音混合后的实时波形 | 像拍照片——只拍一张静态画面(模式分布) |
计算开销 | 中等(需存储复数场) | 高(存储大量时域数据) | 低(仅计算静态场) |
关键设置 | 必须勾选 save data + 设置文件名 | 只需定义监视器位置和类型 | 无需设置,求解后直接读取模式结果 |
四、添加参数扫描
五、运行
(1)首先进行模式收敛扫描
元素 | 专业定义 | 通俗理解 | 用户图中设置示例 |
---|---|---|---|
Mode convergence sweep | 模式数量收敛性扫描,验证仿真结果是否随模式数增加趋于稳定 | "测试需要算多少个模式才够准" | 起始模式=1,步长=1 |
start mode [1] | 扫描的起始模式编号(通常从基模开始) | "从第1个模式开始试" | 1(基模TE₀) |
mode interval [1] | 每次扫描增加的模式数 | "每次多算1个模式" | 1(逐步增加) |
mode sweep | 执行扫描的按钮 | "开始测试按钮" | 灰色(需先设置参数) |
visualize mode sweep | 可视化扫描结果(如模式功率随模式数的变化) | "画图看结果稳不稳定" | 灰色(需先执行扫描) |
S-matrix index mapping | S矩阵索引与物理端口的映射关系 | "给每个端口和模式编号,方便查谁是谁" | 1→port1 mode1, 2→port2 mode1 |
Source mode | 指定S矩阵元素的激励源(端口+模式) | "S₁₂表示port2激励→port1接收" | port1 mode1(基模输入) |
分析:
参数 | 数值/特征 | 物理意义 |
---|---|---|
初始值(mode=0) | ≈0.5 | 未考虑任何模式时的粗略估计值(通常无物理意义,仅作参考) |
首次骤降 | mode=2→5 降至≈0.43 | 低阶模(如TE₀/TM₀)开始介入,抵消初始估计误差 |
波动阶段 | mode=5→10 回升至≈0.46 | 高阶模(如TE₁/TM₁)参与耦合,引发能量重新分配 |
稳定收敛 | mode>10 后维持在≈0.46 | 模式数已足够描述系统能量分布,继续增加模式数对结果影响可忽略 |
- 最低需求模式数:10个模式(mode>10后曲线波动<1%)
- 最终稳定值:透射率/反射率等目标参数收敛于 46%±0.5%
- 异常点警示:
- mode=0→2的骤变表明初始估计方法不适用(可忽略)
- mode=5→10的波动提示存在显著的高阶模耦合
(2)按下 eme propagate按钮,然后从 field_profile 监视器可视化场分布
选项/按钮 | 专业定义 | 通俗解释 | 何时使用 | 性能影响 |
---|---|---|---|---|
include fast diagnostics | 启用快速诊断,检查网格收敛性、模式正交性等基础问题 | "快速体检":扫描仿真设置中的明显错误(如网格太稀) | 每次仿真前建议勾选,尤其修改结构后 | 增加5-10%计算时间 |
update monitors | 在传播过程中动态更新监视器数据(如功率、场分布) | "实时直播":边算边看场变化,不用等全部结束 | 需要观察光场传播过程时(如调试MMI多模干涉) | 增加20-30%计算时间 |
include slow diagnostics | 启用深度诊断,分析能量守恒误差、模式耦合系数等复杂指标 | "全面体检":详细报告哪里漏光/算错了 | 最终正式仿真或结果异常时 | 增加50-100%计算时间 |
calculate group delays | 计算群延迟(τg=−dϕ/dω) | "测速雷达":记录光通过器件的具体时间 | 设计延时线或同步系统时 | 增加15%计算时间 |
eme propagate 按钮 | 执行模式传播计算,生成S参数和场分布结果 | "开始计算"按钮:点它才算数! | 所有仿真必点 | 主计算流程耗时 |
特征 | 数值/位置 | 物理意义 |
---|---|---|
最高电场强度 | ≈0.5(红色区域) | 光场能量集中区,对应波导核心 |
对称性 | 中心对称亮斑 | 结构关于Y轴对称,激发基模(如TE₀₀) |
低场区域 | 深蓝色(强度<0.2) | 倏逝场衰减区或背景材料(如SiO₂衬底) |
X/Y轴范围 | -10~40 μm, -4~4 μm | 仿真区域覆盖完整器件结构,包含输入/输出波导 |
那为啥关于y轴对称,就激活TE₀₀模式?
对称轴 | 激发模式 | 专业条件 | 通俗比喻 | 典型应用场景 |
---|---|---|---|---|
X轴对称 (结构左右对称) | TM₀₀模 | 电场主要沿X方向(Ex),且Ex(y)=Ex(−y),磁场Hz反对称 | "光像拉手风琴,左右伸缩振动" | 金属包层波导、TM偏振器 |
Y轴对称 (结构上下对称) | TE₀₀模 | 电场主要沿Y方向(Ey),且Ey(x)=Ey(−x),磁场Hz对称 | "光像上下拍打的水波" | 硅光波导、MMI耦合器 |
Z轴对称 (结构旋转对称) | 混合模 (如HE₁₁/LP₀₁) | 电场同时含Er和Eϕ分量,相位随角度变化 | "光像螺旋前进的钻头" | 光纤、微环谐振腔 |
三轴对称 (XYZ全对称) | TEM模 | 电场和磁场均垂直于传播方向,且Ex=Ey, Hx=Hy | "光像均匀扩散的烟雾" | 同轴电缆、微波传输线 |
无对称性 | 杂化模 | 任意偏振态混合,Ex, Ey, Ez均非零且无对称关系 | "光像打翻的颜料盘,杂乱混合" | 非规则纳米结构、散射体 |
(3)在 EME 分析窗口中,启用波长扫描。将波长扫描设置为 1.5-1.6 µm,具有 100 个波长点。
分析:
参数 | 数值/范围 | 物理意义 |
---|---|---|
峰值透射率 | 0.44 1540 nm | MMI在1540 nm处达到最佳耦合效率 |
1 dB带宽 | ≈30 nm (1520-1550 nm) | 适用于CWDM粗波分复用(ITU-T G.694.2标准) |
滚降斜率 | -0.015/nm (1550-1600 nm) | 长波长区性能劣化,可能源于高阶模激发或材料吸收 |
纹波波动 | <±0.02 (1500-1580 nm) | 干涉稳定性优异,适合作为功率分配器 |
也可以使用 Optimization and Sweeps 进行扫描
那么EME内置扫描 vs Optimization and Sweeps的区别是啥?
对比维度 | EME内置扫描 | Optimization and Sweeps | 通俗比喻 |
---|---|---|---|
1. 功能定位 | 单参数离散化扫描 | 多参数联合优化+智能采样 | 手动显微镜 vs AI显微镜 |
2. 算法原理 | 线性/对数步长暴力遍历 (xi=xmin+i⋅Δx) | 遗传算法/梯度下降/Pareto优化 (自适应加密热点区域) | 用尺子画格子测量 vs 无人机热成像测绘 |
3. 参数控制 | 仅支持单变量扫描 | 支持多变量正交组合 (如同时优化长度+宽度+材料) | 一次只能调一个旋钮 vs 多个旋钮自动协同 |
4. 采样策略 | 固定步长(可能过采样或漏检) | 动态步长: • 初期粗扫全局 • 后期加密最优区 | 等间隔抽检 vs 先普查再重点排查 |
5. 目标驱动 | 无目标函数,全量数据采集 | 用户定义目标(如Max T@1550nm) +约束(如带宽>30nm) | 无目的记录所有数据 vs 带KPI的智能搜索 |
6. 输出结果 | 原始数据曲线(需人工分析) | Pareto前沿、灵敏度矩阵、最优参数组合 | 给你一堆照片自己找 vs 直接推荐最佳美颜方案 |
7. 计算效率 | 低(固定次数计算) | 高(动态跳过无效区域) | 每个角落都翻一遍 vs 直奔可能有宝藏的地方 |
8. 终止条件 | 固定步长完成后停止 | 收敛判据(ΔT<0.1%) 或最大迭代次数 | 跑完全程才停 vs 达标就收工 |
9. 适用场景 | • 快速验证单参数趋势 • 实时调试 | • 多参数trade-off分析 • 工艺容差评估 • 产品级优化 | 学生作业 vs 毕业设计/商业项目 |
10. 操作复杂度 | 低(集成在EME界面) | 高(需配置目标/约束/算法) | 手机拍照 vs 单反调参 |
11. 误差控制 | 依赖用户预设步长精度 | 内置残差检测+网格自适应 | 人工把控质量 vs 自动化质检 |
12. 典型应用 | • 验证MMI长度-透射率关系 • 观察模式场随波长变化 | • 优化光栅周期+占空比组合 • 平衡Q值与带宽 | 试吃不同口味 vs 定制完美食谱 |
13. 结果差异根源 | 可能错过最优解(如峰值在两步长之间) | 逼近理论最优解(加密关键区采样) | 用渔网捞鱼 vs 声呐定位精准捕捞 |
(4)启用传播扫描并选择组跨度 2。相应地将开始和停止长度设置为 10 µm 和 200 µm。 将间隔设置为 1,然后按 eme sweep,然后可视化 eme sweep。
可以看到,最大传输发生在约 37 µm 的纤芯长度处。
(5)加载 MMI_sweep_taper.lsf脚本文件并运行它。 结构组的锥度宽度属性上的参数扫描任务将返回用户 s 矩阵,并将提供作为锥度宽度函数的损失图。
代码如下
# run the sweep over taper width
runsweep("taper_width_sweep");
# collect sweep results
s_matrix = getsweepresult("taper_width_sweep","s-matrix");
usr_s_matrix = getattribute(s_matrix,"user s matrix");
taper_width = getparameter(s_matrix,"taper_width");
# calculate transmission
s_21 = usr_s_matrix(2,1,1:length(taper_width));
trans = 2*abs(s_21)^2;
plot(taper_width*1e6,-10*log10(trans),"Taper width (um)","Loss (dB)");
特征点 | 锥度宽度(μm) | 损耗(dB) | 物理意义 |
---|---|---|---|
峰值损耗 | 0.45 | 1.55 | 锥度过窄导致模式失配,引发高阶模辐射损耗 |
最低损耗 | 1.10 | 0.22 | 宽锥度实现绝热传输,但可能牺牲器件紧凑性 |
拐点位置 | 0.70 | 0.80 | 模式转换临界点,超过此宽度后基模主导 |