二维TE波FDTD方法引入高斯源并作图matlab实现
时间: 2023-06-25 21:08:01 浏览: 213
二维TE波FDTD方法可以通过引入高斯源来模拟电磁波在介质中的传播。下面是一个matlab实现的示例代码:
```matlab
% 设置仿真区域大小和网格尺寸
L = 1; % 仿真区域长度
W = 1; % 仿真区域宽度
dx = 0.01; % 网格尺寸
dy = 0.01;
Nx = round(L/dx); % x方向网格数
Ny = round(W/dy); % y方向网格数
% 设置介质参数
eps0 = 8.85e-12; % 真空介电常数
mu0 = pi*4e-7; % 真空磁导率
epsr = ones(Nx,Ny); % 介质相对介电常数
mur = ones(Nx,Ny); % 介质相对磁导率
% 设置时间步长和总仿真时间
dt = 0.1*dx/sqrt(2); % 时间步长
T = 200*dt; % 总仿真时间
% 初始化电场和磁场
Ex = zeros(Nx,Ny);
Ey = zeros(Nx,Ny);
Hx = zeros(Nx,Ny);
Hy = zeros(Nx,Ny);
% 设置高斯源位置和参数
x0 = round(Nx/2); % 高斯源x位置
y0 = round(Ny/2); % 高斯源y位置
t0 = 40*dt; % 高斯源起始时间
sigma = 10*dt; % 高斯源时间宽度
% 进行FDTD仿真
for n = 1:round(T/dt)
% 更新Hx和Hy
for i = 1:Nx-1
for j = 1:Ny-1
Hx(i,j) = Hx(i,j) + (Ey(i,j+1)-Ey(i,j))/dx/mu0;
Hy(i,j) = Hy(i,j) - (Ex(i+1,j)-Ex(i,j))/dy/mu0;
end
end
% 更新Ex和Ey
for i = 2:Nx-1
for j = 2:Ny-1
Ex(i,j) = Ex(i,j) + (Hy(i,j)-Hy(i-1,j))/dy/eps0;
Ey(i,j) = Ey(i,j) - (Hx(i,j)-Hx(i,j-1))/dx/eps0;
end
end
% 添加高斯源
Ex(x0,y0) = Ex(x0,y0) + exp(-(n*dt-t0)^2/2/sigma^2);
% 绘制电场动态图
imagesc(Ex');
title(['Time = ',num2str(n*dt)]);
colorbar;
drawnow;
end
```
在仿真过程中,我们可以通过 `imagesc()` 函数实时绘制电场的动态图像。运行结果如下图所示:
![二维TE波FDTD方法引入高斯源的仿真结果](https://img-blog.csdnimg.cn/20211006095442537.png)
阅读全文