任意层数平板波导特性计算与分析系统
项目简介
本项目是一个基于MATLAB开发的光学仿真工具,专为光电子及集成光学领域设计。它能够对具有任意层数的平板波导结构进行精确的光学特性分析。系统核心逻辑基于传递矩阵法(Transfer Matrix Method, TMM),不仅突破了传统工具对波导层数的限制,还能通过数值算法自动求解导模的有效折射率,并进一步模拟近场模场分布与远场辐射特性。
该工具适合科研人员进行波导器件设计(如激光器、调制器截面分析),也可作为光波导理论教学的演示实例。
功能特性
- 任意层数结构支持:支持用户定义任意数量的介质层(衬底、波导芯层、缓冲层、覆盖层等),能够模拟复杂的非对称波导结构。
- 多模式自动求解:
* 自动确定有效折射率($n_{eff}$)的物理搜索区间。
* 结合粗略扫描与精细求根算法(
fzero),高精度定位所有存在的导模。
* 支持TE(横电)和TM(横磁)两种偏振模式的计算。
*
近场(Near-field):计算并绘制横截面内的光场分布(电场/磁场),直观展示光场在芯层与包层中的约束情况。
*
远场(Far-field):基于夫琅禾费衍射理论,由近场数据通过傅里叶变换推导并绘制波导输出端的远场辐射图样。
- 结构与结果同屏展示:绘图系统将折射率分布轮廓与模场分布叠加显示,便于分析模场与波导几何结构的关系。
系统要求
- MATLAB R2016a 或更高版本(需支持
fzero 函数及基本绘图库)。 - 无需额外的工具箱(Toolbox)。
使用方法
- 参数配置:
在主程序开头的“用户参数设置”区域修改以下变量以定义波导结构:
*
n_vec:数组,定义从衬底到覆盖层各层的折射率。
*
d_vec:数组,定义各层的厚度(单位:微米)。注意首尾两层(半无限大层)的数值仅影响绘图范围,不参与特征方程厚度计算。
*
lambda:工作波长(单位:微米)。
*
polarization:字符串,设置偏振模式为
'TE' 或
'TM'。
*
n_resolution:扫描步数,数值越大初始搜索越精细。
- 运行程序:
直接运行主脚本。程序将在命令行窗口输出波导结构信息、搜索范围以及找到的导模数量和对应的有效折射率。
- 结果解读:
程序运行结束后会弹出一个包含三个子图的综合窗口:
*
主试图:显示折射率分布背景,并叠加了各阶模式的归一化场分布。
*
右上图:展示不同模式的远场辐射强度分布(角度 vs 强度)。
*
右下图:以离散杆图形式展示所有导模的有效折射率数值。
算法与实现逻辑详解
本项目基于严格的电磁场边界条件,通过以下核心步骤实现求解:
1. 预处理与搜索空间定义
程序首先分析用户输入的折射率数组,确定导模存在的物理条件:$n_{cladding}^{max} < n_{eff} < n_{core}^{max}$。程序会自动校验芯层折射率是否高于包层,若不满足全反射条件则报错终止。
2. 特征方程求解(色散关系)
这是系统的核心计算模块,采用混合求根策略:
- 传递矩阵法(TMM):辅助函数通过构建各介质层的传递矩阵,从衬底层(假设指数衰减)开始,逐层推导电磁场切向分量至覆盖层。
- 扫描与过零检测:在预设的有效折射率范围内生成线性扫描向量
n_eff_scan,计算对应的边界条件匹配误差(色散函数值)。通过检测函数值的符号变化(Sign Change)来锁定根的大致位置。 - 精细求根:一旦发现变号区间,调用 MATLAB 内置的
fzero 函数进行数值迭代,精确计算出特征方程的根(即有效折射率)。
3. 本征模场计算
在获得特征值 $n_{eff}$ 后,程序再次利用传递矩阵逻辑,但此次是为了求解场分布:
- 构建涵盖整个波导截面的高分辨率空间网格。
- 根据边界连续性条件,计算每一层内的场分布(芯层为正弦/余弦振荡,包层为指数衰减)。
- 对计算出的近场数据进行归一化处理,以便于绘图比较。
4. 远场辐射变换
近场到远场的转换通过数值积分实现:
- 基于衍射理论,远场分布 $F(theta)$ 近似为近场分布 $E(x)$ 的空间傅里叶变换。
- 程序对 $-90^circ$ 至 $90^circ$ 范围内的观测角进行离散化。
- 利用梯形积分法(
trapz)计算积分 $int E(x) cdot e^{j k_0 x sintheta} dx$,得到远场强度分布 $|F(theta)|^2$。
5. 偏振处理细节
程序内部通过
polarization 变量区分边界条件系数:
- TE 模:主要处理电场 $E_y$ 及其导数,边界处场量直接连续。
- TM 模:处理磁场 $H_y$,由于介电常数的不连续性,其导数项需除以 $n^2$ 以满足切向电场连续条件。
---
*注意:本项目主要演示实数折射率条件下的导模求解。代码结构中预留了复数折射率的处理逻辑,但当前的过零检测算法主要针对无损/低损波导设计。*