登 录
註 冊
论坛
微波仿真网
注册
登录论坛可查看更多信息
微波仿真论坛
>
时域有限差分法 FDTD
>
一维FDTD源程序
发帖
回复
1008
阅读
3
回复
[
求助
]
一维FDTD源程序
离线
王璇
I do
UID :91162
注册:
2012-03-29
登录:
2013-03-15
发帖:
19
等级:
仿真新人
0楼
发表于: 2012-04-22 15:24:49
关键词:
FDTD
这个程序可以运行,但是结果不准确,画出的图形走势不对麻烦大神提个意见
1c+[S]7rY
aeE9dV~
M_UhFY='
!>;p^^e
sRb)*p'
#include < math.h >
=QOtag1;
#include < stdio.h >
IM)\-O\Wd
#include < stdlib.h >
MBDu0 [c
#define KE 200
ShHm7+fV
main()
kUn55 l
{
],&WA?>G
double dx[KE],ex[KE],hy[KE],ix[KE],ga[KE],gb[KE];
#$X_,P|D
double ex_low_m1,ex_low_m2,ex_high_m1,ex_high_m2;
$0sUh]7y
int n, k, kc, kstart,epsilon, NSTEPS;
EQz`o+
float t0,spread,dt,ddx,pi,epsc,sigma;
+vBq,'k`
float T,freq_in;
Uq0RJ<n
double pulse;
+:wOzTUN
FILE *fp;
pz@_%IUS
kstart=100;
#ra:^9;Es:
epsilon=4;
=R?NOWrDY
ddx=0.01; /* Cell size */
x(5>f9b b
dt=ddx/(2*6e8); /* time steps */
(?I8/KYR
pi=3.1415926;
x>;!`}x
epsc=8.8e-12;
Y*B}^!k6
sigma=0.04;
|AuN5|obI
kc=KE/2; /* center of the problem space*/
70a7}C\/o
t0=50.0; /* center of the incident pulse */
qnv9?Xh
spread=12; /* width of the incident pulse */
4vW:xK
T=0;
\BbemCPAm
NSTEPS=1;
Zz,E4+'Rm
ex_low_m1=0;
yo") G!BN
ex_low_m2=0;
D*DCMMp=0
ex_high_m1=0;
!ZD[ $lt+
ex_high_m2=0;
n4qj"xQ
.& B_\*
=MRg
for (k=0;k<=KE;k++) /*Initialize to free space */
@q],pD
{
*" >ek k
ga[k]=1.0;
RAR"9 N .
gb[k]=0;
NHPpHY3^.
dx[k]=0;
I/_`/mQ
ex[k]=0;
s==gjA e:
hy[k]=0;
Fla,#uB
ix[k]=0;
b,$H!V*
}
+JB. EW/
for (k=kstart;k<=KE;k++)
@T|mHfQ8
{
X'IW&^kI
ga[k]=1/(epsilon+sigma*dt/epsc);
Y)g7 E"
gb[k]=sigma*dt/epsc;
8@|+-)t
}
`\(Fax
9L]x9lI;
while (NSTEPS>0) /* main part of the program */
N3TkRJZ
{
8BhLO.(<O
printf ("\nNSTEPS-->");
wz$1^ml
scanf ("%d",&NSTEPS);
8 POrD8B
printf("%d\n",NSTEPS);
C5\bnk{
n=0;
$j)Er.!9|R
for (n=1;n<=NSTEPS;n++)
qeb:n$
{
aRC>pK.
T++;
e$4 5 OL
,/C<GFae
for (k=1;k<=KE; k++)
8AOJ'~$
{
Gnr]qxL
dx[k]=dx[k]+0.5*(hy[k-1]-hy[k]);
/J<?2T9G
}
+D* b!5[
pulse=exp(-.5*(pow((t0-T)/spread,2.0))); /* put a Gassian pulse at the low end */
qi.|oL9p
dx[kc]=dx[kc]+pulse;
12~zS
printf("%5.1f %6.2f %6.2f \n",T,pulse,ex[5]);
lnEc5J@c>i
*Ny^XQ_ X
for (k=0;k<=KE; k++)
pe Y( 4#
{
^EN_C<V;"d
ex[k]=ga[k]*(dx[k]-ix[k]);
5<<e_n.2q
ix[k]=ix[k]+gb[k]*ex[k];
"/[-U;ck
}
3YR6@*!f/
/* Boundary conditions */
L8Z[Ly+_
ex[0]=ex_low_m2;
Aj*0nV9_
ex_low_m2=ex_low_m1;
iL)q':xz
ex_low_m1=ex[1];
PBTGN;y
ex[KE-1]=ex_high_m2;
89Svx5S
ex_high_m2=ex_high_m1;
WhMr'l/e
ex_high_m1=ex[KE-2];
bBW(# Q_a
/* calculate the hy field */
WXp=>P[
for (k=0; k<KE; k++)
dMp7 ,{FhF
{
"O<JVC{m
hy[k]=hy[k]+.5*(ex[k]-ex[k+1]);
K@Twiw~rB
}
`f}}z5
hy[0]=0;
Ultx|qU
hy[KE]=0;
/Tv=BXL-
/* write the E field out to file " EX " */
& G@(f=
fp = fopen("EX", "w" ) ;
TSt-#c4B
for (k=1;k<KE-1;k++)
Ny/bNQS
{
#)AcK|*y
3o%JJIn&
未注册仅能浏览
部分内容
,查看
全部内容及附件
请先
登录
或
注册
共
条评分
离线
三金合鑫
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呢
共
条评分
在苦逼的生活中继续下去
发帖
回复