登 录
註 冊
论坛
微波仿真网
注册
登录论坛可查看更多信息
微波仿真论坛
>
时域有限差分法 FDTD
>
发一个我自己在matlab下编写的高斯制fdtd+pml程 ..
发帖
回复
1
2
3
4
8731
阅读
30
回复
[
资料共享
]
发一个我自己在matlab下编写的高斯制fdtd+pml程序代码
离线
fz923
UID :18775
注册:
2008-10-08
登录:
2010-03-05
发帖:
59
等级:
仿真一级
0楼
发表于: 2008-10-28 11:04:35
— 本帖被 gwzhao 执行加亮操作(2008-10-28) —
前段时间一直在论坛里面向大家求助有关于高斯制下完全匹配层的差分公式的问题,在大家的热心帮助下,现在我基本上在高斯制下实现了同国际制下同等的吸收效果,这里把我所用的控制方程和程序代码传上来回馈论坛中各位热心坛友的帮助!由于我的编程思路不是很规范,所以在吸收效果上与理论上的完全匹配层吸收效果还有差距,但是已经基本达到了我的预期目的,我在这里也附上几张效果图。目前存在的问题是角点的反射比较严重,也恳请有熟悉这方面的编程高手帮我看看,该怎么改动才能取掉角点的反射,实现更好的吸收。请多多指教!!
mwutv8?
程序代码如下:
TVF:z_M9
% 二维FDTD TE波仿真
'cqY-64CJZ
clear all;
26}fB
% 定义常数
:_|Xr'n`A
pi=3.1415;
! u@JH`
c=3.0e10; %高斯制下光速
y@(EGfI
f=1.0e15; %频率
wf_ $#.;m
lambda=c/f; %波长
pJJOy
nmax=400; %时间步数
.% +anVXS
del_s=lambda/20; %每最小波长20个采样点
h_Ssm{C\
del_t=0.5*del_s/c; %迭代时间步长
'p[*2J"K4
n=182; %真空区域网格数
8 ,W*)Q
np=9; %pml层数
%\L{Ud%7
N1=n+2*np; %总网格数
J"-/ok(<@
N=N1+1; %采样点数
ITy/h]0
M=4; %导电率渐变指数
XAN.Plk
sigma_max=(M+1)/1.50/pi/del_s;%最大导电率
@RZbo@{~
rZ&li/Z
% TE波的分量初始化
vdh[%T,&
tic;
@&x'.2[nv
figure(1);
DzIV5FG
axis([0 N 0 N -0.5 0.5]);
2sj: &][R
Ex=zeros(N1,N); %x方向为横向,采样点为网格的横向边,故行数+1
JS/~6'uB
Ey=zeros(N,N1); %y方向为纵向,采样点为网格的纵向边,故列数+1
mQ9y{}t=4
Bz=zeros(N1,N1); %矩阵行为纵向网格数,矩阵列为横向网格数,循环中用j表示行数,i表示列数
Pk;1q?tGw
Bzx=zeros(N1,N1);
w"O{@2B3:H
Bzy=zeros(N1,N1);
FX!Qd&kl1
Bzxx=zeros(nmax,2);
{v"Y!/ [z
A2!pbeG
%进入电磁场迭代计算
26p_fKY
for tt=1:nmax
<'4 8mip
for i=1:N1
a ?\:,5=
if i>=np+1&&i<=N1-np
D`fIw` _
di=0;
i91k0q*di
elseif i<=np
{e1sq^>|
di=np-i+0.5;
l.(|&