登 录
註 冊
论坛
微波仿真网
注册
登录论坛可查看更多信息
微波仿真论坛
>
时域有限差分法 FDTD
>
fdtd二维仿真中高斯脉冲不对称??
发帖
回复
1548
阅读
0
回复
[
求助
]
fdtd二维仿真中高斯脉冲不对称??
离线
yanghchuan
学习
UID :42864
注册:
2009-09-30
登录:
2012-03-11
发帖:
43
等级:
仿真一级
0楼
发表于: 2010-03-14 21:21:42
— 本帖被 gwzhao 执行加亮操作(2010-03-14) —
在做二维ftdt程序时,用高斯脉冲做源,采样离源点5个网格的点发现波形不对称,所有的参数都做了检查,应该不是程序的问题,那是什么问题呢?
|LA@guN
1uBnU2E
是由于网格造成的离散误差,还是其他什么问题?
0J7)UqMf.
:@#'&(#~
代码: 代码做了注释
NF+^
r(-`b8ZE
// 2d.cpp : Defines the entry point for the console application.
GyQu?`
//
_tDSG]
#include "stdafx.h"
6qg_&woJ3
#include <math.h>
k/bY>FY2r
#include <stdlib.h>
^x(BZolkm
!\w@b`Iv8
#define IE 600 //网格数
'k[d&sR
#define JE 600
`Mx&,;x
#define TIME 400 //时间步
EwDFU K
#define F 1.5e9 //频率
W(U:D?e
int _tmain(int argc, _TCHAR* argv[])
?IRp3H
{
L:UJur%
double ga[IE][JE],dz[IE][JE],ez[IE][JE],hx[IE][JE],hy[IE][JE];
@9S3u#vP
int l,n,i,j,ic,jc,nsteps;
1}nrVn[B9
double ddx,dt,T,epsz,pi,epsilon,sigma,eaf;
*9.4AW~]X
double t0,spread,pulse;
6\"g,f
double temp;
K. [2uhB)
double eztemp1[TIME],eztemp2[TIME];
B^Y AKbY
FILE *fp,*fp1;//,*fopen();
2\Bt~;EIx
ic = IE/2; //源点位置
6iAHus-
jc = JE/2;
2;X{ZLo
ddx = 3.0e8/F/10;
j)?[S
dt = ddx/6e8;
}4G/x;D
epsz = 8.8e-12;
<j CD^
pi = 3.1415926;
A/ppr.
}i,LP1R
for(i=0;i<200;i++) //记录采样点数据变量
Q'-g+aN
{
nGb%mlb
eztemp1
= 0.0;
b5WtL+Z
eztemp2
= 0.0;
peW4J<,
}
w0W9N%f#=
<X]'":
for(j=0;j<JE;j++)
%T9'dcM
{
*^ag wQ`
printf("%2d ",j);
7i(U?\A;.
for(i=0;i<IE;i++)
o[<lTsw<
{
9?M>Y?4
dz
[j] = 0.0;
c*F'x-TH
ez
[j] = 0.0;
,EhQTVJ
hx
[j] = 0.0;
l6o?(!:!%
hy
[j] = 0.0;
mx\b6w7
ga
[j] = 1.0;
f0 iYP
//printf("%2d ",ga
[j]);
;&="aD
}
fd Vye|%
//printf("\n ");
;yd[QT<I<
}
"p,TYjT?R
t0 = 250.0;
Z?@1X`@
spread = 2;
}M_Yn0(3
T = 0;
yx v]G6
nsteps = TIME;
kC :pal
while(nsteps>0)
oEfy{54
{
h$\+r<
/*printf("ntsteps---");
"`A@_;At`
scanf("%d",&nsteps);
jGV+ ~a
printf("%d \n",nsteps);*/
eAkC-Fm
// printf("spread---");
f~bZTf
//scanf("%d",&spread);
Hzos$1DJ
//printf("%d \n",spread);
T2Duz,
T = 0;
UC@&! kM
for(n=0;n<nsteps;n++)
WsHC%+\'
{
ur*a!U
OXT'$]p.*
T = T + 1;
"v%|&@
for(j=1;j<IE;j++) {
6:PQkr
for(i=1;i<IE;i++) {
y]9PLch]vZ
dz
[j] = dz
[j] + 0.5*(hy
[j]-hy[i-1][j]-hx
[j] + hx
[j-1]); } }
kd0~@rPL
'j6)5WL$
// temp = (t0*dt-T*dt)/(10./F);
%M?A>7b
temp = (t0-T)/(80);
xw1@&QwM
pulse = exp(-4.*3.1415926*pow(temp,2)); //高斯脉冲
0W}iKT[Z
//pulse = sin(3.1415926/20*n);
}Z^r<-N
dz[ic][jc] = pulse;
M mihWD02
.Ioj]r
eztemp1[n] = pulse; //记录采样点值
;0R|#9oX_
eztemp2[n] = ez[ic][ic-5];
s#f6qj
for(j=1;j<JE;j++) {
<W$Ig@4[.d
for(i=1;i<IE;i++) {
c5KJ_Nfi
ez
[j] = ga
[j]*dz
[j]; } }
drv"I[}{A
=aL=SC+
hu=b,
for(j=0;j<=JE-1;j++) {
I\8f`l
for(i=0;i<IE-1;i++) {
%Fb4
hx
[j] = hx
[j] + 0.5*(ez
[j] -ez
[j+1]); } }
G"_ 8`l
K/^70;/!.
for(j=0;j<JE-1;j++) {
+a@:?=hc
for(i=0;i<=IE-1;i++) {
RU r0K#]
hy
[j] = hy
[j] + 0.5*(ez[i+1][j] -ez
[j]); } }
IUK!b2!`
}
Ds}ctL{6"
BK+(Uf;g
Er 4P
//for(j=1;j<jc;j++){
@|7Ma/8v
// printf("%2d ",j);
-Odk'{nW
// for(i=1;i<ic;i++){
gWqO5C~h
// printf("%5.2f ",ez[2*i][2*j]); }
}Y{aVn&C
// printf("\n");
L%3m_'6QP
//}
xt{f+c@P
nsteps=0;
.1O
printf("T = %5.0f\n",T);
|G!P G6%1
fp=fopen("Ezsource.txt","w");
ue YBD]3'
fp1=fopen("Ez.txt","w");
w_*UFLMSqR
//for(j=0;j<JE;j++){
!;[cm|<