EEE 431 Computational Methods in Electrodynamics Lecture 10

  • Slides: 20
Download presentation
EEE 431 Computational Methods in Electrodynamics Lecture 10 By Dr. Rasime Uyguroglu Rasime. uyguroglu@emu.

EEE 431 Computational Methods in Electrodynamics Lecture 10 By Dr. Rasime Uyguroglu Rasime. uyguroglu@emu. edu. tr 1

FINITE DIFFERENCE TIME DOMAIN METHOD (FDTD) 2

FINITE DIFFERENCE TIME DOMAIN METHOD (FDTD) 2

FINITE DIFFERENCE TIME DOMAIN METHOD (FDTD) l l One dimensional free space formulation: Assume

FINITE DIFFERENCE TIME DOMAIN METHOD (FDTD) l l One dimensional free space formulation: Assume a plane wave with the electric filed having Ex, magnetic field having Hy components and traveling in the z direction. 3

FINITE DIFFERENCE TIME DOMAIN METHOD (FDTD) l Maxwell’s Equations become: 4

FINITE DIFFERENCE TIME DOMAIN METHOD (FDTD) l Maxwell’s Equations become: 4

FINITE DIFFERENCE TIME DOMAIN METHOD (FDTD) l Taking central difference approximation for both temporal

FINITE DIFFERENCE TIME DOMAIN METHOD (FDTD) l Taking central difference approximation for both temporal and spectral derivatives: 5

FINITE DIFFERENCE TIME DOMAIN METHOD (FDTD) 6

FINITE DIFFERENCE TIME DOMAIN METHOD (FDTD) 6

FINITE DIFFERENCE TIME DOMAIN METHOD (FDTD) l The coefficients can be written as: 7

FINITE DIFFERENCE TIME DOMAIN METHOD (FDTD) l The coefficients can be written as: 7

FINITE DIFFERENCE TIME DOMAIN METHOD (FDTD) l /* 1 D FDTD simulation with a

FINITE DIFFERENCE TIME DOMAIN METHOD (FDTD) l /* 1 D FDTD simulation with a hard source. */ l #include <stdio. h> #include <math. h> #define KE 200 int main() { double ez[KE]={0. }, hy[KE]={0. }, imp=377. 0, s=0. 5; int n, n. Time=250, k; FILE *fp, *fp 1; fp 1=fopen("E. dat", "w"); /* do time stepping */ for (n=0; n<n. Time; n++) { /* update magnetic field */ for (k=0; k<KE-1; k++) hy[k] = hy[k] + s*(ez[k+1] - ez[k])/imp; /* update electric field */ for (k=1; k<KE; k++) ez[k] = ez[k] + s*imp*(hy[k] - hy[k-1]); l l l l l l /* source point */ ez[0] = exp(-(n-30. )*(n-30)/100); fprintf(fp 1, "%gn", ez[50]); } fclose(fp 1); return 0; } 8

FINITE DIFFERENCE TIME DOMAIN METHOD (FDTD) l Source at k=0, field at k=50 w.

FINITE DIFFERENCE TIME DOMAIN METHOD (FDTD) l Source at k=0, field at k=50 w. r. t. the time, 250 time steps. 9

FINITE DIFFERENCE TIME DOMAIN METHOD (FDTD) l Source at k=100, Ex at k=100 10

FINITE DIFFERENCE TIME DOMAIN METHOD (FDTD) l Source at k=100, Ex at k=100 10

FINITE DIFFERENCE TIME DOMAIN METHOD (FDTD) l Ez w. r. t. space steps 11

FINITE DIFFERENCE TIME DOMAIN METHOD (FDTD) l Ez w. r. t. space steps 11

FINITE DIFFERENCE TIME DOMAIN METHOD (FDTD) l Ez w. r. t. the time steps.

FINITE DIFFERENCE TIME DOMAIN METHOD (FDTD) l Ez w. r. t. the time steps. 12

FINITE DIFFERENCE TIME DOMAIN METHOD (FDTD) l Ez w. r. t. the time steps

FINITE DIFFERENCE TIME DOMAIN METHOD (FDTD) l Ez w. r. t. the time steps 13

FINITE DIFFERENCE TIME DOMAIN METHOD (FDTD) with ABC’s l Using the boundary condition discussed

FINITE DIFFERENCE TIME DOMAIN METHOD (FDTD) with ABC’s l Using the boundary condition discussed in Lecture 9 : l Store a value of Ex(1) for two time steps and then put it in Ex(0). 14

FINITE DIFFERENCE TIME DOMAIN METHOD (FDTD) with ABC’s l A. B. C. in C

FINITE DIFFERENCE TIME DOMAIN METHOD (FDTD) with ABC’s l A. B. C. in C computer code assume that the domain ends at k=KE: 15

FINITE DIFFERENCE TIME DOMAIN METHOD (FDTD) with ABC’s l Ez w. r. t. the

FINITE DIFFERENCE TIME DOMAIN METHOD (FDTD) with ABC’s l Ez w. r. t. the time steps 16

FINITE DIFFERENCE TIME DOMAIN METHOD (FDTD) with ABC’s l /* 1 D FDTD simulation

FINITE DIFFERENCE TIME DOMAIN METHOD (FDTD) with ABC’s l /* 1 D FDTD simulation with ABC. */ l l #include <stdio. h> #include <math. h> l #define KE 200 l int main() { double ez[KE]={0. }, hy[KE]={0. }, imp=377. 0, s=0. 5; int n, n. Time=1000, k; float ez_low_m 1=0, ez_low_m 2=0, ez_high_m 1=0, ez_high_m 2=0; FILE *fp, *fp 1; fp 1=fopen("E. dat", "w"); /* do time stepping */ for (n=0; n<n. Time; n++) { // printf( " %6. 2 fn", n. Time); l l l l l 17

FINITE DIFFERENCE TIME DOMAIN METHOD (FDTD) with ABC’s l l l /* update magnetic

FINITE DIFFERENCE TIME DOMAIN METHOD (FDTD) with ABC’s l l l /* update magnetic field */ for (k=0; k<KE-1; k++) hy[k] = hy[k] + s*(ez[k+1] - ez[k])/imp; l /* update electric field */ for (k=1; k<KE; k++) ez[k] = ez[k] + s*imp*(hy[k] - hy[k-1]); l /*Absorbing Boundary Conditions*/ l l l l ez[0] = ez_low_m 2; ez_low_m 2 = ez_low_m 1; ez_low_m 1 = ez[1]; ez[KE-1] = ez_high_m 2; ez_high_m 2 = ez_high_m 1; ez_high_m 1 = ez[KE-2]; 18

FINITE DIFFERENCE TIME DOMAIN METHOD (FDTD) with ABC’s l l l l /* hardwire

FINITE DIFFERENCE TIME DOMAIN METHOD (FDTD) with ABC’s l l l l /* hardwire a source node */ ez[100] = exp(-(n-30. )*(n-30)/100); fprintf(fp 1, "%gn", ez[50]); if(n==150){ fp=fopen("Ez. dat", "w"); for (k=1; k<=KE; k++) {fprintf(fp, "%6. 2 fn", ez[k]); } fclose(fp); l /* Write Hy in a file "Hy"*/ l fp=fopen("Hy. dat", "w"); for(k=1; k<=KE; k++) {fprintf(fp, " %6. 2 fn", hy[k]); } fclose(fp); } l l l l } fclose(fp 1); return 0; } 19

FINITE DIFFERENCE TIME DOMAIN METHOD (FDTD) with ABC’s l Ez with ABC and without

FINITE DIFFERENCE TIME DOMAIN METHOD (FDTD) with ABC’s l Ez with ABC and without ABC 20