Finite Difference Time Domain Program... Adding 2 Dimensions to my 1 Dimension Program
    3 visualizzazioni (ultimi 30 giorni)
  
       Mostra commenti meno recenti
    
I am writing a program about Finite Difference Time Domain. This program shows E&M waves in 1 dimension. I'm trying to figure out how I can add 2 dimensions to this particular program.
close all;
clear all;
%define 
NN = 200; %# of iterations to perform
N = 500; %# spatial samples in domain
L = 5; %domain length in meters
fs = 300e6; %source frequency in Hz
ds = L/N; %spatial step in meters
x = linspace(0,L,N); %x coordinate of spatial samples
dt = ds/300e6; %"magic time step"
eps0 = 8.854e-12; %permittivity of free space
mu0 = pi*4e-7; %permeability of free space
%scale factors for E and H
ae = ones(N,1)*dt/(ds*eps0);
am = ones(N,1)*dt/(ds*mu0);
as = ones(N,1);
epsr = ones(N,1);
mur= ones(N,1);
sigma = zeros(N,1);
p = 1;
for i=1:N
   epsr(i) = 1;
   mur(i) = 1;
   w1 = 0.5;
   w2 = 1.5;
   if (p==1) %dielectric window
      if (abs(x(i)-L/2)<0.5) epsr(i)=4; end
   end
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
ae = ae./epsr;
am = am./mur;
ae = ae./(1+dt*(sigma./epsr)/(2*eps0));
as = (1-dt*(sigma./epsr)/(2*eps0))./(1+dt*(sigma./epsr)/(2*eps0));
%initialize fields 
Hz = zeros(N,1);
Ey = zeros(N,1);
for iter=1:NN
   %Yee Updataed Algorithm 
   Ey(3) = Ey(3)+2*(1-exp(-((iter-1)/50)^2))*sin(2*pi*fs*dt*iter); 
     %%%%%%%%%%%%%%%%%
     Hz(1) = Hz(2); %absorbing boundary conditions for H
     for i=2:N-1 %H field Update
        Hz(i) = Hz(i)-am(i)*(Ey(i+1)-Ey(i));
     end
     %%%%%%%%%%%%%%%
     Ey(N) = Ey(N-1); %absorbing boundary conditions for E
     for i=2:N-1 % E field Update
        Ey(i) = as(i)*Ey(i)-ae(i)*(Hz(i)-Hz(i-1));
     end
     %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
     figure(1)
     hold off
     plot(x,Ey,'b');
     axis([3*ds L -2 2]);
     grid on;
     title('FDTD Gaussian Pulse');
     hold on
     plot(x,380*Hz,'r');%multiplied by 380 so that the amplitude will reach same as E.
     legend('E Field','H-Field')
     xlabel('Time (Mintues)');
     ylabel('Amplitude') 
     pause(0);
  end
0 Commenti
Risposte (0)
Vedere anche
Categorie
				Scopri di più su Analysis in Help Center e File Exchange
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!
