📄 fff.c
字号:
/* this is the program for calculating relection coefficient and
transmition coefficient from FDTD results */
/* Author: Anping Zhao, Nokia Research Center, Helsinki, Finland,
Email: anping.zhao@research.nokia.com */
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main ()
{
#define itmax 800
int k,i, ii, jj;
double xa,xb,xc,xd,xe,xf,pi,w,eps0,xmu0,c0,ttt,tt,zz,a0;
double ein1[itmax],ein2[itmax],eto1[itmax],eto2[itmax];
double ere1[itmax],etas[itmax],ff[500],s11[500],s21[500];
FILE *fp1,*fp2,*fp3;
fp1=fopen("cto","r");
fp2=fopen("cin","r");
fp3=fopen("fdtds2","w");
pi=4.0*atan(1.0);
eps0=8.85e-12;
xmu0=1.2566e-6;
c0=1.0/sqrt(eps0*xmu0);
zz=0.5e-3/20.0;
ttt=zz/c0;
tt=0.95*ttt;
a0=1.0/(1.0e9*tt*itmax);
for (i=0;i<itmax;i++){
if(fscanf(fp1,"%d%lf%lf",&jj,&eto1[i],&eto2[i])==3);
if(fscanf(fp2,"%d%lf%lf",&ii,&ein1[i],&ein2[i])==3);
ere1[i]=eto1[i]-ein1[i];
etas[i]=eto2[i];
}
for (k=0;k<=200;k++){
xa=0.0;
xb=0.0;
xc=0.0;
xd=0.0;
xe=0.0;
xf=0.0;
ff[k]=k/(tt*a0*itmax);/*when a0 is used, ff[k] has 1.0GHz interval*/
w=2*pi*ff[k];
for (i=0;i<itmax;i++){
xa=xa+ere1[i]*cos(w*i*tt);
xb=xb+ere1[i]*sin(w*i*tt);
xc=xc+ein1[i]*cos(w*i*tt);
xd=xd+ein1[i]*sin(w*i*tt);
xe=xe+etas[i]*cos(w*i*tt);
xf=xf+etas[i]*sin(w*i*tt);
}
s11[k]=sqrt(xa*xa+xb*xb)/sqrt(xc*xc+xd*xd);
s21[k]=sqrt(xe*xe+xf*xf)/sqrt(xc*xc+xd*xd);
fprintf(fp3,"%4d%15.6f%10.6f%10.6f\n",k,ff[k]/1.0e9,s11[k],s21[k]);
}
fclose(fp1);
fclose(fp2);
fclose(fp3);
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -