登 录
註 冊
论坛
微波仿真网
注册
登录论坛可查看更多信息
微波仿真论坛
>
时域有限差分法 FDTD
>
一维FDTD源程序
发帖
回复
1010
阅读
3
回复
[
求助
]
一维FDTD源程序
离线
王璇
I do
UID :91162
注册:
2012-03-29
登录:
2013-03-15
发帖:
19
等级:
仿真新人
0楼
发表于: 2012-04-22 15:24:49
关键词:
FDTD
这个程序可以运行,但是结果不准确,画出的图形走势不对麻烦大神提个意见
KBoW(OP4'
bZ#KfR
dUBf.2ry
{`Z=LLL
(Z0.H3
#include < math.h >
"!Nu A
#include < stdio.h >
pxI[/vS N
#include < stdlib.h >
_}j6Pw'
#define KE 200
I* PxQ
main()
sDvy(5
{
8.&P4u i
double dx[KE],ex[KE],hy[KE],ix[KE],ga[KE],gb[KE];
yjOZed;M
double ex_low_m1,ex_low_m2,ex_high_m1,ex_high_m2;
4QE")Ge
int n, k, kc, kstart,epsilon, NSTEPS;
[B^V{nUBc
float t0,spread,dt,ddx,pi,epsc,sigma;
3*F|`js"
float T,freq_in;
&?I3xzvK
double pulse;
rcf#8
FILE *fp;
l}FA&c"
kstart=100;
S/yBr`
epsilon=4;
5! ]T%.rM
ddx=0.01; /* Cell size */
uG/b Cb+V
dt=ddx/(2*6e8); /* time steps */
x}f)P
pi=3.1415926;
@7sHFwtar?
epsc=8.8e-12;
,!^g8zO
sigma=0.04;
;[7#h8
kc=KE/2; /* center of the problem space*/
+3pfBE|
t0=50.0; /* center of the incident pulse */
- v=ndJ.
spread=12; /* width of the incident pulse */
k#2b3}(,
T=0;
?i\$U'2*z3
NSTEPS=1;
=T$2Qo8
ex_low_m1=0;
VoyRB2t
ex_low_m2=0;
Q@s G6iz
ex_high_m1=0;
>`n)-8
ex_high_m2=0;
>?{> !#1
4)9Pgp:
}cIj1:
for (k=0;k<=KE;k++) /*Initialize to free space */
^J@ Xsl
{
B~3qEdoK5`
ga[k]=1.0;
"77l~3
gb[k]=0;
6f J5Y iQ
dx[k]=0;
3P*"$ fH
ex[k]=0;
V^\b"1X7N
hy[k]=0;
|vj!,b88n#
ix[k]=0;
bR=TGL&
}
^56#{~%^?
for (k=kstart;k<=KE;k++)
?osYs<k \
{
ab5i7@Ed
ga[k]=1/(epsilon+sigma*dt/epsc);
.Zx7+`i
gb[k]=sigma*dt/epsc;
v8THJf
}
2!a~YT
yiczRex%rq
while (NSTEPS>0) /* main part of the program */
ra]\!;}L0
{
s3)T}52
printf ("\nNSTEPS-->");
mTa^At"
scanf ("%d",&NSTEPS);
D|8h^*Ya
printf("%d\n",NSTEPS);
+s5Yg,4*
n=0;
*%dWNvN4X
for (n=1;n<=NSTEPS;n++)
.a|ROjd!
{
a{iG0T.{Yh
T++;
=1j`VJU9
-:V2Dsr6;
for (k=1;k<=KE; k++)
M-5zsN
{
3UGdXufw
dx[k]=dx[k]+0.5*(hy[k-1]-hy[k]);
zh4m`}p
}
j2:A@a6
pulse=exp(-.5*(pow((t0-T)/spread,2.0))); /* put a Gassian pulse at the low end */
KkZ o|\V
dx[kc]=dx[kc]+pulse;
%[m%QP1;p
printf("%5.1f %6.2f %6.2f \n",T,pulse,ex[5]);
7=4V1FS6i
i'0ol^~y6
for (k=0;k<=KE; k++)
p B79#4
{
;hPo5uZQ
ex[k]=ga[k]*(dx[k]-ix[k]);
Q#I?nBin
ix[k]=ix[k]+gb[k]*ex[k];
_MGhG{p7t
}
E2|c;{c
/* Boundary conditions */
YwF\
ex[0]=ex_low_m2;
4Bq4d.0
ex_low_m2=ex_low_m1;
btB> -pT
ex_low_m1=ex[1];
@xAfD{}f!
ex[KE-1]=ex_high_m2;
G6j9,#2@
ex_high_m2=ex_high_m1;
o n?8l?iQ
ex_high_m1=ex[KE-2];
b~m|mb$
/* calculate the hy field */
Z+x`q#ZQr
for (k=0; k<KE; k++)
1)h+xY
{
,xIWyI.
hy[k]=hy[k]+.5*(ex[k]-ex[k+1]);
ESv&x6H
}
zI3Bb?4.
hy[0]=0;
qn@:A2ed
hy[KE]=0;
Qtn%h:i S~
/* write the E field out to file " EX " */
v]BMET[w
fp = fopen("EX", "w" ) ;
MQGR-WV=5
for (k=1;k<KE-1;k++)
Qu@T}Ci
{
?!kPW^gD
xn4-^2
未注册仅能浏览
部分内容
,查看
全部内容及附件
请先
登录
或
注册
共
条评分
离线
三金合鑫
UID :97345
注册:
2012-07-24
登录:
2013-06-17
发帖:
40
等级:
仿真新人
1楼
发表于: 2012-11-02 14:15:37
楼主你这个是求什么的啊?
共
条评分
离线
youngson
UID :99461
注册:
2012-09-16
登录:
2014-01-07
发帖:
209
等级:
仿真三级
2楼
发表于: 2012-11-02 19:00:48
楼主out了,现在很多都用matlab做仿真,你还用C语言。。。
共
条评分
离线
kobe404
走自己的路,让别人无路可走
UID :33879
注册:
2009-05-28
登录:
2017-10-13
发帖:
135
等级:
仿真二级
3楼
发表于: 2012-11-05 09:53:39
晕,神马都不懂,则样学习FDTD呢
共
条评分
在苦逼的生活中继续下去
发帖
回复