登 录
註 冊
论坛
微波仿真网
注册
登录论坛可查看更多信息
微波仿真论坛
>
时域有限差分法 FDTD
>
恳请各位不吝赐教 二维fdtd的程序解读
发帖
回复
730
阅读
0
回复
[
求助
]
恳请各位不吝赐教 二维fdtd的程序解读
离线
寂寞守望者
UID :87816
注册:
2012-01-10
登录:
2022-01-12
发帖:
56
等级:
仿真一级
0楼
发表于: 2012-05-03 18:37:34
本人刚刚接触fdtd,正在读这个程序,有些不明白的地方请大家指教
%J7mZB9
% 1.初始化
]t)M}^w
T=500; % 迭代次数
Us,[x Q
Nx=150;
8 QF?W{NK
Ny=150;
;-pvc<_c<
npml=8; %PML的网格数量
Lzx$"R-
e[mhbFf-
c0=3*10^8;
:ZS8Zm"
f=1.5*10^(9);
^r*%BUU9]%
lambda=c0/f;
3D{4vMmX
nFnF_
wl=10;
1L8ULxi_?]
dx=lambda/wl; %取lamda/10的精度
Nu/Qa:H_{
dy=lambda/wl;
ll\^9 4]Q
pi=3.14159;
m}[~A@qD
FJ~_0E#L
dt=dx/(2*c0); %由于是二维情况同,取t=dx/2c0
Z,!Xxv;4
t0=20*dt; %为高斯脉冲的仿真作准备
t!~YO'<dS
=8p+-8M[d
epsz=1/(4*9*pi*10^9);
8='21@wrN
epsilon=1;
KM}4^Qc
sigma=0;
WG/J4H`Od
iWM7,=1+
ic=75; % 源的X位置
hYc{9$
jc=75; % 源的Y位置
>Y-TwDaE
}<ONx g6Kb
for i=1:Nx+1;
2~WFLD
for j=1:Ny+1;
8@yc}~8 *
dz(i,j)=0; %z方向电位移
OI_/7@L
ez(i,j)=0; % z方向电场
$Cd ;0gdv
hx(i,j)=0; % x方向磁场
&rztC]jF
hy(i,j)=0; % y方向磁场
P!+nZXo
ihx(i,j)=0;
(GEi<\16[
ihy(i,j)=0;
?h )3S7
iz(i,j)=0; % z方向求和中间参量
=j+oKGkoCa
end;
.(7C)P{.0
end;
9LO.8Jy
;%7XU~<a
for i=2:Nx;
]9&q'7*L
for j=2:Ny;
O {6gNR,*
ga(i,j)=1;
0*Km}?;0-
end;
cbCE $
end;
gSr}p$N
%PML参数的设置
6!%d-Z7)
for i=1:Nx;
s i"`
gi2(i)=1;
%Mng8r
gi3(i)=1;
=HV-8C]
fi1(i)=0;
n22hVw
fi2(i)=1;
0uIV6LI
fi3(i)=1;
w$lfR,
end
)n}]]^Sc
&O6;nJEI
for j=1:Ny;
2Cd --W+=
gj2(j)=1;
9MB\z"b?A
gj3(j)=1;
I0w@S7
fj1(j)=0;
AqbT{,3yW
fj2(j)=1;
dD^_^'i
fj3(j)=1;
AIl$qPKj&
end
mE^tzyh
Q;XHHk
for i=1:npml+1; %设置PML层中的参数
`+hy#1]
xnum=npml+1-i;
{nPkb5xbW
xn=0.333*(xnum/npml)^3; %这里的0.333并不是严格的计算,而是经验值
52MCU l
gi2(i)=1.0/(1+xn);
o%+A<Ri
gi2(Nx-1-i)=1/(1+xn);
g)9JO6]
gi3(i)=(1-xn)/(1+xn);
ECS<l*i57&
gi3(Nx-1-i)=(1-xn)/(1+xn);
+# RlX3P
n`m_S
xn=0.25*((xnum-0.5)/npml)^3; %这里的0.25和0.333也是一个道理
AZy~Q9Kc
fi1(i)=xn;
d@6:|auO
fi1(Nx-2-i)=xn;
a\&(Ua
fi2(i)=1.0/(1+xn);
5G'&9{oB
fi2(Nx-2-i)=1/(1+xn);
=EcIXDzC>
fi3(i)=(1-xn)/(1+xn);
c[h'`KXJf-
fi3(Nx-2-i)=(1-xn)/(1+xn);
c. TB8Ol
end
! [|vx!p
o7Cnyy#:
for i=1:npml+1;
VX!Y`y^a
xnum=npml+1-i;
-?aw^du
xn=0.33*(xnum/npml)^3;
QypiF*fSU
gj2(i)=1.0/(1+xn);
,dZ#,<
gj2(Ny-1-i)=1/(1+xn);
N{^>MRK=5
gj3(i)=(1-xn)/(1+xn);
y4/>Ol]
gj3(Ny-1-i)=(1-xn)/(1+xn);
W7*_ T]
O,=Q1*c,&
xn=0.25*((xnum-0.5)/npml)^3;
i|c`M/) h:
fj1(i)=xn;
c3zT(FgO>N
fj1(Ny-2-i)=xn;
/=muj9|+s
qX p,d
fj2(i)=1.0/(1+xn);
yL;o{ G
fj2(Ny-2-i)=1/(1+xn);
Fp5NRM*-!
fj3(i)=(1-xn)/(1+xn);
*>GIk`!wM
fj3(Ny-2-i)=(1-xn)/(1+xn);
)&Kn(l)
end
tB ,.
S< EB&P
%2.迭代求解电场和磁场
mo|PrLV
uXQ7eXX
for t=1:T;
5mna7BCEb
V#zhGAMy.
pulse=sin(2*pi*f*t*dt); % 正弦波源
`rz`3:ZH
%pulse=exp(-4*pi*(t*dt-t0)^2/(2/f)^2);%高斯脉冲情况
q!hy;K`Jd
XWUvP
ez(ic,jc)=ez(ic,jc)+pulse; %软源,就是为了防止反射做的一个处理
hsHVX[<5`
vn0cKz@
for i=2:Nx; % 为了使每个电场周围都有磁场进行数组下标处理
Siz!/O!'
for j=2:Ny;
piYws<Q
ez(i,j)=gi3(i)*gj3(j)*ez(i,j)+gi2(i)*gj2(j)*0.5*(hy(i,j)-hy(i-1,j)-hx(i,j)+hx(i,j-1)); %
}_a+X
end;
"rjv5*z^&
end; % 电场循环结束
vJTfo#C|
z;bH<cQ
' 1P=^
for i=1:Nx; % 为使每个磁场周围都有电场进行数组下标处理
HzD> -f
for j=1:Ny-1;
h;EwkbDQg>
curl_e=ez(i,j)-ez(i,j+1);
(:.Q\!aZ1
ihx(i,j)=ihx(i,j)+fi1(i)*curl_e;
{DEzuU
hx(i,j)=hx(i,j)+fj2(j)*0.5*(curl_e+ihx(i,j));
4-]Do?
end;
28T\@zi
end; % 磁场HX循环结束
X(r)Z\
>9o,S3
for i=1:Nx-1; % 为了使每个磁场周围都有电场进行数组下标处理
P\22op_te-
for j=1:Ny;
?AV&@EX2C
curl_e=ez(i+1,j)-ez(i,j);
{t844La"
ihy(i,j)=ihy(i,j)+fj1(j)*curl_e; ..
:]B% >*;}
/<(*/P,>
未注册仅能浏览
部分内容
,查看
全部内容及附件
请先
登录
或
注册
共
条评分
发帖
回复