登 录
註 冊
论坛
微波仿真网
注册
登录论坛可查看更多信息
微波仿真论坛
>
时域有限差分法 FDTD
>
恳请各位不吝赐教 二维fdtd的程序解读
发帖
回复
727
阅读
0
回复
[
求助
]
恳请各位不吝赐教 二维fdtd的程序解读
离线
寂寞守望者
UID :87816
注册:
2012-01-10
登录:
2022-01-12
发帖:
56
等级:
仿真一级
0楼
发表于: 2012-05-03 18:37:34
本人刚刚接触fdtd,正在读这个程序,有些不明白的地方请大家指教
AhWc JD]
% 1.初始化
}}G`yfs}r
T=500; % 迭代次数
}Ox5,S}ra
Nx=150;
,=jwQG4wq
Ny=150;
[`2V!rU
npml=8; %PML的网格数量
rvouE:
=*>ri
c0=3*10^8;
8`Ih> Dc
f=1.5*10^(9);
y<|8OTT
lambda=c0/f;
*:}9(8d
{Dup k0'(
wl=10;
m - ]E|
dx=lambda/wl; %取lamda/10的精度
v)1@Ew=Y%
dy=lambda/wl;
Tmjcc(
pi=3.14159;
rK(TekU
{_C2c{
dt=dx/(2*c0); %由于是二维情况同,取t=dx/2c0
crTRfqF
t0=20*dt; %为高斯脉冲的仿真作准备
z>}H[0[#
+6-_9qRq
epsz=1/(4*9*pi*10^9);
LYhjI
epsilon=1;
\I"n~h^_
sigma=0;
4sMA'fG
yGj'0c::
ic=75; % 源的X位置
~)vq0]MRg
jc=75; % 源的Y位置
/fgy 07T
m?GBvL$
for i=1:Nx+1;
@?e+;Sx
for j=1:Ny+1;
@` 5P^H7
dz(i,j)=0; %z方向电位移
'3Ro`p{
ez(i,j)=0; % z方向电场
/#TtAkH
hx(i,j)=0; % x方向磁场
ecvQEK2L
hy(i,j)=0; % y方向磁场
V96:+r
ihx(i,j)=0;
dT?mMTKn+
ihy(i,j)=0;
7!F<Uf,V3
iz(i,j)=0; % z方向求和中间参量
t.X8c/,;g
end;
`cgyiJ
end;
DXyRNE<G[C
\ ]v>#VXr_
for i=2:Nx;
&1 t84p:^=
for j=2:Ny;
rJtpTV@.
ga(i,j)=1;
mH6\8I
end;
o 4P>t2'
end;
"d"6.ND
%PML参数的设置
o&-D[|E|
for i=1:Nx;
W<Ri(g-
gi2(i)=1;
pd^"MG
gi3(i)=1;
%^pm~ck!
fi1(i)=0;
;V v.$mI
fi2(i)=1;
D qu?mg;L
fi3(i)=1;
uSQRI9/ir2
end
l\tg.O~
vLI'Z)\
for j=1:Ny;
@5}(Y( @
gj2(j)=1;
CT{mzC8
gj3(j)=1;
\&BT#8ELG
fj1(j)=0;
T$!Pkdh
fj2(j)=1;
,)?!p_*@:
fj3(j)=1;
Iw;i ".
end
d RIu A)0s
yi.GD~69
for i=1:npml+1; %设置PML层中的参数
dj-/%MU
xnum=npml+1-i;
'u}OeS"f
xn=0.333*(xnum/npml)^3; %这里的0.333并不是严格的计算,而是经验值
*{x8@|K8
gi2(i)=1.0/(1+xn);
(! a;}V<7
gi2(Nx-1-i)=1/(1+xn);
9KCeKT>v
gi3(i)=(1-xn)/(1+xn);
tXfXuHa
gi3(Nx-1-i)=(1-xn)/(1+xn);
'"C& dia
i4Da 'Uk
xn=0.25*((xnum-0.5)/npml)^3; %这里的0.25和0.333也是一个道理
me@k~!e"z
fi1(i)=xn;
kltorlH
fi1(Nx-2-i)=xn;
.VXadgM
fi2(i)=1.0/(1+xn);
4LXC;gZ
fi2(Nx-2-i)=1/(1+xn);
s+0n0C
fi3(i)=(1-xn)/(1+xn);
%1\~OnT
fi3(Nx-2-i)=(1-xn)/(1+xn);
adY ,Nz
end
o#uhPUZ
=j^>sg]
for i=1:npml+1;
/JjSx/
xnum=npml+1-i;
,Jrm85oG
xn=0.33*(xnum/npml)^3;
br;~}GR_h
gj2(i)=1.0/(1+xn);
hm,H3pN
gj2(Ny-1-i)=1/(1+xn);
M.qE$
gj3(i)=(1-xn)/(1+xn);
#KUNZW
gj3(Ny-1-i)=(1-xn)/(1+xn);
3;?DKRIcX
O%s7 }bR3
xn=0.25*((xnum-0.5)/npml)^3;
z"\<GmvB
fj1(i)=xn;
N1fPutl$a
fj1(Ny-2-i)=xn;
<IBWA0A=8a
UX24*0`\~
fj2(i)=1.0/(1+xn);
Lo*vt42{4
fj2(Ny-2-i)=1/(1+xn);
+k;][VC[O
fj3(i)=(1-xn)/(1+xn);
7<0oK|~c#
fj3(Ny-2-i)=(1-xn)/(1+xn);
v`&>m'
end
\ lW*.<
p}]K0F!
%2.迭代求解电场和磁场
Lky T4HC8n
*JArR1J
for t=1:T;
Y>2oU`ly,
W4#E&8g%
pulse=sin(2*pi*f*t*dt); % 正弦波源
dnzZ\t>U
%pulse=exp(-4*pi*(t*dt-t0)^2/(2/f)^2);%高斯脉冲情况
"M}3T?0 O
sjy/[.4-
ez(ic,jc)=ez(ic,jc)+pulse; %软源,就是为了防止反射做的一个处理
^6@6BYf)
3w&Z:<
for i=2:Nx; % 为了使每个电场周围都有磁场进行数组下标处理
+!/pzoWpE
for j=2:Ny;
L'HO"EZFj
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)); %
* `3+x
end;
p'4ZcCW?f
end; % 电场循环结束
&8HJ4Vj2
"Wg5eML0
?>Bt|[p:s)
for i=1:Nx; % 为使每个磁场周围都有电场进行数组下标处理
B-p ].
for j=1:Ny-1;
~--b#o{
curl_e=ez(i,j)-ez(i,j+1);
"G!,gtA~
ihx(i,j)=ihx(i,j)+fi1(i)*curl_e;
(j&7`9<5
hx(i,j)=hx(i,j)+fj2(j)*0.5*(curl_e+ihx(i,j));
\*mKctpz]6
end;
#X"fm1
end; % 磁场HX循环结束
/ _Fi4wZ
SoHw9FtS
for i=1:Nx-1; % 为了使每个磁场周围都有电场进行数组下标处理
$C t(M)
for j=1:Ny;
^tL]QE?|
curl_e=ez(i+1,j)-ez(i,j);
+WE<S)z<
ihy(i,j)=ihy(i,j)+fj1(j)*curl_e; ..
D\Fu4Eg
,a3M*}Y~3
未注册仅能浏览
部分内容
,查看
全部内容及附件
请先
登录
或
注册
共
条评分
发帖
回复