第一次写博客,发表自己的学习成果,如有不对之处,希望各位评论指出。
内容如题,公式为直角坐标系中FDTD一维公式。
代码
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%标题:一维FDTD MATLAB模拟
%版本:MATLAB R2018b Update4
%时间:2019.7.3 13:47:30
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
clc;clear all;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%Z向TEM波
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
kzmax=200; %模拟空间长度
tmax=200; %模拟时间长度
ex=zeros(200,200); %声明电场,电场矢量为x向
hy=zeros(200,200); %声明磁场,磁场矢量为y向
epsz=8.854187817e-12; %真空介电常数
muz=(4*pi)*10^(-7); %真空磁导率
for t=2:tmax-1 %时间步进
ex(1,t)=exp(-(t-1-30)*(t-1-30)/(100)); %高斯脉冲函数在z为1处
for kz=1:kzmax-1 %z轴磁场步进
hy(kz,t)=hy(kz,t-1)-1/(muz*3e8)*(ex(kz+1,t)-ex(kz,t));
end
for kz=2:kzmax %z轴电场步进
ex(kz,t+1)=ex(kz,t)-1/(epsz*3e8)*(hy(kz,t)-hy(kz-1,t));
end
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%电场时域图
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
figure(1)
for i=1:200
plot(1:200,ex(i,:))
axis([1,200,0,1])
pause(0.01)
end
xlabel('时间/t')
ylabel('电场幅度/E')
title('位置z=1-200')
一点疑问
在学习FDTD和PML后,以及这次模拟后,我发现我没用PML,我还是搞不懂为啥很多模拟要加PML,无论对三维、二维还是一维,指定一块区域后根本不用加PML层就可以模拟,而且也没有感觉到有什么干扰,完全可以当作无限大空间内的一块有限的空间模拟。期望接下来的学习可以解答……