一维时域有限差分法(FDTD)电磁波传播仿真系统
项目介绍
本项目是一个基于MATLAB开发的高性能一维电磁波仿真工具,旨在通过数值计算直观展现物理光学与电磁学中的波动现象。系统严格遵循Atef Elsherbeni与Veysel Demir合著的权威教材《The Finite Difference Time Domain Method for Electromagnetics With MATLAB Simulations》中的算法构架。通过在一维空间中对麦克斯韦旋度方程进行离散化,模拟电磁波在不同媒质(如空气、电介质、耗散介质)中的传播、反射、折射、透射以及能量损耗过程。
功能特性
- 精确的Yee网格建模:电场Ez与磁场Hy在空间和时间上交错半个步长,保证了数值计算的中心差分精度。
- 多样化介质支持:支持非均匀介质分布设置,可自定义空间内各点的相对介电常数、相对磁导率及电导率,能够模拟损耗性材料对电磁波的衰减作用。
- 先进的TF/SF(总场/散射场)技术:实现了透明激励源注入,将计算区域划分为总场和散射场,能有效消除激励源对反射波观察的影响,更真实地模拟平面波入射。
- 吸收边界条件(ABC):集成了一阶Mur吸收边界算法,模拟开放边界环境,有效吸收向外传播的行波,抑制人工数值反射。
- 实时动态可视化:仿真循环中实时绘制波形演化图与观测点时间序列图,直观展现脉冲演化过程及介质界面的物理响应。
- 稳定性与能量分析:内置CFL稳定性判据检查,并具备波形峰值检索及系统总能量守恒计算功能,用于验证数值解的准确性。
实现逻辑与算法细节
1. 参数初始化与网格设定
程序首先定义物理常数(真空中介电常数、磁导率、光速及本质阻抗)。空间被划分为800个单元(Nx),每个单元尺寸为1mm。遵循Courant稳定性条件(S=1.0),计算与之匹配的时间步长dt,以确保仿真过程不发散。
2. 介质分布与系数预计算
在离散网格上配置介质参数。系统默认在450至650格之间定义了一个相对介电常数为4.0、电导率为0.01 S/m的耗散介质层。为了提高计算效率,程序预先计算更新系数CA、CB(针对电场Ez)和CP、CQ(针对磁场Hy)。其中,CA和CB包含了电导率项,用于处理电磁能量在损耗介质中的耗散。
3. 辅助入射场(Auxiliary Field)
为了实现TF/SF激励,程序维护了一组独立的入射场数组(Ez_inc, Hy_inc)。这组场在真空环境中更新,不受主计算区域内介质的影响,作为纯净的入射源提供参考值。
4. 激励源注入
在指定位置(ksource=100)注入高斯脉冲。脉冲宽度和延迟经由参数严格控制,使其在时域内平滑进入计算区域。
5. 核心循环算法
每一时间步依次执行以下计算逻辑:
- 入射场更新:计算辅助入射波的演化。
- 磁场Hy更新:利用Ez的空间梯度更新磁场。在TF/SF边界处,通过引入入射场分量对Hy进行校正,从而实现单向波注入。
- 电场Ez更新:利用Hy的空间梯度结合损耗因子更新电场。同样,对TF/SF边界处的Ez进行修正。
- Mur边界条件应用:在网格的起始点(k=1)和终点(k=Nx),利用前一时刻及其邻近节点的历史状态计算边界电场值,实现无反射边界。
6. 观测与后处理
- 实时绘图:每10个时间步更新一次图形界面,上半部分展示Ez随空间的分布(包含介质区标记),下半部分展示固定观测点(k=300)的电场随时间变化趋势。
- 反射系数估计:仿真结束后,通过对比记录的入射脉冲峰值与介质界面反射回来的脉冲峰值,初步估算反射系数。
- 能量守恒验证:计算并归一化显示仿真区域内的总能量(电场能与磁场能之和),通过能量演化曲线评估数值稳定性和介质的损耗效应。
使用方法
- 启动MATLAB软件。
- 确保当前工作路径包含仿真程序文件。
- 在命令行窗口直接运行该仿真函数。
- 观察弹出的动态波传播窗口。
- 仿真结束后,查看命令行输出的介质参数及反射系数计算结果,并分析生成的能量稳定性曲线。
系统要求
- MATLAB R2016b 或更高版本。
- 无需额外的工具箱支持,仅依赖MATLAB基础数值计算与绘图功能。