登 录
註 冊
论坛
微波仿真网
注册
登录论坛可查看更多信息
微波仿真论坛
>
时域有限差分法 FDTD
>
一维程序
发帖
回复
848
阅读
0
回复
[
求助
]
一维程序
离线
zwwj_871215
努力,坚强
UID :75011
注册:
2011-04-04
登录:
2012-11-12
发帖:
118
等级:
仿真二级
0楼
发表于: 2011-12-11 10:30:33
请教高手下面的问题:
m2x=Qv][@c
我用FDTD编写了一个真空中电磁波传播的一维程序,吸收边界条件为(d/dx-1/c*d/dt)f=0,代码如下:
xWuvT, ^
# include <stdio.h>
cGUsao
# include <math.h>
=c34MY(#X
# define delta_x 1e-3
][V@t^
# define dt1 1.5e-12
E 5N9.th
# define array_x 10000
"IA:,j.#g
# define fre_f 2.45e9
&^hLFd7j/
# define pi 3.14
:={rPj-nU
# define p_mit 8.85e-12
NxGSs_7
# define p_mea 12.56e-7
MD+e!A# o
# define delta_min e-3
87ptab@
# define times 20000
ClWxL#L6~
main()
o @(.4+2m
{
T$&vk#qr
/* **************************************************************** */
r=4vN=:
double ex[array_x],hy[array_x];
6Z>G%yK
int k,i;
dml,|k=
FILE *fp;
u$Ty|NBjn
/* **************************************************************** */
1> 'xmp+#
/* give the matter the primary data */
QTmMj@R&(
for(i=0;i<array_x;i++)
(p!w`MSv
{
/DGEI&}&:u
ex
=0;
m+ =L}[
}
?C`&*+
for(i=0;i<array_x;i++)
3T)_(SM"
{
]z#9)i_l3
hy
=0;
w^=uq3X?
}
s)-O{5;U
for(k=0;k<times;k++)
pkEx.R)
{
,1e\}^
ex[0]=100*sin(2*pi*fre_f*k*dt1);
>E\U$}WCG
for(i=0;i<array_x;i++)
0wpGIT!2
{
gaC[%M
if(i>=0&&i<array_x-1)
*Kmo1>^
hy
=hy
-1.194e-3*(ex
-ex[i+1]);
,\'E<O2T
else
Rz:1(^oA
hy
=dt1*3e8/delta_x*(hy
-hy[i-1])+hy
;
E/{v6S{)Y
}
z>A;|iL
for(i=1;i<array_x;i++)
\]Y=*+{
{
=EQaZ8k
ex
=ex
-170*(hy[i-1]-hy
);
&, %+rvo}
}
K]H [A,
}
3ahbv%y
for(i=0;i<array_x;i++)
r3mmi5
{
DPBWw[
printf("%10.2f",ex
);
O3En+m~3n)
printf("\n");
QqCwyK0
}
F [S'l
fp=fopen("e:\zw111.txt","w");
\L:+k `
for(i=0;i<array_x;i++)
yP*oRV%uX
{
kj]m@mS[
fprintf(fp,"%f %f\n",i*delta_x,ex
);
<gLq?~e|A
}
2=`}:&0l
getchar();
|576)
}
1`F25DhhY
_`d=0l*8
当取50个步长时,它的振幅很大,达到十的八次的数量级; 当取500个和5000个步长时,振幅会减小点;当取10000个步长时 ,振幅为100, 但是长度值达到9.087时,电场的取值变为0,我不明白这是为什么?
Dwbt^{N^
我做一维微波加热模拟,电磁参数的取值和真空中的不一 ..
%j. *YvveW
Rd|M)
未注册仅能浏览
部分内容
,查看
全部内容及附件
请先
登录
或
注册
共
条评分
发帖
回复