登 录
註 冊
论坛
微波仿真网
注册
登录论坛可查看更多信息
微波仿真论坛
>
时域有限差分法 FDTD
>
Sullivan书中的傅里叶变化程序总运行不对,版 ..
发帖
回复
1916
阅读
4
回复
[
已解决
]
Sullivan书中的傅里叶变化程序总运行不对,版主帮忙看看!
离线
lizi0908
UID :33555
注册:
2009-05-25
登录:
2010-04-25
发帖:
56
等级:
仿真一级
0楼
发表于: 2010-03-02 18:17:21
Sullivan书中2.2.c程序中傅里叶变化中入射波的变换计算部分,代码如下:
IJ+O),'
/* Fourier Transform of the input pulse */
:Fw *r|
if (T<100)
?S+/QyjcfJ
{
]v/t8`
for (m=0; m<=2; m++)
s$IcDuBu
{
|p'_k(z}
real_in[m] = real_in[m] + cos (arg[m]*T)*
ex[10];
+#&el//
imag_in[m] = imag_in[m] - sin (arg[m]*T)*ex[10];
x(exx )w
}
?*B;514
}入射波的位置是100,这里ex[10]是不是应该改成100? 个人对书中程序觉得不正确的地方。
l#mqV@?A~
6nM rO$i0k
g{rt ^B
另:我是用MATLAB的,所以将傅里叶变换部分改成MATLAB程序运算,得不到正确的结果,各位帮忙看看。
{ mK pD
我的代码是在Sullivan书中一维有耗介质传播程序的中加入傅里叶变化部分,如下:
zS&7[:IRs'
clc,clear
=>E44v
% 空间时间步长
O e0KAn
delta_x =0.01;
qpH j4
delta_t = delta_x/(2*3e8);
y}3 `~a
% 空间时间网格数
7{?lEQ&UE
max_time = 400;
EU`' 8*4
max_space = 100;
Pc di
% 相关参数设置
O~7p^i}
sigma = 0.04;
7Y| Wy Oq
epszero = 8.85419e-12;
D'U\]'.
muz=4.0*pi*1.0e-7;
@ J?-a m>
frequency=2.45e9;
Zw3hp,P]
omega = 2*pi*frequency;
0Og/47dO.2
dielectric_constant = 4;
i4 y(H
% 初始化电磁场变量
T\<M?`Y
E = zeros(max_space,1);
bcGn8
H = E;
Yj|c+&Ng
%传播波的傅里叶变化变量
#JX|S'\x
real_pt = zeros(max_space,1); %实部变量
iPRJA{$b_
imag_pt = zeros(max_space,1); %虚部变量
V>~*]N^f
ampn = zeros(max_space,1); %振幅标量
Pl`Bd0
phasen = zeros(max_space,1); %相位变量
bQ${8ZO
%入射波的傅里叶变化变量
PW(_yB;
real_in = 0;
MVu[gB
imag_in = 0;
d %F/,c-=
amp_in =0;
$Qx(aWE0
phase_in =0;
J tn&o"C
% 介质位置设置
C.B8 J"T-
dielectric_begin =50;
CNpCe-%&
dielectric_end = max_space;
6%Cna0x:&
dielectic_space_a = ones(max_space,1);
3|z;K,`Fw
dielectic_space_b = ones(max_space,1);
s.k`];wo
% 方程参数设置
^hGZVGSv
eta = 0.5;
mP`,I"u
for i = 1:max_space
*J*zml3
if (i>=dielectric_begin & i <= dielectric_end)
T%z!+/=&^
loss_term = (delta_t*sigma) / (2*epszero*dielectric_constant);
arpJiG~JR
dielectric_space_a(i)=(1-loss_term)/(1+loss_term);
{|t?
dielectric_space_b(i)=0.5/(dielectric_constant *(1+loss_term));
uC <|T
else
NK*:w *SOI
dielectric_space_a(i)=1;
oW\Q>c7 =
dielectric_space_b(i)=eta;
[qc6Q:
end
S1 R #]
end
2/a04qA#
%ABS needed for LHS of problem space do not work with Lossy medium
U O{xpY
E_low_m2 = 0;
h0ZW,2?l
E_low_m1 = 0;
C/grrw
E_high_m2 = 0;
-NI@xJO4(;
E_high_m1 = 0;
F~11 _
%Initialize Pulse Variables(初始化脉冲变量)
'Gm!Jblo@
place_pulse = 2;
$n_sGr
% spread = 12;
jb6ZAT<8
% center_problem_space = max_space/2;
(RI>aDGRH
% t0 = 40.0;
j$JV(fz
%Set up dielectric medium within the problem space
Mz%d_
for n = 1:max_time
0^|$cvYiL
for k = 2:max_space
P^o"PKA
E(k) = dielectric_space_a(k)*E(k) + dielectric_space_b(k)*(H(k-1)-H(k));
}VJ hw*s
end
1bFEx_
% 傅里叶计算
-f 'q
for k = 1:max_space
KJ05Zx~uma
real_pt(k) = real_pt(k) + cos(2*pi*frequency*delta_t*n)*E(k); %对空间每一点计算实部值
)aO!cQ{s
imag_pt(k) = imag_pt(k) - sin(2*pi*frequency*delta_t*n)*E(k); %对空间每一点计算虚部值
J}93u(T5
n^I|}u\
end
`zV-1)=
% 入射波傅里叶计算
Tk2&{S "
if n<100
`rRg(fCN!M
real_in = real_in+cos(2*pi*frequency*delta_t*n)*E(place_pulse);
PhI{3B/
imag_in = imag_in-sin(2*pi*frequency*delta_t*n)*E(place_pulse);
$$)<(MP3
end
$[L)f| l
LT y@6*
pulse = sin(2*pi*frequency*delta_t*n);
+L<w."WG
E(place_pulse) = E(place_pulse) + pulse;
'p{Y{ $Q
P89Dg/P
E(1) = E_low_m2;
yD=)&->Ra
E_low_m2 = E_low_m1;
}T^v7 LY
E_low_m1 = E(2);
QjT#GvHY
E(max_space) = E_high_m2;
~T{d9yNW1
E_high_m2 = E_high_m1;
bx'B;rZr
E_high_m1 = E(max_space-1);
NEjBjLJZ
for h = 1:max_space-1
+q>C}9s3
H(h) = H(h) +eta*(E(h)-E(h+1));
ZS 7)(j$.
end
OHXeqjhy
plot(E)
Hr_x~n=w
&n ..
<jg wdbT"6
LqH?3):
未注册仅能浏览
部分内容
,查看
全部内容及附件
请先
登录
或
注册
共
条评分
离线
cem-uestc
UID :9061
注册:
2008-03-07
登录:
2019-01-05
发帖:
2575
等级:
荣誉管理员
1楼
发表于: 2010-03-02 20:13:01
for k = 1:max_space ??
CX2q7azG
for (m=0; m<=2; m++) ??
,oVBgCf
S:T>oFUot
看看比两个的循环
共
条评分
欢迎光临
http://www.mwtee.com/home.php?mod=space&uid=13535
离线
lizi0908
UID :33555
注册:
2009-05-25
登录:
2010-04-25
发帖:
56
等级:
仿真一级
2楼
发表于: 2010-03-02 21:19:09
版主可能没有看过Sullivan书中的C程序,Sullivan书中的C程序激励源是脉冲信号,然后对100MHZ,200MHZ,500MHZ,三个频率进行分析,m变量代表的是这个频率。我的程序只有一个频率,所以没有用m变量。Sullivan书中的C程序放在附件中,辛苦版主看看。我对书中的理论也看了很多次了,还是没找出问题。
4\RuJx
附件:
FDTD.doc
(43 K) 下载次数:10
共
条评分
离线
lizi0908
UID :33555
注册:
2009-05-25
登录:
2010-04-25
发帖:
56
等级:
仿真一级
3楼
发表于: 2010-03-02 23:29:18
刚才把论坛的帖子翻了一遍,看到也有网友出现过这样的问题,帖子地址:
(DU{o\=
http://bbs.rfeda.cn/read-htm-tid-27893.html
VQyDd~Za
http://bbs.rfeda.cn/read-htm-tid-19840-page-1.html
2rk_ ssvs
后面是怎么解决的没说啊。
Y`wi=(
大家帮帮忙吧!
y< 84Gw_
共
条评分
离线
lizi0908
UID :33555
注册:
2009-05-25
登录:
2010-04-25
发帖:
56
等级:
仿真一级
4楼
发表于: 2010-03-03 18:16:35
自己认为ampn变量即幅度值最后应该除以总时间步长数即max_time变量。不除的话时间越长,幅度值越大,这样应该不合理吧!
共
条评分
发帖
回复