登 录
註 冊
论坛
微波仿真网
注册
登录论坛可查看更多信息
微波仿真论坛
>
时域有限差分法 FDTD
>
为什么我的PML吸收边界不起作用呀!求高手 ..
发帖
回复
3225
阅读
3
回复
[
讨论
]
为什么我的PML吸收边界不起作用呀!求高手帮忙
离线
lanzhiyu
UID :3862
注册:
2007-07-15
登录:
2008-06-06
发帖:
8
等级:
旁观者
0楼
发表于: 2007-11-01 20:17:42
哪位高手看看我的二维FDTD-PML程序的吸收边界为什么不起作用呀
-z-yk~F
4]p#9`j
程序如下:
bnanTH9-
clear;
xw_)~Y%\
clc;
<Ist^h+o
pi=3.14159265;
W|zPV`
eps0=8.854e-12;
Qmo}esb'(
mu0=pi*4.0e-7;
E 11C@%
c0=3.0e8;
|sFd5X
f=2.0*10^9;
Dic|n@_Fy
bochang=c0/f; %波长
kF,ME5%
wl=10;
M?}:N_9<J
dx=bochang/wl; %网格大小
6`7bk35B
dy=dx;
EN/t5d
dt=dx/(2*c0);
Pn.DeoHme
nn=50;
=6=:OId
npml=8;
{5c?_U
ic=npml+nn/2; %波源位置
?Y8hy|`
jc=npml+nn/2;
< Mu`,Kv*
Re=0.0001;
Q_iN/F
p=3;
5|pF*8*
sigmamax=-log(Re)*(p+1)*sqrt(mu0/eps0)/2/dx/npml;
OX]P;#4tU
imax=nn+2*npml;
_&s pMf
jmax=nn+2*npml;
<,/7:n
hx=zeros(imax,jmax);
)wD/<7;
hy=zeros(imax,jmax);
1t^9.!$@y
ez=zeros(imax,jmax);
P,-5af*;
ezx=zeros(imax,jmax);
ln8NcAEx
ezy=zeros(imax,jmax);
BV7P_!vt
ezz=zeros(nn,nn);
&)||~
nt=200; %时间步数
LdNpb;*
for k=0:nt
srO>l ;Vf/
for j=2:jmax
ao .vB']T
for i=2:imax
"sDs[Lcq
if i>npml&j>npml&i<=nn+npml&j<=nn+npml
6~W@$SP,F
if i==ic&j==jc %或用平面波:if j==jc
lP]Y^Gz
ez(i,j)=sin(2*pi*f*k*dt);
-oUNK}>
else
OQ w O7Z
ez(i,j)=ez(i,j)+(dt/eps0)*((hy(i,j)-hy(i-1,j))/dx-(hx(i,j)-hx(i,j-1))/dy);
~$[fG}C.K
end
z9OpxW@Ou
end
|V{ Q
if i<=npml %左边PML
z8{-I@+`
if j<=npml|j>nn+npml %左边两角
C%]qK(9vvd
di=npml-i+1;
GGcODjY>
if j<=npml
>D~8iuy]8.
dj=npml-j+1;
b30Jr2[
else
UyV5A
dj=j-nn-npml;
X?< L<:.
end
f$-n%7
sigmaX=sigmamax*(di/npml)^p;
(&v|,.c^)1
sigmaY=sigmamax*(dj/npml)^p;
tH *|
ezx(i,j)=ezx(i,j)*exp(-sigmaX*dt/eps0)+(1-exp(-sigmaX*dt/eps0))*(hy(i,j)-hy(i-1,j))/sigmaX/dx;
d-tg^Ot#
ezy(i,j)=ezy(i,j)*exp(-sigmaY*dt/eps0)-(1-exp(-sigmaY*dt/eps0))*(hy(i,j)-hy(i,j-1))/sigmaY/dy;
HOPy&Fp
ez(i,j)=ezx(i,j)+ezy(i,j);
_TsN%)m
else %左边非角点
,5}w]6bCr
di=npml-i+1;
pO:]3qv
sigmaX=sigmamax*(di/npml)^p;
Qf~$9?z
sigmaY=0.;
ceCO *m~
ezx(i,j)=ezx(i,j)*exp(-sigmaX*dt/eps0)+(1-exp(-sigmaX*dt/eps0))*(hy(i,j)-hy(i-1,j))/sigmaX/dx;
39P55B/o%
ezy(i,j)=ezy(i,j)-dt*(hy(i,j)-hy(i,j-1))/dy/eps0;
fvi0gE@bd
ez(i,j)=ezx(i,j)+ezy(i,j);
U\j g X
end
k[a<KbS
elseif i>nn+npml %右边PML
e?+-~]0
if j<=npml|j>nn+npml %右边两角
tAJ}36aG
di=i-nn-npml;
y6[ le*T
if j<=npml
4`: POu&
dj=npml-j+1;
=l*xM/S
else
Y0EX{oxt1
dj=j-nn-npml;
GQA\JYw|oY
end
qsbo"29
sigmaX=sigmamax*(di/npml)^p;
3^y<Db
sigmaY=sigmamax*(dj/npml)^p;
Mb\(52`)Q
ezx(i,j)=ezx(i,j)*exp(-sigmaX*dt/eps0)+(1-exp(-sigmaX*dt/eps0))*(hy(i,j)-hy(i-1,j))/sigmaX/dx;
Z~-N'Lt{
ezy(i,j)=ezy(i,j)*exp(-sigmaY*dt/eps0)-(1-exp(-sigmaY*dt/eps0))*(hy(i,j)-hy(i,j-1))/sigmaY/dy;
em0Y' J
%ez(i,j)=ezx(i,j)+ezy(i,j);
SvvNk
else %右边非角点
ty[p5%L1
di=i-nn-npml;
'OP0#`6`
sigmaX=sigmamax*(di/npml)^4;
A]i!131{w|
sigmaY=0.;
u|AMqS
ezx(i,j)=ezx(i,j)*exp(-sigmaX*dt/eps0)+(1-exp(-sigmaX*dt/eps0))*(hy(i,j)-hy(i-1,j))/sigmaX/dx;
;sAGTq
ezy(i,j)=ezy(i,j)-dt*(hy(i,j)-hy(i,j-1))/dy/eps0;
[Eu)~J*
%ez(i,j)=ezx(i,j)+ezy(i,j);
%3#C0%{x
end
~@xPoD&
end
T=M##`jP%
if j<=npml %上边PML
X~"p]V_
if i>npml&i<=nn+npml %上边非角点
zSfUM.fM
dj=npml-j+1;
h\3-8m
sigmaY=sigmamax*(dj/npml)^p;
!-3;Qj}V
sigmaX=0.;
DQXcf*R
ezx(i,j)=ezx(i,j)+dt*(hy(i,j)-hy(i-1,j))/dx/eps0;
.f-=gZ* *
ezy(i,j)=ezy(i,j)*exp(-sigmaY*dt/eps0)-(1-exp(-sigmaY*dt/eps0))*(hy(i,j)-hy(i,j-1))/sigmaY/dy;
il!B={
%ez(i,j)=ezx(i,j)+ezy(i,j);
.RFH@''
end
v3M$UiN,:
elseif j>nn+npml %下边PML
rQ]JM
if i>=npml&i<nn+npml %下边非角点
vGh>1U:
dj=j-nn-npml;
.o/uA
sigmaY=sigmamax*(dj/npml)^p;
=MJB:
sigmaX=0.;
- PSgBH[
ezx(i,j)=ezx(i,j)+dt*(hy(i,j)-hy(i-1,j))/dx/eps0;
_FE uQ9E
ezy(i,j)=ezy(i,j)*exp(-sigmaY*dt/eps0)-(1-exp(-sigmaY*dt/eps0))*(hy(i,j)-hy(i,j-1))/sigmaY/dy;
WR"1d\m:
%ez(i,j)=ezx(i,j)+ezy(i,j);
`\\s%}vZ*T
end
ug ;Xoh5w
end
IHd W!q
end
p!uB8F
end
Tjrb.+cua
%以下为磁场循环
y'4Qt.1ukN
for j=1:jmax-1
m26YAcip}
for i=1:imax-1
QdQ1+*/+U
if i>npml&j>npml&i<=nn+npml&j<=nn+npml
c};%VB
hx(i,j)=hx(i,j)-(dt/mu0)*(ez(i,j+1)-ez(i,j))/dy;
Fc \]*
hy(i,j)=hy(i,j)+(dt/mu0)*(ez(i+1,j)-ez(i,j))/dx;
~KkC089D
end
U1)Zh-aR
if i<=npml %左边PML
Gvh"3|u?z
if j<=npml|j>nn+npml %左边两角
>jIn&s!}
di=npml-i+0.5;
{CBb^BP
if j<=npml
X"_ ^^d-
dj=npml-j+0.5;
Mkk.8AjC|
else
<Ohi+a%6
dj=j-nn-npml+1.5;
kVKAG\F
end
_ ~\} fY
sigmaX=sigmamax*(di/npml)^p;
!Pnjr T
sigmaMx=sigmaX*mu0/eps0;
kln)7SzPuk
sigmaY=sigmamax*(dj/npml)^p;
-wg}X-'z0
sigmaMy=sigmaY*mu0/eps0;
Rb:<?&7ZzN
hx(i,j)=hx(i,j)*exp(-sigmaMy*dt/mu0)-(1-exp(-sigmaMy*dt/mu0))*((ezx(i,j+1)+ezy(i,j+1))-(ezx(i,j)+ezy(i,j)))/sigmaMy/dy;
W~D_+[P|_
hy(i,j)=hy(i,j)*exp(-sigmaMx*dt/mu0)+(1-exp(-sigmaMx*dt/mu0))*((ezx(i+1,j)+ezy(i+1,j))-(ezx(i,j)+ezy(i,j)))/sigmaMx/dx;
`kQosQV
else %左边非角点
sr&W+4T
di=npml-i+0.5;
1eshuL
sigmaX=sigmamax*(di/npml)^p;
0D@ $
sigmaMx=sigmaX*mu0/eps0;
w@cW`PlF
sigmaMy=0.;
`=#jWZ.8m
hx(i,j)=hx(i,j)-dt*(ez(i,j+1)-ez(i,j))/dy/mu0;
x:!s+q` s
hy(i,j)=hy(i,j)*exp(-sigmaMx*dt/mu0)+(1-exp(-sigmaMx*dt/mu0))*((ezx(i+1,j)+ezy(i+1,j))-(ezx(i,j)+ezy(i,j)))/sigmaMx/dx;
-mRgB"8
end
VlA]A,P}i
elseif i>nn+npml %右边PML
$>O~7Nfst7
if j<=npml|j>nn+npml %右边两角
H~Vf;k>
di=i-nn-npml+1.5;
Y01!D"{\
if j<=npml
L98T!5)
dj=npml-j+0.5;
R3|4|JlGR
else
;2&"
dj=j-nn-npml+1.5;
U-fxlg|-C
end
p2t04p!
sigmaX=sigmamax*(di/npml)^p;
=%IyR
sigmaMx=sigmaX*mu0/eps0;
*OFG3 uM
sigmaY=sigmamax*(dj/npml)^p;
fpo{`;&F
sigmaMy=sigmaY*mu0/eps0;
msfE;
hx(i,j)=hx(i,j)*exp(-sigmaMy*dt/mu0)-(1-exp(-sigmaMy*dt/mu0))*((ezx(i,j+1)+ezy(i,j+1))-(ezx(i,j)+ezy(i,j)))/sigmaMy/dy;
p5or"tK
hy(i,j)=hy(i,j)*exp(-sigmaMx*dt/mu0)+(1-exp(-sigmaMx*dt/mu0))*((ezx(i+1,j)+ezy(i+1,j))-(ezx(i,j)+ezy(i,j)))/sigmaMx/dx;
b- t
else %右边非角点
0`c{9gY.
di=i-nn-npml+1.5;
s[0`
sigmaX=sigmamax*(di/npml)^p;
r W[;3yMf
sigmaMx=sigmaX*mu0/eps0;
q: FhuOP
sigmaMy=0.;
%ZWt 45A
hx(i,j)=hx(i,j)-dt*(ez(i,j+1)-ez(i,j))/dy/mu0;
wv{ Qx^
hy(i,j)=hy(i,j)*exp(-sigmaMx*dt/mu0)+(1-exp(-sigmaMx*dt/mu0))*((ezx(i+1,j)+ezy(i+1,j))-(ezx(i,j)+ezy(i,j)))/sigmaMx/dx;
Pm/i,T6&\
end
o|z@h][(l(
end
^OWG9`p+
if j<=npml %上边PML
4l%W]'
if i>npml&i<=nn+npml %上边非角点
TK\3mrEI
dj=npml-j+0.5;
\b(&-=(
sigmaY=sigmamax*(dj/npml)^p;
x$BNFb%I1
sigmaMy=sigmaY*mu0/eps0;
T pF[-fO
sigmaMx=0.;
r \ft{Z<P
hx(i,j)=hx(i,j)*exp(-sigmaMy*dt/mu0)-(1-exp(-sigmaMy*dt/mu0))*((ezx(i,j+1)+ezy(i,j+1))-(ezx(i, ..
d:K\W[$Bz
*qO)MpG{
未注册仅能浏览
部分内容
,查看
全部内容及附件
请先
登录
或
注册
共
条评分
离线
hunterr
UID :9921
注册:
2008-03-25
登录:
2008-04-05
发帖:
4
等级:
旁观者
1楼
发表于: 2008-04-04 11:21:01
sigmaMx
~vDa2D<9%
sigmaMy要随着sigmax sigmay变化 而不是sigmaMAX
z#&1>
PML吸收边界角点要考虑
] hK}ASC
共
条评分
离线
ansonjimli
UID :12
注册:
2006-10-04
登录:
2020-07-23
发帖:
353
等级:
禁止发言
2楼
发表于: 2008-04-05 16:55:15
用户被禁言,该主题自动屏蔽!
共
条评分
离线
runner
UID :3922
注册:
2007-07-17
登录:
2011-06-08
发帖:
67
等级:
仿真一级
3楼
发表于: 2010-05-22 11:52:15
本来想考到机子上试运行一下,结果每一行后面都有乱码,受不了
共
条评分
发帖
回复