登 录
註 冊
论坛
微波仿真网
注册
登录论坛可查看更多信息
微波仿真论坛
>
时域有限差分法 FDTD
>
关于一维 FDTD Mur 边界的问题 (求助)
发帖
回复
982
阅读
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的反射波不能被吸收。
}M9L,O*^
程序调了很久,就是不能消除反射波,不知道有没有人做过这个简单的一维FDTD程序,有没有出现这样的情况?”
w873: =
q6v%HF-q4
在论坛找了好久也没找到解决问题的办法和相关的代码 希望知道的朋友能告诉一下。先谢谢了··
w;Na9tR
并把我的错误程序放上,希望能给指出错误···
j_*#"}Lcp
[backcolor=#c ..
Obu>xK(
U_c.Z{lC4
未注册仅能浏览
部分内容
,查看
全部内容及附件
请先
登录
或
注册
附件:
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) 的帖子
程序如下:
b|SDg%e
'e&L53n
max_time = 300;
w)C/EHF
max_space = 200;
/!7
{KQ-QKxxS
eta = .5;
-!o*A>N
delta_x = .01;
&>nB@SQZ
delta_t = delta_x / (2*3e8);
/thFs4
c = 3e8;
QZwUv<*
C{{RU7iqc&
E = zeros(max_space,1);
EM2=g9y
H = E ;
=Msr+P9Ai
Ez_n=zeros(1,4);
n["G ry
Q$Q>pV;uH
spread = 12;
[3K& cX}B
center_problem_space = max_space / 2;
58[=.rzD
t0 = 40 ;
}?eO.l{
KgD sqwy
%定义边界处的系数
!uZ)0R
K_M1 = (c*delta_t-delta_x)/(c*delta_t+delta_x);
[TX1\*W
={'3j
for n = 1:max_time
GZefeBi
%左边界
`T'[H/
Ez_n_1(1) = Ez_n(1);
6!39t
Ez_n(1) = E(1);
YR'dl_
Ez_n_1(2) = Ez_n(2);
D02'P{
Ez_n(2) = E(2);
:@rq+wvP
%右边界
:)9CG!2y<M
Ez_n_1(3) = Ez_n(3);
Ew< sK9[o
Ez_n(3) = E(max_space-1);
> J.q3
Ez_n_1(4) = Ez_n(4);
nYsB^Nr6
Ez_n(4) = E(max_space);
^;8dl.;
for k = 2:max_space
e w%rc.;
E(k) = E(k) + eta*(H(k-1) - H(k));
5q^5DH_;
end
wI5(`_l{G
"?*B2*|}`
%Mur ABC
]EN+^i1F[
%at x=1;
|*fi!nvk@
E(1) = Ez_n_1(2) + K_M1*(E(2) - Ez_n_1(1));
a!@(bb z>
%at x=max_space
$.Ia;YBf
E(max_space) = Ez_n_1(3) + K_M1*(E(max_space-1) - Ez_n_1(4)) ;
"xI70c{
at|.Q*&a#
pulse = exp(-.5*((t0 - n)/spread)^2);
q1^bH6*fl
E(center_problem_space) = pulse ;
EpW89X
HfOaJ'+e<
yac4\%ze
for j = 1:max_space-1
\sn wR
H(j) = H(j) + eta*(E(j) - E(j + 1));
q!10G
end
<lkt'iT=Sz
figure(1)
K' ?`'7
plot(E)
"cZ ){w
axis([1 max_space -1.1 1.1])
QbJE+m5
pause(.05)
7+NBcZuG9
end
G1 K@Ir<
figure(2)
>b7Yk)[%
subplot(2,1,1)
c)j60y
plot(E,'b')
S4S}go*G[
ylabel('Ex')
u+;iR/
axis([1 max_space -1.1 1.1])
SuR+Vv
subplot(2,1,2)
+B '<0
plot(H,'r')
i}L*PCP
ylabel('Hy')
o[aP+O Md
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) 的帖子
顺便再问一个问题··我看别人的程序中对于吸收边界的处理如下:
*&z!y/
E(1) = E_low_m2;
\Ez&?yb/
E_low_m2 = E_low_m1;
$WiUoS
E_low_m1 = E(2);
qL?$u07<9'
E(max_space) = E_high_m2;
$3S`A]xO
E_high_m2 = E_high_m1;
G|I}x/X"Q7
E_high_m1 = E(max_space - 1);
U]&/F{3 im
4nXemU=
它依据的原理是什么呢?还有它是《电磁波时域有限差分方法》一书中所说的行波延迟法么?我看他得书上这样写的:
-bgj<4R$p
当c*delta_t = delta_x 时 有 E n+1 (k) = E n(k-1) (n+1和n 是E 的上角标)
z:8ieJ)C
还请大侠指点下··谢谢了 呵呵·
共
条评分
资源共享
离线
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);
(<#Ns W!z
改为 delta_t = delta_x / (3e8);即:( delta_t = delta_x / c ) 后发现能够完全吸收了··
+e)RT<
不知道这是为什么呢?难道说, 传播一个网格要一个时间步长时, 对于边界处的迭代只要一个时间步长即可?? 我这样说对么??
共
条评分
资源共享
发帖
回复