登 录
註 冊
论坛
微波仿真网
注册
登录论坛可查看更多信息
微波仿真论坛
>
时域有限差分法 FDTD
>
二维pml差分离散格式的几个问题?
发帖
回复
786
阅读
1
回复
[
求助
]
二维pml差分离散格式的几个问题?
离线
wjdwin
UID :76973
注册:
2011-05-08
登录:
2015-11-12
发帖:
29
等级:
仿真新人
0楼
发表于: 2011-06-02 16:05:41
这是论坛里下载的程序,我对其中电场的计算步骤不是很理解,%%%%%%%%%%%%%%%%%%%%%%%%计算电场%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
:R-_EY$k6
%%%%%%%%%%%%%% ex%%%%%%%%%%%%%%%%%%
2dyS_2u
for ki=1:(ke+2*kp)
5|jsv)M+
for kj=(kp+1):(ke+kp+1)
-O^R~Q_`w
ex(ki,kj)=ex(ki,kj)+0.5*(hz(ki,kj)-hz(ki,kj-1));
$ {h1(ec8
end
y;if+
end 计算电场时ex(ki,kj)=ex(ki,kj)+0.5*(hz(ki,kj)-hz(ki,kj-1));左边公式得系数怎么是0.5呢?不应该是dt/(dy*e0)?,还有ki的范围不是从kp+1到kp+ke+1?
0clq}
&7XsyDo6
完整程序如下
q$;j1X^
clc,clear
ri`;
%%%% 二维FDTD TE wave pml吸收边界(指数差分)
Nz77" kC
ke=80;%元包数
U *:ju+)k
kp=8; %pml 层数
|@1M'
ex(ke+2*kp+1,ke+2*kp+1)=0;%实际电场217
EzeU-!|W
ey(ke+2*kp+1,ke+2*kp+1)=0;%实际电场217
GGs7]mhA
hz(ke+2*kp+1,ke+2*kp+1)=0;%实际磁场216,即两端为电场边界
2<T/N
hzx(ke+2*kp+1,ke+2*kp+1)=0;
4J1_rMfh
hzy(ke+2*kp+1,ke+2*kp+1)=0;
h"y~!NWn
kc=(ke+2*kp)/2;%激励源中心 hz(kc,kc)
.6LlkM6[g
e0=8.85*10^-12; % 真空介电常数
`-!kqJ
mu0=4*3.14159*10^-7; % 真空磁导率
^@C/2RX!
c0=1/sqrt(e0*mu0);% 真空中光速
bZ>dr{%%e
f=1e9; % 频率
SHYbQF2
lambda=c0/f; %波长
:4r{t?ytXw
dx=lambda/10;% dx
.k-t5d
dy=lambda/10;% dy
>B<#,G
dt=(dx/2)/c0; %dt
b/w5K2
'~9w<dSB!r
sigxm=0.33; % 电导率最大值
p9E/#U8A_
sigmxm=sigxm*(mu0/e0);%导磁率最大值
mKqXB\<
nn=3; %pml层中电导率.导磁率指数
^;9<7h[l
%%%%%%%% 开始主程序 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
}1DzWS-hh
T=0;
O I0N(V
%Nsteps=input('Nsteps=')%循环次数
~dC.,"
Nsteps=1000;
KO\-|#3y>
for n=1:Nsteps
Uc,J+j0F
T=T+1;
PfsUe,*
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
AHo }K\O?r
hz=hzx+hzy;
AQ?;UDqU
hz(kc,kc)=sin(2*pi*f*T*dt);
' <?=!&\D
%%%%%%%%%%%%%%%%%%%%%%%%计算电场%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
~>H,~</`
%%%%%%%%%%%%%% ex%%%%%%%%%%%%%%%%%%
)<f4F!?,A
for ki=1:(ke+2*kp)
k. NJ+
for kj=(kp+1):(ke+kp+1)
[4hi/60
ex(ki,kj)=ex(ki,kj)+0.5*(hz(ki,kj)-hz(ki,kj-1));
~"\WV4}`v
end
va:<W H
end
|[0Ijm2
%%%%%% 下边pml层电场ex%%%%%%%%%%%%%%%%%%%%%
!|l7b2NEz-
^?2zoS#iw
for ki=1:(ke+2*kp)
I)kc[/^j$
for kj=2:kp
.EReYZO
sigx=sigxm*((kp+1-kj)/kp)^nn;
"D'rsEh
ex(ki,kj)=ex(ki,kj)*exp(-sigx*dt/e0)+(1-exp(-sigx*dt/e0))/(dy*sigx)*sqrt(e0/mu0)*(hz(ki,kj)-hz(ki,kj-1));
g t9(5p
end
Lq62
end
)}7X4g6X
:-WNw n
%%%%%% 上边pml层电场ex%%%%%%%%%%%%%%%%%%%%%
ify48]
for ki=1:(ke+2*kp)
{<$tEj:
for kj=(ke+kp+2):(ke+2*kp)
}H<Z`3_U%
sigx=sigxm*((kj-ke-kp-1)/kp)^nn;
ZWni5uF-c
ex(ki,kj)=ex(ki,kj)*exp(-sigx*dt/e0)+(1-exp(-sigx*dt/e0))/(dy*sigx)*sqrt(e0/mu0)*(hz(ki,kj)-hz(ki,kj-1));
D~bx'Wr+
end
Ai"MJ6)
end
|@~_&g
A0Q`Aqs
%%%%%%%%%%%%%% ey%%%%%%%%%%%%%%%%%%
I4|"Ztw
for ki=(kp+1):(ke+kp+1)
\*&?o51!e
for kj=1:(ke+2*kp)
Eyz.^)r
ey(ki,kj)=ey(ki,kj)-0.5*(hz(ki,kj)-hz(ki-1,kj));
'"+Gn52#
end
`-e9#diQe
end
!Eg2#a ?
%%%%%%%%%%%%%%%左边pml层中ey%%%%%%%%%%%%%%%%%%%
@u`W(Ow
for ki=2:kp
5NC77}^.
for kj=1:(ke+2*kp)
6oq5CD oq
sigx=sigxm*((kp+1-ki)/kp)^nn;
!RPE-S
ey(ki,kj)=ey(ki,kj)*exp(-sigx*dt/e0)-(1-exp(-sigx*dt/e0))/(dx*sigx)*sqrt(e0/mu0)*(hz(ki,kj)-hz(ki-1,kj));
PhPe7^
end
,zuS)?
end
?6\N&MTF
%%%%%% 右边pml层电场ey%%%%%%%%%%%%%%%%%%%%%
xkRS?Q g
for ki=(ke+kp+2):(ke+2*kp)
4x<H=CJC
for kj=1:(ke+2*kp)
KLW>O_+
sigx=sigxm*((ki-ke-kp-1)/kp)^nn;
Y<jX[ET!
ey(ki,kj)=ey(ki,kj)*exp(-sigx*dt/e0)-(1-exp(-sigx*dt/e0))/(dx*sigx)*sqrt(e0/mu0)*(hz(ki,kj)-hz(ki-1,kj));
"iGQ1#6|d
end
+!W:gA
end
T`MM<+^G
Qv`: E
%%%%%%%%%%%%%%%电场循环结束%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@lX%Fix9
q7rb3d
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
lXF7)H&T
%%%%%%%%%%%%%%%磁场循环
k<P`
%%%%%%%%%%%%%%下边pml中hzy,含sigmy
c|(J%@B)
for ki=1:(ke+2*kp)
HI{h>g T
for kj=1:kp
}30Sb&"
sigmx=sigmxm*((kp-kj+0.5)/kp)^nn;
t%G.i@{pkp
hzy(ki,kj)=hzy(ki,kj)*exp(-sigmx*dt/mu0)+(1-exp(-sigmx*dt/mu0))/(dx*sigmx)*sqrt(mu0/e0)*(ex(ki,kj+1)-ex(ki,kj));
?A3u2-
end
$P#x>#+[A
end
$f _C~O
%%%%中间hzy(不含sigmy)
Sa%%3_&
for ki=1:(ke+2*kp)
"]uPke@
for kj=(kp+1):(kp+ke)
IdMwpru(
hzy(ki,kj)=hzy(ki,kj)+0.5*(ex(ki,kj+1)-ex(ki,kj));
:?j=MV
end
4x&Dz0[[S
end
mr/?w0(C
%%%%%%%%%%%%%%%pml磁场%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
g4Q' Fub+I
)-ojm$
%%%%%%%%%%%%%%上边pml中hzy,含sigmx
Tr s2M+r)
for ki=1:(ke+2*kp)
"O-X*>?f
for kj=(kp+ke+1):(ke+2*kp)
J<0d"'
sigmx=sigmxm*((kj-kp-ke-0.5)/kp)^nn;
oc]:Ty
hzy(ki,kj)=hzy(ki,kj)*exp(-sigmx*dt/mu0)+(1-exp(-sigmx*dt/mu0))/(dx*sigmx)*sqrt(mu0/e0)*(ex(ki,kj+1)-ex(ki,kj));
xJAQ'ANr
end
O$;#GpR
end
10h;N[
Rnoz[1y?0
%%%%%%%%%%%%%%%左边pml中hzx,含sigmx
M>|ZBEK
for ki=1:kp
$U.|
for kj=1:(ke+2*kp)
=+UtAf<n
sigmx=sigmxm*((kp-ki+0.5)/kp)^nn;
G3`9'-2q@c
hzx(ki,kj)=hzx(ki,kj)*exp(-sigmx*dt/mu0)-(1-exp(-sigmx*dt/mu0))/(dx*sigmx)*sqrt(mu0/e0)*(ey(ki+1,kj)-ey(ki,kj));
)/vom6y*
end
,*dLE
end
G[JWG
%%%%中间hzx(不含sigmx)
k\qFWFR
for ki=(kp+1):(kp+ke)
|/H?\]7
for kj=1:(ke+2*kp)
5jso)`IL
hzx(ki,kj)=hzx(ki,kj)-0.5*(ey(ki+1,kj)-ey(ki,kj));
_WvVF*Q"k
end
KO7&