⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 fff.c

📁 这几个程序是用于计算一维光子晶体反射系数和透射系数的
💻 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 + -