%*************************************************************** ******** % % SECTORAL HORN: UNBOUNDED MEDIUM % % PROGRAM AUTHOR-- WILLIAM V. ANDREW % DEPARTMENT OF ELECTRICAL ENGINEERING % ARIZONA STATE UNIVERSITY % TEMPE, ARIZONA 85287-7206 % (602) 965-5311 % % DATE OF THIS VERSION-- Nov. 3, 1995 % % This MATLAB M-file will produce the FDTD solution % of a sectoral (2-D) Perfectly Electric Conducting % (PEC) horn antenna excited by a sinusoidal voltage % in a TEz computational domain. The computational % domain is truncated with a Berenger Perfectly Matched % Layer (PML) absorbing boundary condition whose depth % in layers is set by the variable NPMLS. The PML is % introduced to eliminate reflections from the grid % truncation and to simulate an outgoing traveling % wave propagating in an unbounded medium. The M-file % can also create a movie. For example, you can create % a movie which is 70 frames long by taking a picture of % the computational domain every 3rd time step. % % To execute this M-file, type ``te_horn'' at the % MATLAB prompt. The file will save each frame of % the movie and then write the entire movie to a file % named ``te_horn.mat''. % % To play the movie at any time after it has been % created and saved to file ``te_horn.mat'' just % execute the following MATLAB commands: % % load te_horn.mat % movie(M,n,fps) % % where n is the number of times to play the movie % and fps is the number of frames per second. % % This M-file will not work with the Student edition % of MATLAB due to the restrictions on array size. % Therefore, this M-file will work only with the % Professional edition of MATLAB. The movie which % this file creates is approximately 10.6 Mbytes in
% size. Therefore, the available RAM memory or the % swap space on whatever operating system must be % large enough to accommodate a file this large. % % The horn is modeled by setting the necessary % FDTD update equation coefficients to represent % PEC material (sigma=infinity). % The cell size of the space is: % dx = 0.0025 meters % The time step is: % dt = 4.23e-12 seconds % The frequency of excitation is: % freq = 9.84252 GHz % The wavelength is: % lambda = 12*dx = 0.0305 meters % % The flare section of the horn is staircased. As % modeled, the horn looks like: % % jc-7 jc+7 % | | % \ | / \ | / % \|/ \|/ % ` ` % % ic+11 |_ _| % ic+10 | | % ic+9 |_ _| % ic+8 | | % ic+7 |_ _| % ic+6 | | % ic+5 |_ _| % ic+4 | | % ic+3 ------------> |_ _| % ic+2 | | % ic+1 | | % ic | | % ic-1 | | % ic-2 | | % ic-3 | | % ic-4 | | `|' <--- Ex Field Component % ic-5 | | % ic-6 | | `-' <--- Ey Field Component % ic-7 | | % ic-8 | |
% ic-9 | | % ic-10--------------> |_ _ _ _| <----- Excitation Plane % ic-11 | | % ic-12 | | % ic-13---------------> |_ _ _ _| % % . . % /|\ /|\ % / | \ / | \ % | | % jc-2 jc+2 % %*************************************************************** ******** clear REPEAT = input('How many times to repeat? ' ); FPS = input('Enter frames per second... ' ); %*************************************************************** ******** % Initialize some constants %*************************************************************** ******** npmls=8;
% Depth of PML region in # of
nmax=210;
% Number of time steps
cells
ie=100; ib=ie+1; ic=ie/2-20; ip=ie-npmls; je=100; jb=je+1; jc=je/2; jp=je-npmls; pi=4.0*atan(1.0); muo=4.0*pi*1.0e-7; epso=8.854e-12; co=1.0/sqrt(muo*epso); aimp=sqrt(muo/epso); freq=9.84252e+09;
% % % % %
Permeability of free space Permittivity of free space Speed of light in free space Wave impedance in free space Frequency of excitation
lambda=co/freq; dx=lambda/12.0; dt=dx/co/2.0;
% Wavelength of excitation % FDTD cell size % Time step size
%*************************************************************** ******** % .... Set up the Berenger PML ABC material constants .... %*************************************************************** ******** sigmax=-3.0*epso*co*log(1e-5)/(2.0*dx*npmls); rhomax=sigmax*(aimp^2); for m=1:npmls; sig(m)=sigmax*((m-0.5)/(npmls+0.5))^2; rho(m)=rhomax*(m/(npmls+0.5))^2; end; %*************************************************************** ******** % .... Set up constants needed in the FDTD equations for the .... % .... Berenger PML ABCs (exponential difference expressions).... %*************************************************************** ******** for m=1:npmls; re=sig(m)*dt/epso; rm=rho(m)*dt/muo; ca(m)=exp(-re); cb(m)=-(exp(-re)-1.0)/sig(m)/dx; da(m)=exp(-rm); db(m)=-(exp(-rm)-1.0)/rho(m)/dx; end; %*************************************************************** ******** % Initialize all of the matrices for the field components HZ, HZX, % HZY, EX, EY, CAEX, CAEY, DAHZX, DAHZY, CBEX, CBEY, DBHZX, and DBHZY. %*************************************************************** ******** for i=1:ie; for j=1:jb;
ex(i,j)=0.0; caex(i,j)=1.0; cbex(i,j)=dt/epso/dx; end; end; for i=1:ib; for j=1:je; ey(i,j)=0.0; caey(i,j)=1.0; cbey(i,j)=dt/epso/dx; end; end; for i=1:ie; for j=1:je; hz(i,j)=0.0; hzx(i,j)=0.0; dahzx(i,j)=1.0; dbhzx(i,j)=dt/muo/dx; hzy(i,j)=0.0; dahzy(i,j)=1.0; dbhzy(i,j)=dt/muo/dx; end; end;
% Free space % Free space
% Free space % Free space
% Free space % Free space % Free space % Free space
%*************************************************************** **** % Initialize all of the matrices for the Berenger PML absorbing % boundaries. %*************************************************************** **** %<<<<<<<<<<<<<<<<<<<<<<<<< Ex Fields >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> %
..... Left and Right PML Regions ..... for i=2:ie; for j=2:npmls+1; m=npmls+2-j; caex(i,j)=ca(m); cbex(i,j)=cb(m); end; for j=jp+1:je; m=j-jp;
caex(i,j)=ca(m); cbex(i,j)=cb(m); end; end;
%<<<<<<<<<<<<<<<<<<<<<<<<< Ey Fields >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> %
..... Back and Front PML Regions ..... for j=2:je; for i=2:npmls+1; m=npmls+2-i; caey(i,j)=ca(m); cbey(i,j)=cb(m); end; for i=ip+1:ie; m=i-ip; caey(i,j)=ca(m); cbey(i,j)=cb(m); end; end;
%<<<<<<<<<<<<<<<<<<<<<<<<< Hz Fields >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> %
..... Left and Right PML Regions ..... for i=2:ie; for j=1:npmls; m=npmls+1-j; dahzy(i,j)=da(m); dbhzy(i,j)=db(m); end; for j=jp+1:je; m=j-jp; dahzy(i,j)=da(m); dbhzy(i,j)=db(m); end; end;
%
..... Front and Back PML Regions ..... for j=2:je; for i=1:npmls; m=npmls+1-i; dahzx(i,j)=da(m);
dbhzx(i,j)=db(m); end; for i=ip+1:ie; m=i-ip; dahzx(i,j)=da(m); dbhzx(i,j)=db(m); end; end;
%*************************************************************** ******** % ..... Material coefficients PEC of horn antenna ..... %*************************************************************** ******** for i=ic-13:ic+2; caex(i,jc-2)=-1.0; cbex(i,jc-2)= 0.0; caex(i,jc+2)=-1.0; cbex(i,jc+2)= 0.0; end; caex(ic+3,jc-3)=-1.0; cbex(ic+3,jc-3)= 0.0; caex(ic+3,jc+3)=-1.0; cbex(ic+3,jc+3)= 0.0; caex(ic+4,jc-3)=-1.0; cbex(ic+4,jc-3)= 0.0; caex(ic+4,jc+3)=-1.0; cbex(ic+4,jc+3)= 0.0; caex(ic+5,jc-4)=-1.0; cbex(ic+5,jc-4)= 0.0; caex(ic+5,jc+4)=-1.0; cbex(ic+5,jc+4)= 0.0; caex(ic+6,jc-4)=-1.0; cbex(ic+6,jc-4)= 0.0; caex(ic+6,jc+4)=-1.0; cbex(ic+6,jc+4)= 0.0; caex(ic+7,jc-5)=-1.0;
cbex(ic+7,jc-5)= 0.0; caex(ic+7,jc+5)=-1.0; cbex(ic+7,jc+5)= 0.0; caex(ic+8,jc-5)=-1.0; cbex(ic+8,jc-5)= 0.0; caex(ic+8,jc+5)=-1.0; cbex(ic+8,jc+5)= 0.0; caex(ic+9,jc-6)=-1.0; cbex(ic+9,jc-6)= 0.0; caex(ic+9,jc+6)=-1.0; cbex(ic+9,jc+6)= 0.0; caex(ic+10,jc-6)=-1.0; cbex(ic+10,jc-6)= 0.0; caex(ic+10,jc+6)=-1.0; cbex(ic+10,jc+6)= 0.0; caex(ic+11,jc-7)=-1.0; cbex(ic+11,jc-7)= 0.0; caex(ic+11,jc+7)=-1.0; cbex(ic+11,jc+7)= 0.0; for j=jc-2:jc+1; caey(ic-13,j)=-1.0; cbey(ic-13,j)= 0.0; end; caey(ic+3,jc-3)=-1.0; cbey(ic+3,jc-3)= 0.0; caey(ic+3,jc+2)=-1.0; cbey(ic+3,jc+2)= 0.0; caey(ic+5,jc-4)=-1.0; cbey(ic+5,jc-4)= 0.0; caey(ic+5,jc+3)=-1.0; cbey(ic+5,jc+3)= 0.0; caey(ic+7,jc-5)=-1.0;
cbey(ic+7,jc-5)= 0.0; caey(ic+7,jc+4)=-1.0; cbey(ic+7,jc+4)= 0.0; caey(ic+9,jc-6)=-1.0; cbey(ic+9,jc-6)= 0.0; caey(ic+9,jc+5)=-1.0; cbey(ic+9,jc+5)= 0.0; caey(ic+11,jc-7)=-1.0; cbey(ic+11,jc-7)= 0.0; caey(ic+11,jc+6)=-1.0; cbey(ic+11,jc+6)= 0.0; %*************************************************************** ******** % .....TIME-STEPPING LOOP..... %*************************************************************** ******** for n=1:nmax; %*************************************************************** ******** % .....EX FIELD UPDATE..... %*************************************************************** ******** ex(1:ie,2:je)=caex(1:ie,2:je).*ex(1:ie,2:je)+ ... cbex(1:ie,2:je).*(hz(1:ie,2:je)-hz(1:ie,1:je-1)); %*************************************************************** ******** % .....EY FIELD UPDATE..... %*************************************************************** ******** ey(2:ie,1:je)=caey(2:ie,1:je).*ey(2:ie,1:je)+ ... cbey(2:ie,1:je).*(hz(1:ie-1,1:je)-hz(2:ie,1:je)); %*************************************************************** ******** % ..... Hard Source ramped sinusoidal excitation .....
%*************************************************************** ******** for j=jc-2:jc+1; ey(ic-10,j)=(1.0-exp(-((n/20.0)^2)))* ... aimp*sin(2.0*pi*freq*n*dt); end; %*************************************************************** ******** % .....HZ FIELD UPDATE..... %*************************************************************** ******** hzx(1:ie,1:je)=dahzx(1:ie,1:je).*hzx(1:ie,1:je)+ ... dbhzx(1:ie,1:je).*(ey(1:ie,1:je)-ey(2:ib,1:je)); hzy(1:ie,1:je)=dahzy(1:ie,1:je).*hzy(1:ie,1:je)+ ... dbhzy(1:ie,1:je).*(ex(1:ie,2:jb)-ex(1:ie,1:je)); hz(1:ie,1:je)=hzx(1:ie,1:je)+hzy(1:ie,1:je); %*************************************************************** ******** % .....Create the movie frame by frame..... % .....Take a frame every 3rd time step..... %*************************************************************** ******** if rem(n,3)==0; s=int2str(n); n2=n/3; clf; pcolor(log10(abs(ey+0.000001))); axis([0 100 0 100]); caxis([-6 3]); shading interp; if n==3; M=moviein(70); end; t2=['TEz 2D Horn Antenna. Time step #' ,s]; title(t2); hold; M(:,n2)=getframe; end;
%*************************************************************** ******** % End time step loop %*************************************************************** ******** end; %*************************************************************** ******** % Save the movie to file ``te_horn.mat'' %*************************************************************** ******** save te_horn M; %*************************************************************** ******** % Replay the movie 5 times at 7 frames per second %*************************************************************** ******** movie(M,REPEAT,FPS) OUTPUT:
How many times to repeat? 3 Enter frames per second... 1 Current plot held Current plot held Current plot held