登 录
註 冊
论坛
微波仿真网
注册
登录论坛可查看更多信息
微波仿真论坛
>
时域有限差分法 FDTD
>
一维程序
发帖
回复
849
阅读
0
回复
[
求助
]
一维程序
离线
zwwj_871215
努力,坚强
UID :75011
注册:
2011-04-04
登录:
2012-11-12
发帖:
118
等级:
仿真二级
0楼
发表于: 2011-12-11 10:30:33
请教高手下面的问题:
mJNw<T4!/
我用FDTD编写了一个真空中电磁波传播的一维程序,吸收边界条件为(d/dx-1/c*d/dt)f=0,代码如下:
l9t|@9
# include <stdio.h>
c4V%>A
# include <math.h>
i z%wozf
# define delta_x 1e-3
=JNCQu
# define dt1 1.5e-12
ko{7^]gR
# define array_x 10000
U[EZ,7n8
# define fre_f 2.45e9
^V7'S<
# define pi 3.14
c:I %jm
# define p_mit 8.85e-12
1Eh6ti
# define p_mea 12.56e-7
Y?v{V>;*A
# define delta_min e-3
8AQ__&nT
# define times 20000
wQ9?Z.-$
main()
nq5qUErew
{
U!i1~)s
/* **************************************************************** */
]_(J8v
double ex[array_x],hy[array_x];
uL{CUt
int k,i;
/*2)|2w
FILE *fp;
IqAML|C
/* **************************************************************** */
[9^lAhX
/* give the matter the primary data */
("KtJ
for(i=0;i<array_x;i++)
Bwl@Muw
{
6UKZ0~R
ex
=0;
Jo''yrJpB
}
Ji4JP0
for(i=0;i<array_x;i++)
8I[=iU7]l
{
Ef$a&*)PH
hy
=0;
FDal;T
}
Ggk#>O G
for(k=0;k<times;k++)
`0, G'F
{
t>!Ok
ex[0]=100*sin(2*pi*fre_f*k*dt1);
46##(4RF
for(i=0;i<array_x;i++)
tj4/x7!
{
|=js!R|
if(i>=0&&i<array_x-1)
&u2H^ j
hy
=hy
-1.194e-3*(ex
-ex[i+1]);
xn=#4:f
else
%uw7sGz\
hy
=dt1*3e8/delta_x*(hy
-hy[i-1])+hy
;
&WNIL13DK
}
fE"-W{M
for(i=1;i<array_x;i++)
_#K?yP?
{
hVIv->
ex
=ex
-170*(hy[i-1]-hy
);
/>n!2'!
}
`a `>Mtl
}
yV*jc`1
for(i=0;i<array_x;i++)
|Iknk,
{
kvG.?^ v
printf("%10.2f",ex
);
{l"(EeW6)
printf("\n");
uaE,F^p
}
rf+Z0C0WYi
fp=fopen("e:\zw111.txt","w");
Ihp Ea,v)
for(i=0;i<array_x;i++)
#&X5Di[A
{
U"RA*|
fprintf(fp,"%f %f\n",i*delta_x,ex
);
-AN5LE9-
}
E7q,6f3@r
getchar();
H<3:1*E
}
K0~=9/
^8KxU
当取50个步长时,它的振幅很大,达到十的八次的数量级; 当取500个和5000个步长时,振幅会减小点;当取10000个步长时 ,振幅为100, 但是长度值达到9.087时,电场的取值变为0,我不明白这是为什么?
\%&):OD1
我做一维微波加热模拟,电磁参数的取值和真空中的不一 ..
D"gv:RojD
C8W_f( i~
未注册仅能浏览
部分内容
,查看
全部内容及附件
请先
登录
或
注册
共
条评分
发帖
回复