登 录
註 冊
论坛
微波仿真网
注册
登录论坛可查看更多信息
微波仿真论坛
>
时域有限差分法 FDTD
>
Sullivan 写的两个程序FDTD1D_1.5和FDTD_2.1模拟相 ..
发帖
回复
1
2
3590
阅读
18
回复
[
已解决
]
Sullivan 写的两个程序FDTD1D_1.5和FDTD_2.1模拟相同的情景为什么输出的结果不同呀
离线
xiahuiz
UID :20367
注册:
2008-10-29
登录:
2012-04-07
发帖:
30
等级:
仿真一级
0楼
发表于: 2009-05-06 22:35:11
关键词:
FDTD
哪位高手指点下:Sullivan 写的两个程序FDTD1D_1.5和FDTD_2.1模拟相同的情景(即正弦波通过损耗介质)为什么输出的结 ..
nlc.u}#
C&<~f#lB
未注册仅能浏览
部分内容
,查看
全部内容及附件
请先
登录
或
注册
共
条评分
离线
gwzhao
方恨少
UID :17098
注册:
2008-08-24
登录:
2019-01-09
发帖:
1374
等级:
荣誉管理员
1楼
发表于: 2009-05-06 23:14:49
两个都是1D的?
R0ID2:i]F
代码贴出来?
共
条评分
逆流而上
离线
xiahuiz
UID :20367
注册:
2008-10-29
登录:
2012-04-07
发帖:
30
等级:
仿真一级
2楼
发表于: 2009-05-07 09:45:11
FDTD1D_1.5
::Ke^dp
m8'C_U^89
FuI73
delta_x = .01;%Set the cell size to 1cm
r.3/F[.
delta_t = delta_x/(2*3e8);%Calculate the time step
NI#X@
max_time = 500;% time is be limited
- p3Re9
max_space = 200;
Bjk]ZU0T
E = zeros(max_space,1);
f Vb-$
H = E;
kt`nbm|aw
dielectric_begin = 100;
];.pK
dielectric_end = max_space;
'!l1=cZD
dielectic_space_a = ones(max_space,1);
4wC+S9I#E^
dielectic_space_b = ones(max_space,1);
J)P$2#
eta = 0.5;
i1H\#;`$
dielectric_constant = 4;
_^Mx>hb4.
etaeps = eta/dielectric_constant;
.ObZ\.I
%Lossy Medium variables - for non-Lossy medium set sigma = 0;
I}Nd$P)>
sigma = 0.04;
_ZY)M
epszero = 8.85419e-12;
hxCvk/7sT
loss_term = (delta_t*sigma) / (2*epszero*dielectric_constant);
'smWLz}
%ABS needed for LHS of problem space do not work with Lossy medium
8} =JKR^cK
E_low_m2 = 0;
?A(QyaKz
E_low_m1 = 0;
n6s}ww)
E_high_m2 = 0;
6-?66gmT
E_high_m1 = 0;
!r#?C9Sq
%Initialize Pulse Variables
ylt`*|$
frequency = 700*1e6;% Unit of Mhz
w"R:\@ F
place_pulse = 5;
aW>6NDq(
% center_problem_space = max_space/2;
PaV-F_2
%Set up dielectric medium within the problem space
sB;@>NY
for i = 1:max_space
CPNL 94x
if (i>=dielectric_begin & i <= dielectric_end)
KII *az
dielectric_space_a(i)=(1-loss_term)/(1+loss_term);
V(Ub!n:j
dielectric_space_b(i)=0.5/(dielectric_constant *(1+loss_term));
'1M7M(va
else
C@th O
dielectric_space_a(i)=1;
%Gt.m
dielectric_space_b(i)=eta;
dtp oU&?6s
end
.'Y]R3\M+
end
u_ABt?'
for n = 1:max_time
M5xCC!
for k = 2:max_space
H$I=W>;
E(k) = dielectric_space_a(k)*E(k) + dielectric_space_b(k)*(H(k-1)-H(k));
Z!ha fhcX
end
V}\~ugN)y
%Soft Source- adds a value on the grid
FQ=@mjh
pulse = sin(2*pi*frequency*delta_t*n);
**}h&k&%2
E(place_pulse) = E(place_pulse) + pulse;
6/rFHY2q
%ABC E
HttiX/2~
E(1) = E_low_m2;
zbq@pj)Qu
E_low_m2 = E_low_m1;
xO-+i\ ZV
E_low_m1 = E(2);
lo[.&GD
E(max_space) = E_high_m2;
"~D]E7Q3y
E_high_m2 = E_high_m1;
wE~V]bmtW
E_high_m1 = E(max_space-1);
=}.EY iD
for j = 1:max_space-1
E9~Ghx.
H(j) = H(j) +eta*(E(j)-E(j+1));
9W(dmde>
end
rF]h$Z8o
plot(E)
o865(<p
title('Soft Source Simulation with Dielectric Constant = 4')
Th=eNL]
axis([0 max_space -1.2 1.2])
#5V9oKM
drawnow
TY1I=8
end
qAw x2fPu
$sEy%-
FDTD_2.1
'Fmvu
?Wz8[u
e o pD5
delta_x = .01;%Set the cell size to 1cm
L'F<ev
delta_t = delta_x/(2*3e8);%Calculate the time step
{?yr'*
max_time = 500; %time is not be limited
j$+nKc$
max_space = 200;
`QXErw
E = zeros(max_space,1); %Electric array
:s4p/*f
H = E; %Magnetic array
t+eVR8
D = E; %flux density array
l8?>>.<P=
I = E;
b[`Yi1^]%g
dielectric_begin = 100;
b j'Xg
dielectric_end = 200;
Z?\2F%
dielectic_space_a = ones(max_space,1);
B[KJR?>
dielectic_space_b = ones(max_space,1);
ELj\[&U
eta = 0.5;
M%@ !cW
dielectric_constant = 4;
Dc_yM
%Lossy Medium variables - for non-Lossy medium set sigma = 0;
lyGhdgWc
sigma = 0.04;
&uO%_6J
epszero = 8.85419e-12;
[D!jv"
etaeps = (delta_t*sigma) / epszero;
d+'p@!W_
%Initalize ABC conditions
ariLG [:X
E_low_m2 = 0;
nJo`B4'U
E_low_m1 = 0;
NUp<e%zB
E_high_m2 = 0;
rwI
E_high_m1 = 0;
;72T|e
%Initialize Pulse Variables
vMS |$L
frequency = 700*1e6;% Unit of Mhz
YxP&7oq
place_pulse = 5;
Y*UA,<-
%Dielectric Medium - wave velocity slows as it travels through the medium
uXKERzg
for i = 1:max_space
UXh9:T'%
if ( i >= dielectric_begin & i <= dielectric_end )
(2=Zm@Zpf
dielectric_space_a(i) = 1/(dielectric_constant+etaeps);
!TUrQ
dielectric_space_b(i) = etaeps;
,gS;m &!'J
else
L|,!?cSAT
dielectric_space_a(i)=1;
={z*akn,
dielectric_space_b(i)=0;
h-%R<[
end
C_7+a@?B
end
PbmDNKEh{
%Main Loop
|]c8jG\h
for n = 1:max_time
ia MUsa{
%Loop for D_x
v-PXZ'7~
for k = 2:max_space
o|$AyS{1
D(k) = D(k)+0.5*(H(k-1)-H(k));
O<,\^[x
end
e:5bzk!~
%Soft Source- adds a value on the grid
|cR;{Z8?_
pulse = sin(2*pi*frequency*delta_t*n);
*FM Mjz
D(place_pulse) = D(place_pulse)+pulse;
A -b [>}_
%Loop for E_x
!7kG!)40
for k = 1:max_space-1
9pX&ZjYP-
E(k) = dielectric_space_a(i)*(D(k)-I(k));
w'm;82V:P-
I(k) = I(k)+dielectric_space_b(i)*E(k);
lR(+tj)9uO
end
' hs2RSq
%ABC E
3de_V|%
E(1) = E_low_m2;
w/kt3Lw
E_low_m2 = E_low_m1;
PF53mUs4
E_low_m1 = E(2);
"OdXY"G
E(max_space) = E_high_m2;
*3?'4"B{8
E_high_m2 = E_high_m1;
pim!.=vN/U
E_high_m1 = E(max_space-1);
q,+yqrt
%Loop for H_y
HBMhtfWW
for j = 1:max_space-1
F~P%AjAx'
H(j) = H(j) +eta*(E(j)-E(j+1));
'JRvP!]
end
x= 5N3[5
plot(E)
(Kv#m 3~
title('Soft Source Simulation with Dielectric Constant = 4')
xLC3>>P
axis([0 max_space -1.2 1.2])
1 A\OC
drawnow
aP/T<QZ~
end
共
条评分
离线
xiahuiz
UID :20367
注册:
2008-10-29
登录:
2012-04-07
发帖:
30
等级:
仿真一级
3楼
发表于: 2009-05-07 09:50:13
程序代码已经贴在上面了,哪位大侠帮忙看下,这两个程序计算相同的东西为何输出结果却不一样,Sullivan 书上说两个结果应该一样才对呀
共
条评分
离线
yiting39
UID :24312
注册:
2009-01-08
登录:
2009-12-03
发帖:
25
等级:
仿真新人
4楼
发表于: 2009-05-07 11:17:01
好像两叠加系数不一样吧?
共
1
条评分
cem-uestc
技术分
+1
积极参与讨论+技术分 论坛感谢您的参与
2009-05-07
离线
gwzhao
方恨少
UID :17098
注册:
2008-08-24
登录:
2019-01-09
发帖:
1374
等级:
荣誉管理员
5楼
发表于: 2009-05-07 14:17:05
什么结果不一样?输出的E波形吗?
]Ccg`AR{
我看源一个是加到E上的,一个是加到D上的,源不一样,出来的电场波形当然有点区别了,但频谱分析下来应该结果是一样的。
共
1
条评分
cem-uestc
技术分
+1
积极参与讨论+技术分 论坛感谢您的参与
2009-05-07
逆流而上
离线
xiahuiz
UID :20367
注册:
2008-10-29
登录:
2012-04-07
发帖:
30
等级:
仿真一级
6楼
发表于: 2009-05-07 15:31:51
回 5楼(gwzhao) 的帖子
输出的E波形不一样,如果要使得输出的E波形一样,我该怎么修改FDTD_2.1这个程序呢
共
条评分
离线
gwzhao
方恨少
UID :17098
注册:
2008-08-24
登录:
2019-01-09
发帖:
1374
等级:
荣誉管理员
7楼
发表于: 2009-05-07 16:00:15
回 6楼(xiahuiz) 的帖子
去掉
uoX:^'q
O]1y0BOQ
%Soft Source- adds a value on the grid
e0T34x'
pulse = sin(2*pi*frequency*delta_t*n);
YYu6W@m]
D(place_pulse) = D(place_pulse)+pulse;
OG~6L4"
-/ g B|J
%ABC E 前面加上
%|oJ>+
%Soft Source- adds a value on the grid
t 0|!(3
pulse = sin(2*pi*frequency*delta_t*n);
'F$l{iR
E(place_pulse) = E(place_pulse) + pulse;
s1h/}
b/{t|io{
试一下看看。
共
条评分
逆流而上
离线
xiahuiz
UID :20367
注册:
2008-10-29
登录:
2012-04-07
发帖:
30
等级:
仿真一级
8楼
发表于: 2009-05-07 16:21:15
回 7楼(gwzhao) 的帖子
刚试过,输出的E波形还是不对
共
条评分
离线
gwzhao
方恨少
UID :17098
注册:
2008-08-24
登录:
2019-01-09
发帖:
1374
等级:
荣誉管理员
9楼
发表于: 2009-05-07 16:34:28
回 8楼(xiahuiz) 的帖子
哦,不知道我Matlab删掉没,没删的话,下班后回去看一下。
共
条评分
逆流而上
发帖
回复