登 录
註 冊
论坛
微波仿真网
注册
登录论坛可查看更多信息
微波仿真论坛
>
时域有限差分法 FDTD
>
关于一维 FDTD Mur 边界的问题 (求助)
发帖
回复
984
阅读
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的反射波不能被吸收。
fwnpmuJ
程序调了很久,就是不能消除反射波,不知道有没有人做过这个简单的一维FDTD程序,有没有出现这样的情况?”
'qP^MdoE%~
Mb9q<4
在论坛找了好久也没找到解决问题的办法和相关的代码 希望知道的朋友能告诉一下。先谢谢了··
tFSdi.|G=
并把我的错误程序放上,希望能给指出错误···
HdLkof2i
[backcolor=#c ..
hKT:@l*
ef.lM]cO
未注册仅能浏览
部分内容
,查看
全部内容及附件
请先
登录
或
注册
附件:
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) 的帖子
程序如下:
"g+z !4b#
t\v+ogbk)
max_time = 300;
>5G>D~b
max_space = 200;
PIXL6
~ 7)A"t
eta = .5;
|Oag,o"
delta_x = .01;
~m*,mz
delta_t = delta_x / (2*3e8);
dO7;}>F$n
c = 3e8;
MlW 8t[
8q)=
E = zeros(max_space,1);
:D7|%KK
H = E ;
]4 (?BJ
Ez_n=zeros(1,4);
U.T|
abxDB
spread = 12;
KLC{7"6e)
center_problem_space = max_space / 2;
wY"o`oZ
t0 = 40 ;
AnZclqtb
Y\v-,xPm
%定义边界处的系数
htP|3 B
K_M1 = (c*delta_t-delta_x)/(c*delta_t+delta_x);
nY $tp
YRlDX:oX~
for n = 1:max_time
o/o:2p.
%左边界
wNE$6
Ez_n_1(1) = Ez_n(1);
j8 C8X$
Ez_n(1) = E(1);
7~M<cD
Ez_n_1(2) = Ez_n(2);
/HZumV?
Ez_n(2) = E(2);
6D;^uM2N
%右边界
2AVc? 9@
Ez_n_1(3) = Ez_n(3);
U/;]zdP.K
Ez_n(3) = E(max_space-1);
F^!mI7Z|(2
Ez_n_1(4) = Ez_n(4);
8dK0o>|}
Ez_n(4) = E(max_space);
_y .]3JNm
for k = 2:max_space
^6p'YYj"5
E(k) = E(k) + eta*(H(k-1) - H(k));
%]p6Kn/>
end
HEA eo!
6#A:}B<?
%Mur ABC
;3C:%!CdA]
%at x=1;
$\AEWFB
E(1) = Ez_n_1(2) + K_M1*(E(2) - Ez_n_1(1));
5jq=_mHt
%at x=max_space
G%#05jH
E(max_space) = Ez_n_1(3) + K_M1*(E(max_space-1) - Ez_n_1(4)) ;
BKU'`5`
PNSMcakD
pulse = exp(-.5*((t0 - n)/spread)^2);
2>em0{e
E(center_problem_space) = pulse ;
-v?hqWMp#
bl/,*Wx:4.
6aOp[-Le
for j = 1:max_space-1
@;wzsh >o
H(j) = H(j) + eta*(E(j) - E(j + 1));
g<\z= H
end
.I$}KE)
figure(1)
b]gY~cbI8
plot(E)
\.e4.[%[2-
axis([1 max_space -1.1 1.1])
A<YsfDa_d
pause(.05)
HI&kP+,y
end
dPjhq(8 zU
figure(2)
zGc(Ef5`M6
subplot(2,1,1)
VSOz.g>
plot(E,'b')
^Jp*B;
ylabel('Ex')
u}6v?!
axis([1 max_space -1.1 1.1])
/,|CrNwY*
subplot(2,1,2)
TJ6#P<M
plot(H,'r')
!.fw,!}hOD
ylabel('Hy')
em2_pq9q
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) 的帖子
顺便再问一个问题··我看别人的程序中对于吸收边界的处理如下:
nHX@
E(1) = E_low_m2;
_jtBU
E_low_m2 = E_low_m1;
A9"ho}<
E_low_m1 = E(2);
[mm5?23g
E(max_space) = E_high_m2;
wDsEx!\#
E_high_m2 = E_high_m1;
mGIS[_dcs
E_high_m1 = E(max_space - 1);
=0Nd\
,QK>e;:Be
它依据的原理是什么呢?还有它是《电磁波时域有限差分方法》一书中所说的行波延迟法么?我看他得书上这样写的:
+iXA|L9=
当c*delta_t = delta_x 时 有 E n+1 (k) = E n(k-1) (n+1和n 是E 的上角标)
de"*<+
还请大侠指点下··谢谢了 呵呵·
共
条评分
资源共享
离线
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);
#Q1}h
改为 delta_t = delta_x / (3e8);即:( delta_t = delta_x / c ) 后发现能够完全吸收了··
p(!d,YSE
不知道这是为什么呢?难道说, 传播一个网格要一个时间步长时, 对于边界处的迭代只要一个时间步长即可?? 我这样说对么??
共
条评分
资源共享
发帖
回复