FDTD算法总结

2024-02-26 03:52
文章标签 算法 总结 fdtd

本文主要是介绍FDTD算法总结,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

计算电磁学(Computational Electromagnetics, CEM)是通过数值计算来研究电磁场的交叉学科。

数值求解电磁学问题的方法可以分成频域(Frequency Doamin, FD)、时域(Time Domain, TD)等两类。

频域法基于时谐微分,通过对多个采样值的傅里叶逆变换得到所需的脉冲响应,使用这种方法,每次计算只能求得一个频率点上的响应。这类方法又可进一步分成低频算法高频算法等两类。低频算法包括矩量法(Method of Moment, MoM)、频域有限差分(Finite Difference Frequency Doamin, FDFD)等;高频算法包括几何光学法、物理光学法等。

时域法按时间步进求得有关场量,一次求解可以获得很宽频带范围内的解。这类方法包括时域有限差分(Finite Difference Time Domain,FDTD)、时域有限单元(Finite Element Time Domain,FETD)等。

在时域法中,最为著名的就是FDTD。因此,本文拟对FDTD算法涉及的数理模型数值模型等内容进行简要介绍。

注1:限于研究水平,分析难免不当,欢迎批评指正。

注2:文章内容会不定期更新。

一、物理方程

1864年,Maxwell在前人理论和实验的基础之上,建立了统一的电磁场理论,并用一组数学方程揭示了宏观电磁场的基本规律,这就是著名的Maxwell方程组。

Maxwell方程组有四个方程组成:描述电荷如何产生电场的高斯定律;论述磁单极子不存在的高斯磁定律;描述电流和时变电场怎样产生磁场的安培环路定律;描述时变磁场如何产生电场的法拉第感应定律

\left\{\begin{matrix} \nabla \cdot \mathbf{D}=\rho\\ \nabla\cdot \mathbf{B}=0\\ \nabla\times \mathbf{H}=\boldsymbol{j}+\frac{\partial \boldsymbol{D}}{\partial t}\\ \nabla\times \mathbf{E}=-\frac{\partial \boldsymbol{B}}{\partial t} \end{matrix}\right.

对于各向同性线性介质,物性方程为,

\left\{\begin{matrix} \boldsymbol{D}=\varepsilon\boldsymbol{E}\\ \boldsymbol{B}=\mu \boldsymbol{H}\\ \boldsymbol{j}=\sigma \boldsymbol{E} \end{matrix}\right.

在上述公式中,各符号含义如下:

\boldsymbol{D}电感强度
\rho电荷密度
\boldsymbol{B}磁感强度
\boldsymbol{E}电场强度
\boldsymbol{H}磁场强度
\boldsymbol{j}传导电流密度
\varepsilon介电常数在真空中,\varepsilon=\varepsilon_{0}=8.8542\times 10^{-12} C^2/N\cdot m^2
\mu磁导率在真空中,\mu =\mu_{0}=4\pi \times 10^{-7} N\cdot s^2/C^2
\sigma电导率

在三维笛卡尔坐标系下,有

\frac{\partial E_{x}}{\partial x}+\frac{\partial E_{y}}{\partial y}+\frac{\partial E_{z}}{\partial z}=\frac{\rho }{\varepsilon }

\frac{\partial H_{x}}{\partial x}+\frac{\partial H_{y}}{\partial y}+\frac{\partial H_{z}}{\partial z}=0

\begin{matrix} \frac{\partial H_{y}}{\partial z}-\frac{\partial H_{z}}{\partial y}=\sigma E_{x}+\varepsilon \frac{\partial E_{x}}{\partial t}\\ \frac{\partial H_{z}}{\partial x}-\frac{\partial H_{x}}{\partial z}=\sigma E_{y}+\varepsilon \frac{\partial E_{y}}{\partial t}\\ \frac{\partial H_{y}}{\partial x}-\frac{\partial H_{x}}{\partial y}=\sigma E_{z}+\varepsilon \frac{\partial E_{z}}{\partial t} \end{matrix} 

\begin{matrix} \frac{\partial E_{y}}{\partial z}-\frac{\partial E_{z}}{\partial y}=-\mu \frac{\partial H_{x}}{\partial t}\\ \frac{\partial E_{z}}{\partial x}-\frac{\partial E_{x}}{\partial z}=-\mu \frac{\partial H_{y}}{\partial t}\\ \frac{\partial E_{y}}{\partial x}-\frac{\partial E_{x}}{\partial y}=-\mu \frac{\partial H_{z}}{\partial t} \end{matrix}

二、数值模型

FDTD是美籍华人K.S. Yee 于1966 年提出的求解微分形式Maxwell方程组的数值方法。FDTD在时域上直接求解微分形式的Maxwell方程组,

2.1 空间离散

在FDTD中,Yee使用Yee Cell在空间上交叉布置电场、磁场分量。电场分量放置到Yee单元各棱的中间,方向平行于各棱;磁场分量放置到Yee单元各面中心,方向平行于各面法线。

Yee Cell

这样,每个电场分量由四个磁场分量环绕;每个磁场分量也由四个电场分量环绕。

对于安培环路定律与法拉第电磁感应定律,采用中心差分来离散磁场旋度与电场旋度。

为对于编号为\left ( i,j,k \right )的Yee Cell,其中i\in \left [ 0, n_{x}\right )j\in \left [ 0, n_{y}\right )k\in \left [ 0, n_{z}\right )n_{x}n_{y}n_{z}为计算域在三个坐标轴方向的网格数,

可得法拉第感应定律、安培环路定律在空间域上的半离散格式,

\begin{matrix}-\mu \frac{\partial H_{x}\left ( i,j,k \right )}{\partial t}= \frac{E_{y}\left ( i,j,k \right )-E_{y}\left ( i,j,k-1 \right )}{\Delta z}-\frac{E_{z}\left ( i,j,k \right )-E_{z}\left ( i,j-1,k \right )}{\Delta y}\\ -\mu \frac{\partial H_{y}\left ( i,j,k \right )}{\partial t}=\frac{E_{z}\left ( i,j,k \right )-E_{z}\left ( i-1,j,k \right )}{\Delta x}-\frac{E_{x}\left ( i,j,k \right )-E_{x}\left ( i,j,k-1 \right )}{\Delta z}\\ -\mu \frac{\partial H_{z}\left ( i,j,k \right )}{\partial t}=\frac{E_{y}\left ( i,j,k \right )-E_{y}\left ( i-1,j,k \right )}{\Delta x}-\frac{E_{x}\left ( i,j,k \right )-E_{x}\left ( i,j-1,k \right )}{\Delta y} \end{matrix}

\begin{matrix} \varepsilon \frac{\partial E_{x}\left ( i,j,k \right )}{\partial t}+\sigma E_{x}\left ( i,j,k \right )=\frac{H_{y}\left ( i,j,k \right )-H_{y}\left ( i,j,k-1 \right )}{\Delta z}-\frac{H_{z}\left ( i,j,k \right )-H_{z}\left ( i,j-1,k \right )}{\Delta y}\\ \varepsilon \frac{\partial E_{y}\left ( i,j,k \right )}{\partial t}+\sigma E_{y}\left ( i,j,k \right )=\frac{H_{z}\left ( i,j,k \right )-H_{z}\left ( i-1,j,k \right )}{\Delta x}-\frac{H_{x}\left ( i,j,k \right )-H_{x}\left ( i-1,j,k \right )}{\Delta z}\\ \varepsilon \frac{\partial E_{z}\left ( i,j,k \right )}{\partial t}+\sigma E_{z}\left ( i,j,k \right )= \frac{H_{y}\left ( i,j,k \right )-H_{y}\left ( i-1,j,k \right )}{\Delta x}-\frac{H_{x}\left ( i,j,k \right )-H_{x}\left ( i,j-1,k \right )}{\Delta y}\end{matrix}

2.2 时间离散

在时间域上,FDTD采用蛙跳格式,由此可得法拉第感应定律、安培环路定律在时间域上的半离散格式,

\begin{matrix} -\mu \frac{H_{x}^{n+\frac{1}{2}}-H_{x}^{n-\frac{1}{2}}}{\Delta t}=\frac{\partial E_{y}^{n}}{\partial z}-\frac{\partial E_{z}^{n}}{\partial y}\\ -\mu \frac{H_{y}^{n+\frac{1}{2}}-H_{y}^{n-\frac{1}{2}}}{\Delta t}=\frac{\partial E_{z}^{n}}{\partial x}-\frac{\partial E_{x}^{n}}{\partial z}\\ -\mu \frac{H_{z}^{n+\frac{1}{2}}-H_{z}^{n-\frac{1}{2}}}{\Delta t}=\frac{\partial E_{y}^{n}}{\partial x}-\frac{\partial E_{x}^{n}}{\partial y} \end{matrix}

\begin{matrix}\varepsilon \frac{E_{x}^{n+1}-E_{x}^{n}}{\Delta t}+ \sigma E_{x}^{n+\frac{1}{2}}=\frac{\partial H_{y}}{\partial z}-\frac{\partial H_{z}}{\partial y}\\ \varepsilon \frac{E_{y}^{n+1}-E_{y}^{n}}{\Delta t}+\sigma E_{y}^{n+\frac{1}{2}}=\frac{\partial H_{z}}{\partial x}-\frac{\partial H_{x}}{\partial z}\\ \varepsilon \frac{E_{z}^{n+1}-E_{z}^{n}}{\Delta t}+\sigma E_{z}^{n+\frac{1}{2}}=\frac{\partial H_{y}}{\partial x}-\frac{\partial H_{x}}{\partial y} \end{matrix}

2.3 FDTD差分方程组

结合法拉第感应定律、安培环路定律在空间域、时间域上的离散格式,可得最终差法方程组,

\begin{matrix}-\mu \frac{H_{x}^{n+\frac{1}{2}}\left ( i,j,k \right )-H_{x}^{n-\frac{1}{2}}\left ( i,j,k \right )}{\Delta t}= \frac{E_{y}^{n}\left ( i,j,k \right )-E_{y}^{n}\left ( i,j,k-1 \right )}{\Delta z}-\frac{E_{z}^{n}\left ( i,j,k \right )-E_{z}^{n}\left ( i,j-1,k \right )}{\Delta y}\\ -\mu \frac{H_{y}^{n+\frac{1}{2}}\left ( i,j,k \right )-H_{y}^{n-\frac{1}{2}}\left ( i,j,k \right )}{\Delta t}=\frac{E_{z}^{n}\left ( i,j,k \right )-E_{z}^{n}\left ( i-1,j,k \right )}{\Delta x}-\frac{E_{x}^{n}\left ( i,j,k \right )-E_{x}^{n}\left ( i,j,k-1 \right )}{\Delta z}\\ -\mu \frac{H_{z}^{n+\frac{1}{2}}\left ( i,j,k \right )-H_{z}^{n-\frac{1}{2}}\left ( i,j,k \right )}{\Delta t}=\frac{E_{y}^{n}\left ( i,j,k \right )-E_{y}^{n}\left ( i-1,j,k \right )}{\Delta x}-\frac{E_{x}^{n}\left ( i,j,k \right )-E_{x}^{n}\left ( i,j-1,k \right )}{\Delta y} \end{matrix}

\begin{matrix} \varepsilon \frac{E_{x}^{n+1}\left ( i,j,k \right )-E_{x}^{n+1}\left ( i,j,k \right )}{\Delta t}+\sigma E_{x}^{n+\frac{1}{2}}\left ( i,j,k \right )=\frac{H_{y}^{n+\frac{1}{2}}\left ( i,j,k \right )-H_{y}^{n+\frac{1}{2}}\left ( i,j,k-1 \right )}{\Delta z}-\frac{H_{z}^{n+\frac{1}{2}}\left ( i,j,k \right )-H_{z}^{n+\frac{1}{2}}\left ( i,j-1,k \right )}{\Delta y}\\ \varepsilon \frac{E_{y}^{n+1}\left ( i,j,k \right )-E_{y}^{n}\left ( i,j,k \right )}{ \Delta t}+\sigma E_{y}^{n+\frac{1}{2}}\left ( i,j,k \right )=\frac{H_{z}^{n+\frac{1}{2}}\left ( i,j,k \right )-H_{z}^{n+\frac{1}{2}}\left ( i-1,j,k \right )}{\Delta x}-\frac{H_{x}^{n+\frac{1}{2}}\left ( i,j,k \right )-H_{x}^{n+\frac{1}{2}}\left ( i-1,j,k \right )}{\Delta z}\\ \varepsilon \frac{E_{z}^{n+1}\left ( i,j,k \right )-E_{z}^{n}\left ( i,j,k \right )}{\Delta t}+\sigma E_{z}^{n+\frac{1}{2}}\left ( i,j,k \right )= \frac{H_{y}^{n+\frac{1}{2}}\left ( i,j,k \right )-H_{y}^{n+\frac{1}{2}}\left ( i-1,j,k \right )}{\Delta x}-\frac{H_{x}^{n+\frac{1}{2}}\left ( i,j,k \right )-H_{x}^{n+\frac{1}{2}}\left ( i,j-1,k \right )}{\Delta y}\end{matrix}

2.4 边界条件

由于数值模拟只能选取有限区域作为计算域进行仿真计算,因此,在计算域边界处,需要给出吸收边界条件。

目前效果最好的吸收边界层是Berenger于1994年提出的完美匹配层(Perfect Matched Layer, PML)。完全匹配层是数学上在FDTD区域截断边界处虚拟设置一种特殊介质层,通过合理地选择PML的本构参数,能够使FDTD计算域的外行电磁波无反射地穿过分界面,并在吸收层内被迅速吸收分解。

2.5 源项处理

根据源项随时间的变化,源项可分为周期性源项和非周期性源项。

根据源项几何形状,可分为点源、线源、面源等。

2.6 收敛性、稳定性条件

c为计算空间内电磁波最大传播速度,\Delta t为时间步2长,\delta为网格尺寸,则有

对于三维均匀网格,时间步长\Delta t、网格尺寸\delta需要满足Courant条件:c\Delta t\leq \frac{\delta }{\sqrt{3}}

对于二维均匀网格,时间步长\Delta t、网格尺寸\delta需要满足Courant条件:c\Delta t\leq \frac{\delta }{\sqrt{2}}

对于二维均匀网格,时间步长\Delta t、网格尺寸\delta需要满足Courant条件:c\Delta t\leq \delta

三、实现与测试

参考文献

  • K S Yee .Numerical solution of initial boundary value problems involving maxwell's equations in isotropic media[J].IEEE Transactions on Antennas & Propagation, 1966, 14(5):302-307.DOI:10.1109/TAP.1966.1138693.
  • 赖生建. 计算电磁学讲义.
  • 梁铨廷. 物理光学(第五版). 2018

网络资料

  • XFDTD
  •  FDTD++ 
  • openEMS
  • Meep  

这篇关于FDTD算法总结的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/747631

相关文章

Rust格式化输出方式总结

《Rust格式化输出方式总结》Rust提供了强大的格式化输出功能,通过std::fmt模块和相关的宏来实现,主要的输出宏包括println!和format!,它们支持多种格式化占位符,如{}、{:?}... 目录Rust格式化输出方式基本的格式化输出格式化占位符Format 特性总结Rust格式化输出方式

golang字符串匹配算法解读

《golang字符串匹配算法解读》文章介绍了字符串匹配算法的原理,特别是Knuth-Morris-Pratt(KMP)算法,该算法通过构建模式串的前缀表来减少匹配时的不必要的字符比较,从而提高效率,在... 目录简介KMP实现代码总结简介字符串匹配算法主要用于在一个较长的文本串中查找一个较短的字符串(称为

通俗易懂的Java常见限流算法具体实现

《通俗易懂的Java常见限流算法具体实现》:本文主要介绍Java常见限流算法具体实现的相关资料,包括漏桶算法、令牌桶算法、Nginx限流和Redis+Lua限流的实现原理和具体步骤,并比较了它们的... 目录一、漏桶算法1.漏桶算法的思想和原理2.具体实现二、令牌桶算法1.令牌桶算法流程:2.具体实现2.1

Python中连接不同数据库的方法总结

《Python中连接不同数据库的方法总结》在数据驱动的现代应用开发中,Python凭借其丰富的库和强大的生态系统,成为连接各种数据库的理想编程语言,下面我们就来看看如何使用Python实现连接常用的几... 目录一、连接mysql数据库二、连接PostgreSQL数据库三、连接SQLite数据库四、连接Mo

Git提交代码详细流程及问题总结

《Git提交代码详细流程及问题总结》:本文主要介绍Git的三大分区,分别是工作区、暂存区和版本库,并详细描述了提交、推送、拉取代码和合并分支的流程,文中通过代码介绍的非常详解,需要的朋友可以参考下... 目录1.git 三大分区2.Git提交、推送、拉取代码、合并分支详细流程3.问题总结4.git push

Kubernetes常用命令大全近期总结

《Kubernetes常用命令大全近期总结》Kubernetes是用于大规模部署和管理这些容器的开源软件-在希腊语中,这个词还有“舵手”或“飞行员”的意思,使用Kubernetes(有时被称为“... 目录前言Kubernetes 的工作原理为什么要使用 Kubernetes?Kubernetes常用命令总

Python中的随机森林算法与实战

《Python中的随机森林算法与实战》本文详细介绍了随机森林算法,包括其原理、实现步骤、分类和回归案例,并讨论了其优点和缺点,通过面向对象编程实现了一个简单的随机森林模型,并应用于鸢尾花分类和波士顿房... 目录1、随机森林算法概述2、随机森林的原理3、实现步骤4、分类案例:使用随机森林预测鸢尾花品种4.1

Python中实现进度条的多种方法总结

《Python中实现进度条的多种方法总结》在Python编程中,进度条是一个非常有用的功能,它能让用户直观地了解任务的进度,提升用户体验,本文将介绍几种在Python中实现进度条的常用方法,并通过代码... 目录一、简单的打印方式二、使用tqdm库三、使用alive-progress库四、使用progres

Android数据库Room的实际使用过程总结

《Android数据库Room的实际使用过程总结》这篇文章主要给大家介绍了关于Android数据库Room的实际使用过程,详细介绍了如何创建实体类、数据访问对象(DAO)和数据库抽象类,需要的朋友可以... 目录前言一、Room的基本使用1.项目配置2.创建实体类(Entity)3.创建数据访问对象(DAO

Java向kettle8.0传递参数的方式总结

《Java向kettle8.0传递参数的方式总结》介绍了如何在Kettle中传递参数到转换和作业中,包括设置全局properties、使用TransMeta和JobMeta的parameterValu... 目录1.传递参数到转换中2.传递参数到作业中总结1.传递参数到转换中1.1. 通过设置Trans的