📄 1.cpp
字号:
#include"fdtd.h"
#include"plasma.h"
void main()
{
int k,n,N;
double *ex=new double[MZ+1];
double *hy=new double[MZ];
double *psi=new double[MZ+1];
double *je=new double[MZ+1];
for(k=0;k<MZ+1;k++) ex[k]=0.0;
for(k=0;k<MZ;k++) hy[k]=0.0;
for(k=0;k<MZ+1;k++) psi[k]=0.0;
for(k=0;k<MZ+1;k++) je[k]=0.0;
ofstream fref,fdef,fsta,fsource;
fref.open("ref.dat");
fdef.open("def.dat");
fsta.open("sta.dat");
fsource.open("source.dat");
cout<<"Input N:"<<endl;
cin>>N;
Zeroinit();
for(n=1;n<=N;n++){
for(k=0;k<K1;k++) HYi[k]=mtz1[K1-k-1]*HYi[k]+(mtz2[K1-k-1]/dz)*(EXi[k]-EXi[k+1]);
for(k=K1;k<K2;k++) HYi[k]+=(tem2/dz)*(EXi[k]-EXi[k+1]);
for(k=K2;k<MZ;k++) HYi[k]=mtz1[k-K2]*HYi[k]+(mtz2[k-K2]/dz)*(EXi[k]-EXi[k+1]);
for(k=0;k<K1;k++) hy[k]=mtz1[K1-k-1]*hy[k]+(mtz2[K1-k-1]/dz)*(ex[k]-ex[k+1]);
hy[kk0-1]+=-(tem2/dz)*(ex[kk0]-EXi[kk0]-ex[kk0-1]);
hy[kk1]+=-(tem2/dz)*(ex[kk1+1]+EXi[kk1]-ex[kk1]);
for(k=K1;k<K2;k++)
if(k!=kk0-1&&k!=kk1)
hy[k]+=-(tem2/dz)*(ex[k+1]-ex[k]);
for(k=K2;k<MZ;k++) hy[k]=mtz1[k-K2]*hy[k]+(mtz2[k-K2]/dz)*(ex[k]-ex[k+1]);
for(k=1;k<=K1;k++) EXi[k]=etz1[K1-k]*EXi[k]+(etz2[K1-k]/dz)*(HYi[k-1]-HYi[k]);
for(k=K1+1;k<K2;k++) EXi[k]+=(tem1/dz)*(HYi[k-1]-HYi[k]);
for(k=K2;k<MZ;k++) EXi[k]=etz1[k-K2]*EXi[k]+(etz2[k-K2]/dz)*(HYi[k-1]-HYi[k]);
EXi[K1+1]=source;
for(k=1;k<=K1;k++) ex[k]=etz1[K1-k]*ex[k]+(etz2[K1-k]/dz)*(hy[k-1]-hy[k]);
ex[kk0]+=-(tem1/dz)*(hy[kk0]-hy[kk0-1]-HYi[kk0-1]);
ex[kk1]+=-(tem1/dz)*(hy[kk1]+HYi[kk1]-hy[kk1-1]);
for(k=K1+1;k<K2;k++)
if(k!=kk0&&k!=kk1)
if(k<MZ/2-thick||k>MZ/2+thick)
ex[k]+=-(tem1/dz)*(hy[k]-hy[k-1]);
else{
double temp=ex[k];
ex[k]=((2.0/tem1-xi(0,k))*ex[k]+psi[k]-(2.0/dz)*(hy[k]-hy[k-1])-2.0*je[k])/(2.0/tem1+chi(0,k)-xi(0,k));
je[k]=((2.0/tem1-chi(0,k)+xi(0,k))*je[k]-(2.0/dz)*(chi(0,k)-xi(0,k))*(hy[k]-hy[k-1])+(2.0/tem1)*chi(0,k)*temp-2.0/tem1*psi[k])/(2.0/tem1+chi(0,k)-xi(0,k));
psi[k]=(dChi0(k)-dXi0(k))*ex[k]+dXi0(k)*temp+exp(-CollisionalFreq*dt)*psi[k];
};
ex[MZ/2+thick]=0.0;
for(k=K2;k<MZ;k++) ex[k]=etz1[k-K2]*ex[k]+(etz2[k-K2]/dz)*(hy[k-1]-hy[k]);
cout<<n<<endl;
fsource<<sch[n]<<end1;
fref<<ex[kk0-2]<<endl;
fsta<<EXi[K1+11]<<endl;
};
fref.close(); fdef.close();
fsta.close(); fsource.close();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -