加载中…
个人资料
欧阳杼
欧阳杼 新浪个人认证
  • 博客等级:
  • 博客积分:0
  • 博客访问:2,738
  • 关注人气:638
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

二维FDTD算法的matlab程序

(2007-06-02 18:34:25)
标签:

fdtd

 这是二维的程序,上下两个平行板之间有两个长度为的d/3的挡板,位于L/2处。

function FDTDtwodimension(L,d,T)
%version1.0 caizhongheng 终端短路
%FDTDtwodimension(6,0.18,0.5e-9)
t0=3*T;
c=3e8;
u=4*pi*1e-7;
e=8.8541878e-12;
dz=T*c/10;
Nz=round(L/dz);
dt=dz/4/c;
dx=dz;
Nx=round(d/dx);
Ex=zeros(Nx,Nz+1);
Hy=zeros(Nx,Nz);
Ez=zeros(Nx+1,Nz);
Nt=4*Nz;


for n=0:Nt
      初始脉冲加边界条件
    t=n*dt;
    F=exp(-(t-t0).^2./T^2);
    Ex(1:Nx,1)=F;
    if t>2*t0
        Ex(1:Nx,1)=0;
    end
  终端短路
    Ex(1:Nx,Nz+1)=0;
   
  蛙跳格式
    for k=1:Nz
        for i=1:Nx
            Hy(i,k)=Hy(i,k)+dt./u.*((Ez(i+1,k)-Ez(i,k))./dx+(Ex(i,k)-Ex(i,k+1))./dz);
        end
    end
    for k=2:Nz-1
        for i=1:Nx
            Ex(i,k)=Ex(i,k)+dt./e.*(Hy(i,k-1)-(Hy(i,k)))./dz;
        end
    end
  挡板所处的边界条件
    Ex(1:round(Nx/3),round(Nz/2))=0;
    Ex(round(2*Nx/3):Nx,round(Nz/2))=0;
   
    for k=1:Nz
        for i=2:Nx
            Ez(i,k)=Ez(i,k)+dt./e.*(Hy(i,k)-Hy(i-1,k))./dx;
        end
    end
  上下平行板的边界条件 
    Ez(1,1:Nz)=0;
    Ez(Nx+1,1:Nz)=0;
   
    if mod(n,10)==0
        subplot(221);
        mesh(Ex);
        subplot(222);
        mesh(Ez);
        subplot(223);
        mesh(Hy);
        pause(0.2);
    end
end

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有