登 录
註 冊
论坛
微波仿真网
注册
登录论坛可查看更多信息
微波仿真论坛
>
时域有限差分法 FDTD
>
恳请各位不吝赐教 二维fdtd的程序解读
发帖
回复
729
阅读
0
回复
[
求助
]
恳请各位不吝赐教 二维fdtd的程序解读
离线
寂寞守望者
UID :87816
注册:
2012-01-10
登录:
2022-01-12
发帖:
56
等级:
仿真一级
0楼
发表于: 2012-05-03 18:37:34
本人刚刚接触fdtd,正在读这个程序,有些不明白的地方请大家指教
f)#rBAkt
% 1.初始化
|$+ xVi8
T=500; % 迭代次数
n>k 1D
Nx=150;
w gU2q|
Ny=150;
>1S39n5z.
npml=8; %PML的网格数量
}>$3B5}
wGhy"1g#
c0=3*10^8;
bBg=X}9
f=1.5*10^(9);
y1Op Z
lambda=c0/f;
Bm4fdf#A]
#Pr w2u
wl=10;
]gjB%R[.m
dx=lambda/wl; %取lamda/10的精度
8'|_O
dy=lambda/wl;
y^[?F>wB
pi=3.14159;
O0RV>Ml'&
hywy(b3
dt=dx/(2*c0); %由于是二维情况同,取t=dx/2c0
HVH <S
t0=20*dt; %为高斯脉冲的仿真作准备
|!hN!j*)
/ht-]Js$G
epsz=1/(4*9*pi*10^9);
NnTAKd8
epsilon=1;
A3eus
sigma=0;
B x-"<^<
Zg=jDPt}
ic=75; % 源的X位置
-F`uz,wZ
jc=75; % 源的Y位置
WWjc.A$
wrm ReT?
for i=1:Nx+1;
:F`"CR^,
for j=1:Ny+1;
\#7@"~<
dz(i,j)=0; %z方向电位移
_;'<}a
ez(i,j)=0; % z方向电场
qW 2'?B3<
hx(i,j)=0; % x方向磁场
*|Bt!
hy(i,j)=0; % y方向磁场
|f{(MMlj
ihx(i,j)=0;
,%d?gi"&
ihy(i,j)=0;
[DD#YL\P
iz(i,j)=0; % z方向求和中间参量
vR*p1Kq:
end;
" 3tk"#.#
end;
=g{Hs1W
Zonr/sA ~
for i=2:Nx;
nh*hw[Ord
for j=2:Ny;
^?R8>97_?
ga(i,j)=1;
+nz0ZQ9 a
end;
'dJ(x
end;
iCIU'yI
%PML参数的设置
*IQQsfL)
for i=1:Nx;
Lhmb= @
gi2(i)=1;
JIU8~D
gi3(i)=1;
HyC826~-rI
fi1(i)=0;
'mYUAVmSC#
fi2(i)=1;
7p_B?r
fi3(i)=1;
s`I]>e
end
1<F6{?,z
-jk-ve
for j=1:Ny;
OJT%?P%@{
gj2(j)=1;
;5&=I|xqe
gj3(j)=1;
|32uC3?o
fj1(j)=0;
&F~97F)A)
fj2(j)=1;
w)Z-, J
fj3(j)=1;
cI (}
end
UH`cWV Lpr
]S7>=S
for i=1:npml+1; %设置PML层中的参数
fb?YDM
xnum=npml+1-i;
FO{?Z%& ;
xn=0.333*(xnum/npml)^3; %这里的0.333并不是严格的计算,而是经验值
,;)_$%bHc
gi2(i)=1.0/(1+xn);
o2R&s@%0@B
gi2(Nx-1-i)=1/(1+xn);
IN?6~O p
gi3(i)=(1-xn)/(1+xn);
X?++I4\
gi3(Nx-1-i)=(1-xn)/(1+xn);
S<81r2LT
se*!OiOt
xn=0.25*((xnum-0.5)/npml)^3; %这里的0.25和0.333也是一个道理
J0FJ@@
fi1(i)=xn;
&Y jUoe
fi1(Nx-2-i)=xn;
IiM=Z=2
fi2(i)=1.0/(1+xn);
1 Szv4
fi2(Nx-2-i)=1/(1+xn);
Qb#iT}!p%
fi3(i)=(1-xn)/(1+xn);
1T0s UIY
fi3(Nx-2-i)=(1-xn)/(1+xn);
ZZrvl4h
end
,A[NcFdCB
-Ra-Ux
for i=1:npml+1;
mWTV)z57
xnum=npml+1-i;
)-^[;:B\k"
xn=0.33*(xnum/npml)^3;
:&J1#% t
gj2(i)=1.0/(1+xn);
irF+(&q]jh
gj2(Ny-1-i)=1/(1+xn);
JYrOE"!h
gj3(i)=(1-xn)/(1+xn);
cv"Bhql
gj3(Ny-1-i)=(1-xn)/(1+xn);
`]4tJJy$
Y*0j/91
xn=0.25*((xnum-0.5)/npml)^3;
?fX`z(Z
fj1(i)=xn;
b8&z~'ieR
fj1(Ny-2-i)=xn;
M.``o1b
A7R [~
fj2(i)=1.0/(1+xn);
?X@uR5?{
fj2(Ny-2-i)=1/(1+xn);
mbXW$E-&R2
fj3(i)=(1-xn)/(1+xn);
=)f5JwZPG
fj3(Ny-2-i)=(1-xn)/(1+xn);
e'2w-^7
end
GP0}I@>?
>!PCEw<i
%2.迭代求解电场和磁场
/)<Xoa
o#hFK'&~
for t=1:T;
51 "v`O+
;N^4R$Q.
pulse=sin(2*pi*f*t*dt); % 正弦波源
z =C<@ki`
%pulse=exp(-4*pi*(t*dt-t0)^2/(2/f)^2);%高斯脉冲情况
n!h952"
r#B{j$Rw
ez(ic,jc)=ez(ic,jc)+pulse; %软源,就是为了防止反射做的一个处理
9a]J Q
1AQ3<
for i=2:Nx; % 为了使每个电场周围都有磁场进行数组下标处理
tZygTvK/S
for j=2:Ny;
/>O.U?
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)); %
2`A\'SM'4
end;
:'Tq5kE
end; % 电场循环结束
C ett*jm_
glZjo
^%NjdZu DO
for i=1:Nx; % 为使每个磁场周围都有电场进行数组下标处理
Ws:+P~8
for j=1:Ny-1;
$|VD+[jSV
curl_e=ez(i,j)-ez(i,j+1);
UcWf O!}D
ihx(i,j)=ihx(i,j)+fi1(i)*curl_e;
Ygc.0VKMR
hx(i,j)=hx(i,j)+fj2(j)*0.5*(curl_e+ihx(i,j));
ne# %Gr
end;
?i$MinK
end; % 磁场HX循环结束
Sr+ &
2#@-t{\3-p
for i=1:Nx-1; % 为了使每个磁场周围都有电场进行数组下标处理
G\|P3j
for j=1:Ny;
22R ,
curl_e=ez(i+1,j)-ez(i,j);
wDKA1i%G
ihy(i,j)=ihy(i,j)+fj1(j)*curl_e; ..
$d Nmq
-SF50.[
未注册仅能浏览
部分内容
,查看
全部内容及附件
请先
登录
或
注册
共
条评分
发帖
回复