基于PML吸收边界条件的二维TM波FDTD仿真系统
项目介绍
本系统是一个基于有限差分时域法(FDTD)的电磁波数值仿真工具。它专门针对二维TM(Transverse Magnetic)波模式设计,通过求解麦克斯韦方程组的离散形式,模拟电磁波在自由空间中的传播过程。核心优势在于集成了分裂场形式的完美匹配层(PML)技术,能够有效吸收向外传播的电磁波,消除人工边界产生的反射,从而在有限的计算区域内模拟无限大空间的物理特性。
功能特性
- TM波物理建模:精确模拟电场分量 $E_z$ 以及磁场分量 $H_x$ 和 $H_y$ 的相互耦合与演变。
- 分裂场PML算法:采用经典的分裂场方法将 $E_z$ 分量分解为 $E_{zx}$ 和 $E_{zy}$,分别处理 $x$ 和 $y$ 方向的波阻抗匹配与能量衰减。
- 高精度吸收边界:利用多层网格构建PML区域,配合随深度呈幂函数增长的电导率和磁导率剖面,实现极低的理论反射率($10^{-8}$)。
- 实时交互动态显示:仿真过程中实时同步显示电场强度分布、磁场模值大小以及边界观测点的信号时序波动。
- 稳定性保障:自动计算满足Courant稳定条件的时间采样步长,确保数值计算过程不发散。
实现逻辑
程序遵循标准的时间迭代流程,主要包含以下逻辑阶段:
- 环境与网格初始化:
- 设定真空物理常数(光速、导磁率、介电常数)。
- 以最高仿真频率(1GHz)为基准,按照波长的1/20设定空间步长 $dx$ 和 $dy$。
- 初始化 $200 times 200$ 的 Yee 网格场分量矩阵。
- PML参数构建:
- 在仿真区域四周预设20层PML薄层。
- 计算各向异性的电导率 $sigma$ 和磁导率 $mu_{sigma}$,其值从PML内边界向外边界按3阶多项式梯度递增。
- 预先计算电场和磁场更新方程中的衰减系数($C_a, C_b, D_a, D_b$),以提高循环效率。
- 核心计算循环:
-
磁场更新:首先根据电场的空间梯度更新 $H_x$ 和 $H_y$。
-
电场更新:接着根据磁场的旋度更新分裂后的电场分量 $E_{zx}$ 和 $E_{zy}$。
-
激励注入:在网格中心位置注入高斯脉冲调制的正弦波信号作为硬源激励。
- 数据观测与处理:
- 持续记录紧邻PML交界处的一点电场强度,用于分析边界衰减性能。
- 每一采样周期完成后,通过叠加 $E_{zx}$ 和 $E_{zy}$ 还原真实的总电场 $E_z$。
关键算法与实现细节
1. 分裂场(Split-Field)技术
为了在PML中引入定向损耗,程序将各向同性的介质方程修改为分量形式。在更新 $E_z$ 时,利用两条独立的偏微分方程分别处理其对 $x$ 方向和 $y$ 方向磁场变化的响应,使得吸收层可以只对垂直于边界的波分量起作用。
2. 梯度损耗系数设计
为了减小阻抗不匹配带来的数值反射,PML内的损耗因子并非突变。程序通过循环遍历PML层,计算出随网格深度变化的 $sigma_{max}$ 分数。这种平滑过渡是实现高性能吸收的关键。
3. Yee网格的离散执行
程序严格遵循Yee网格的空间半步偏移特性。在循环实现中,磁场更新和电场更新在空间索引上存在 1 个网格单位的偏移,确保了差分算子在空间上的二阶准确度。
4. 动态可视化架构
系统每隔5个时间步进行一次图像刷新。左侧热图展示 $E_z$ 的波前传播,中间热图展示磁场能量分布,右侧时域曲线则直观反映了信号进入PML后的快速衰减过程。
系统要求
- 环境:MATLAB R2016b 或更高版本。
- 内存:建议 4GB RAM 以上(程序涉及多个 200x200 的浮点数矩阵运算)。
- 显示:支持绘图窗口的图形显示器。
使用方法
- 启动 MATLAB 环境。
- 将程序代码内容复制到编辑器中并保存,或者直接打开相关的函数脚本。
- 在命令行窗口直接调用该主函数(无需输入参数)。
- 观察实时生成的三个动态子图,监控电场传播及边界吸收效果。
- 仿真结束后,程序会自动生成最终状态的场分布图及中心剖面图,用户可通过剖面图中的红色阴影区观察信号在PML层内的幅值跌落。