计算电磁学之FDTD算法的MATLAB语言实现

合集下载

矩形谐振腔电磁场的FDTD分析和Matlab仿真

矩形谐振腔电磁场的FDTD分析和Matlab仿真

矩形谐振腔电磁场的FDTD分析和Matlab仿真摘要:目前,电磁场的时域计算方法越来越引人注目。

这种方法已经广泛应用到各种电磁问题的分析之中。

而将Matlab作为一种仿真工具,用于时域有限差分法,可以简化编程,使研究者重心放在FDTD本身上,而不必在编程上花费过多的时间。

本课题通过用FDTD方法计算矩形谐振腔电磁场分布,并用Matlab 进行仿真。

关键词:时域有限差分法,Matlab仿真,矩形谐振腔1.引言时域有限差分法(Finite-Dfference Time-Domain Method)是求解电磁问题的一种数值技术,是在1966年由K.S.Yee第一次提出的。

FDTD法直接将有限差分式代替麦克斯韦时域场旋度方程中的微分式,得到关于场分量的有限差分式,用具有相同电参量的空间网格去模拟被研究体,选取合适的场始值和计算空间的边界条件,可以得到包括时间变量的麦克斯韦方程的四维数值解,通过傅里叶变换可求得三维空间的频域解。

时域有限差分法突出的优点是所需的存储量及计算时间与N成正比,使得很多复杂的电磁场计算问题成为可能,用时域有限差分法容易模拟各种复杂的结构,使得用其他方法不能解决的问题有了新的处理方法。

本文主要讨论如何用Matlab语言来编写FDTD的吸收边界条件以及编程时应注意的问题。

2时域有限差分法的基本理论2.1 时域有限差分法的简介1966年K.S.Yee首次提出了一种电磁场数值计算的新方法——时域有限差分(Finite-Dfference Time-Domain Method)方法。

对电磁场E、H分量在时间和空间上采取交替抽样的离散方式,每一个E(或H)场分量四周有四个H(或E)场分量环绕,应用这种离散方式将含时间变量的麦克斯韦旋度方程转化为一组差分方程,并在时间轴上逐步推进地求解空间电磁场。

Yee提出的这种抽样方式后来被称为Yee元胞。

FDTD方法是求解麦克斯韦方程的直接时域方法。

在计算中将空间某一样本点的电场(或磁场)与周围格点的磁场(或电场)直接相关联,且介质参数已赋值给空间每一个元胞,因此这一方法可以处理复杂形状目标和非均匀介质物体的电磁散射、辐射等问题。

基于MATLAB的FDTD算法编程

基于MATLAB的FDTD算法编程

FD TD ar ithm etic programm ing ba sed on M ATLAB language
ZHAO J ia (Com pu ter Engineering D epartm en t, Guangx i U n iversity
of T echno logy, L iuzhou 545006, Ch ina) Abstract: T he basic p rincip le of FD TD w as in troduced and the 22D TM m ode FD TD arithm etic exp ression w as derived. T he p rogramm ing m ethod based on M A TLAB w as illu strated w ith exam p le. Key words: M A TLAB; FD TD; Yee A rithm etic; P rogramm ing
自由空间的光速。∃x、∃y 和 ∃ t 的选取必须使它们的关系满足 Cournan t 稳定性条件。尽管时间和空间步长越
小, FD TD 运算的精度会越高, 但太细的网格会使计算机运算时间太长, 同时, 在网格分辨率 (即波长与空间
步长之比) 小到一定程度时, 数值误差基本就不变了。对于采用M A TLAB 编程, 需要特别注意时间步长和空
211 算例
考察区域为正方形的二维自由空间, 区域的边
界为理想电导体, 为了激励外向辐射波, 设在区域的
中心有电场分量 E z 随时间按高斯变化, 求解该区
域内电场随时间的变化, 场域如图 2 所示。
212 M ATLAB 编程方法及结果
基于M A TLAB 对本算例 FD TD 算法进行编程 求 解可归纳为以下几个步骤: (1) 正确建立二维

FDTD算法与Matlab仿真在电磁场与电磁波教学中的应用

FDTD算法与Matlab仿真在电磁场与电磁波教学中的应用

FDTD算法与Matlab仿真在电磁场与电磁波教学中的应用黎杨;程莉
【期刊名称】《高师理科学刊》
【年(卷),期】2022(42)11
【摘要】麦克斯韦方程组是电磁场与电磁波课程中最核心的一个知识点,物理量的抽象性、数学运算的复杂程度和预言产生电磁波等这些方程组的性质学生学习起来特别困难.从麦克斯韦方程组的微分形式出发,使用时域有限差分法(FDTD)推演时变电场和时变磁场在Yee胞中的空间和时间维度更新过程,借助于Matlab编程实现,可视化演示了电磁波的产生和传播过程,使学生更深入、更直观地理解“由麦克斯韦方程组预言电磁波的产生”这一重要性质.
【总页数】5页(P86-90)
【作者】黎杨;程莉
【作者单位】武汉工程大学电气信息学院
【正文语种】中文
【中图分类】O441;G642.0
【相关文献】
1.FDTD算法在"电磁场与电磁波"课程教学中的应用
2.基于Matlab语言实现电磁场中的FDTD算法编程
3.应用MATLAB设计电磁场与电磁波模拟仿真实验
4.Matlab软件在电磁场与电磁波可视化教学中的应用
5.Matlab在“电磁场与电磁波”课程可视化教学中的探索——以平面电磁波在介质交界面处的反射与透射分析为例
因版权原因,仅展示原文概要,查看原文内容请购买。

MATLAB编程在FDTD算法中的应用

MATLAB编程在FDTD算法中的应用

MATLAB编程在FDTD算法中的应用摘要:文章介绍了时域有限差分(FDTD)法的基本原理,推导了二维TM 波的FDTD表达式。

给出了MATLAB语言编程的步骤和应注意的问题,并结合算例阐述了基于MATLAB仿真的基本方法,最后得出用MATLAB语言对FDTD 算法仿真的几点结论。

关键词:MATLAB;FDTD;编程时域有限差分(FDTD)法是在21世纪60年代由K.S.Yee首先提出并用于求解电磁场散射问题,其主要思路是在空间轴和时间轴上对场量进行离散,并用中心差分代替偏微分,这就将麦克斯韦方程组转化为了差分方程,通过在时间轴和空间轴上采取蛙跳法(leapfrog)逐步推进地求解,最终求得在一定边值与初值条件下的空间场解。

随着计算机技术的发展,FDTD的应用越来越多,对于FDTD算法的编程求解,最常用的程序语言有VC和FORTRUN,而MATLAB 作为一种可视化效果好的软件,在FDTD计算中可视化程度较高,并具有能显示动态场效果的特点。

文章采用FDTD法对高压开关柜内超高频电磁波的辐射和传播特性进行仿真,仿真中将对二维TM电磁波进行FDTD表达式的推导,并结合FDTD算法边界条件的特点,用MATLAB语言进行编程。

1二维TM电磁波FDTD算法1.1算式推导在自由空间中,对于二维TM电磁波,,MAXWELL的两个旋度方程可以分解为:=-0 (1)=0(2)0=-(3)构造二维TM波FDTD cell如图1所示:按照FDTD元胞对以上三式中的偏导用中心差商代替,分别可得:=-0 (4)=0 (5)0=-(6)由于方程中出现了半网格和半时间步,为了便于编程,可以将上面差分式改为如下FDTD算式:Hx(i,j,k+1)=Hx(i,j,k)-[EZ(i,j+1,n)-EZ(i,j,n)](7)Hy(i,j,n+1)=Hy(i,j,n)+[EZ(i+1,j,n)-EZ(i,j,n)](8)Ez(i,j,n+1)=Ez(i,j,n)+[-] (9)1.2数值稳定性的条件FDTD方法是以一组有限差分方程来替代MAXWELL旋度方程来进行数值计算的方法,在执行形如FDTD算法时,随着时间步长的增长,如何保证该算法的稳定性是一个重要问题。

matlab实现一维fdtd仿真

matlab实现一维fdtd仿真
2.1麦克斯韦方程
麦克斯韦方程组为
(2—1—1)
(2—1—2)
各项同性线性介质中的本构关系为
(2—1—3)
在直角坐标系中,(2—1—1)、(2—1—2)式写为
(2—1—4)
以及
(2—1—5)下面我们考虑(2—1—4)、(2—1—5)式的FDTD差分离散。令 代表 或 直角坐标系中某一分量,在时间和空间域中的离散取以下符号表示:
FDTD在电磁研究的多个领域获得广泛应用,其中有:辐射天线的分析,微波器件和导行波结构的研究,散射和雷达截面计算,周期机构分析,电子封装和电磁兼容分析,核电磁脉冲的传播和散射,微光学元器件中光的传播和颜射特性。
二、FDTD模拟电磁波传播的原理
麦克斯韦方程组是支配宏观电磁现象的一组基本方程。这组方程既可以写成微分形式,又可以写成积分形式。FDTD方法是由微分形式的麦克斯韦旋度方程出发进行差分离散从而得到一组时域推进公式。首先给出麦克斯韦旋度方程及其在直角坐标系中的FDTD离散形式,由三维情况到一维情况,即一维电磁波传播的理论基础。
c = 1/sqrt(mu_0*eps_0); %光速
%定义问题空间和参数
domain_size = 1; %空间问题的长度
dx = 1e-3; %单元网格大小
dt = 3e-12; %步长时间的持续
number_of_time_steps = 2000; %迭代次数
nx = round(domain_size/dx); %在问题空间的单元数目
3.2参数设置
程序设计了电流屏在z轴上传播,产生的电场和磁场,此电流屏放置在问题空间的中心,与两个相互平行的完善导体平面平行,整个区间充满空气。激励源在两板之间传播和反射。
无论是简单目标还是复杂目标,在进行FDTD离散时网格尺寸的确定,除了受计算资源的限制不可能取得很小外,还需要考虑以下几个因素:

矩形谐振腔电磁场的FDTD分析和Matlab仿真

矩形谐振腔电磁场的FDTD分析和Matlab仿真

矩形谐振腔电磁场的FDTD分析和Matlab仿真摘要:目前,电磁场的时域计算方法越来越引人注目。

这种方法已经广泛应用到各种电磁问题的分析之中。

而将Matlab作为一种仿真工具,用于时域有限差分法,可以简化编程,使研究者重心放在FDTD本身上,而不必在编程上花费过多的时间。

本课题通过用FDTD方法计算矩形谐振腔电磁场分布,并用Matlab 进行仿真。

关键词:时域有限差分法,Matlab仿真,矩形谐振腔1.引言时域有限差分法(Finite-Dfference Time-Domain Method)是求解电磁问题的一种数值技术,是在1966年由K.S.Yee第一次提出的。

FDTD法直接将有限差分式代替麦克斯韦时域场旋度方程中的微分式,得到关于场分量的有限差分式,用具有相同电参量的空间网格去模拟被研究体,选取合适的场始值和计算空间的边界条件,可以得到包括时间变量的麦克斯韦方程的四维数值解,通过傅里叶变换可求得三维空间的频域解。

时域有限差分法突出的优点是所需的存储量及计算时间与N成正比,使得很多复杂的电磁场计算问题成为可能,用时域有限差分法容易模拟各种复杂的结构,使得用其他方法不能解决的问题有了新的处理方法。

本文主要讨论如何用Matlab语言来编写FDTD的吸收边界条件以及编程时应注意的问题。

2时域有限差分法的基本理论2.1 时域有限差分法的简介1966年K.S.Yee首次提出了一种电磁场数值计算的新方法——时域有限差分(Finite-Dfference Time-Domain Method)方法。

对电磁场E、H分量在时间和空间上采取交替抽样的离散方式,每一个E(或H)场分量四周有四个H(或E)场分量环绕,应用这种离散方式将含时间变量的麦克斯韦旋度方程转化为一组差分方程,并在时间轴上逐步推进地求解空间电磁场。

Yee提出的这种抽样方式后来被称为Yee元胞。

FDTD方法是求解麦克斯韦方程的直接时域方法。

在计算中将空间某一样本点的电场(或磁场)与周围格点的磁场(或电场)直接相关联,且介质参数已赋值给空间每一个元胞,因此这一方法可以处理复杂形状目标和非均匀介质物体的电磁散射、辐射等问题。

matlab模拟的电磁学时域有限差分法 pdf

matlab模拟的电磁学时域有限差分法 pdf

matlab模拟的电磁学时域有限差分法 pdf电磁学时域有限差分法(FDTD)是一种基于数值模拟的电磁场计算方法,它使用有限差分来近似微分方程。

该方法广泛用于电磁学、电波传播、微波技术、光学等领域,以求解电磁场分布和场的辐射、散射等问题。

而在这个领域中,MATLAB是非常流行的工具之一。

本文将围绕“MATLAB模拟的电磁学时域有限差分法”这一主题,从以下几个方面进行阐述:1.时域有限差分法的基础概念在FDTD方法中,将时域中的Maxwell方程组转化为差分形式,使得可以在计算机上进行数值解法。

通过在空间和时间上的离散,可以得到电磁场在时域内的各种分布,进而求得特定情况下的电磁场变化。

2.MATLAB中的FDTD仿真在MATLAB中,我们可以使用PDE工具箱中的电磁学模块来实现FDTD仿真。

通过选择适当的几何形状和边界条件,可以利用该工具箱演示电磁场的传输、反射、折射、透射等现象。

同时,MATLAB中还提供了不同的场分量计算和可视化工具,以便用户可以更好地理解电磁场分布。

3.MATLAB代码实现以下是一些MATLAB代码示例,展示了FDTD模拟的基础实现方法。

代码中的示例模拟了平面波在一个矩形和圆形障碍物上的传播情况。

% 1. Square obstaclegridSize = 200; % Grid sizemaxTime = 600; % Maximum time (in steps)imp0 = 377.0; % Impedance of free spacecourantNumber = 0.5; % Courant numbercdtds = ones(gridSize,gridSize); % Courant number in space% (not variable in this example)Ez = zeros(gridSize, gridSize); % Define EzHy = zeros(gridSize, gridSize); % Define Hy% Simulation loopfor n = 1:maxTime% Update magnetic fieldHy(:,1:end-1) = Hy(:,1:end-1) + ...(Ez(:,2:end) - Ez(:,1:end-1)) .*cdtds(:,1:end-1) / imp0;% Update electric fieldEz(2:end-1,2:end-1) = Ez(2:end-1,2:end-1) + ...(Hy(2:end-1,2:end-1) - Hy(1:end-2,2:end-1)) .* cdtds(2:end-1,2:end-1) .* imp0;end% 2. Circular obstacleradius = 50;xAxis = [-100:99];[X,Y] = meshgrid(xAxis);obstacle = sqrt((X-50).^2 + (Y).^2) < radius;gridSize = length(xAxis); % Grid sizemaxTime = 500; % Maximum time (in steps)imp0 = 377.0; % Impedance of free space courantNumber = 0.5; % Courant numbercdtds = ones(gridSize,gridSize); % Courant number in space% (not variable in this example)Ez = zeros(gridSize, gridSize); % Define EzHy = zeros(gridSize, gridSize); % Define Hy% Simulation loopfor n = 1:maxTime% Update magnetic fieldHy(:,1:end-1) = Hy(:,1:end-1) + ...(Ez(:,2:end) - Ez(:,1:end-1)) .*cdtds(:,1:end-1) / imp0;% Update electric field, with obstacleEz(2:end-1,2:end-1) = Ez(2:end-1,2:end-1) + ...(Hy(2:end-1,2:end-1) - Hy(1:end-2,2:end-1)) .* cdtds(2:end-1,2:end-1) .* imp0;Ez(obstacle) = 0;end以上代码仅供参考,不同条件下的模拟需要适当修改,以便获得特定的模拟结果。

matlab模拟的电磁学时域有限差分法

matlab模拟的电磁学时域有限差分法

matlab模拟的电磁学时域有限差分法时域有限差分法(FDTD)是一种计算电磁波传播及散射的数值模拟方法。

它是基于麦克斯韦方程组进行仿真的一种方法,而且从计算电磁波传播的实质上来看,FDTD方法是一种求解时域麦克斯韦方程的有限差分方法。

在FDTD方法中,我们将区域空间离散化,并定义电场、磁场等量的格点值。

然后,根据麦克斯韦方程组的时域形式,在各个时刻进行场量的更新。

FDTD方法在实践应用中具有计算时间和空间复杂度低,且适用于复杂的结构和非线性介质等特点,所以在电磁学数值仿真中应用广泛。

我们可以用MATLAB来进行FDTD的电磁学仿真,下面详细介绍MATLAB的使用步骤:1. 建立空间离散化格点在仿真开始前,需要先根据空间大小和仿真目的来建立离散化格点。

对于一个一维的结构,我们可以用以下代码来建立:x = linspace(0,1,N); %建立离散化空间格点Ex = zeros(1,N); %电场,长度为N的全0数组Hy = zeros(1,N); %磁场,长度为N的全0数组其中N为获取离散化格点数量的参数,x为离散化空间格点,Ex和Hy为电场和磁场。

2. 定义电场和磁场边界条件在进行仿真时,需要了解仿真的边界情况并将其定义成特殊的边界条件。

例如,仿真空间内可能存在各种元件、环境等,这些都会对电场和磁场的性质产生影响。

所以,我们需要用特殊边界条件来约束仿真空间内电场和磁场的行为。

在FDTD中,通常采用数值反射边界条件(DNG Boundary)来进行仿真。

例如,在这个边界条件下,在仿真空间内部设置经典的电场边界条件:场强等于零;并在仿真空间外部添加一层基质,该基质的介电常数和磁导率均为负值,并且在该基质中场的强度和方向均反向。

相当于在仿真空间外设置一个虚拟折射界面,能够将场边界反射。

我们设定如下代码:M = 20; % 反射界面层数Ex_low_M1 = 0; %反射界面边界条件Ex_high_M1 = 0; %反射界面边界条件for i = 1:MEx_low_M2(i) = Ex_high_M2(i-1); %反转反射界面内的电场贡献Ex_high_M2(i) = Ex_low_M2(i-1); %反转反射界面内的电场贡献end3. 计算电场的场值FDTD仿真中最核心的内容就是判断时刻要计算的电场场值。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

South China Normal University课程设计实验报告课程名称:计算电磁学指导老师:专业班级: 2014级电路与系统姓名:学号:FDTD算法的MATLAB语言实现摘要:时域有限差分(FDTD)算法是K.S.Yee于1966年提出的直接对麦克斯韦方程作差分处理,用来解决电磁脉冲在电磁介质中传播和反射问题的算法。

其基本思想是:FDTD计算域空间节点采用Yee元胞的方法,同时电场和磁场节点空间与时间上都采用交错抽样;把整个计算域划分成包括散射体的总场区以及只有反射波的散射场区,这两个区域是以连接边界相连接,最外边是采用特殊的吸收边界,同时在这两个边界之间有个输出边界,用于近、远场转换;在连接边界上采用连接边界条件加入入射波,从而使得入射波限制在总场区域;在吸收边界上采用吸收边界条件,尽量消除反射波在吸收边界上的非物理性反射波。

本文主要结合FDTD算法边界条件特点,在特定的参数设置下,用MATLAB语言进行编程,在二维自由空间TEz网格中,实现脉冲平面波。

关键词:FDTD;MATLAB;算法1 绪论1.1 课程设计背景与意义20世纪60年代以来,随着计算机技术的发展,一些电磁场的数值计算方法逐步发展起来,并得到广泛应用,其中主要有:属于频域技术的有限元法(FEM)、矩量法(MM)和单矩法等;属于时域技术方面的时域有限差分法(FDTD)、传输线矩阵法(TLM)和时域积分方程法等。

其中FDTD是一种已经获得广泛应用并且有很大发展前景的时域数值计算方法。

时域有限差分(FDTD)方法于1966年由K.S.Yee提出并迅速发展,且获得广泛应用。

K.S.Yee用后来被称作Yee氏网格的空间离散方式,把含时间变量的Maxwell旋度方程转化为差分方程,并成功地模拟了电磁脉冲与理想导体作用的时域响应。

但是由于当时理论的不成熟和计算机软硬件条件的限制,该方法并未得到相应的发展。

20世纪80年代中期以后,随着上述两个条件限制的逐步解除,FDTD便凭借其特有的优势得以迅速发展。

它能方便、精确地预测实际工程中的大量复杂电磁问题,应用范围几乎涉及所有电磁领域,成为电磁工程界和理论界研究的一个热点。

目前,FDTD日趋成熟,并成为分析大部分实际电磁问题的首选方法。

1.2 时域有限差分法的发展与应用经过四十多年的发展,FDTD已发展成为一种成熟的数值计算方法。

在发展过程中,几乎都是围绕几个重要问题展开的,即数值稳定性、计算精度、数值色散、激励源技术以及开域电磁问题的吸收边界条件等。

数值稳定和计算精度对任何一种数值计算方法都是至关重要的。

其中激励源的设计和引入也是FDTD的一个重要任务。

目前,应用最广泛的激励源引入技术是总场/散射场体系。

对于散射问题,通常在FDTD计算空间中引入连接边界,它将整个计算空间划分为内部的总场区和外部的散射场区,如图1.1。

利用Huygens原理,可以在连接边界处引入入射场,使入射场的加入变得简单易行。

图1.1总场/散射场区2 FDTD法基本原理2.1 Maxwell方程和Yee氏算法根据电磁场基本方程组的微分形式,若在无源空间,其空间中的煤质是各向同性、线性和均匀的,即煤质的参数不随时间变化且各向同性,则Maxwell旋度方程可写成:式中,E是电场强度,单位为伏/米(V/m);H是磁场强度,单位为安/米(A/m);ε表示介质介电系数,单位为法拉/米(F/m);μ表示磁导系数,单位为亨利/米(H/m);σ表示介质电导率,单位为西门子/米(S/m);σ表示导磁率,单位m为欧姆/米(Ω/m)。

K.S.Yee在1966年建立了如图2.1所示的空间网格,这就是著名的Yee氏元胞网格。

图2.1 Yee氏网格及其电磁场分量分布电场和磁场被交叉放置,电场分量位于网格单元每条棱的中心,磁场分量位于网格单元每个面的中心,每个磁场(电场)分量都有4个电场(磁场)分量环绕。

这样不仅保证了介质分界面上切向场分量的连续性条件得到自然满足,而且还允许旋度方程在空间上进行中心差分运算,同时也满足了法拉第电磁感应定律和安培环路积分定律,也可以很恰当地模拟电磁波的实际传播过程。

2.2 时域有限差分法相关技术2.2.1数值稳定性问题FDTD方程是一种显式差分方程,在执行时,存在一个重要的问题:即算法的稳定性问题。

这种不稳定性表现为在解显式方程时,随着时间步数的继续增加,计算结果也将无限制地增加。

Taflove于1975年对Yee氏差分格式的稳定性进行了讨论,并导出了对时间步长的限制条件。

数值解是否稳定主要取决于时间步长Δt与空间步长Δx、Δy、Δz的关系。

对于非均匀媒质构成的计算空间选用如下的稳定性条件:上式是空间和时间离散之间应当满足的关系,又称为Courant稳定性条件。

若采用均匀立方体网格:Δx=Δy=Δz=Δs其中,v为计算空间中的电磁波的最大速度。

2.2.2数值色散FDTD方程组是对Maxwell旋度方程进行差分近似,在进行数值计算时,将会在计算网格中引起数字波模的色散,即在FDTD网格中,电磁波的相速与频率有关,电磁波的相速度随波长、传播方向及变量离散化的情况不同而改变。

这种关系由非物理因素引起,且色散将导致非物理因素引起的脉冲波形畸变、人为的各向异性和虚假折射等现象。

为获得理想的色散关系,问题空间分割应按照小于正常网格的原则进行。

一般选取的最大空间步长为Δmax=λmin/20,λmin为所研究范围内电磁波的最小波长。

由上分析说明,数值色散在用FDTD法分析电磁场传播中的影响是不可能避免的,但我们可以尽可能的减小数值色散的影响。

2.2.3离散网格的确定无论是简单目标还是复杂目标,在进行FDTD离散时网格尺寸的确定,除了受计算资源的限制不可能取得很小外,还需要考虑以下几个因素:1.目标离散精确度的要求。

网格应当足够小以便能精确模拟目标几何形状和电磁参数。

2.FDTD方法本身的要求。

主要是考虑色散误差的影响。

设网格为立方体Δx=Δy=Δz=δ,所关心频段的频率上限为fmax ,对应波长为fmin,则考虑FDTD的数值色散要求δ≤λmin/N通常N≥10。

上式是根据已知所关心频率上限情况下来确定FDTD网格尺寸的;反之,若给定,则FDTD计算结果可用的上限频率也随之确定。

2.3 吸收边界条件由时域有限差分法的基本原理可知,在利用时域有限差分法研究电磁场时,需在全部问题空间建立Yee氏网格空间,并存储每个单元网格上任一时间步的六个场分量用于下一时间步的计算。

而在对于辐射、散射这类开放系统的实际研究中,不可能有无限大的存储空间。

因此,必须在某处将网格空间截断,且在截断边界网格点处运用特殊的场分量计算方法,使得向边界面行进的波在边界处保持“外向行进”特性、无明显的反射现象,并且不会使内部空间的场产生畸变,从而用有限网格空间模拟电磁波在无界空间中传播的情况。

具有这种功能的边界条件称之为吸收边界条件,或辐射边界条件,或网格截断条件,如图2.2所示图 2.2 附加截断边界使计算区域变为有限域从FDTD的基本差分方程组可以看出,在截断边界面上切向场分量的计算需要利用计算空间以外的电磁场分量,因此FDTD基本差分方程对这些截断边界面上的场分量失效。

如何处理截断边界上的场分量,使之与需要考虑的无限空间有尽量小的差异,是FDTD中必须很好解决的一个重要问题。

实际上,这是要求在误差可容忍的范围内,计算空间中的外向波能够顺利通过截断边界面而不引起波的明显反射,使有限计算空间的数值模拟与实际情况趋于一致,对外向波而言,就像在无限大空间中传播一样。

所以,需要一种截断边界网格处的特殊计算方法,它不仅要保证边界场计算的必要精度,而且还要大大消除非物理因素引起的波反射,使得用有限的网格空间就能模拟电磁波在无限空间中的传播。

但是如果处理不当,截断边界面可能造成较大反射,构成数值模拟误差的一部分,甚至可能造成算法不稳定。

加于截断边界场分量符合上述要求的算法就称为吸收边界条件(Absorbing Boundary Conditions)。

2.4 FDTD计算所需时间步的估计为了使计算达到稳定,通常计算所需要时间步按照电磁波往返穿越FDTD计算区对角线3~5次来估计。

若FDTD计算区总元胞数为N,则对角线上元胞约为(三维)。

按照Courant稳定条件,设计算中心区Δt=δ/(2c),即穿越对角线一次需要时间步为。

总计算时间步约为需。

对于二维情况则约为。

或者说,计算时间步大约等于FDTD计算区对角线上元胞数目的12~20倍。

实际上,计算所需时间步还与散射体具体形状、结构有关。

图2.3给出了应用FDTD分析电磁场问题时的程序流程图图2.3 FDTD 程序流程图3 课程设计要求及MATLAB语言实现3.1课程设计要求➢采用总场/散射场技术,在二维自由空间TEz网格中,实现脉冲平面波。

➢总场区域100*100个网格。

➢周边散射场区域20个网格。

➢散射场区域外采用PML吸收边界条件。

➢平面波0度角入射。

使用高斯脉冲,中心频率为1GHz,带宽为1/e。

➢采用正方形Yee网格,离散步长Δ=1.5cm,时间离散步长为Δ=Δ/2c.3.2 MATLAB程序%%%%%%%% 此程序实现自由空间的平面波 %%%%%%%%%%%%%%%% 此程序采用总场/散射场技术 %%%%%%%%%%%%%%%% 此程序使用PML设置吸收边界条件 %%%%%%%%KE=128;%真空区域网格数IE=KE;JE=KE;T=0;NSTEP=300;%迭代次数e=2.71828;%%%%%%%% 初始化 %%%%%%%%dz=zeros(KE,KE);ez=zeros(KE,KE);hx=zeros(KE,KE);hy=zeros(KE,KE);ihx=zeros(KE,KE);ihy=zeros(KE,KE);ga=ones(KE,KE);ez_inc=zeros(1,JE);hx_inc=zeros(1,JE);%%%%%%%% PML 参数 %%%%%%%%gi2=ones(1,IE);gi3=gi2;fi1=zeros(1,IE);fi2=ones(1,IE);fi3=fi2;gj2=ones(1,JE);gj3=gj2;fj1=zeros(1,JE);fj2=ones(1,JE);fj3=fj2;for i=1:8 %设置PML层中的参数xnum=npml-i;xd=npml;xxn=xnum/xd;xn=0.33*xxn^3;gi2(i)=1.0/(1.0+xn);gi2(IE-1-i)=1.0/(1.0+xn);gi3(i)=(1.0-xn)/(1.0+xn);gi3(IE-1-i)=(1.0-xn)/(1.0+xn);xxn=(xnum-0.5)/xd;xn=0.25*xxn^3;fi1(i)=xn;fi1(IE-2-i)=xn;fi2(i)=1.0/(1.0+xn);fi2(IE-2-i)=1.0/(1.0+xn);fi3(i)=(1.0-xn)/(1.0+xn);fi3(IE-2-i)=(1.0-xn)/(1.0+xn); endfor j=1:8xnum=npml-j;xd=npml;xxn=xnum/xd;xn=0.33*xxn^3;gj2(j)=1.0/(1.0+xn);gj2(JE-1-j)=1.0/(1.0+xn);gj3(j)=(1.0-xn)/(1.0+xn);gj3(JE-1-j)=(1.0-xn)/(1.0+xn);xxn=(xnum-0.5)/xd;xn=0.25*xxn^3;fj1(j)=xn;fj1(JE-2-j)=xn;fj2(j)=1.0/(1.0+xn);fj2(JE-2-j)=1.0/(1.0+xn);fj3(j)=(1-xn)/(1.0+xn);fj3(JE-2-j)=(1.0-xn)/(1.0+xn); end%%%%%%%% 总场/散射场边界 %%%%%%%%ib=IE-ia-1;ja=28;jb=JE-ja-1;ez_inc_low_m1=0;ez_inc_low_m2=0;ez_inc_high_m1=0;ez_inc_high_m2=0;%%%%%%%% 信号源 %%%%%%%%t0=80;%脉冲高度spread=12;%脉冲宽度%%%%%%%% 网格 %%%%%%%%ddx=0.015; %%%%%%%% 离散步长 %%%%%%%%dt=ddx/(2*3e8); %%%%%%%% 计算时间离散步长 %%%%%%%%epsz=8.851*1e-12; %%%%%%%% 自由空间的介电常数 %%%%%%%%%%%%%% 迭代求解电场与磁场 %%%%%%%%for n=1:NSTEPa=1;T=T+1;for j=2:JEez_inc(j)= ez_inc(j)+0.5*( hx_inc(j-1)- hx_inc(j));end%%%%%%%% 入射波缓冲区 %%%%%%%%ez_inc(1) =ez_inc_low_m2;ez_inc_low_m2=ez_inc_low_m1;ez_inc_low_m1=ez_inc(2);ez_inc(JE-1) =ez_inc_high_m2;ez_inc_high_m2=ez_inc_high_m1;ez_inc_high_m1=ez_inc(JE-2);%%%%%%%% 计算 dx 区域 %%%%%%%%for i=2:KEfor j=2:KEdz(i,j)=gi3(i)*gj3(j)*dz(i,j)+gi2(i)*gj2(j)*0.5*(hy(i,j)-hy(i-1,j)-hx (i,j)+hx(i,j-1));endend%%%%%%%% 输入高斯脉冲信号源 %%%%%%%%pulse=exp(-0.5*(t0-T)^2/spread^2); %%%%%%%%ez_inc(3)=pulse;%%%%%%%% 入射波 DZ 参数 %%%%%%%%for i=ia:ibdz(i,ja)= dz(i,ja)+0.5*hx_inc(ja-1);dz(i,jb)= dz(i,jb)-0.5*hx_inc(jb);end%%%%%%%% 计算电场dx区域 %%%%%%%%for i=1:KEfor j=1:KEez(i,j)=ga(i,j)*dz(i,j);endend%%%%%%%% 设置电场 EZ 边缘为0, 作为PML的参数%%%%%%%%for j=1:JE-1ez(1,j)=0;ez(IE,j)=0;endfor i=1:IE-1ez(i,1)=0;ez(i,JE)=0;endfor j=1:JE-1hx_inc(j)=hx_inc(j)+0.5*( ez_inc(j)-ez_inc(j+1));end%%%%%%%% 计算磁场hx区域 %%%%%%%%for i=1:KEfor j=1:KE-1curl_e=ez(i,j)-ez(i,j+1);ihx(i,j)=ihx(i,j)+fi1(i)*curl_e;hx(i,j)=fj3(j)*hx(i,j)+fj2(j)*0.5* (curl_e+ihx(i,j)); endend%%%%%%%% 入射磁场Hx区域参数 %%%%%%%%for i=ia:ibhx(i,ja-1)= hx(i,ja-1)+0.5*ez_inc(ja);hx(i,jb)= hx(i,jb)-0.5*ez_inc(jb);end%%%%%%%% 计算磁场hy区域%%%%%%%%for i=1:KE-1for j=1:KEcurl_e=ez(i+1,j)-ez(i,j);ihy(i,j)=ihy(i,j)+fj1(j)*curl_e;hy(i,j)=fi3(i)*hy(i,j)+fi2(i)*0.5* (curl_e+ihy(i,j)); endend%%%%%%%% 入射磁场hy区域参数 %%%%%%%%for j=ja:jbhy(ia-1,j)= hy(ia-1,j)-0.5*ez_inc(j);hy(ib,j)= hy(ib,j)+0.5*ez_inc(j);end%%%%%%%% 图形展示 %%%%%%%%m=moviein(500);x=1:KE;y=1:KE;[X,Y]=meshgrid(x,y);surf(X,Y,ez);axis([0 KE 0 KE -1 1 ]);set(gcf,'Color', 'white', 'Number', 'off', 'Name', sprintf('Simulation FDTD 2D, Iteration = %i', n));title( sprintf('t = %.3f nsec',n*dt*1e9))xlabel('x');ylabel('y');zlabel('Ez');m(a)=getframe(gcf);a=a+1;end下图为该程序实现的效果图:4.结语以上结合FDTD和MATLAB在自由空间中实现了平面波,所编MATLAB程序简洁明了,运行效率也较高。

相关文档
最新文档