登 录
註 冊
论坛
微波仿真网
注册
登录论坛可查看更多信息
微波仿真论坛
>
时域有限差分法 FDTD
>
关于一维 FDTD Mur 边界的问题 (求助)
发帖
回复
983
阅读
6
回复
[
求助
]
关于一维 FDTD Mur 边界的问题 (求助)
离线
da376805618
资源共享呗
UID :71951
注册:
2011-01-22
登录:
2014-09-27
发帖:
389
等级:
仿真三级
0楼
发表于: 2011-09-10 12:20:10
有人发过这样的帖子·我刚学FDTD ,也遇到了这样的问题。就是“
最近在看葛德彪的《电磁波时域有限差分方法》一书,在看到Mur边界时,自己做的一维Mur边界的吸收效果不好。用Gauss脉冲激励(最大值为1),在边界边会有0.2的反射波不能被吸收。
q(
程序调了很久,就是不能消除反射波,不知道有没有人做过这个简单的一维FDTD程序,有没有出现这样的情况?”
F&4rO\aC"/
y`<*U;xL
在论坛找了好久也没找到解决问题的办法和相关的代码 希望知道的朋友能告诉一下。先谢谢了··
Ci@o|Y }tP
并把我的错误程序放上,希望能给指出错误···
hQ,ch[j'
[backcolor=#c ..
ePOG}k($/%
$t$ShT)
未注册仅能浏览
部分内容
,查看
全部内容及附件
请先
登录
或
注册
附件:
fdtd_1.rar
(1 K) 下载次数:16
共
条评分
离线
tingo
临渊羡鱼,不如退而结网
UID :28673
注册:
2009-03-29
登录:
2019-09-21
发帖:
126
等级:
仿真三级
1楼
发表于: 2011-09-10 21:30:31
你还是把程序直接贴出来吧,我RF币不够,连你的附件都下不了,就没法帮你看程序了!
共
条评分
仿真新人!
离线
da376805618
资源共享呗
UID :71951
注册:
2011-01-22
登录:
2014-09-27
发帖:
389
等级:
仿真三级
2楼
发表于: 2011-09-11 15:27:40
回 1楼(tingo) 的帖子
程序如下:
ru'F6?d
FW;m\vu
max_time = 300;
Z EQ@IS:Y
max_space = 200;
Vk`h2BV
jxP;>K7O
eta = .5;
FX;QG94!
delta_x = .01;
I^* Nqqq
delta_t = delta_x / (2*3e8);
q'+)t7!
c = 3e8;
_aq8@E~
3_C|z,\:
E = zeros(max_space,1);
@g|v;B|{
H = E ;
hl;u'_AB
Ez_n=zeros(1,4);
['b}QW@Fx
/hpY f]t
spread = 12;
50"pbzW
center_problem_space = max_space / 2;
?)/#+[xa
t0 = 40 ;
t Cw<Ip
hz{`h
%定义边界处的系数
y3vdUauOn
K_M1 = (c*delta_t-delta_x)/(c*delta_t+delta_x);
+[Dx?XM
l(yZO$
for n = 1:max_time
[m->5H
%左边界
Zj_b>O-V
Ez_n_1(1) = Ez_n(1);
<3L5"77G6
Ez_n(1) = E(1);
ZVW'>M7.
Ez_n_1(2) = Ez_n(2);
[RS|gem`
Ez_n(2) = E(2);
XUrXnz|>
%右边界
T!uM+6|Y
Ez_n_1(3) = Ez_n(3);
.[YuRLGz
Ez_n(3) = E(max_space-1);
f@6QvkIa
Ez_n_1(4) = Ez_n(4);
.4S.>~^7
Ez_n(4) = E(max_space);
at @G/?
for k = 2:max_space
Yh7rU?Gj
E(k) = E(k) + eta*(H(k-1) - H(k));
1}"++Z73P
end
H!c@klD
LhN|1f:9:
%Mur ABC
t1]K<>g
%at x=1;
2v :]tj
E(1) = Ez_n_1(2) + K_M1*(E(2) - Ez_n_1(1));
G%BjhpL
%at x=max_space
N[?N5~jG
E(max_space) = Ez_n_1(3) + K_M1*(E(max_space-1) - Ez_n_1(4)) ;
zlyS}x@p
sXqz+z$*
pulse = exp(-.5*((t0 - n)/spread)^2);
$5>e
E(center_problem_space) = pulse ;
QZ!Y2Bz(4
8bxfj<O,
"WlZ)wyF%
for j = 1:max_space-1
QemyCCP+
H(j) = H(j) + eta*(E(j) - E(j + 1));
4d"r^y'
end
>3ZFzh&OYQ
figure(1)
N>Xo_-QCY
plot(E)
AWcLUe {
axis([1 max_space -1.1 1.1])
rr/B=O7
pause(.05)
}#3V+X
end
G`+T+
figure(2)
'|ad_M
subplot(2,1,1)
C^s^D:
plot(E,'b')
!H#bJTXB
ylabel('Ex')
uMUBh 80,L
axis([1 max_space -1.1 1.1])
W'els)WJ|x
subplot(2,1,2)
U1Q:= yD
plot(H,'r')
z Eq GD2"
ylabel('Hy')
T=<@]$?
axis([1 max_space -1.1 1.1])
共
条评分
资源共享
离线
da376805618
资源共享呗
UID :71951
注册:
2011-01-22
登录:
2014-09-27
发帖:
389
等级:
仿真三级
3楼
发表于: 2011-09-11 15:33:52
回 1楼(tingo) 的帖子
顺便再问一个问题··我看别人的程序中对于吸收边界的处理如下:
Bu#E9hJFvA
E(1) = E_low_m2;
T m,b,hi$
E_low_m2 = E_low_m1;
oin$-i|Xp!
E_low_m1 = E(2);
^b/ Z)3
E(max_space) = E_high_m2;
+:8fC$vVfC
E_high_m2 = E_high_m1;
l2`s! ,<>O
E_high_m1 = E(max_space - 1);
H0:E(}@
:Uz| 3gq
它依据的原理是什么呢?还有它是《电磁波时域有限差分方法》一书中所说的行波延迟法么?我看他得书上这样写的:
T{Gj+7bQ~
当c*delta_t = delta_x 时 有 E n+1 (k) = E n(k-1) (n+1和n 是E 的上角标)
C`K?7v3$m
还请大侠指点下··谢谢了 呵呵·
共
条评分
资源共享
离线
tingo
临渊羡鱼,不如退而结网
UID :28673
注册:
2009-03-29
登录:
2019-09-21
发帖:
126
等级:
仿真三级
4楼
发表于: 2011-09-12 08:47:45
呵呵,你的问题出在蛙跳格式出错了!
共
条评分
仿真新人!
离线
tingo
临渊羡鱼,不如退而结网
UID :28673
注册:
2009-03-29
登录:
2019-09-21
发帖:
126
等级:
仿真三级
5楼
发表于: 2011-09-12 08:55:23
回 2楼(da376805618) 的帖子
不过,如果是一维貌似差别不大,我再看看你的程序!
共
条评分
离线
da376805618
资源共享呗
UID :71951
注册:
2011-01-22
登录:
2014-09-27
发帖:
389
等级:
仿真三级
6楼
发表于: 2011-09-12 16:34:50
回 4楼(tingo) 的帖子
大侠··· 谢谢你能帮我,不过我不咋懂蛙跳额。。嘿嘿···具体是哪一行呢??我昨天把delta_t = delta_x / (2*3e8);
p89wNSMl[
改为 delta_t = delta_x / (3e8);即:( delta_t = delta_x / c ) 后发现能够完全吸收了··
<<(wa j
不知道这是为什么呢?难道说, 传播一个网格要一个时间步长时, 对于边界处的迭代只要一个时间步长即可?? 我这样说对么??
共
条评分
资源共享
发帖
回复