登 录
註 冊
论坛
微波仿真网
注册
登录论坛可查看更多信息
微波仿真论坛
>
时域有限差分法 FDTD
>
为什么我的PML吸收边界不起作用呀!求高手 ..
发帖
回复
3226
阅读
3
回复
[
讨论
]
为什么我的PML吸收边界不起作用呀!求高手帮忙
离线
lanzhiyu
UID :3862
注册:
2007-07-15
登录:
2008-06-06
发帖:
8
等级:
旁观者
0楼
发表于: 2007-11-01 20:17:42
哪位高手看看我的二维FDTD-PML程序的吸收边界为什么不起作用呀
a([8r- zP
f47dB_{5f.
程序如下:
Ch73=V
clear;
<jG[ z69)
clc;
|"YE_aYu
pi=3.14159265;
0}N"L ml
eps0=8.854e-12;
@bZ,)R
mu0=pi*4.0e-7;
$Z<x r
c0=3.0e8;
*+_+ZDU
f=2.0*10^9;
f0+vk'Z
bochang=c0/f; %波长
P.- `[
wl=10;
uLSuY}K0
dx=bochang/wl; %网格大小
0A')zKik
dy=dx;
W{fNZb'
dt=dx/(2*c0);
^y[- e9O|
nn=50;
:*MR$Jf
npml=8;
6@FGt3y
ic=npml+nn/2; %波源位置
iC~ll!FA!
jc=npml+nn/2;
U&0 RQ:B
Re=0.0001;
aole`PD,l
p=3;
T l8`3`e
sigmamax=-log(Re)*(p+1)*sqrt(mu0/eps0)/2/dx/npml;
UdcrX`^.
imax=nn+2*npml;
l<:\w.Gl
jmax=nn+2*npml;
q_Z6s5O
hx=zeros(imax,jmax);
:ka^ztXG
hy=zeros(imax,jmax);
y#i` i
ez=zeros(imax,jmax);
J$i.^|hE/
ezx=zeros(imax,jmax);
{!^0j{T
ezy=zeros(imax,jmax);
\`R8s_S
ezz=zeros(nn,nn);
AA0\C_W0p
nt=200; %时间步数
{_UOS8j7
for k=0:nt
.+&M,% x
for j=2:jmax
Yb4%W-5
for i=2:imax
sBLOrbo
if i>npml&j>npml&i<=nn+npml&j<=nn+npml
r0q?e`nsA
if i==ic&j==jc %或用平面波:if j==jc
1u~a*lO}
ez(i,j)=sin(2*pi*f*k*dt);
+aN"*//i
else
v\D.j4%ij
ez(i,j)=ez(i,j)+(dt/eps0)*((hy(i,j)-hy(i-1,j))/dx-(hx(i,j)-hx(i,j-1))/dy);
! =*k+gpF
end
Y|E rVf4
end
/6:qmh2
if i<=npml %左边PML
C4)m4r%
if j<=npml|j>nn+npml %左边两角
RO[6PlrRN
di=npml-i+1;
P DwBSj
if j<=npml
!Y10UmMu
dj=npml-j+1;
'<xV]k|v
else
#wp~lW9!s9
dj=j-nn-npml;
yiMqe^zy
end
^w_\D?
sigmaX=sigmamax*(di/npml)^p;
#U.6HBuQa
sigmaY=sigmamax*(dj/npml)^p;
+mC?.B2D
ezx(i,j)=ezx(i,j)*exp(-sigmaX*dt/eps0)+(1-exp(-sigmaX*dt/eps0))*(hy(i,j)-hy(i-1,j))/sigmaX/dx;
rp=Y }
ezy(i,j)=ezy(i,j)*exp(-sigmaY*dt/eps0)-(1-exp(-sigmaY*dt/eps0))*(hy(i,j)-hy(i,j-1))/sigmaY/dy;
?{\h`+A
ez(i,j)=ezx(i,j)+ezy(i,j);
}WHq?
else %左边非角点
)j. .)o
di=npml-i+1;
i?f;C_w
sigmaX=sigmamax*(di/npml)^p;
~>XqR/v
sigmaY=0.;
L| ;WE=
ezx(i,j)=ezx(i,j)*exp(-sigmaX*dt/eps0)+(1-exp(-sigmaX*dt/eps0))*(hy(i,j)-hy(i-1,j))/sigmaX/dx;
bWJ&SR>
ezy(i,j)=ezy(i,j)-dt*(hy(i,j)-hy(i,j-1))/dy/eps0;
!o\e/HGc!
ez(i,j)=ezx(i,j)+ezy(i,j);
q^h/64F
end
%:Z_~7ZR
elseif i>nn+npml %右边PML
u>/Jb+
if j<=npml|j>nn+npml %右边两角
1}~`g ED
di=i-nn-npml;
6pbtE]
if j<=npml
wH+| &C
dj=npml-j+1;
l OiZ2_2
else
-PTfsQk
dj=j-nn-npml;
^O,r8K{1n
end
KPA.5,ai
sigmaX=sigmamax*(di/npml)^p;
f dJ<(i]7W
sigmaY=sigmamax*(dj/npml)^p;
& l0LW,Bx
ezx(i,j)=ezx(i,j)*exp(-sigmaX*dt/eps0)+(1-exp(-sigmaX*dt/eps0))*(hy(i,j)-hy(i-1,j))/sigmaX/dx;
5,?^SK|'x
ezy(i,j)=ezy(i,j)*exp(-sigmaY*dt/eps0)-(1-exp(-sigmaY*dt/eps0))*(hy(i,j)-hy(i,j-1))/sigmaY/dy;
B7PdavO#
%ez(i,j)=ezx(i,j)+ezy(i,j);
hGRHuJ
else %右边非角点
EAlLxXDDh
di=i-nn-npml;
slaH 2}$xR
sigmaX=sigmamax*(di/npml)^4;
ij?Ww'p9>
sigmaY=0.;
a3L-q>h
ezx(i,j)=ezx(i,j)*exp(-sigmaX*dt/eps0)+(1-exp(-sigmaX*dt/eps0))*(hy(i,j)-hy(i-1,j))/sigmaX/dx;
}6gum
ezy(i,j)=ezy(i,j)-dt*(hy(i,j)-hy(i,j-1))/dy/eps0;
o{3>n"\w3
%ez(i,j)=ezx(i,j)+ezy(i,j);
. f!dH
end
*W2o$_Hs
end
?hYWxWW
if j<=npml %上边PML
z fu)X!t^
if i>npml&i<=nn+npml %上边非角点
bu{dT8g'U
dj=npml-j+1;
V=<AI.Z:w
sigmaY=sigmamax*(dj/npml)^p;
6G{ Q@
sigmaX=0.;
mJYD"WgY
ezx(i,j)=ezx(i,j)+dt*(hy(i,j)-hy(i-1,j))/dx/eps0;
9 dK`
ezy(i,j)=ezy(i,j)*exp(-sigmaY*dt/eps0)-(1-exp(-sigmaY*dt/eps0))*(hy(i,j)-hy(i,j-1))/sigmaY/dy;
+G)a+r'0Q
%ez(i,j)=ezx(i,j)+ezy(i,j);
.-)kIFMi
end
:QC |N@C
elseif j>nn+npml %下边PML
gBOF#"-
if i>=npml&i<nn+npml %下边非角点
gux?P2f
dj=j-nn-npml;
?C']R(fQ\
sigmaY=sigmamax*(dj/npml)^p;
+'wO:E1( w
sigmaX=0.;
'V\V=yc1
ezx(i,j)=ezx(i,j)+dt*(hy(i,j)-hy(i-1,j))/dx/eps0;
?in)kL
ezy(i,j)=ezy(i,j)*exp(-sigmaY*dt/eps0)-(1-exp(-sigmaY*dt/eps0))*(hy(i,j)-hy(i,j-1))/sigmaY/dy;
3Hi8=*
%ez(i,j)=ezx(i,j)+ezy(i,j);
HSVl$66
end
1u"#rC>7.4
end
bnJ4Edy
end
EI496bsRHm
end
\2CEEs'
%以下为磁场循环
] !n3j=*
for j=1:jmax-1
!|8"}ZF
for i=1:imax-1
yW&ka3j\
if i>npml&j>npml&i<=nn+npml&j<=nn+npml
dSe d6
hx(i,j)=hx(i,j)-(dt/mu0)*(ez(i,j+1)-ez(i,j))/dy;
@M"( r"ab
hy(i,j)=hy(i,j)+(dt/mu0)*(ez(i+1,j)-ez(i,j))/dx;
qG +PqK;
end
M 0$E_*
if i<=npml %左边PML
^I)+u>fJ
if j<=npml|j>nn+npml %左边两角
i8S=uJ]n
di=npml-i+0.5;
-b|"%e<'
if j<=npml
5v^tPGg4
dj=npml-j+0.5;
dWdD^>8Ef
else
=_CH$F!U
dj=j-nn-npml+1.5;
D@kf^1G
end
w~yC^`
sigmaX=sigmamax*(di/npml)^p;
:6]qr 86
sigmaMx=sigmaX*mu0/eps0;
[&kz4_
sigmaY=sigmamax*(dj/npml)^p;
KDb`g}1Q
sigmaMy=sigmaY*mu0/eps0;
*K BaKS
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;
!t}yoN n|
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;
_fSBb<
else %左边非角点
]^,! ;do
di=npml-i+0.5;
Ss_}@p ^
sigmaX=sigmamax*(di/npml)^p;
| ^G38
sigmaMx=sigmaX*mu0/eps0;
=.w~qL
sigmaMy=0.;
$9@AwS@Uu
hx(i,j)=hx(i,j)-dt*(ez(i,j+1)-ez(i,j))/dy/mu0;
s6'=4gM
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;
MGY0^6yK5
end
r AE5.Q!u
elseif i>nn+npml %右边PML
|a%Wd
if j<=npml|j>nn+npml %右边两角
0o:R:*
di=i-nn-npml+1.5;
o#=C[d5BV
if j<=npml
%m+7$iD
dj=npml-j+0.5;
L|B! ]}
else
-hc8IS
dj=j-nn-npml+1.5;
).AMfBQ=;
end
G #M0 C>n
sigmaX=sigmamax*(di/npml)^p;
#\_8y`{x
sigmaMx=sigmaX*mu0/eps0;
$Ggnn#
sigmaY=sigmamax*(dj/npml)^p;
SM8_C!h:
sigmaMy=sigmaY*mu0/eps0;
_3.rPS,s
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;
F)v
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;
{h PB%
else %右边非角点
Z{gm4YV
di=i-nn-npml+1.5;
Ks<+@.DLTu
sigmaX=sigmamax*(di/npml)^p;
)sNPWn8<Uy
sigmaMx=sigmaX*mu0/eps0;
1}Y3|QxF
sigmaMy=0.;
*eX/ZCn
hx(i,j)=hx(i,j)-dt*(ez(i,j+1)-ez(i,j))/dy/mu0;
=T\=,B
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;
|(AFU3~
end
V7.g,
end
a&UzIFdB
if j<=npml %上边PML
+bT[lJ2O>G
if i>npml&i<=nn+npml %上边非角点
/nn~&OU
dj=npml-j+0.5;
hRMya#%-
sigmaY=sigmamax*(dj/npml)^p;
#2Iag'4T
sigmaMy=sigmaY*mu0/eps0;
Sp*4Z`^je
sigmaMx=0.;
,HI%ym
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, ..
9Q!Z9n"8~)
R_\o`v5
未注册仅能浏览
部分内容
,查看
全部内容及附件
请先
登录
或
注册
共
条评分
离线
hunterr
UID :9921
注册:
2008-03-25
登录:
2008-04-05
发帖:
4
等级:
旁观者
1楼
发表于: 2008-04-04 11:21:01
sigmaMx
k 6[
sigmaMy要随着sigmax sigmay变化 而不是sigmaMAX
d^RcJ3w
PML吸收边界角点要考虑
HN NeH;L
共
条评分
离线
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
本来想考到机子上试运行一下,结果每一行后面都有乱码,受不了
共
条评分
发帖
回复