登 录
註 冊
论坛
微波仿真网
注册
登录论坛可查看更多信息
微波仿真论坛
>
时域有限差分法 FDTD
>
大家帮忙看看我这个UPML有耗介质的迭代方程 ..
发帖
回复
3157
阅读
1
回复
[
求助
]
大家帮忙看看我这个UPML有耗介质的迭代方程写的对吗(代码已贴出)?
离线
xiaoyuan
UID :53338
注册:
2010-02-28
登录:
2015-12-05
发帖:
156
等级:
仿真二级
0楼
发表于: 2010-08-29 06:12:32
小弟初学者,我基于论坛里Program author: Keely J. Willis, Graduate Student UW Computational Electromagnetics Laboratory
k{jw%a<Sc
Director: Susan C. Hagness编的真空UPML代码的基础上改编成UPML连接有耗介质的代码,但是一旦我把sigma赋值后,比如让sigma=0.5,结果就不对,非常小(10的负一百多次方),而且幅值是一直增大的趋势。但当把sigma赋成0时,结果看上去似乎就合理。不知道为什么,想请各位有经验的高手给点建议或找找原因。 谢谢大家!!
k_<{j0z.
X3{1DY3@u
下面是我的迭代方程。其中磁场迭代方程我没有动它,和源代码一样。电场迭代方程我是基于talflove的书第二版第七章7.10节的公式。
~[TKVjyO
4D$sFR|?t
%
Update magnetic field
2j7d$y*'
O/9%"m:i
bstore=bx;
%:KV2GP
bx(2:ie_tot,:,:)=D1hx(2:ie_tot,:,:).* bx(2:ie_tot,:,:)-...
zL'IN)7MU
D2hx(2:ie_tot,:,:).*((ez(2:ie_tot,2:jh_tot,:)-ez(2:ie_tot,1:je_tot,:))-...
4oV_b"xz~
(ey(2:ie_tot,:,2:kh_tot)-ey(2:ie_tot,:,1:ke_tot)))./delta;
* g4Cy8$
|7zP8
hx(2:ie_tot,:,:)= D3hx(2:ie_tot,:,:).*hx(2:ie_tot,:,:)+...
8$ZSF92C
D4hx(2:ie_tot,:,:).*(D5hx(2:ie_tot,:,:).*bx(2:ie_tot,:,:)-...
Lzx$"R-
D6hx(2:ie_tot,:,:).*bstore(2:ie_tot,:,:));
%8CT -mQ
\Z20fh2
bstore=by;
3D{4vMmX
by(:,2:je_tot,:)=D1hy(:,2:je_tot,:).* by(:,2:je_tot,:)-...
/ 7X dV
D2hy(:,2:je_tot,:).*((ex(:,2:je_tot,2:kh_tot)-ex(:,2:je_tot,1:ke_tot))-...
`l2<
(ez(2:ih_tot,2:je_tot,:)-ez(1:ie_tot,2:je_tot,:)))./delta;
|vN@2h(|"
8UT%:DlxQ
hy(:,2:je_tot,:)= D3hy(:,2:je_tot,:).*hy(:,2:je_tot,:)+...
6'Yn|A
D4hy(:,2:je_tot,:).*(D5hy(:,2:je_tot,:).*by(:,2:je_tot,:)-...
`.(S#!gw
D6hy(:,2:je_tot,:).*bstore(:,2:je_tot,:));
5A$az03y$\
eM=) >zl
bstore=bz;
?w37vsN
bz(:,:,2:ke_tot)=D1hz(:,:,2:ke_tot).* bz(:,:,2:ke_tot)-...
}<ONx g6Kb
D2hz(:,:,2:ke_tot).*((ey(2:ih_tot,:,2:ke_tot)-ey(1:ie_tot,:,2:ke_tot))-...
2~WFLD
(ex(:,2:jh_tot,2:ke_tot)-ex(:,1:je_tot,2:ke_tot)))./delta;
#oJbrh9J6
OI_/7@L
hz(:,:,2:ke_tot)= D3hz(:,:,2:ke_tot).*hz(:,:,2:ke_tot)+...
8V|jL?a~
D4hz(:,:,2:ke_tot).*(D5hz(:,:,2:ke_tot).*bz(:,:,2:ke_tot)-...
*C@[5#CA2z
D6hz(:,:,2:ke_tot).*bstore(:,:,2:ke_tot));
4Sstg57x~
* \o$-6<
% Update electric field
QeeC2
yC0f/O
p1store=px1;
&U$8zn~[k
zc/%1
px1(:,2:je_tot,2:ke_tot)=C1ex(:,2:je_tot,2:ke_tot).* px1(:,2:je_tot,2:ke_tot)+...
t 9n
C2ex(:,2:je_tot,2:ke_tot).*((hz(:,2:je_tot,2:ke_tot)-hz(:,1:je_tot-1,2:ke_tot))-...
o1X/<.0+
( hy(:,2:je_tot,2:ke_tot)-hy(:,2:je_tot,1:ke_tot-1)))./delta;
j%Z{.>mJ
_Sgk^i3v
p2store=px2;
MIlCUk
{IPn\Bka
px2(:,2:je_tot,2:ke_tot)=C3ex(:,2:je_tot,2:ke_tot).* px2(:,2:je_tot,2:ke_tot)+...
6!%d-Z7)
C4ex(:,2:je_tot,2:ke_tot).*( px1(:,2:je_tot,2:ke_tot)-...
PR@4' r|a
p1store(:,2:je_tot,2:ke_tot));
%Mng8r
=HV-8C]
ex(:,2:je_tot,2:ke_tot)=C5ex(:,2:je_tot,2:ke_tot).* ex(:,2:je_tot,2:ke_tot)+...
n22hVw
C6ex(:,2:je_tot,2:ke_tot).*(C7ex(:,2:je_tot,2:ke_tot).* px2(:,2:je_tot,2:ke_tot)-...
0uIV6LI
C8ex(:,2:je_tot,2:ke_tot).*p2store(:,2:je_tot,2:ke_tot));
w$lfR,
qIGu#zX W
p1store=py1;
>}DjHLTW\
qN1 -plY
py1(2:ie_tot,:,2:ke_tot)=C1ey(2:ie_tot,:,2:ke_tot).* py1(2:ie_tot,:,2:ke_tot)+...
FK@ f'
C2ey(2:ie_tot,:,2:ke_tot).*((hx(2:ie_tot,:,2:ke_tot)-hx(2:ie_tot,:,1:ke_tot-1))-...
40Qzo%eL
( hz(2:ie_tot,:,2:ke_tot)-hz(1:ie_tot-1,:,2:ke_tot)))./delta;
sb|3|J6=
{8#N7(%z
p2store=py2;
J4[x,(iq(
A2|o=mOH
py2(2:ie_tot,:,2:ke_tot)=C3ey(2:ie_tot,:,2:ke_tot).* py2(2:ie_tot,:,2:ke_tot)+...
L);||]B
C4ey(2:ie_tot,:,2:ke_tot).*( py1(2:ie_tot,:,2:ke_tot)-...
R8[iXXjku
p1store(2:ie_tot,:,2:ke_tot));
=F%wlzF:
foz5D9sQ
ey(2:ie_tot,:,2:ke_tot)=C5ey(2:ie_tot,:,2:ke_tot).* ey(2:ie_tot,:,2:ke_tot)+...
A_jB|<bjTP
C6ey(2:ie_tot,:,2:ke_tot).*(C7ey(2:ie_tot,:,2:ke_tot).* py2(2:ie_tot,:,2:ke_tot)-...
K rr?`n
C8ey(2:ie_tot,:,2:ke_tot).*p2store(2:ie_tot,:,2:ke_tot));
,/?%y\:J
}.MoDR3\
p1store=pz1;
P10p<@?
X4} `>
pz1(2:ie_tot,2:je_tot,:)=C1ez(2:ie_tot,2:je_tot,:).* pz1(2:ie_tot,2:je_tot,:)+...
=EcIXDzC>
C2ez(2:ie_tot,2:je_tot,:).*((hy(2:ie_tot,2:je_tot,:)-hy(1:ie_tot-1,2:je_tot,:))-...
p_5>?[TW:
( hx(2:ie_tot,2:je_tot,:)-hx(2:ie_tot,1:je_tot-1,:)))./delta;
c. TB8Ol
p2store=pz2;
/;<e.
iijd$Tv
pz2(2:ie_tot,2:je_tot,:)=C3ez(2:ie_tot,2:je_tot,:).* pz2(2:ie_tot,2:je_tot,:)+...
yxC Ml.
C4ez(2:ie_tot,2:je_tot,:).*( pz1(2:ie_tot,2:je_tot,:)-...
ci,o8 [Y
p1store(2:ie_tot,2:je_tot,:));
+(<n |~
,"N3k(g
pz2(is,js,ks:ks+1)=pz2(is,js,ks:ks+1)+exp(-((n-4.5*tau/dt)^2/(tau/dt)^2));
O,=Q1*c,&
%on9C`/
ez(2:ie_tot,2:je_tot,:)=C5ez(2:ie_tot,2:je_tot,:).* ez(2:ie_tot,2:je_tot,:)+...
9*=@/1
C6ez(2:ie_tot,2:je_tot,:).*(C7ez(2:ie_tot,2:je_tot,:).* pz2(2:ie_tot,2:je_tot,:)-...
D]pK=247
C8ez(2:ie_tot,2:je_tot,:).*p2store(2:ie_tot,2:je_tot,:));
=nvAOvP{?
hmBnV
以下是全部代码:希望各位能帮忙看看哪里不对。
jTd4 H)
(注明:我在给迭代系数赋值时是一部分一部分慢慢赋值,并没有像原代码那样一起赋值,所以有点冗长,但是我目前是想找出这个代码哪里有毛病。所以优化问题先放一边,希望大家能理解,如果对代码有不清楚的地方,回复我。我会每天都上论坛给予解释。谢谢!)
I(^jOgYU
fXu~69_
(说明:(其实大家不用在意这个)为了方便大家理解,我的UPML层,想象中是整体向内缩减了0.25个网格长度。如果把网格坐标定为1,2,3...一直到61(60个格子),那pml层的坐标就是从1.25,2.25,3.25.... 一直到11.25和 从50.75,51.75....一直到60.75。大家可以想象一下。 (原来可能是从1,2,3...到11,51,52,53.....到61 我就是将每个方向的pml的范围将两头向中间压缩了0.25个网格长。)
?)?IZ Qj
%Rd~|$@>x
`rz`3:ZH
%***********************************************************************
J-, H6u
% Fundamental constants
XWUvP
%***********************************************************************
jMf 7J
?GUz?'d
cc=2.99792458e8;
e7XsyL'|p
muz=4.0*pi*1.0e-7;
2H?I'<NoC
epsz=1.0/(cc*cc*muz);
_H4$$
etaz=sqrt(muz/epsz);
mEB2RLCM
sigma_e=0.0; %大家run一下程序就知道当将此处sigma_e的值改为比如0.5,结果就不太对。为什么??
Y( 1L>4
8K@"B
Y8J;+h9
%***********************************************************************
"[Qb'9/Jc
% Material parameters
^A *]&%(h
%***********************************************************************
^_*jp[!`b$
(>rS _#^
mur=1.0;
`z-H]fU
epsr=80;
FVsu8z u
freq=20000;
<+? Y
eta=etaz*sqrt(mur/epsr); %
YQ 8j
$Yx6#m}[M
c=1/sqrt(epsr*epsz*muz*mur);
oh7#cFZZ0
%***********************************************************************
'R4>CZ%jV
% Grid parameters
4f4 i1i:
%
RwAbIXG{0
% Each grid size variable name describes the number of sampled points
r^w\9a_
% for a particular field component in the direction of that component.
Y!Uu173
% Additionally, the variable names indicate the region of the grid
_HWHQF7
% for which the dimension is relevant. For example, ie_tot is the
zG-_!FIn
% number of sample points of Ex along the x-axis in the total
c&7Do}
% computational grid, and jh_bc is the number of sample points of Hy
-+3be(u
% along the y-axis in the y-normal UPML regions.
wJ80};!
%
(orrX Ez
%***********************************************************************
?%\mQmjas
%_B:EMPd
9RG\UbX)^|
%是一个三维立方体空间,60*60*60(已经包括了厚度为10的upml层)
n_""M:X H
Bs+c2R
0|+>A?E}E
ie=40; % Size of main grid
H$~M`Y9I~
je=40;
v!<PDw2'
ke=40;
?%cn'=>ZI
ih=ie+1;
M1AZ}bc0]
jh=je+1;
qDby!^ryc
kh=ke+1;
~In{lQ[QX
2 ) TG
upml=10; % Thickness of PML boundaries
B>~k).M&,
ih_bc=upml+1;
do:QH.q8)
jh_bc=upml+1;
OW+ e_im}
kh_bc=upml+1;
GXOFk7>
4R&*&GZ#
ie_tot=ie+2*upml; % Size of total computational domain
P$p@5 hl
je_tot=je+2*upml;
!lR0w|
ke_tot=ke+2*upml;
tWpl`HH
ih_tot=ie_tot+1;
N<KKY"?I'
jh_tot=je_tot+1;
KY4d+~2
kh_tot=ke_tot+1;
-Wl)Lez@
cT/3yf
pxs = 11;
r?64!VS;
pys = 11;
wzD\8_;6N
pzs = 11;
G_V.H\w
9 '2=
pxe = 51;
(bg}an
pye = 51;
reJ"r<2
pze = 51;
~?FK ; (
/a@ k S
is=round(ih_tot/2); % Location of z-directed current source
7d3'CQQ4
js=round(jh_tot/2);
oJP<'l1
ks=round(ke_tot/2);
iKg75%;t
CdX`PQ
%***********************************************************************
B }6Kd
% Fundamental grid parameters
|WB"=PE
%***********************************************************************
V3## B}2[Y
FQ+8J 7
delta= 83.794539403718844;
pU M&"V
dt=0.9./sqrt(3.0./delta./delta)./c;
jMK3T
%dt=delta*sqrt(epsr*mur)/(2.0*cc);
CXBzX:T?#
%dt=delta*0.5/c;
%/P=m-K
nmax=200;
)yHJ[
N1PECLS?
%***********************************************************************
pPoH5CzcK
% Differentiated Gaussian pulse excitation
;5<P|:^
%***********************************************************************
bX7EO 8
Af`z/:0<
rtau=50.0e-12;
FI\IY R
%tau=rtau/dt;
D^|jZOJ
tau = 20*delta/2/c;
$np=eT)
ndelay=3*tau;
F vj{@B!
J0=-1.0*epsz;
ft{W/ * +_
LRWOBD
%***********************************************************************
a lrt*V|=
% Initialize field arrays
Q`N18I3
%***********************************************************************
K6E}";;
llNXQlP\B
ex =zeros(ie_tot,jh_tot,kh_tot);
Zotz?jVVr
px1=zeros(ie_tot,jh_tot,kh_tot);
DYX-5~;!
px2=zeros(ie_tot,jh_tot,kh_tot);
.\$Wy$ d
=KV@&Y^x4
ey= zeros(ih_tot,je_tot,kh_tot);
>&BrCu[u
py1=zeros(ih_tot,je_tot,kh_tot);
0[.3Es:_
py2=zeros(ih_tot,je_tot,kh_tot);
. =&Jo9
_HwpPRVP/
ez= zeros(ih_tot,jh_tot,ke_tot);
]K7`-p~T
pz1=zeros(ih_tot,jh_tot,ke_tot);
iu+3,]7Fm
pz2=zeros(ih_tot,jh_tot,ke_tot);
EY]a6@;
KZ]r8
hx=zeros(ih_tot,je_tot,ke_tot);
5!~!j "q
hy=zeros(ie_tot,jh_tot,ke_tot);
~u!gUJ:
hz=zeros(ie_tot,je_tot,kh_tot);
u2 7S%2P
bx=zeros(ih_tot,je_tot,ke_tot);
)B81i! q
by=zeros(ie_tot,jh_tot,ke_tot);
PJCnud F
bz=zeros(ie_tot,je_tot,kh_tot);
+i+tp8T+7
9x(}F<L
%***********************************************************************
26M~<Ic
% Initialize update coefficient arrays
CQ<8P86gt
%***********************************************************************
NW)M?f+6
% 系数矩阵
9GThyY
C1ex=zeros(size(ex));
d^tVD`Fm
C2ex=zeros(size(ex));
(s088O
C3ex=zeros(size(ex));
%8 qSv%_
C4ex=zeros(size(ex));
~]4kkm7Y
C5ex=zeros(size(ex));
:.DI_XN`
C6ex=zeros(size(ex));
0F^]A"kF
C7ex=zeros(size(ex));
QskUdzQ=
C8ex=zeros(size(ex));
u)7*Rj^
~^x-ym5
C1ey=zeros(size(ey));
e[}],W
C2ey=zeros(size(ey));
Oo kxg *!5
C3ey=zeros(size(ey));
$R";
C4ey=zeros(size(ey));
f4 Q( 1(C
C5ey=zeros(size(ey));
3EmcYC
C6ey=zeros(size(ey));
0vDg8i\
C7ey=zeros(size(ey));
~Yl<S(/4
C8ey=zeros(size(ey));
<^Nk.E
>{QdMn
C1ez=zeros(size(ez));
ZY)%U*jWU
C2ez=zeros(size(ez));
+lKrj\Xj
C3ez=zeros(size(ez));
;|6FdU
C4ez=zeros(size(ez));
2% %|fU9
C5ez=zeros(size(ez));
[yC"el6PM
C6ez=zeros(size(ez));
Yc d3QRB
C7ez=zeros(size(ez));
}C_|gd
C8ez=zeros(size(ez));
YxJ`-6
WV2~(/hX&
D1hx=zeros(size(hx));
v`SY6;<2
D2hx=zeros(size(hx));
[%jxf\9jJ_
D3hx=zeros(size(hx));
& N;pH
D4hx=zeros(size(hx));
YwXXXh
D5hx=zeros(size(hx));
c# xO<
D6hx=zeros(size(hx));
d5:tSO
|#V(p^
D1hy=zeros(size(hy));
z>|)ieL
D2hy=zeros(size(hy));
t=i/xG: 5
D3hy=zeros(size(hy));
{ UOhVJy
D4hy=zeros(size(hy));
Ra0=q4vdk
D5hy=zeros(size(hy));
kxh 5}eB
D6hy=zeros(size(hy));
/~*Cp9F"]
9^!wUwB
D1hz=zeros(size(hz));
PPj[;(A
D2hz=zeros(size(hz));
,%Z&*n
D3hz=zeros(size(hz));
7WP%J-
D4hz=zeros(size(hz));
XCm\z9F
D5hz=zeros(size(hz));
2m\m/O
D6hz=zeros(size(hz));
2 h<U
p qeL%="p;
%***********************************************************************
V!xwb:J
% Update coefficients, as described in Section 7.8.2.
q3)wr%!k5D
%
ESIzGaM
% In order to simplify the update equations used in the time-stepping
U{}!y3[wK
% loop, we implement UPML update equations throughout the entire
0I @$ 0Gg
% grid. In the main grid, the electric-field update coefficients of
<BPRV> 0X
% Equations 7.91a-f and the correponding magnetic field update
]~8v^A7u
% coefficients extracted from Equations 7.89 and 7.90 are simplified
&n|*uLn
% for the main grid (free space) and calculated below.
-;>#3O-
%
ZBJ3 VK
%***********************************************************************
;E#\
}/p/pVz
%以下是主区域的迭代系数,即非pml参数时的系数
H|`R4hAk
C1=(2*epsz*epsr-sigma_e*dt)/(2*epsz*epsr+sigma_e*dt);
{i>Jfl]G}
C2=2*dt/(2*epsz*epsr+sigma_e*dt);
FCiq?@
C3=1.0;
f>z`i\1oO
C4=1.0;
} L <,eV
C5=1.0;
7]s%rya
C6=1/2/epsz/epsr;
z,x"a
C7=2*epsz*epsr;
[O_^MA,z
C8=2*epsz*epsr;
xr.XU'
On&L#pf
D1=1.0;
+T2HE\
D2=dt;
/$:U$JVb?l
D3=1.0;
_q)!B,y-/N
D4=1.0/2.0/epsr/epsz/mur/muz;
"yW&<7u1
D5=2.0*epsr*epsz;
l{5O5%\,
D6=2.0*epsr*epsz;
HIGNRm
vbp-`M(
%***********************************************************************
9 mPIykAj8
% Initialize main grid update coefficients
` 8UWE {
%***********************************************************************
ej52AK7
% 给主计算区域系数赋值。
4P%m>[
C1ex(:,:,:)=C1;
c#QFG1
C2ex(:,:,:)=C2;
KDD@%E
C3ex(pxs:pxe-1,pys+1:pye-1,pzs+1:pze-1)=C3; %11 51
5m7b\Mak
C4ex(pxs:pxe-1,pys+1:pye-1,pzs+1:pze-1)=C4;
P"F{=\V1`<
C5ex(pxs:pxe-1,pys+1:pye-1,pzs+1:pze-1)=C5; %11 51
ax_YKJ5#P
C6ex(pxs:pxe-1,pys+1:pye-1,pzs+1:pze-1)=C6;
VNj@5s
C7ex(pxs:pxe-1,pys+1:pye-1,pzs+1:pze-1)=C7; %11 50
~@Kf2dHes
C8ex(pxs:pxe-1,pys+1:pye-1,pzs+1:pze-1)=C8;
A,BEKjR~J
[(|v`qMv/g
C1ey(:,:,:)=C1;
8%ik853`
C2ey(:,:,:)=C2;
9tk" :ld
C3ey(pxs+1:pxe-1,pys:pye-1,pzs+1:pze-1)=C3; %11 51
2xn<E>]
C4ey(pxs+1:pxe-1,pys:pye-1,pzs+1:pze-1)=C4;
*d>vR1
C5ey(pxs+1:pxe-1,pys:pye-1,pzs+1:pze-1)=C5; %11 51
RqLNp?V%
C6ey(pxs+1:pxe-1,pys:pye-1,pzs+1:pze-1)=C6;
K%gP5>y*9>
C7ey(pxs+1:pxe-1,pys:pye-1,pzs+1:pze-1)=C7; %11 50
MCU9O
C8ey(pxs+1:pxe-1,pys:pye-1,pzs+1:pze-1)=C8;
.oR3Q/|k]
8bOT*^b$H
C1ez(:,:,:)=C1;
+9[SVw8
C2ez(:,:,:)=C2;
ZXt?[Ll
C3ez(pxs+1:pxe-1,pys+1:pye-1,pzs:pze-1)=C3; %11 51
rl?7W];
C4ez(pxs+1:pxe-1,pys+1:pye-1,pzs:pze-1)=C4;
yU7I;]YP
C5ez(pxs+1:pxe-1,pys+1:pye-1,pzs:pze-1)=C5; %11 51
#) ]c0]p
C6ez(pxs+1:pxe-1,pys+1:pye-1,pzs:pze-1)=C6;
$"8d:N?I[
C7ez(pxs+1:pxe-1,pys+1:pye-1,pzs:pze-1)=C7; %11 50
%!y89x=E
C8ez(pxs+1:pxe-1,pys+1:pye-1,pzs:pze-1)=C8;
w^{!U
:<GfET Is
D1hx(pxs+1:pxe-1,pys:pye-1,pzs:pze-1)=D1; %11 50
eg3L:rk_
D2hx(pxs+1:pxe-1,pys:pye-1,pzs:pze-1)=D2;
V"#Jk!k9k
D3hx(pxs+1:pxe-1,pys:pye-1,pzs:pze-1)=D3; %11 50
((|IS[
D4hx(pxs+1:pxe-1,pys:pye-1,pzs:pze-1)=D4;
=nU/ [T.
D5hx(pxs+1:pxe-1,pys:pye-1,pzs:pze-1)=D5; %11 51
@B`Md3$7
D6hx(pxs+1:pxe-1,pys:pye-1,pzs:pze-1)=D6;
3SNL5
(A{NF(
D1hy(pxs:pxe-1,pys+1:pye-1,pzs:pze-1)=D1; %11 50
QaQ'OrP
D2hy(pxs:pxe-1,pys+1:pye-1,pzs:pze-1)=D2;
.X `C^z]+
D3hy(pxs:pxe-1,pys+1:pye-1,pzs:pze-1)=D3; %11 50
c!Dc8=nE0m
D4hy(pxs:pxe-1,pys+1:pye-1,pzs:pze-1)=D4;
mW4%2fD[
D5hy(pxs:pxe-1,pys+1:pye-1,pzs:pze-1)=D5; %11 51
z(H?VfJo
D6hy(pxs:pxe-1,pys+1:pye-1,pzs:pze-1)=D6;
T'1gy}
0E6lmz`O
D1hz(pxs:pxe-1,pys:pye-1,pzs+1:pze-1)=D1; %11 50
3.vgukkk5
D2hz(pxs:pxe-1,pys:pye-1,pzs+1:pze-1)=D2;
l>&sIX
D3hz(pxs:pxe-1,pys:pye-1,pzs+1:pze-1)=D3; %11 50
vT7g<
D4hz(pxs:pxe-1,pys:pye-1,pzs+1:pze-1)=D4;
A-wRah.M
D5hz(pxs:pxe-1,pys:pye-1,pzs+1:pze-1)=D5; %11 51
MEq"}zrh
D6hz(pxs:pxe-1,pys:pye-1,pzs+1:pze-1)=D6;
=_PvrB 2'
-(IC~
rmax=exp(-16); % R(0) desired reflection error, designated as R(0) in Equation 7.62
)X5(#E
T2weAk#J
orderbc=4; % m order of the polynomial grading, designated as m in Equation 7.60a,b
ll<mE,
S|K}k:v8
% 以下是给pml层的系数赋值,我完全是用的talflove书上的公式,没有用原来代码中的公式
Ld(NhB'7
% x-varying material properties
v <Hb-~
delbc=upml*delta; % d
z[9UQU~x?
sigmam=-log(rmax)*(orderbc+1.0)/(2.0*eta*delbc);
Zw$ OKU
%sigfactor=sigmam/(delta*(delbc^orderbc)*(orderbc+1.0));
tln1eN((q
kmax=1;
eH <Jng
kfactor=(kmax-1.0)/delta/(orderbc+1.0)/delbc^orderbc;
o| D^`Z
>85zQ 1aL
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
8_xLl2
% xp xn
8h.V4/?
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
]sj0~DI*m
,2`~ NPb
% Coefficients for field components in the center of the grid cell
H}nJbnU
X:=c5*0e
% x1=(upml-i+1)*delta;x1;
2o5;Uz1{
% x2=(upml-i)*delta;x2;
}1 QF+Cf
r_center = ([1:upml] - 0.25)/upml;
E4HU 'y~
&q>zR6jne
%按照场分量在网格中的位置,我每一个方向有两个循环,分别对应分量在网格中间和在网格边上
u7=T(4a
'UfeluMd
for i=1:upml
G7-!`-Nk
%sigma=sigfactor*(x1^(orderbc+1)-x2^(orderbc+1));
ctI{^f:
%ki=1+kfactor*(x1^(orderbc+1)-x2^(orderbc+1));
B?6QMC;
sigma(i) = sigmam * r_center(i)^orderbc;
u) *Kws
ki = 1;
P5?<_x0v4b
facm=(2*epsr*epsz*ki-sigma(i)*dt);
[uR/M
facp=(2*epsr*epsz*ki+sigma(i)*dt);
;>ozEh#8w
%ie_tot-upml+i;
ndi+xaQtG
%upml-i+1;
x(~<