登 录
註 冊
论坛
微波仿真网
注册
登录论坛可查看更多信息
微波仿真论坛
>
时域有限差分法 FDTD
>
一维程序
发帖
回复
847
阅读
0
回复
[
求助
]
一维程序
离线
zwwj_871215
努力,坚强
UID :75011
注册:
2011-04-04
登录:
2012-11-12
发帖:
118
等级:
仿真二级
0楼
发表于: 2011-12-11 10:30:33
请教高手下面的问题:
AWL[zixR
我用FDTD编写了一个真空中电磁波传播的一维程序,吸收边界条件为(d/dx-1/c*d/dt)f=0,代码如下:
ALAL( f`
# include <stdio.h>
RpAiU
# include <math.h>
kXEtuO5FUM
# define delta_x 1e-3
B0"0_n7-
# define dt1 1.5e-12
7t3X`db
# define array_x 10000
mmcdtVe
# define fre_f 2.45e9
O4N-_Kfp/
# define pi 3.14
WvbEh|y
# define p_mit 8.85e-12
Efvq?cG&
# define p_mea 12.56e-7
V Y_f =
# define delta_min e-3
.HCaXFW
# define times 20000
FF3&Y^+^"
main()
> [8#hSk
{
RF!'K ko
/* **************************************************************** */
%wtXo BJ
double ex[array_x],hy[array_x];
6y9C@5p}B
int k,i;
<N-=fad]
FILE *fp;
3`ml; L?D
/* **************************************************************** */
%ZuLl(
/* give the matter the primary data */
/W0E(8:C)
for(i=0;i<array_x;i++)
?~ ?Hdv
{
\=Nm5:
ex
=0;
zv@bI~3~
}
@`Wt4<
for(i=0;i<array_x;i++)
5}7ISNP;f
{
`[bJYZBc2
hy
=0;
|=u96G~N
}
Q ]0r:i= .
for(k=0;k<times;k++)
[G=:?J,P
{
X\mz+al>[
ex[0]=100*sin(2*pi*fre_f*k*dt1);
\kyM}5G(<0
for(i=0;i<array_x;i++)
p_9g|B0D
{
Ysl9f1>%
if(i>=0&&i<array_x-1)
-)6;0
hy
=hy
-1.194e-3*(ex
-ex[i+1]);
44j,,k
else
?DRR+n _
hy
=dt1*3e8/delta_x*(hy
-hy[i-1])+hy
;
*.3y2m,bZ
}
c(E,&{+E
for(i=1;i<array_x;i++)
!pl_Ao~(
{
|mvM@V;^8{
ex
=ex
-170*(hy[i-1]-hy
);
S?2YJl8B
}
B#:E?a;{
}
zu C5@jy.x
for(i=0;i<array_x;i++)
-tMA
{
b@!:=_Mr
printf("%10.2f",ex
);
?^F5(B[+Y
printf("\n");
AygvJeM_W
}
NFV_+{X\
fp=fopen("e:\zw111.txt","w");
8(^ ,r#Gy
for(i=0;i<array_x;i++)
Y!it!9
{
0:#7M}U
fprintf(fp,"%f %f\n",i*delta_x,ex
);
dxntGH< O
}
]$|st^Q
getchar();
4@mso+tk
}
1xIFvXru
_{mJ.1)V;
当取50个步长时,它的振幅很大,达到十的八次的数量级; 当取500个和5000个步长时,振幅会减小点;当取10000个步长时 ,振幅为100, 但是长度值达到9.087时,电场的取值变为0,我不明白这是为什么?
D Kq-C%
我做一维微波加热模拟,电磁参数的取值和真空中的不一 ..
Mn{XVXY@qm
Wxc^_iqA1
未注册仅能浏览
部分内容
,查看
全部内容及附件
请先
登录
或
注册
共
条评分
发帖
回复