基于MUR吸收边界条件的二维TE波FDTD数值模拟系统
项目介绍
本项目是一个基于时域有限差分法(FDTD)的电磁场数值仿真系统,专门用于模拟二维横电波(TE模式)在开放空间中的传播特性。系统通过数值求解Maxwell旋转方程,实时计算并可视化电场与磁场的动态演变。为了模拟无限大的自由空间,项目引入了经典的一阶Mur吸收边界条件,有效地消除了仿真区域边缘的人工反射信号。
功能特性
- TE波仿真引擎:在Yee网格上实现了Ex、Ey和Hz三个场分量的交替迭代更新,精确遵循Maxwell方程组。
- Mur吸收边界条件(ABC):在计算区域的上下左右四个边界应用一阶Mur差分算子,支持电磁波的向外平滑传播。
- 复杂介质支持:程序预设了介质分布矩阵,支持在真空背景中嵌入特定几何形状(如介质方块)的非均匀介质分布。
- 软源激励机制:采用随时间演变的高斯脉冲作为信号源,能够覆盖较宽的频带。
- 实时与后期可视化:提供迭代过程中的Hz场实时云图显示,并在仿真结束后生成包含时域波形、能量密度及边界吸收效果的综合分析报告。
使用方法
- 确保系统已安装MATLAB软件(建议R2016b及以上版本以获得最佳绘图结果)。
- 打开MATLAB并将工作路径切换至代码所在目录。
- 运行主脚本程序。
- 程序将首先开启实时动态显示窗口,展现电磁波从波源扩散、穿过介质 block 以及到达边界被吸收的过程。
- 仿真完成后,系统会自动弹出分析图表,展示探测点的场强随时间变化曲线、空间能量分布图、边界残余反射分析以及相对介电常数分布。
系统要求
- 软件环境:MATLAB
- 硬件要求:建议内存4GB以上,主频2.0GHz以上的CPU以保证迭代计算速度。
详细功能实现逻辑
主程序严格按照FDTD的标准流程设计,逻辑分为以下八个阶段:
- 物理与网格参数初始化:
* 定义真空光速、介电常数及磁导率常数。
* 设定最高仿真频率为2GHz,并根据波长的1/20确定空间步长(dx, dy)。
* 根据Courant稳定性条件计算时间步长(dt),确保数值解的收敛性。
- 介质环境构建:
* 初始化全域为真空环境(eps_r=1)。
* 在空间中心特定坐标(120:150, 80:120网格区域)设置相对介电常数为4.0的介质块,用于演示波的反射与折射。
- 系数矩阵预计算:
* 预先计算电场更新系数(ce_x, ce_y)和磁场更新系数(ch_z),将介质分布耦合进系数矩阵中,避免在循环内进行重复除法运算,提升执行效率。
- 场分量与缓冲区初始化:
* 定义Ex、Ey、Hz的二维实数矩阵。
* 为Mur边界专门开辟用于存储前一时刻及前一空间位置场值的缓存向量(如Hz_left_old等)。
- 时域迭代循环:
*
电场更新:利用当前时刻的Hz空间差分更新Ex和Ey。
*
旧值保存:在磁场更新前,提取并保存靠近边界的Hz值,作为Mur公式中所需的历史空间项。
*
磁场更新:根据Ex和Ey的空间旋度更新Hz。
*
信号源加载:在指定网格点注入高斯脉冲信号。
- Mur边界条件应用:
* 在四个边界(x=1, x=nx, y=1, y=ny)分别应用Mur一阶差分方程。
* 通过计算当前的边界值与历史缓存值的加权组合,模拟波向边界外的单向传播。
- 数据采集与实时监控:
* 在特定位置设置虚拟探测点,记录全过程的Hz场强。
* 每隔10个时间步更新一次Hz场强云图,直观展示波前演变。
- 综合分析绘图:
* 绘制探测点的时域演化曲线。
* 计算并绘制末尾时刻的电磁波能量密度空间分布(结合电场与磁场能量)。
* 分析边界处的残余信号幅度,评估Mur边界的吸收性能。
* 展示系统物性的空间分布图。
关键算法与实现细节分析
- 数值稳定性:dt的选择严格遵循 Courant 条件 $dt le frac{dx}{csqrt{2}}$,在代码中通过将系数设为 2 倍光速的倒数来确保稳定性。
- Mur ABC 实现:代码通过维护一个 $N times 2$ 的缓存矩阵,分别记录了边界点及其相邻点在上一时刻的状态。其核心计算系数
mur_coeff 决定了波在边界处的透射质量。 - 能量密度插值:由于Yee网格中电场和磁场在空间上交错半个步长,代码在计算能量密度时,对Ex和Ey进行了均值化处理,使其与Hz在空间中心点对齐,从而获得准确的能量分布图。
- 软源处理:激励源直接累加到Hz分量上,这种“软源”方式允许波源点本身也能正确传播来自其他方向的回波。