Você está na página 1de 21

Cap tulo 1

Simulacin en una Dimensin (en el espacio libre) o o

Modo TEM dirigido en x, polarizado en z Condiciones: Fuente Gaussiana en el punto medio espacial

Expresiones iterativas:
n n+1/2 = Ez |n1/2 + Hy |n E z |i i+1/2 Hy |i1/2 i

(1.1) (1.2)

n+1/2 n+1/2 Hy |n+1 = Hy |n + Ez |i+1 Ez |i i i Cdigo en matlab: o

Figura 1.1: Simulacin de un pulso en el espacio libre despues de 100 time steps o

%%Programa que realiza la simulacion de las ecuaciones de Maxwell mediante %% diferencias divididas en una dimension empleando el algoritmo de Yee, %%en el modo TM (Transverso magntico) dirigido en x, polarizado en z. e 1

2 function freesp; clc; cd=200; %%Numero de celdas FDTD cm=cd/2; %%Inicializacion de los arrays. hy=zeros(1,cd); ez=zeros(1,cd); t0=40; dvst=12;%%Constantes importantes. c0=2.99792458e8; mu0=4.0*pi*1.0e-7; eps0=1.0/(c0*c0*mu0); freq=1.0e+9; lambda=c0/freq; omega=2.0*pi*freq; dx=lambda/20.0; dt=dx/c0; omegadt=omega*dt; nmax=round(12.0e-9/dt); %%Inicializacin de la animacin o o x=linspace(dx,cd*dx,cd); subplot(2,1,1),plot(x,ez(1:cd),r),axis([0 3 -1 1]); ylabel(EZ); subplot(2,1,2),plot(x,hy,b),axis([0 3 -1 1]); xlabel(x (metros));ylabel(HY); rect=get(gcf,Position); rect(1:2)=[0 0]; M=moviein(nmax/2,gcf,rect); nmax=round(12.0e-9/dt); %Ciclo principal. for (n=1:nmax) %Calculo del Campo Ez for (k=2:cd) ez(k)=ez(k)+(hy(k)-hy(k-1)); end %Se pone un pulso gausiano a la mitad del eje x pulso=exp(-0.5*(((t0-n)/dvst)^2)); ez(cm)=pulso; %Calculo del Campo Hy for (k=2:cd-1) hy(k)=hy(k)+(ez(k+1)-ez(k)); end if mod(n,2)==0; %%Visualizacin de los campos o rtime=num2str(round(n*dt/1.0e-9)); subplot(2,1,1),plot(x,ez(1:cd),r),axis([0 3 -2 2]); title([tiempo = ,rtime, ns]); ylabel(EZ); subplot(2,1,2),plot(x,hy,b),axis([0 3 -2 2]); title([tiempo = ,rtime, ns]);

3 xlabel(x (metros));ylabel(HY); M(:,n/2)=getframe(gcf,rect); end end end

4 Condiciones: Absorbing Boundary Condition Una condicin absorbente aceptable en la frontera es: o 0 Ez |n = Ez |n2 1 (1.3)

Las relaciones iterativas son las mismas, solo que las condiciones absorbentes en la frontera se incluyen en el cdigo. o

Figura 1.2: Simulacin de un programa en FDTD con absorbing boundary conditions, despues de 100 time steps o ,

Figura 1.3: Simulacin de un programa en FDTD con absorbing boundary conditions, despues de 225 time steps o ,

Cdigo en matlab: o %%Programa que realiza la simulacion de las ecuaciones de Maxwell mediante

Figura 1.4: Simulacin de un programa en FDTD con absorbing boundary conditions, despues de 250 time steps o ,

%% diferencias divididas en una dimension empleando el algoritmo de Yee, %%en el modo TM (Transverso magntico) dirigido en x, polarizado en z, con e %%condiciones de Frontera Absorbente (Absorbing Boundary Conditions). function abc; clc; cd=200; ez_low_m1=0; ez_low_m2=0; ez_high_m1=0; ez_high_m2=0; cp=cd/2; T=0; t0=40; stdv=12; hy=zeros(1,cd); ez=zeros(1,cd); dvst=12;%%Constantes importantes. c0=2.99792458e8; mu0=4.0*pi*1.0e-7; eps0=1.0/(c0*c0*mu0); freq=1.0e+9; lambda=c0/freq; omega=2.0*pi*freq; dx=lambda/20.0; dt=dx/c0; omegadt=omega*dt; nmax=round(12.0e-9/dt); %%Inicializacin de la animacin o o x=linspace(dx,cd*dx,cd); subplot(2,1,1),plot(x,ez(1:cd),r),axis([0 3 -1 1]); ylabel(EZ); subplot(2,1,2),plot(x,hy,b),axis([0 3 -1 1]);

6 xlabel(x (metros));ylabel(HY); rect=get(gcf,Position); rect(1:2)=[0 0]; M=moviein(nmax/2,gcf,rect); nmax=round(12.0e-9/dt); %Ciclo principal for n=1:nmax T=T+1; for (k=2:cd-1); ez(k)=ez(k)+(hy(k)-hy(k-1));

end pulso=exp(-(((t0-T)/stdv)^2)); ez(cp)=hy(cp)+pulso; %Condiciones de Frontera Absorbentes ez(1)=ez_low_m2; ez_low_m2=ez_low_m1; ez_low_m1=hy(2); ez(cd-1)=ez_high_m2; ez_high_m2=ez_high_m1; ez_high_m1=ez(cd-2); for (k=1:cd-1) hy(k)=hy(k)+(ez(k+1)-ez(k)); end if mod(n,2)==0; %%Visualizacin de los campos o rtime=num2str(round(n*dt/1.0e-9)); subplot(2,1,1),plot(x,ez(1:cd),r),axis([0 3 -2 2]); title([tiempo = ,rtime, ns]); ylabel(EZ); subplot(2,1,2),plot(x,hy,b),axis([0 3 -2 2]); title([tiempo = ,rtime, ns]); xlabel(x (metros));ylabel(HY); M(:,n/2)=getframe(gcf,rect); end end

Condiciones: Material dilectrico, r = 4, kini=100, con una fuente gaussiana e Expresiones iterativas: 1 n + 2 Hy |n i+1/2 Hy |i1/2 r n+1/2 n+1/2 = Hy |n + Ez |i+1 Ez |i i

n+1/2 Ez |i

n1/2 Ez |i

(1.4) (1.5)

Hy |n+1 i

Figura 1.5: Simulacin de un programa en FDTD con absorbing boundary conditions, despues de 100 time steps o

Figura 1.6: Simulacin de un programa en FDTD con absorbing boundary conditions, despues de 320 time steps o

Figura 1.7: Simulacin de un programa en FDTD con absorbing boundary conditions, despues de 440 time steps o Cdigo en Matlab o function dmg; clc; cd=200; %Numero de celdas FDTD ez_low_m1=0; ez_low_m2=0; ez_high_m1=0; ez_high_m2=0; cm=200/2; T=0; t0=40; dvst=12; ez=zeros(1,cd); hy=zeros(1,cd); cb=ones(1,cd); %%Constantes importantes. epsilon=4; dvst=12; c0=2.99792458e8; mu0=4.0*pi*1.0e-7; eps0=1.0/(c0*c0*mu0);%%Calculos importantes. freq=1.0e+9; lambda=c0/freq; omega=2.0*pi*freq; dx=lambda/20.0; dt=dx/c0; omegadt=omega*dt; nmax=round(12.0e-9/dt); kini=cm;

for k=kini:cd cb(k)=cb(k)/epsilon;

9 end

%%Inicializacin de la animacin o o x=linspace(dx,cd*dx,cd); subplot(2,1,1),plot(x,ez(1:cd),r),axis([0 3 -1 1]); ylabel(EZ); subplot(2,1,2),plot(x,hy,b),axis([0 3 -1 1]); xlabel(x (metros));ylabel(HY); rect=get(gcf,Position); rect(1:2)=[0 0]; M=moviein(nmax/2,gcf,rect); nmax=round(12.0e-9/dt); for n=1:nmax T=T+1; for k=2:cd; ez(k)=ez(k)+cb(k)*(hy(k)-hy(k-1));%%Clculo del Campo Ez a end pulso=exp(-(0.5*((t0-T)/dvst)^2)); ez(5)= ez(5)+pulso; %Condiciones de Frontera Absorbentes ez(1)=ez_low_m2; ez_low_m2=ez_low_m1; ez_low_m1=ez(2); ez(cd-1)=ez_high_m2; ez_high_m2=ez_high_m1; ez_high_m1=ez(cd-2);

for (k=1:cd-1) hy(k)=hy(k)+0.5*(ez(k+1)-ez(k)); %%Clculo del Campo Hy a end %%Visualizacin de los campos o if mod(n,2)==0; rtime=num2str(round(n*dt/1.0e-9)); subplot(2,1,1),plot(x,ez(1:cd),r),axis([0 3 -1 1]); title([tiempo = ,rtime, ns]); ylabel(EZ); subplot(2,1,2),plot(x,hy,b),axis([0 3 -1 1]); title([tiempo = ,rtime, ns]); xlabel(x (metros));ylabel(HY); M(:,n/2)=getframe(gcf,rect); end end end

10 Condiciones: Material dilectrico, r = 4, kini=100; con una fuente sinusoidal sen(t) e Las expresiones iterativas son las mismas que el caso anterior, la unica diferencia radica que el cgigo la fuente gaussiana o es sustituida por una sinusoidal.

Figura 1.8: Simulacin de un programa en FDTD con absorbing boundary conditions, despues de 150 time steps o

Figura 1.9: Simulacin de un programa en FDTD con absorbing boundary conditions, despues de 425 time steps o

Cdigo en Matlab o

function dms; clc; cd=200; cm=200/2; ez=zeros(1,cd);%%Declaracion de arreglos

11 hy=zeros(1,cd); cb=ones(1,cd); t0=40; %%Constantes importantes. dvst=12; c0=2.99792458e8; mu0=4.0*pi*1.0e-7; eps0=1.0/(c0*c0*mu0); freq=700.0e+6; lambda=c0/freq; omega=2.0*pi*freq; dx=lambda/20.0; dt=dx/c0; omegadt=omega*dt; nmax=round(12.0e-9/dt); epsilon=4; kini=cm; for k=kini:cd %%Condiciones del dielectrico. cb(k)=1/epsilon; end %%Inicializacin de la animacin o o x=linspace(dx,cd*dx,cd); subplot(2,1,1),plot(x,ez(1:cd),r),axis([0 3 -1 1]); ylabel(EZ); subplot(2,1,2),plot(x,hy,b),axis([0 3 -1 1]); xlabel(x (metros));ylabel(HY); rect=get(gcf,Position); rect(1:2)=[0 0]; M=moviein(nmax/2,gcf,rect); nmax=round(12.0e-9/dt); for (n=1:nmax) for (k=2:cd); ez(k)=ez(k)+cb(k)*(hy(k)-hy(k-1));%%Clculo del campo Ez. a end pulso=sin(omegadt*n); ez(5)=ez(5)+pulso; for (k=1:cd-1) hy(k)=hy(k)+(ez(k+1)-ez(k)); end %%Visualizacin de los campos o if mod(n,2)==0; rtime=num2str(round(n*dt/1.0e-9)); subplot(2,1,1),plot(x,ez(1:cd),r),axis([0 3 -1 1]); title([tiempo = ,rtime, ns]); ylabel(EZ); subplot(2,1,2),plot(x,hy,b),axis([0 3 -1 1]);%%Clculo del campo Hy. a title([tiempo = ,rtime, ns]); xlabel(x (metros));ylabel(HY); M(:,n/2)=getframe(gcf,rect);

12 end end end

13 Condiciones:Propagacin en un medio dilectrico con prdidas o e e Se ha simulado la propagacin EM en el espacio libre que se especican por la permisividad relativa r . Sin embargo, o hay muchos medios que tienen un trmino de prdida especicado por la conductividad. Este trmino de prdida trae e e e e como resultado la atenuacin de la energ propagada. o a Expresiones iterativas 1 n+1/2 E z |i = t 2r 0 1 2 t 1+ 2r 0

t 1+ 2r 0

n1/2 E z |i

n Hy |n i+1/2 Hy |i1/2

(1.6)

Cdigo en Matlab o

function lossy; clc; cd=200; %%Numero de celdas FDTD cm=cd/2; %%Inicializacion de los arrays. ez_low_m1=0; ez_low_m2=0; ez_high_m1=0; ez_high_m2=0; hy=zeros(1,cd); ez=zeros(1,cd); ca=ones(1,cd); cb=ones(1,cd); t0=40; sigma=0.04;%%Constantes importantes. c0=2.99792458e8; mu0=4.0*pi*1.0e-7; epsz=1.0/(c0*c0*mu0); frec=700.0e6; freq=1e+9 lambda=c0/freq; %%Calculos importantes. omega=2.0*pi*frec; dx=lambda/20.0; dt=dx/c0; epsilon=1; omegadt=omega*dt; nmax=round(12.0e-9/dt); eaf=dt*sigma/(2*epsz*epsilon); kini=cm;

%Inicializacin de arrays. o for k=kini:cd ca(k)=(1-eaf)/(1+eaf); cb(k)=0.5/(epsilon*(1+eaf)); end %%Inicializacin de la animacin o o x=linspace(dx,cd*dx,cd);

14 subplot(2,1,1),plot(x,ez(1:cd),r),axis([0 3 -1 1]); ylabel(EZ); subplot(2,1,2),plot(x,hy,b),axis([0 3 -3.0e-3 3.0e-3]); xlabel(x (metros));ylabel(HY); rect=get(gcf,Position); rect(1:2)=[0 0]; M=moviein(nmax/2,gcf,rect); nmax=500; for n=1:nmax for k=2:cd ez(k)=ca(k)*ez(k)+cb(k)*(hy(k)-hy(k-1)); end pulso=sin(omegadt*n); ez(5)=ez(5)+pulso; %Condiciones de Frontera Absorbentes ez(1)=ez_low_m2; ez_low_m2=ez_low_m1; ez_low_m1=hy(2); ez(cd-1)=ez_high_m2; ez_high_m2=ez_high_m1; ez_high_m1=ez(cd-2); for k=1:cd-1 hy(k)=hy(k)+(ez(k+1)-ez(k)); end if mod(n,2)==0; %%Visualizacin de los campos o rtime=num2str(round(n*dt/1.0e-9)); subplot(2,1,1),plot(x,ez(1:cd),r),axis([0 3 -1 1]); title([tiempo = ,rtime, ns]); ylabel(EZ); subplot(2,1,2),plot(x,hy,b),axis([0 3 -1 1]); title([tiempo = ,rtime, ns]); xlabel(x (metros));ylabel(HY); M(:,n/2)=getframe(gcf,rect); end end end

15

Figura 1.10: Simulacin de de una onda sinusoidal que se propaga a traves de un medio dilectrico con prdidas,con r = 4 o e e y = 0,04 despues de 500 time steps

16

Cap tulo 2
Simulacin en una Dimensin (Utilizando la denicin de densidad de o o o ujo)

Hasta ahora,se han usado las Ecuaciones de Maxwell dadas por (), las cuales utilizan los campos E y H. Sin embargo, existe la siguiente formulacin, ms general: o a D = H t D() = 0 E() r 1 H = E t 0 (2.1) (2.2) (2.3)

Donde D es la densidad de ujo elctrico. Observe que esta escrita en el dominio del tiempo. La razn del porque e o ser explicada despus. Comenzaremos por normalizar estas ecuaciones, usando: a e E= D= lo cual lleva a : 1 D = H t 0 0 D() = 0 E() r H 1 = t 0 0 E (2.6) (2.7) (2.8) 0 E 0 1 D 0 (2.4) (2.5)

Hemos visto que es muy facil llevar expresiones como () y (): a expresiones en diferencias nitas. El unico cambio es el uso de D en lugar de E.Sin embargo, tenemos que llevar la ecuacin () auna ecuacin de diferencias en el dominio del o o tiempo para implementar el FDTD. El primer paso es pasar del dominio de la frecuencia al del tiempo. Se asume que se esta interactuando con un medio dilectrico con prdidas de la forma: e e = r + r y sustituimos () en () D() = r E() + 17 E() j0 (2.10) j0 (2.9)

18 Llevar el primer trmino al dominio del tiempo no es dicil porque se realiza una simple multiplicacin. En el segundo e o 1 trmino, la teor de Fourier establece que e a en el dominio de la frecuencia es una integral en el dominio del tiempo, j entonces () se convierte en (): D(t) = 0 E(t) + 0
t

E(t ) dt
0

(2.11)

Deseamos ir al dominio del tiempo, el cual muestreamos, por lo que integral puede aproximarse como una suma sobre el time steps t: Dn = r E n + t Ei 0 i=0
n

(2.12)

Observe que E y D estan especicadas en el tiempo t = n t. No hay ningn problema: observe otra vez (), observe u que debemos resolver para E n dado el valor de Dn . Desafortunadamente, el valor de E n se necesita en el clculo de la a sumatoria. Haremos a un lado esta dicultad separando E n del resto de la suma: D n = r E n + Ahora, calculamos para E n : Dn En = t Ei 0 i=0 t 0
n1

t n t E + Ei 0 0 i=0

n1

(2.13)

(2.14)

r +

Podemos calcular E n , el actual valor de E, con el valor anterior de D y los valores previos de E. Se ver que es util denir a un nuevo parmetro para la suma: a
n

In =
i=0

Ei

(2.15)

por lo tanto, () puede ser reformulada con las dos siguientes expresiones: Dn I n1 t r + 0 t n I n = I n1 + E 0 En = (2.16)

(2.17)

Note que la suma que se calcula usando (), a la cual, en el tiempo n, solo agrega el valor de E n por el trmino constante e al previo valor de la sumatoria en n 1. No es necesario almacenar todos los valores de E n de 0 hasta n. Ahora tenemos toda la formulacin en FDTD: o

dx(k)=dx(k)+0.5*(hy(k)-hy(k-1)); ez(k)=ga(k)*(dx(k)-ix(k)); ix(k)=ix(k)+gb(k)*ez(k); hy(k)=hy(k)+0.5*(ez(k+1)-ez(k));

donde:

ga(k)=1./(epszr+(sigma*dt/eps0)); gb(k)=sigma*dt/eps0;

19 Esto es muy importante, toda la informacin del medio esta contenida en () y (). Para el espacio libre, ga=1 y gbx=0; o para los materiales con prdidas, ga y gb se calculan usando las ecuaciones () y (). Al calcular los valores de ez(k) en el e punto (k), se usan solo los valores de dx(k) y los valores previos de ez(k) en el dominio del tiempo. Las ecuaciones () y (), que tienen derivadas espaciales, no cambian sin importar el medio.

Figura 2.1: Simulacin de de una onda sinusoidal que se propaga a traves de un medio dilectrico con prdidas,con r = 4 o e e y = 0,04 despues de 500 time steps

function df1; clc cd=200; cm=200/2; ez=zeros(1,cd);%%Declaracion de arreglos dx=zeros(1,cd); ez=zeros(1,cd); hy=zeros(1,cd); ix=zeros(1,cd); ez_low_m1=0; ez_low_m2=0; ez_high_m1=0; ez_high_m2=0; %%ix=zeros(1,cd); ga=ones(1,cd); gb=zeros(1,cd); t0=50; %%Constantes importantes. dvst=20; c0=2.99792458e8; mu0=4.0*pi*1.0e-7; eps0=1.0/(c0*c0*mu0); freq=1e+9; lambda=c0/freq; frec=700e+6; omega=2.0*pi*frec; dx1=lambda/20.0; dt=dx1/c0; omegadt=omega*dt;

20 nmax=round(12.0e-9/dt); epszr=4; kini=cm; T=0; sigma=0.04; dvst=10;

%%Inicializacin de la animacin o o x=linspace(dx1,cd*dx1,cd); subplot(2,1,1),plot(x,ez(1:cd),r),axis([0 3 -1 1]); ylabel(EZ); subplot(2,1,2),plot(x,hy,b),axis([0 3 -3.0e-3 3.0e-3]); xlabel(x (meters));ylabel(HY); rect=get(gcf,Position); rect(1:2)=[0 0]; M=moviein(nmax/2,gcf,rect); nmax=round(12.0e-9/dt); nmax=500; for k=kini:cd ga(k)=1./(epszr+(sigma*dt/eps0)) gb(k)=sigma*dt/eps0; end for n=1:nmax%%Clculo del campo Dx a T=T+1; for k=2:cd dx(k)=dx(k)+0.5*(hy(k)-hy(k-1)); end %pulso=exp(-0.5*(((t0-T)/dvst)^2)); %dx(5)=dx(5)+pulso; pulso=sin(omegadt*n); dx(5)=dx(5)+pulso; for k=1:cd-1 ez(k)=ga(k)*(dx(k)-ix(k)); ix(k)=ix(k)+gb(k)*ez(k); end %Condiciones de Frontera Absorbentes ez(1)=ez_low_m2; ez_low_m2=ez_low_m1; ez_low_m1=hy(2); ez(cd-1)=ez_high_m2; ez_high_m2=ez_high_m1; ez_high_m1=ez(cd-2);

for k=1:cd-1 hy(k)=hy(k)+0.5*(ez(k+1)-ez(k)); end %%Visualizacin de los campos o if mod(n,2)==0; rtime=num2str(round(n*dt/1.0e-9));

21 subplot(2,1,1),plot(x,ez(1:cd),r),axis([0 3 -1 1]); title([tiempo = ,rtime, ns]); ylabel(EZ); subplot(2,1,2),plot(x,hy,b),axis([0 3 -1 1]); title([tiempo = ,rtime, ns]); xlabel(x (metros));ylabel(HY); M(:,n/2)=getframe(gcf,rect); end end end

Você também pode gostar