登 录
註 冊
论坛
微波仿真网
注册
登录论坛可查看更多信息
微波仿真论坛
>
时域有限差分法 FDTD
>
求牛人帮我改一下2D-TM的MATLAB程序
发帖
回复
1410
阅读
0
回复
[
求助
]
求牛人帮我改一下2D-TM的MATLAB程序
离线
小米
UID :55468
注册:
2010-03-23
登录:
2010-10-18
发帖:
9
等级:
旁观者
0楼
发表于: 2010-04-20 10:11:17
此悬赏帖已过期
最佳答案:5 rf币
,热心助人剩余点数: 1 rf币。
想问一下哪些参数要改,我的递推有没有问题,PML的设置有没有问题,还有画的图总是不对,如果输出的场
为数值的话不是0就是NAN,谁能帮我改一下呢,谢啦O(∩_∩)O~
q8xc70: R
$F@L$&~
B,vHn2W
w4fJ`,
oj(A`[
=PKt09b^
:KV,:13`D
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
,gL)~6!A
% fundamental constants (in the dimesion of m)
m wEVEx24
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-=Eq/su%
cc=2.99792458e8; %speed of light in free space
2mG&@E
muz=4.0*pi*1.0e-7; %permeability of free space
b8{h[YJL2
epsz=1.0/(cc*cc*muz); %permittivity of free space
7{+Io
lambda=1.55e-6; %center wavelength of source excitation
TaQ "G
freq=cc/lambda; %center frequency of source excitation
>RL6Jbo|
omega=2.0*pi*freq;
C*y6~AYN#
%***********************************************************************
G<u.+V
% Grid parameters (in the dimesion of m)
gc2|V6(
%***********************************************************************
:Bv&)RK
ie=320; %number of grid cells in x-direction
_2gT1B
je=44; %number of grid cells in y-direction
!OoaE* s
ib=ie+1;
z^!A/a[[!
jb=je+1;
fyg~KF}
is=5; %location of x-directed hard source
\B>[je-d
js=je/2; %location of x-directed hard source
)' x/q
dx=5.0e-9; %space increment of square lattice
Avv
dt=lambda/(pi*cc); %time step
Pvg
nmax=3300; %total number of time steps
wO_pcNYZ8
iebc=8; %thickness of left and right PML region
9u7n/o&8v6
jebc=8; %thickness of front and back PML region
j^$3vj5E[
ibbc=iebc+1;
3 !> L?
jbbc=jebc+1;
!: EW21m
iefbc=ie+2*iebc;
uU[[[LQq
jefbc=je+2*jebc;
x U13fl
ibfbc=iefbc+1;
mWN1Q<vn,l
jbfbc=jefbc+1;
kJ#[UCqzM
%***********************************************************************
k$0|^GL8
% Material parameters
Q9eYF-+
%***********************************************************************
$E`iqRB
media=2;
g3|Y$/J7P
omegap=1.34639e16;
PD}SPOA`U3
epsm1=1.999+omegap^2/((9.61712e-13i)*omega-omega^2);
s9_`Wrg?
epsm=real(epsm1);
U8WHE=Kk\h
eps=[1.0 epsm ];
*`g-gk
sig=[0.0 8.85e-18];
DNm7z[t{
mur=[1.0 4.0*pi*1.0e-7];
Qor{1_h)+9
sim=[0.0 0.0];
C?/r}ly<\
%***********************************************************************
??\*D9rCn
% Wave excitation
%KJhtd"q
%***********************************************************************
>xU72l#5
rtau=10*lambda/pi/cc;
m.HX2(&\3
tau=rtau/dt;
gB{]yA"('
delay=3*tau;
^Z-.[Y
source=zeros(1,nmax);
z%}CBTm
for n=1:7.0*tau
EN-8uY.
source(n)=sin(omega*(n-delay)*dt)*exp(-((n-delay)^2/tau^2));
jsqUMy-
end
S4 k^&$;
subplot(2,1,1)
P$(WdVG
plot(source)
3D$\y~HU
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
CFkW@\]
% fields
anz9lGG#
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
zqvRkMWc M
ez=zeros(ib,jb);
L.TgJv43
hx=zeros(ib,je); %fields in main grid
"S B%02
hy=zeros(ie,jb);
nv_m!JG7
ezbcf=zeros(ibfbc,jebc);
i^yH?bH @~
ezxbcf=zeros(ibfbc,jebc);
p-Rm,xyL%
ezybcf=zeros(ibfbc,jebc);
mV**9-"
hxbcf=zeros(ibfbc,jebc); %fields in front region
"u Of~e"
hybcf=zeros(iefbc,jebc);
c>u>Pi;Z
ezbcb=zeros(ibfbc,jebc);
j:v~MrQ7|
ezxbcb=zeros(ibfbc,jebc);
\sHy. {
ezybcb=zeros(ibfbc,jebc);
BYr_Lz|T
hxbcb=zeros(ibfbc,jebc); %fields in back region
OXIu>jF
hybcb=zeros(iefbc,jebc);
B{OW}D$P#
ezbcl=zeros(iebc,jb);
W>q*.9}Y"
ezxbcl=zeros(iebc,jb);
75\RG+kQ
ezybcl=zeros(iebc,jb);
z,}c?BP
hxbcl=zeros(iebc,je); %fields in left region
=q"w2b&
hybcl=zeros(iebc,jb);
\N`fWh8&
ezbcr=zeros(iebc,jb);
0gv3v@QO
ezxbcr=zeros(iebc,jb);
e_I; y
ezybcr=zeros(iebc,jb);
cwM#X;FGq
hxbcr=zeros(iebc,je); %fields in right region
Yhc6P%{Z^
hybcr=zeros(iebc,jb);
+ 4V1>e+
%************************************************************************
=qV4Sje|q
%ezxbcfn(1:ibfbc,1:jebc)=ezxbcf(1:ibfbc,1:jebc);
eN<>#:`
%ezybcfn(1:ibfbc,1:jebc)=ezybcf(1:ibfbc,1:jebc);
n!kk~65|
%hxbcfn(1:ibfbc,1:jebc)=hxbcf(1:ibfbc,1:jebc); %fields in front region******************************************************************************************
y(/jTS/hd
%hybcfn(1:iefbc,1:jebc)=hybcf(1:iefbc,1:jebc);
<4l.s
[Hv*\rb
%ezxbcbn(1:ibfbc,1:jebc)=ezxbcb(1:ibfbc,1:jebc);
&AQg'|
%ezybcbn(1:ibfbc,1:jebc)=ezybcb(1:ibfbc,1:jebc);
Nh1e1m?
%hxbcbn(1:ibfbc,1:jebc)=hxbcb(1:ibfbc,1:jebc); %fields in back region********************************************************************************************
Giy3eva2
%hybcbn(1:iefbc,1:jebc)=hybcb(1:iefbc,1:jebc);
!7mvyc!'!
,u?wYW;
%ezxbcln(1:iebc,1:jb)=ezxbcl(1:iebc,1:jb);
#uD)0zdw
%ezybcln(1:iebc,1:jb)=ezybcl(1:iebc,1:jb);
teq^xTUF[
%hxbcln(1:iebc,1:je)=hxbcl(1:iebc,1:je); %fields in left region
Q*09E
%hybcln(1:iebc,1:jb)=hybcl(1:iebc,1:jb);
vDK:v$g
hapB! ~M?
%ezxbcrn(1:iebc,1:jb)=ezxbcr(1:iebc,1:jb);
r6F{
%ezybcrn(1:iebc,1:jb)=ezybcr(1:iebc,1:jb);
|n|U;|'^
%hxbcrn(1:iebc,1:je)=hxbcr(1:iebc,1:je); %fields in right region
S.Wh4kMUe
%hybcrn(1:iebc,1:jb)=hybcr(1:iebc,1:jb);
Pp1zW3+Q
%***********************************************************************
PmPyb>HK=P
% Updating coefficients
%jbJ6c
%***********************************************************************
Qm35{^p+
t-*VsPy
for i=1;media
R "/xne
eaf =dt*sig(i)./(2.0*epsz*eps(i));
?$30NK3G
ca(i)=(1.0-eaf)/(1.0+eaf);
Wz6]*P`qv
cb(i)=dt/epsz/eps(i)./dx/(1.0+eaf);
vi[#?;pkF
haf =dt*sim(i)./(2.0*muz*mur(i));
[ 5CS}FB
cp(i)=(1.0-haf)/(1.0+haf);
GZ/pz+)i&
cq(i)=dt/muz/mur(i)./dx./(1.0+haf);
5YTb7M
end
mHK@(D7X
%for i=2
!q~X*ZKse
%eaf =dt*sig(i)./(2.0*epsz*eps(i));
Aj8l%'h[
%ca2=(1.0-eaf)/(1.0+eaf);
R/ALR
%cb2=dt/epsz/eps(i)./dx/(1.0+eaf);
w|!YoMk+o
%haf =dt*sim(i)./(2.0*muz*mur(i));%
ot|N;=ZKo
% cp2=(1.0-haf)/(1.0+haf);
tsTR2+GZS
%cq2=dt/muz/mur(i)./dx./(1.0+haf);
r,`Z.A
%end
Z-^uM`],G
iwG>]:K3
%***********************************************************************
iX8h2l
% Geometry specification (main grid)
N5q}::Odc
%***********************************************************************
G*P[z'K=
% Initialize entire main grid to free space
SWNU1x{,c\
caez(1:ib,1:jb)=ca1;
N`,7 FI}
cbez(1:ib,1:jb)=cb1;
'h!h!
cphx(1:ib,1:je)=cp1;
6)=](VmNL`
cqhx(1:ib,1:je)=cq1;
Tm%$J
cphy(1:ie,1:jb)=cp1;
7af?E)}v
cqhy(1:ie,1:jb)=cq1;
UC8vR>e\
% boundary of main zone
Mv/IMO0rR
sigmamax=1e-17; %????????????????????????????????
]k[Q]:q
%for i=140:180
7>nhIp))
for j=3
\GijNn9ah
eaf =dt*(sig(2)+sigmamax/64)/(2.0*epsz*eps(2));
2gQY8h8
caez(140:180,j)=(1.0-eaf)/(1.0+eaf);
ri/t(m^{W
cbez(140:180,j)=dt/epsz/eps(2)/dx/(1.0+eaf);
7.wR"1p#
end
=&di4'`
%end
A|p@\3P*A
%for i=140:180
:0 W6uFNOU
for j=42
\]Y\P~n
eaf =dt*(sig(2)+sigmamax/64)/(2.0*epsz*eps(2));
bn0"M+7)f
caez(140:180,j)=(1.0-eaf)/(1.0+eaf);
0OleO9Ua
cbez(140:180,j)=dt/epsz/eps(2)/dx/(1.0+eaf);
*A~($ZtL
end
WW@JVZxK
%end
EzzTJ>
for i=140
3+CSQb8
%for j=3:42
tj#=%m?8V;
eaf =dt*(sig(2)+sigmamax/64)/(2.0*epsz*eps(2));
6V'wQqJ
caez(i,3:42)=(1.0-eaf)/(1.0+eaf);
]%gp?9wy
cbez(i,3:42)=dt/epsz/eps(2)/dx/(1.0+eaf);
mV6#!_"
%end
r+imn&FK8
end
~v.jZ/h
for i=180
HBt|}uZ?6i
% for j=3:42
#5'c\\?Q
eaf =dt*(sig(2)+sigmamax/64)/(2.0*epsz*eps(2));
?60>'Xjj
caez(i,3:42)=(1.0-eaf)/(1.0+eaf);
8q_1(& O
cbez(i,3:42)=dt/epsz/eps(2)/dx/(1.0+eaf);
fp.!VOy
%end
+IwdMJ8&8
end
C/mg46 v2W
% add SMG
IY];Ss&i
for i=141:179
d4jVdOq2
for j=4:41
W0VA'W
caez(i,j)=ca2;
e%PCe9
cbez(i,j)=cb2;
XHWh'G9
cphx(i,j)=cp2;
@PYW|*VS
cqhx(i,j)=cq2;
x1|Da$2
cphy(i,j)=cp2;
kmZ.U>#
cqhy(i,j)=cq2;
R'S c
end
Jy]FrSm^
end
o `b`*Z
5Z* b(R
% Fill the PML regions
Iv'RLM
caezxbcf=zeros(ibfbc,jebc);
;): 8yBMk
cbezxbcf=zeros(ibfbc,jebc);
(3e;"'k
caezybcf=zeros(ibfbc,jebc);
$a`J(I
cbezybcf=zeros(ibfbc,jebc);
?wGiog<Q{
cphxbcf=zeros(ibfbc,jebc); %fields in front region
PYdIP\<V
cqhxbcf=zeros(ibfbc,jebc);
"sFW~Y
cphybcf=zeros(iefbc,jebc);
xCR; K]!
cqhybcf=zeros(iefbc,jebc);
>nc4v6s
caezxbcb=zeros(ibfbc,jebc);
X}3P1.n:
cbezxbcb=zeros(ibfbc,jebc);
gb.f%rlZ`
caezybcb=zeros(ibfbc,jebc);
gsW=3m&`
cbezybcb=zeros(ibfbc,jebc);
E"Zb};}
cphxbcb=zeros(ibfbc,jebc); %fields in back region
*,E;
cqhxbcb=zeros(ibfbc,jebc);
J9g|#1G
cphybcb=zeros(iefbc,jebc);
"nVK< V d
cqhybcb=zeros(iefbc,jebc);
3CA|5A.Pa
caezxbcl=zeros(iebc,jb);
RxlszyE
cbezxbcl=zeros(iebc,jb);
Zw2jezP@t
caezybcl=zeros(iebc,jb);
D~cW ]2
cbezybcl=zeros(iebc,jb);
%GM>u2baw
cphxbcl=zeros(iebc,je); %fields in left region
^$e0t;W=
cqhxbcl=zeros(iebc,je);
G1kDM.L
cphybcl=zeros(iebc,jb);
MB1sQReOO
cqhybcl=zeros(iebc,jb);
Bx+d3
*y)4D[ z-
caezxbcr=zeros(iebc,jb);
?g5iok {
cbezxbcr=zeros(iebc,jb);
[_j6cj]
caezybcr=zeros(iebc,jb);
=Nw2;TkB[
cbezybcr=zeros(iebc,jb);
j%#?m2J}
cphxbcr=zeros(iebc,je); %fields in right region
+c-6#7hh
cqhxbcr=zeros(iebc,je);
`>%-
cphybcr=zeros(iebc,jb);
pI &o?n
cqhybcr=zeros(iebc,jb);
$kD7y5
%a=ones(iebc,je);
7*+Km'=M
%***********************************************************************
LEWa6'0rq
% Fill the PML regions
YKc>6)j
%***********************************************************************
)\8URc|J
rmax=0.00001;
IbF4k.J
orderbc=2;
- oU@D
delbc=iebc*dx;
KA`0g=
sigmam=-log(rmax/100.0)*epsz*cc*(orderbc+1)/(2*delbc);
|a%B|CX
bcfactor=eps(1)*sigmam/(dx*(delbc^orderbc)*(orderbc+1));
7 n\mj\
rmax=0.00001;
$2Ka u 1
orderbc=2;
iwvt%7
% FRONT region
OWqrD@
caexbcf(1:iefbc,1)=1.0;
=.DTR5(_h
cbexbcf(1:iefbc,1)=0.0;
cZ^wQ5=
for j=2:jebc
b2G2 cL-(
y1=(jebc-j+1.5)*dx;
q5%2WM]6
y2=(jebc-j+0.5)*dx;
k69kv9v@J
sigmay=bcfactor*(y1^(orderbc+1)-y2^(orderbc+1));
])eOa%
ca1=exp(-sigmay*dt/(epsz*eps(1)));
p`\3if'
cb1=(1.0-ca1)/(sigmay*dx);
X2i*iW<
caexbcf(1:iefbc,j)=ca1;
v}Z9+ yRC2
cbexbcf(1:iefbc,j)=cb1;
g8KY`MBnC&
end
+-U@0&Y3M
sigmay = bcfactor*(0.5*dx)^(orderbc+1);
FX7M4t#<
ca1=exp(-sigmay*dt/(epsz*eps(1)));
p=2zS.
cb1=(1-ca1)/(sigmay*dx);
Ft3I>=f{
caex(1:ie,1)=ca1;
R|-6o)$
cbex(1:ie,1)=cb1;
]y.Rg{iv
caexbcl(1:iebc,1)=ca1;
:=y0'f V(@
cbexbcl(1:iebc,1)=cb1;
DUqJ y*F(
caexbcr(1:iebc,1)=ca1;
xsYE=^uv
cbexbcr(1:iebc,1)=cb1;
Y=9qJ`q
for j=1:jebc
F@<O;b#Ip
y1=(jebc-j+1)*dx;
ZOp^`c9~
y2=(jebc-j)*dx;
UIQQ\,3
sigmay=bcfactor*(y1^(orderbc+1)-y2^(orderbc+1));
zkd3Z$Ce
sigmays=sigmay*(muz/(epsz*eps(1)));
`(3SfQ-
cp1=exp(-sigmays*dt/muz);
)^&,Dj
cq1=(1-cp1)/(sigmays*dx);
WPtMds4
cphzybcf(1:iefbc,j)=cp1;
>o#ERNf
cqhzybcf(1:iefbc,j)=cq1;
;8BA~,4l
caeybcf(1:ibfbc,j)=ca(1);
4e}{$s$Xx
cbeybcf(1:ibfbc,j)=cb(1);
"t=UX -3
cphzxbcf(1:iefbc,j)=cp(1);
J6DnPaw-G
cqhzxbcf(1:iefbc,j)=cq(1);
K|US~Hgv
end
'm[6v}
% BACK region
5!tb$p#z
caexbcb(1:iefbc,jbbc)=1.0;
s\_l=v3
cbexbcb(1:iefbc,jbbc)=0.0;
sA3UeTf
for j=2:jebc
Tj&'KF8?L
y1=(j-0.5)*dx;
.xEJaID\N
y2=(j-1.5)*dx;
?<! nm&~
sigmay=bcfactor*(y1^(orderbc+1)-y2^(orderbc+1));
AfN&n= d K
ca1=exp(-sigmay*dt/(epsz*eps(1)));
F%Kp9I*
cb1=(1-ca1)/(sigmay*dx);
&2Q*1YXj
caexbcb(1:iefbc,j)=ca1;
>'N!dM.+9
cbexbcb(1:iefbc,j)=cb1;
7 %3<~'v[
end
o_sQQF
sigmay = bcfactor*(0.5*dx)^(orderbc+1);
r?\|f:M3
ca1=exp(-sigmay*dt/(epsz*eps(1)));
3&$Nd
cb1=(1-ca1)/(sigmay*dx);
("OAPr\2dw
caex(1:ie,jb)=ca1;
!5&%\NSv
cbex(1:ie,jb)=cb1;
Vd21,~^>g
caexbcl(1:iebc,jb)=ca1;
WK*S4c
cbexbcl(1:iebc,jb)=cb1;
-]/7hN*v
caexbcr(1:iebc,jb)=ca1;
W+.{4K
cbexbcr(1:iebc,jb)=cb1;
8-ZUS|7B
for j=1:jebc
kymn)Ea
y1=j*dx;
C w%BZ
y2=(j-1)*dx;
ALfiR(!
sigmay=bcfactor*(y1^(orderbc+1)-y2^(orderbc+1));
BMdSf(l
sigmays=sigmay*(muz/(epsz*eps(1)));
&-=K:;x
cp1=exp(-sigmays*dt/muz);
Gbn4*<N
ccq1=(1-cp1)/(sigmays*dx);
T(JuL<PB
cphzybcb(1:iefbc,j)=cp1;
@7fm1b
cqhzybcb(1:iefbc,j)=cq1;
JIMWMk;ot
caeybcb(1:ibfbc,j)=ca(1);
-3` "E%9
cbeybcb(1:ibfbc,j)=cb(1);
U,'EF[t
cphzxbcb(1:iefbc,j)=cp(1);
zi }(^~Fe
cqhzxbcb(1:iefbc,j)=cq(1);
iTu0T!4F
end
.A(i=!{q
% LEFT region
'#A:.P
caeybcl(1,1:je)=1.0;
Ge^Qar
cbeybcl(1,1:je)=0.0;
p'g^Wh
for i=2:iebc
9qr UM`z$g
x1=(iebc-i+1.5)*dx;
x~EKGoz3
x2=(iebc-i+0.5)*dx;
Ew]<jF|.#
sigmax=bcfactor*(x1^(orderbc+1)-x2^(orderbc+1));
]rnXNn;
ca1=exp(-sigmax*dt/(epsz*eps(1)));
2 Kla8
cb1=(1-ca1)/(sigmax*dx);
0vn[a,W<A
caeybcl(i,1:je)=ca1;
nS.2C>A
cbeybcl(i,1:je)=cb1;
:@/"abv
caeybcf(i,1:jebc)=ca1;
U;pe:
cbeybcf(i,1:jebc)=cb1;
VRF6g|0;
caeybcb(i,1:jebc)=ca1;
srK53vKMHW
cbeybcb(i,1:jebc)=cb1;
+}U2@03I
end
-TTs.O8P|<
sigmax=bcfactor*(0.5*dx)^(orderbc+1);
a8zZgIV
ca1=exp(-sigmax*dt/(epsz*eps(1)));
\DS^i`o)rY
cb1=(1-ca1)/(sigmax*dx);
qU -!7=}7
caey(1,1:je)=ca1;
+;dXDZ2
cbey(1,1:je)=cb1;
;%WdvnW
caeybcf(iebc+1,1:jebc)=ca1;
(UGol[f<
cbeybcf(iebc+1,1:jebc)=cb1;
\Tyf *:_F>
caeybcb(iebc+1,1:jebc)=ca1;
(N0sE"_~I5
cbeybcb(iebc+1,1:jebc)=cb1;
&wjB{%
for i=1:iebc
T9?54r
x1=(iebc-i+1)*dx;
Tm_8<$ 7
x2=(iebc-i)*dx;
ZE rdt:w
sigmax=bcfactor*(x1^(orderbc+1)-x2^(orderbc+1));
LWD#a~
sigmaxs=sigmax*(muz/(epsz*eps(1)));
f?^S bp
cp1=exp(-sigmaxs*dt/muz);
U<[jT=L
cq1=(1-da1)/(sigmaxs*dx);
q$T8bh,2
cphzxbcl(i,1:je)=cp1;
iDw.i"b
cqhzxbcl(i,1:je)=cq1;
_f|/*. @Q
cphzxbcf(i,1:jebc)=cp1;
3$_*N(e
cqhzxbcf(i,1:jebc)=cq1;
3fp> 4;ym'
cphzxbcb(i,1:jebc)=cp1;
*T1~)z}j<
cqhzxbcb(i,1:jebc)=cq1;
O,|\"b1(
caexbcl(i,2:je)=ca(1);
P6YQK+
cbexbcl(i,2:je)=cb(1);
8+>\3j
cphzybcl(i,1:je)=cp(1);
nvt$F%+
cqhzybcl(i,1:je)=cq(1);
~RInN+N#
end
M|8 3HTJ
4mJFvDZV`
+xp*]a
%***********************************************************************
"r. .
% Movie initialization
Sy
%***********************************************************************
K6B4sE
subplot(2,1,2),pcolor(ez);
`%=<R-/#7S
shading flat;
Jq)U</
caxis([-1000000000 1000000000]);
2m" _z
axis([1 ib 1 jb]);
DW|vMpU]u
%axis([1 jb 1 ib]);
6,+nRiZ
colorbar;
h/K@IAd
axis image;
9B=1Yr[
axis off;
)xt4Wk/
title(('ez at time step = 0'));
ne*#+Q{E
5g>wV
%***********************************************************************
=EpJZt
% BEGIN TIME-STEPPING LOOP
Ly>OLI0x_
%***********************************************************************
=cn~BnowY
ezbcl(1:iebc,1:jb)=ezxbcl(1:iebc,1:jb)+ezybcl(1:iebc,1:jb);
H\#:,s {1
ezbcr(1:iebc,1:jb)=ezxbcr(1:iebc,1:jb)+ezybcr(1:iebc,1:jb);
Ri @`a
ezbcf(1:ibfbc,1:jebc)=ezxbcf(1:ibfbc,1:jebc)+ezybcf(1:ibfbc,1:jebc);
H^ BYd%-
ezbcb(1:ibfbc,1:jebc)=ezxbcb(1:ibfbc,1:jebc)+ezybcb(1:ibfbc,1:jebc);
7W|Zq6pi
M{E{N K
for n=1:nmax
'zxoRc-b@N
%***********************************************************************
k ZxW"2
% Update electric fields (ez,hx,hy) in main grid
[zh"x#AyI
%***********************************************************************
h e&V# #
0 iRR{a<
x=source(n).*10e20;
wa ky<w,
"!KpXBc,>
ez(is,js)=ez(is,js)+x;%
lhO2'#]i
ez(2:ie,2:je)=caez(2:ie,2:je).*ez(2:ie,2:je)+...
3=- })X;
cbez(2:ie,2:je).*((hy(2:ie,2:je)-hy(1:ie-1,2:je))-...
ehT%s+aUw
(hx(2:ie,2:je)-hx(2:ie,1:je-1)))
eFFc 9'o
* t!r@k
hx(1:ie,1:je)=cphx(1:ie,1:je).*hx(1:ie,1:je)+...
/:p8I6;
cqhx(1:ie,1:je).*(ez(1:ie,2:jb)-ez(1:ie,1:je));
8r^ ~0nm
hy(1:ie,1:jb)=cphy(1:ie,1:jb).*hy(1:ie,1:jb)+...
n8u*JeN
cqhy(1:ie,1:jb).*(ez(2:ib,1:jb)-ez(1:ie,1:jb));
h1f8ktF
sV2iITFp
ezxbcfn(1:ibfbc,1:jebc)=ezxbcf(1:ibfbc,1:jebc);
p/*"4-S
ezybcfn(1:ibfbc,1:jebc)=ezybcf(1:ibfbc,1:jebc);
=~ jAoOC@
%ezybcf(2:iefbc,2)=ezybcf(2:iefbc,2); %fields in front region
Js{=i>D
ezbcfn(1:ibfbc,1:jebc)=ezbcf(1:ibfbc,1:jebc);
9M'DC^x*T
QVtM.oi!Q
ezxbcbn(1:ibfbc,1:jebc)=ezxbcb(1:ibfbc,1:jebc);
e&1\'Zq?>
ezybcbn(1:ibfbc,1:jebc)=ezybcb(1:ibfbc,1:jebc);
S GM!#K
%ezybcbn(2:iefbc,jebc-1)=ezybcb(2:iefbc,jebc-1); %fields in back region
$iPP|Rw
ezbcbn(1:ibfbc,1:jebc)=ezbcb(1:ibfbc,1:jebc);
Q9sl fQ
%ezbcln(iebc-1,1)=ezbcl(iebc-1,1);
< kP+eD
%ezbcln(2,jb)=ezbcln(2,jb);
.~mCXz<x
%ezbcf(ibbc,1)=ezbcbn(ibbc-1,2)
|=5/Rax^
ezxbcln(1:iebc,1:jb)=ezxbcl(1:iebc,1:jb);
8\# ^k#X
ezybcln(1:iebc,1:jb)=ezybcl(1:iebc,1:jb); %fields in left region
l r~gG3
ezbcln(1:iebc,1:jb)=ezbcl(1:iebc,1:jb);
>qh?L#Fk
%ezbcf(1,1)=ezbcfn(2,2)
3Aj*\e0t
ezxbcrn(1:iebc,1:jb)=ezxbcr(1:iebc,1:jb);
g_z/{1$
ezybcrn(1:iebc,1:jb)=ezybcr(1:iebc,1:jb); %fields in right region
:E'P7A
ezbcrn(1:iebc,1:jb)=ezbcr(1:iebc,1:jb);
FjFwvO_.
Yb:pAzw6
% left
}ZzLs/v%X
hxbcl(1:iebc,1:je)=cphxbcl(1:iebc,1:je).*hxbcl(1:iebc,1:je)+...
x_!ZycEa
cqhxbcl(1:iebc,1:je).*(ezbcl(1:iebc,1:je)-ezbcl(1:iebc,2:jb));
8\Hr5FqB(
hybcl(1:iebc-1,1:jb)=cphybcl(1:iebc-1,1:jb).*hybcl(1:iebc-1,1:jb)+...
kg>>D
cqhybcl(1:iebc-1,1:jb).*(ezbcl(2:iebc,1:jb)-ezbcl(1:iebc-1,1:jb));
XUSvhr$|
ezxbcl(2:iebc,1:jb)=caezxbcl(2:iebc,1:jb).*ezxbcl(2:iebc,1:jb)+...
H?Jm'\~
cbezxbcl(2:iebc,1:jb).*(hybcl(2:iebc,1:jb)-hybcl(1:iebc-1,1:jb));
R#eg^7HfX
ezybcl(1:iebc,2:je)=caezybcl(1:iebc,2:je).*ezybcl(1:iebc,2:je)+...
zOB=aG?/
cbezybcl(1:iebc,2:je).*(hxbcl(1:iebc,2:je)-hxbcl(1:iebc,1:je-1));
4l @)K9F
% right
X3B{8qx_>
hxbcr(1:iebc,1:je)=cphxbcr(1:iebc,1:je).*hxbcr(1:iebc,1:je)+...
WG5W0T_
cqhxbcr(1:iebc,1:je).*(ezbcr(1:iebc,1:je)-ezbcr(1:iebc,2:jb));
&tE.6^F
hybcr(2:iebc,1:jb)=cphybcr(2:iebc,1:jb).*hybcr(2:iebc,1:jb)+...
v}[dnG
cqhybcr(2:iebc,1:jb).*(ezbcr(2:iebc,1:jb)-ezbcr(1:iebc-1,1:jb));
LM"y\q ]
ezxbcr(1:iebc-1,1:jb)=caezxbcr(1:iebc-1,1:jb).*ezxbcr(1:iebc-1,1:jb)+...
"b,%8
cbezxbcl(1:iebc-1,1:jb).*(hybcr(2:iebc,1:jb)-hybcr(1:iebc-1,1:jb));
DWm SC}{.
ezybcr(1:iebc,2:je)=caezybcr(1:iebc,2:je).*ezybcr(1:iebc,2:je)+...
gQouOjfP
cbezybcl(1:iebc,2:je).*(hxbcr(1:iebc,2:je)-hxbcr(1:iebc,1:je-1));
e:-8k_0|
% down
a$JLc a
hxbcf(1:ibfbc,1:jebc-1)=cphxbcf(1:ibfbc,1:jebc-1).*hxbcf(1:ibfbc,1:jebc-1)+...
*e/K:k
cqhxbcf(1:ibfbc,1:jebc-1).*(ezbcf(1:ibfbc,2:jebc)-ezbcf(1:ibfbc,1:jebc-1));
_0(7GE13p
hybcf(1:iefbc,1:jebc)=cphybcf(1:iefbc,1:jebc).*hybcf(1:iefbc,1:jebc)+...
`.v(fC
cqhybcf(1:iefbc,1:jebc).*(ezbcf(2:ibfbc,1:jebc)-ezbcf(1:iefbc,1:jebc));
s'u(B]E
ezxbcf(2:iefbc,1:jebc)=caezxbcf(2:iefbc,1:jebc).*ezxbcf(2:iefbc,1:jebc)+...
o#D.9K(
cbezxbcf(2:iefbc,1:jebc).*(hybcf(2:iefbc,1:jebc)-hybcf(1:iefbc-1,1:jebc));
~uj;qq
ezybcf(1:ibbc,2:jebc)=caezybcf(1:ibbc,2:jebc).*ezybcf(1:ibbc,2:jebc)+...
YRcps0Dx9
cbezybcf(1:ibbc,2:jebc).*(hxbcf(1:ibbc,2:jebc)-hxbcf(1:ibbc,1:jebc-1));
J/ W{/E>;
% up
,Z~;U
hxbcb(1:ibfbc,2:jebc)=cphxbcb(1:ibfbc,2:jebc).*hxbcb(1:ibfbc,2:jebc)+...
Qh`:<KI
cqhxbcb(1:ibfbc,2:jebc).*(ezbcb(1:ibfbc,2:jebc)-ezbcb(1:ibfbc,1:jebc-1));
T):SGW
hybcb(1:iefbc,1:jebc)=cphxbcb(1:iefbc,1:jebc).*hxbcb(1:iefbc,1:jebc)+...
*>."V5{;S
cqhybcb(1:iefbc,1:jebc).*(ezbcb(2:ibfbc,1:jebc)-ezbcb(1:iefbc,1:jebc));
"A[ b rG
ezxbcb(2:iefbc,1:jebc)=caezxbcb(2:iefbc,1:jebc).*ezxbcb(2:iefbc,1:jebc)+...
= yXs?y"
cbezxbcb(2:iefbc,1:jebc).*(hybcb(2:iefbc,1:jebc)-hybcb(1:iefbc-1,1:jebc));
Y*LaBxt Q
ezybcb(1:ibbc,1:jebc-1)=caezybcb(1:ibbc,1:jebc-1).*ezybcb(1:ibbc,1:jebc-1)+...
x0Z5zV9
cbezybcb(1:ibbc,1:jebc-1).*(hxbcb(1:ibbc,2:jebc)-hxbcb(1:ibbc,1:jebc-1));
L1#Ij#
.CbGDZ
{{!Y]\2S
% ezx
\#,t O%D
% left line
%*W<vu>H
ezbcl(1,2:je)=ezbcln(2,2:je)+(cc*dt-dx)/(cc*dt+dx)*(ezbcl(2,2:je)-...
nE|@IGH
ezbcl(1,2:je))+cc^2*muz*dt/(2*(cc*dt+dx))*(hxbcl(1,2:je)-...
Vrp[r *V@E
hxbcl(1,1:je-1)+hxbcl(2,2:je)-hxbcl(2,1:je-1));
!;3PG9n3|h
ezbcf(1,2:jebc)=ezbcfn(2,2:jebc)+(cc*dt-dx)/(cc*dt+dx)*(ezbcf(2,2:jebc)-...
L*JPe"N-e
ezbcf(1,2:jebc))+cc^2*muz*dt/(2*(cc*dt+dx))*(hxbcf(1,2:jebc)-...
tju|UhP3
hxbcf(1,1:jebc-1)+hxbcf(2,2:jebc)-hxbcf(2,1:jebc-1));
?c#$dc"
ezbcb(1,1:jebc-1)=ezbcbn(2,1:jebc-1)+(cc*dt-dx)/(cc*dt+dx)*(ezbcb(2,1:jebc-1)-...
-]S.<8<$
ezbcb(1,1:jebc-1))+cc^2*muz*dt/(2*(cc*dt+dx))*(hxbcb(1,2:jebc)-...
$nPAm6mH
hxbcb(1,1:jebc-1)+hxbcb(2,2:jebc)-hxbcb(2,1:jebc-1));
i::\Z$L";i
ezbcl(1,1)=ezbcln(2,1)+(cc*dt-dx)/(cc*dt+dx)*(ezbcl(2,1)-...
0KvVw rWJ
ezbcl(1,1))+cc^2*muz*dt/(2*(cc*dt+dx))*(hxbcl(1,1)-...
Q@QFV~
hxbcf(1,jebc)+hxbcl(2,1)-hxbcf(2,jebc));
ig_2={Q@
ezbcl(1,jb)=ezbcln(2,jb)+(cc*dt-dx)/(cc*dt+dx)*(ezbcl(2,jb)-...
=Ho"N`Qy
ezbcl(1,jb))+cc^2*muz*dt/(2*(cc*dt+dx))*(hxbcb(1,1)-...
ziEz.Wn"
hxbcl(1,je)+hxbcb(2,1)-hxbcl(2,je));
m,_d^
% right line
Q+$Tt7/
ezbcr(iebc,2:je)=ezbcrn(iebc-1,2:je)+(cc*dt-dx)/(cc*dt+dx)*(ezbcr(iebc-1,2:je)-...
9uYyfb: ,z
ezbcr(iebc,2:je))+cc^2*muz*dt/(2*(cc*dt+dx))*(hxbcr(iebc,2:je)-...
}!s!;BOx
hxbcr(iebc,1:je-1)+hxbcr(iebc-1,2:je)-hxbcr(iebc-1,1:je-1));
..<3%fL3
ezbcf(ibfbc,2:jebc)=ezbcfn(ibfbc-1,2:jebc)+...
glUo7^ay7
(cc*dt-dx)/(cc*dt+dx)*(ezbcf(ibfbc-1,2:jebc)-...
cQUC.TZ_
ezbcf(ibfbc,2:jebc))+cc^2*muz*dt/(2*(cc*dt+dx))*(hxbcf(ibfbc,2:jebc)-...
\a|L/9%
hxbcf(ibfbc,1:jebc-1)+hxbcf(ibfbc-1,2:jebc)-hxbcf(ibfbc-1,1:jebc-1));
g,kzQ}_
ezbcb(ibfbc,1:jebc-1)=ezbcbn(ibfbc-1,1:jebc-1)+...
Ee2c5C!|C
(cc*dt-dx)/(cc*dt+dx)*(ezbcb(ibfbc-1,1:jebc-1)-...
c&'JmKV>&
ezbcb(ibfbc,1:jebc-1))+cc^2*muz*dt/(2*(cc*dt+dx))*(hxbcb(ibfbc,2:jebc)-...
x\@*60o
hxbcb(ibfbc,1:jebc-1)+hxbcb(ibfbc-1,2:jebc)-hxbcb(ibfbc-1,1:jebc-1));
80B>L
ezbcr(iebc,1)=ezbcln(iebc-1,1)+(cc*dt-dx)/(cc*dt+dx)*(ezbcl(iebc-1,1)-...
r\M9_s8
ezbcl(iebc,1))+cc^2*muz*dt/(2*(cc*dt+dx))*(hxbcr(iebc,1)-...
MI#mAg<
hxbcf(ibbc,jebc)+hxbcr(2,1)-hxbcf(ibbc-1,jebc));
R,_d1^|*w
ezbcr(iebc,jb)=ezbcln(iebc,jb)+(cc*dt-dx)/(cc*dt+dx)*(ezbcl(iebc-1,jb)-...
`-UJ /{
ezbcl(iebc,jb))+cc^2*muz*dt/(2*(cc*dt+dx))*(hxbcb(iebc,1)-...
aT!;{+
hxbcl(iebc,je)+hxbcb(iebc-1,1)-hxbcl(iebc-1,je));
=f 7r69I"
% left down corner
6}dR$*=
ezbcf(1,1)=ezbcfn(2,2)+...
l]_=:)" ]
(cc*dt-2^(1/2)*dx)/(cc*dt+2^(1/2)*dx)*(ezbcf(2,2)-...
*}!MOqP
ezbcf(1,1));
3,eIB(
% right down corner
[QczlwmO
ezbcf(ibbc,1)=ezbcbn(ibbc-1,2)+...
z/]q)`G
(cc*dt-2^(1/2)*dx)/(cc*dt+2^(1/2)*dx)*(ezbcb(ibbc-1,2)-...
S h4wqf
ezbcf(ibbc,1));
39TT{>?`w
% left up corner
NAr1[{^E,
ezbcb(1,jebc)=ezbcbn(2,jebc-1)+...
G^Tk 20*
(cc*dt-2^(1/2)*dx)/(cc*dt+2^(1/2)*dx)*(ezbcb(2,jebc-1)-...
#exss=as/
ezbcb(1,jebc));
.tXtcf/
% right up corner
KMK`F{
ezbcb(ibbc,jebc)=ezbcbn(ibbc-1,jebc-1)+...
L;6.r3bL
(cc*dt-2^(1/2)*dx)/(cc*dt+2^(1/2)*dx)*(ezbcb(ibbc-1,jebc-1)-...
!Pj/7JC0
ezbcb(ibbc,jebc));
`a]44es9q
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
l{WjDed
% ezy
,|T7hTn=
% bcl:up down
A(d5G^
ezybcl(1:iebc,1)=caezybcl(1:iebc,1).*ezybcl(1:iebc,1)+...
$u9]yiY.{
cbezybcl(1:iebc,1).*(hxbcl(1:iebc,1)-hxbcf(1:iebc,jebc));
Z)"61) )
ezybcl(1:iebc,jb)=caezybcl(1:iebc,jb).*ezybcl(1:iebc,jb)+...
SUtf[6
cbezybcl(1:iebc,jb).*(hxbcb(1:iebc,1)-hxbcl(1:iebc,je));
z1V#'$_5-
%bcr: up down
X% {'<baR
ezybcr(1:iebc,1)=caezybcr(1:iebc,1).*ezybcr(1:iebc,1)+...
adO&