登 录
註 冊
论坛
微波仿真网
注册
登录论坛可查看更多信息
微波仿真论坛
>
时域有限差分法 FDTD
>
一维FDTD源程序
发帖
回复
1009
阅读
3
回复
[
求助
]
一维FDTD源程序
离线
王璇
I do
UID :91162
注册:
2012-03-29
登录:
2013-03-15
发帖:
19
等级:
仿真新人
0楼
发表于: 2012-04-22 15:24:49
关键词:
FDTD
这个程序可以运行,但是结果不准确,画出的图形走势不对麻烦大神提个意见
M7c53fz
Y*YV/E.
[Y8ot-6
<^"0A
gPF5|% 3)
#include < math.h >
s=1w6ZLD
#include < stdio.h >
oD_#oX5\
#include < stdlib.h >
YQaL)t$0
#define KE 200
-9yWf8;
main()
c:,K{ZR
{
28O 3N;a
double dx[KE],ex[KE],hy[KE],ix[KE],ga[KE],gb[KE];
!uN_<!
double ex_low_m1,ex_low_m2,ex_high_m1,ex_high_m2;
6&L8{P
int n, k, kc, kstart,epsilon, NSTEPS;
_SqUPTb"u
float t0,spread,dt,ddx,pi,epsc,sigma;
:JCe,1!3@
float T,freq_in;
]Ab$IKY
double pulse;
X -_0wR
FILE *fp;
3`{[T17
kstart=100;
rQ&F Gb
epsilon=4;
"2GssBa
ddx=0.01; /* Cell size */
yD(v_J*
dt=ddx/(2*6e8); /* time steps */
J>^KQ
pi=3.1415926;
g&d tOjM
epsc=8.8e-12;
#$v,. Yk
sigma=0.04;
@.l?V6g9T
kc=KE/2; /* center of the problem space*/
ICUI0/J
t0=50.0; /* center of the incident pulse */
GtkZ%<KF9
spread=12; /* width of the incident pulse */
GL3olKnL
T=0;
6]Ri$V&"
NSTEPS=1;
V#\ iO
ex_low_m1=0;
(z^987G
ex_low_m2=0;
!KLY*bt6
ex_high_m1=0;
7jYW3
ex_high_m2=0;
/^b=| +Do
e`;U9Z
m ?jF:]^
for (k=0;k<=KE;k++) /*Initialize to free space */
E\XD~
{
Mf`@X[-;
ga[k]=1.0;
Df0m
gb[k]=0;
Rs53R$PIR
dx[k]=0;
hA387?
ex[k]=0;
=QW:},sp
hy[k]=0;
qWw{c&{Q],
ix[k]=0;
;{ESo?$*
}
Q3aZB*$K
for (k=kstart;k<=KE;k++)
9FmX^t$T
{
U&L?IT=x
ga[k]=1/(epsilon+sigma*dt/epsc);
b0[H{q-z{X
gb[k]=sigma*dt/epsc;
$GX9-^og=T
}
>?ckBU9
V,>uM >$
while (NSTEPS>0) /* main part of the program */
])mYE }g
{
Fr]B]Hj
printf ("\nNSTEPS-->");
*"sDsXo- I
scanf ("%d",&NSTEPS);
7_ao?}g
printf("%d\n",NSTEPS);
G$CI~0Se:
n=0;
#i|AE`
for (n=1;n<=NSTEPS;n++)
FoGSCg%
{
cfUG)-]P~
T++;
XXC(R
9pq-"?vHY0
for (k=1;k<=KE; k++)
*!L it:H
{
qh/}/Sl;
dx[k]=dx[k]+0.5*(hy[k-1]-hy[k]);
99?: 9g
}
A IsXu"
pulse=exp(-.5*(pow((t0-T)/spread,2.0))); /* put a Gassian pulse at the low end */
R2dCp|6A
dx[kc]=dx[kc]+pulse;
jfsbvak
printf("%5.1f %6.2f %6.2f \n",T,pulse,ex[5]);
<9aa@c57
CYN")J8V
for (k=0;k<=KE; k++)
6F08$,%Y
{
g:fzf>oQ>p
ex[k]=ga[k]*(dx[k]-ix[k]);
<jtu/U]78|
ix[k]=ix[k]+gb[k]*ex[k];
P: )YKro]
}
BYXMbx
/* Boundary conditions */
0uS6F8x@
ex[0]=ex_low_m2;
_2nNCu (
ex_low_m2=ex_low_m1;
I]0 D*z
ex_low_m1=ex[1];
Nx<%'-9)|
ex[KE-1]=ex_high_m2;
K)TMr"j\
ex_high_m2=ex_high_m1;
~\[\S!"
ex_high_m1=ex[KE-2];
N.|uPq$R
/* calculate the hy field */
Un{ 9reX5
for (k=0; k<KE; k++)
U-lN-/=l6
{
^26}8vt
hy[k]=hy[k]+.5*(ex[k]-ex[k+1]);
dS~#Lzm
}
"yc@_+"\+
hy[0]=0;
]B9Ut&mF;
hy[KE]=0;
17@#"uT0
/* write the E field out to file " EX " */
nVv=smVOt
fp = fopen("EX", "w" ) ;
j$}W%ibj
for (k=1;k<KE-1;k++)
rWxQ;bb#
{
p|VgtQ/)%
5Jm%*Wb
未注册仅能浏览
部分内容
,查看
全部内容及附件
请先
登录
或
注册
共
条评分
离线
三金合鑫
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呢
共
条评分
在苦逼的生活中继续下去
发帖
回复