You are on page 1of 3

FDTD 報告

一、 觀念
(1) Maxwell’s equation

(2)電磁波
*電磁波方程

二、 程式
(1) Python
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
int main()
{
int KE=200;
float ex[KE],hy[KE];
int n,k,kc,ke,NSTEPS;
float T;
float t0,spread,pulse;
FILE*fp,*fopen();
for(k=1;k<KE;k++)
{ex[k]=0;
hy[k]=0;}
kc=KE/2;
spread=12;
t0=40.0;
T=0;
NSTEPS=1;
while(NSTEPS>0){
printf("NSTEPS--->");
scanf("%d",&NSTEPS);
printf("%d\n",NSTEPS);
n=0;
for(n=1;n<=NSTEPS;n++)
{T=T+1;
for(k=1;k<KE;k++)
{ex[k]=ex[k]+.5*(hy[k-1]-hy[k]);
}
pulse=exp(-.5*(pow((t0-T)/spread,2.0)));
ex[kc]=pulse;
printf("%5.1f %6.2f\n",t0-T,ex[kc]);
for(k=1;k<KE-1;k++)
{hy[k]=hy[k]+.5*(ex[k]-ex[k+1]);
}
}
for(k=1;k<=KE;k++){
printf("%3d %6.2f %6.2f\n",k,ex[k],hy[k]);
}
fp=fopen("Ex","w");
for(k=1;k<=KE;k++)
{fprintf(fp,"%6.2f\n",ex[k]);
fclose(fp);
}
fp=fopen("Hy","w");
for(k=1;k<=KE;k++)
{fprintf(fp,"%6.2f\n",hy[k]);
fclose(fp);
}
printf("T=%5.0\n",T);
}
}
(2) C
import numpy as np
import matplotlib.pyplot as plt
KE = 200
ex = np.zeros(KE)
hy = np.zeros(KE)
t0 = 40
T=0
kc = KE / 2
spread = 12
k=0
for T in range(200):
print(T)
for k in range(KE):
ex[k] = ex[k] + 0.5 * (hy[k - 1] - hy[k])
pulse = np.exp(-0.5 * ((t0 - T) / spread) ** 2)
ex[int(kc)] = pulse
print(str(t0 - T) + str(ex[int(kc)]))
for k in range(KE - 1):
hy[k] = hy[k] + 0.5 * (ex[k] - ex[k + 1])
plt.plot(ex)
plt.pause(0.0003)
plt.cla()
for k in range(KE):
print(k, ex[k], hy[k])

You might also like