登 录
註 冊
论坛
微波仿真网
注册
登录论坛可查看更多信息
微波仿真论坛
>
时域有限差分法 FDTD
>
fdtd2d_tm_pml为何出现电磁场分量变成无限大的 ..
发帖
回复
1941
阅读
7
回复
[
求助
]
fdtd2d_tm_pml为何出现电磁场分量变成无限大的问题
离线
juventus
UID :20795
注册:
2008-11-05
登录:
2012-06-06
发帖:
18
等级:
仿真新人
0楼
发表于: 2009-08-24 22:40:51
我根据Susan C.Hagness的书所附的2D关于TE波的pml边界吸收的程序 简单改写为TM波模式 但是出现了电磁场迅速增大的问题。请教下各位大侠,程序附如下
++9?LH4S4
G909R>
clear
#@pgB:~lB
DIqM\ ><
%***********************************************************************
?L K n
% Fundamental constants
_v/w ,z
%***********************************************************************
/,C;fT<R
QR+xPY~
cc=2.99792458e8; %speed of light in free space
"Wz8f
muz=4.0*pi*1.0e-7; %permeability of free space
pyHU+B
epsz=1.0/(cc*cc*muz); %permittivity of free space
$7bLw)7
RB\ Hl
freq=5.0e+9; %center frequency of source excitation
V /.Na(C~
lambda=cc/freq; %center wavelength of source excitation
|Do+=Gr$t@
omega=2.0*pi*freq;
(M0"I1g|w
>m$jJlAv8
%***********************************************************************
D_SXxP[! g
% Grid parameters
ddTsR
%***********************************************************************
A&?8 rc
5taR[ukM
ie=100; %number of grid cells in x-direction
lpq)vKM}^
je=50; %number of grid cells in y-direction
@d&JtA
1 5heLnei
ib=ie+1;
FmtgH1u:=
jb=je+1;
|2Vhj<6
cyMvjzzRN
is=15; %location of z-directed hard source
|D% O`[k+
js=je/2; %location of z-directed hard source
lGlh/B%
12i<b
dx=3.0e-3; %space increment of square lattice
vw'xmzgA
dt=dx/(2.0*cc); %time step
Z bW!c1s{
m/e*P*\=
nmax=2; %total number of time steps
$+k|\+iJ
; Sd== *
iebc=8; %thickness of left and right PML region
Aaw]=8 OI
jebc=8; %thickness of front and back PML region
6%a9%Is!O
rmax=0.00001;
70GwTK.{~
orderbc=2;
BS.5g<E2q
ibbc=iebc+1;
k/Z]zZC
jbbc=jebc+1;
D_N0j{E
iefbc=ie+2*iebc;
Iq0[Kd0.j
jefbc=je+2*jebc;
dEhFuNO<2
ibfbc=iefbc+1;
.9u0WP95
jbfbc=jefbc+1;
UVd ^tg
rNK<p3=7)
%***********************************************************************
\y(ZeNs
% Material parameters
f`s.|99Y
%***********************************************************************
Y|l&mK?
en_W4\7^
media=2;
U!GfDt
qEvbKy}
eps=[1.0 1.0];
tCR#TW+IY-
sig=[0.0 1.0e+7];
aD&4C-,1
mur=[1.0 1.0];
BvLC%
sim=[0.0 0.0];
cCx_tGR"
=o)B1(v@.
%***********************************************************************
vn+~P9SHQ
% Wave excitation
${ 5E
%***********************************************************************
k|^YYi=xF
rw$ =!iyO
rtau=160.0e-12;
h+!@`c>)Y
tau=rtau/dt;
S^x?<kYQau
delay=3*tau;
P8X59^cJ
dC/@OV)0#
source=zeros(1,nmax);
b&*)C#7/T
for n=1:7.0*tau
T8BewO=}
source(n)=sin(omega*(n-delay)*dt)*exp(-((n-delay)^2/tau^2));
gF2,Jm@"6
end
nh]HEG0CZJ
vd[?73:C
%***********************************************************************
!{?<(6;t
% Field arrays
KJ 7-Vl>
%***********************************************************************
0m,q3
ez=zeros(ie,je);
(]nX:t
hx=zeros(ie,jb); %fields in main grid
sE])EwZ
hy=zeros(ib,je);
#0f6X,3
J)EL<K$Z[
ezxbcf=zeros(iefbc,jebc);
7fC:'1]G
ezybcf=zeros(iefbc,jebc);
aM4-quaG]
hxbcf=zeros(iefbc,jebc); %fields in front pml
cl'wQ1<:
hybcf=zeros(ibfbc,jebc);
FOAXm4"
z+K1[1SM
ezxbcb=zeros(iefbc,jebc);
oh7tE$"c
ezybcb=zeros(iefbc,jebc);
eGLB,29g
hxbcb=zeros(iefbc,jbbc); %fields in back pml
3=("vR`!
hybcb=zeros(ibfbc,jebc);
1'%n?\OK66
Db*&'32W
ezxbcl=zeros(iebc,je);
HF<h-gX
ezybcl=zeros(iebc,je);
q $=[v
hxbcl=zeros(iebc,jb); %fields in left pml
h2y<vO
hybcl=zeros(iebc,je);
]2c0?f*Y7
LMNmG]#!
ezxbcr=zeros(iebc,je);
*LEI@
ezybcr=zeros(iebc,je);
MnP+L'|
hxbcr=zeros(iebc,jb); %fields in right pml
+*IRI/KUD
hybcr=zeros(ibbc,je);
Dqc2;>
\[d~O>k2
%***********************************************************************
i}O.,iH
% Updating coefficients
q8}he~a
%***********************************************************************
WFTwFm6
aP]h03sS
for i=1:media
m7u" awM^
eaf =dt*sig(i)/(2.0*epsz*eps(i));
@V Sr'?7-
ca(i)=(1.0-eaf)/(1.0+eaf);
_h I81Lzq
cb(i)=dt/epsz/eps(i)/dx/(1.0+eaf);
/z)Nz2W
haf =dt*sim(i)/(2.0*muz*mur(i));
? ph>:M
da(i)=(1.0-haf)/(1.0+haf);
mRy0zN>?
db(i)=dt/muz/mur(i)/dx/(1.0+haf);
v\+`n^=
end
8H,k0~D
8v)iOPmDC
%***********************************************************************
vwzElZ{C:v
% Geometry specification (main grid)
|_hIl(6F5N
%***********************************************************************
M[C)b\
AzVv-!Y
% Initialize entire main grid to free space
PU4-}!K
caez(1:ie,1:je)=ca(1);
\x|8
cbez(1:ie,1:je)=cb(1);
-56gg^Pnr
Z^J7r&\V
dahx(1:ie,1:jb)=da(1);
qYQ vjp
dbhx(1:ie,1:jb)=db(1);
@}s EP&$
6(>,qt,9S
dahy(1:ib,1:je)=da(1);
W^pf 1I8[
dbhy(1:ib,1:je)=db(1);
CaVVlL
!;Ke# E_d
% Add metal cylinder
A1*\ \[
TuC
diam=20; % diameter of cylinder: 6 cm
:x3xeVtY
rad=diam/2.0; % radius of cylinder: 3 cm
j.[W] EfL~
icenter=4*ie/5; % i-coordinate of cylinder's center
r5y*SoD!
jcenter=je/2; % j-coordinate of cylinder's center
1B@7#ozWA?
!Sl_qL
for i=1:ie
bq9/d4
for j=1:je
G=LK irj(
dist2=(i-icenter)^2 + (j-jcenter)^2;
&A=c[pc
if dist2 <= rad^2
$Tal.
caez(i,j)=ca(2);
+.g j/uy*
cbez(i,j)=cb(2);
#N;&^El
end
biS{.
end
c& K`t
end
L#%)@
l&5Tft
%***********************************************************************
/.~zk(-&h
% Fill the PML regions
6 $`l
%***********************************************************************
06?d#{?M1o
F3tIJz>3
delbc=iebc*dx;
}Syd*%BR[
sigmam=-log(rmax/100.0)*epsz*cc*(orderbc+1)/(2*delbc);
L2wX?NA
bcfactor=eps(1)*sigmam/(dx*(delbc^orderbc)*(orderbc+1));
";/ogFi
57q?:M=^
% FRONT region
V9D q<y-y
dahxbcf(1:iefbc,1)=1.0;
D/=k9[b!
dbhxbcf(1:iefbc,1)=0.0;
M%g2UP
for j=2:jebc
lBa` nG
y1=(jebc-j+1.5)*dx;
z`p9vlS[
y2=(jebc-j+0.5)*dx;
aj/+#G2
sigmay=bcfactor*(y1^(orderbc+1)-y2^(orderbc+1));
@>8{J6%\
sigmays=sigmay*(muz/(epsz*eps(1)));
6Kw?
da1=exp(-sigmays*dt/muz);
} 7ND]y48
db1=(1-da1)/(sigmays*dx);
saDu'SmYV
dahxbcf(1:iefbc,j)=da1;
C=IN "
dbhxbcf(1:iefbc,j)=db1;
0{I-x^FI
end
CSz+cS
sigmay=bcfactor*(0.5*dx)^(orderbc+1);
dkqyn"^
sigmays=sigmay*(muz/(epsz*eps(1)));
Y/?z8g'p
da1=exp(-sigmays*dt/muz);
c&Eva
db1=(1-da1)/(sigmays*dx);
`5"3Cj"M
dahx(1:ie,1)=da1;
qJ .XI
dbhx(1:ie,1)=db1;
qz.l
dahxbcl(1:iebc,1)=da1;
0JKTwLhC
dbhxbcl(1:iebc,1)=db1;
m77!i>V)
dahxbcr(1:iebc,1)=da1;
>UV}^OO
dbhxbcr(1:iebc,1)=db1;
dk"@2%xJ2d
t/3HX]B_
for j=1:iebc
^8YBW<9
y1=(jebc-j+1)*dx;
1f'msy/
y2=(jebc-j)*dx;
,`YIcrya:
sigmay=bcfactor*(y1^(orderbc+1)-y2^(orderbc+1));
_xy[\X;9
ca1=exp(-sigmay*dt/(epsz*eps(1)));
y7R=zkd C9
cb1=(1.0-ca1)/(sigmay*dx);
!Rgj'{
caezybcf(1:iefbc,j)=ca1;
Pa?{}A
cbezybcf(1:iefbc,j)=cb1;
{;6a_L@q;|
caezxbcf(1:iefbc,j)=ca(1);
)."dqq^ q
cbezxbcf(1:iefbc,j)=cb(1);
VDxF%!h(
dahybcf(1:ibfbc,j)=da(1);
B79~-,Yh
dbhybcf(1:ibfbc,j)=db(1);
Z~}9^ (qc
end
AX{7].)F
a 7=lZZ?
% BACK region
;lSsy
dahxbcb(1:iefbc,jbbc)=1.0;
S]Di1E^r;_
dbhxbcb(1:iefbc,jbbc)=0.0;
@1' Y/dCyD
for j=2:jebc
G]{^.5
y1=(j-0.5)*dx;
>YsM'.EF D
y2=(j-1.5)*dx;
}`!-WY
sigmay=bcfactor*(y1^(orderbc+1)-y2^(orderbc+1));
8TK*VOf`
sigmays=sigmay*(muz/(epsz*eps(1)));
bUds E1f
da1=exp(-sigmays*dt/muz);
`M(st%@n
db1=(1-da1)/(sigmays*dt);
Y9&na&vY?
dahxbcb(1:iefbc,j)=da1;
Oi]B%Uxy=
dbhxbcb(1:iefbc,j)=db1;
g \ou+M#
end
^~6gkS }
sigmay=bcfactor*(0.5*dx)^(orderbc+1);
~B?Wg!
sigmays=sigmay*(muz/(epsz*eps(1)));
)heHERbJ
da1=exp(-sigmays*dt/muz);
.:GOKyr(~
db1=(1-da1)/(sigmays*dx);
&49WfctT
dahx(1:ie,jb)=da1;
6eA)d#
dbhy(1:ie,jb)=db1;
XHOS"o$y
dahxbcl(1:iebc,jb)=da1;
\=`jo$S
dbhxbcl(1:iebc,jb)=db1;
4i5b.bU$
dahxbcr(1:iebc,jb)=da1;
HgBu:x?&
dbhxbcr(1:iebc,jb)=db1;
tkkh<5{C
shP}T[<
for j=1:jebc
-t>"s'kv
y1=j*dx;
9\T9pjdZE
y2=(j-1)*dx;
g!o2vTt5
sigmay=bcfactor*(y1^(orderbc+1)-y2^(orderbc+1));
[7g-M/jvY
ca1=exp(-sigmay*dt/(epsz*eps(1)));
o^MoU2c
cb1=(1-ca1)/(sigmay*dx);
@8+v6z
caezybcb(1:iefbc,j)=ca1;
O: #SjjK
cbezybcb(1:iefbc,j)=cb1;
%Pj}
caezxbcb(1:iefbc,j)=ca(1);
'#eT
cbezxbcb(1:iefbc,j)=cb(1);
DsD? &:
dahybcb(1:ibfbc,j)=da(1);
RCxwiZaf33
dbhybcb(1:ibfbc,j)=db(1);
3-)}.8F
end
3 `mtc@*
fO .=i1 E}
GCX?W`
% LEFT region
45$aq~%as
dahybcl(1,1:je)=1.0;
0 0|!g"E>$
dbhybcl(1,1:je)=0.0;
#};Zgixo$
for i=2:iebc
;:+2.//
x1=(iebc-i+1.5)*dx;
e=eip?p
x2=(iebc-i+0.5)*dx;
8.7q -<Q
sigmax=bcfactor*(x1^(orderbc+1)-x2^(orderbc+1));
jUgx ;=
sigmaxs=sigmax*(muz/(epsz*eps(1)));
e@ $|xa")
da1=exp(-sigmaxs*dt/muz);
zr_L V_e
db1=(1-da1)/(sigmaxs*dx);
-P&