Matlab tutorial updates and tests

pull/1/head
Thorsten Liebig 2012-01-17 15:49:37 +01:00
parent afd11bcc4a
commit c485f041ec
10 changed files with 107 additions and 46 deletions

View File

@ -5,10 +5,10 @@
% http://openems.de/index.php/Tutorial:_CRLH_Extraction
%
% Tested with
% - Matlab 2009b
% - openEMS v0.0.23
% - Matlab 2011a / Octave 3.4.3
% - openEMS v0.0.26
%
% (C) 2011 Thorsten Liebig <thorsten.liebig@gmx.de>
% (C) 2011,2012 Thorsten Liebig <thorsten.liebig@gmx.de>
close all
clear
@ -38,7 +38,7 @@ f_start = 0.8e9;
f_stop = 6e9;
%% setup FDTD parameters & excitation function %%%%%%%%%%%%%%%%%%%%%%%%%%%%
FDTD = InitFDTD( 20000, 1e-6, 'OverSampling', 10 );
FDTD = InitFDTD( 20000 );
FDTD = SetGaussExcite( FDTD, (f_start+f_stop)/2, (f_stop-f_start)/2 );
BC = {'PML_8' 'PML_8' 'MUR' 'MUR' 'PEC' 'PML_8'};
FDTD = SetBoundaryCond( FDTD, BC );

View File

@ -5,10 +5,10 @@
% http://openems.de/index.php/Tutorial:_CRLH_Leaky_Wave_Antenna
%
% Tested with
% - Matlab 2009b
% - openEMS v0.0.23
% - Matlab 2011a / Octave 3.4.3
% - openEMS v0.0.26
%
% (C) 2011 Thorsten Liebig <thorsten.liebig@gmx.de>
% (C) 2011,2012 Thorsten Liebig <thorsten.liebig@gmx.de>
close all
clear
@ -47,7 +47,7 @@ f_rad = (1.9:0.1:4.2)*1e9;
Plot_3D_Rad_Pattern = 0; %this may take a very very long time! > 7h
%% setup FDTD parameters & excitation function %%%%%%%%%%%%%%%%%%%%%%%%%%%%
FDTD = InitFDTD( 20000, 1e-6, 'OverSampling', 10 );
FDTD = InitFDTD( 20000 );
FDTD = SetGaussExcite( FDTD, (f_start+f_stop)/2, (f_stop-f_start)/2 );
BC = {'PML_8' 'PML_8' 'PML_8' 'PML_8' 'PML_8' 'PML_8'};
FDTD = SetBoundaryCond( FDTD, BC );
@ -136,6 +136,7 @@ ylabel('S-Parameter (dB)','FontSize',12);
xlabel('frequency (GHz) \rightarrow','FontSize',12);
ylim([-40 2]);
drawnow
%% NFFF contour plots %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
thetaRange = (0:3:359) - 180;
@ -214,5 +215,7 @@ for n=1:numel(f_rad)
zlim([-4 10]);
title(['f=' num2str(f_res*1e-9,3) 'GHz - D=' num2str(Dlog(n),3) 'dBi'],'FontSize',12)
pause(0.5)
DumpFF2VTK( [Sim_Path '/FF_Pattern_' int2str(f_res/1e6) 'MHz.vtk'],E_far_normalized_3D,thetaRange,phiRange,1e-3);
end

View File

@ -5,10 +5,10 @@
% http://openems.de/index.php/Tutorial:_Circular_Waveguide
%
% Tested with
% - Matlab 2009b
% - openEMS v0.0.23
% - Matlab 2011a / Octave 3.4.3
% - openEMS v0.0.26
%
% (C) 2010,2011 Thorsten Liebig <thorsten.liebig@gmx.de>
% (C) 2010-2012 Thorsten Liebig <thorsten.liebig@gmx.de>
close all
clear
@ -17,7 +17,6 @@ clc
%% setup the simulation %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
physical_constants;
unit = 1e-3; %drawing unit in mm
numTS = 50000; %max. number of timesteps
% waveguide dimensions
length = 2000;
@ -55,7 +54,7 @@ if (f_start<fc)
end
%% setup FDTD parameter & excitation function %%%%%%%%%%%%%%%%%%%%%%%%%%%%%
FDTD = InitCylindricalFDTD(numTS,1e-5,'OverSampling',6);
FDTD = InitFDTD(1e6,1e-5,'CoordSystem',1);
FDTD = SetGaussExcite(FDTD,0.5*(f_start+f_stop),0.5*(f_stop-f_start));
% boundary conditions

View File

@ -5,10 +5,10 @@
% http://openems.de/index.php/Tutorial:_Conical_Horn_Antenna
%
% Tested with
% - Matlab 2011a
% - openEMS v0.0.25
% - Matlab 2011a / Octave 3.4.3
% - openEMS v0.0.26
%
% (C) 2011 Thorsten Liebig <thorsten.liebig@uni-due.de>
% (C) 2011,2012 Thorsten Liebig <thorsten.liebig@uni-due.de>
close all
clear
@ -52,7 +52,7 @@ beta = sqrt(k.^2 - kc^2);
ZL_a = k * Z0 ./ beta; %analytic waveguide impedance
% mode profile E- and H-field
kc = kc*unit
kc = kc*unit;
func_Er = [ num2str(-1/kc^2,'%14.13f') '/rho*cos(a)*j1(' num2str(kc,'%14.13f') '*rho)'];
func_Ea = [ num2str(1/kc,'%14.13f') '*sin(a)*0.5*(j0(' num2str(kc,'%14.13f') '*rho)-jn(2,' num2str(kc,'%14.13f') '*rho))'];
func_Ex = ['(' func_Er '*cos(a) - ' func_Ea '*sin(a) ) * (rho<' num2str(horn.radius) ')'];
@ -70,7 +70,7 @@ if (f_start<fc)
end
%% setup FDTD parameter & excitation function
FDTD = InitFDTD( 30000, 1e-5 );
FDTD = InitFDTD( 30000 );
FDTD = SetGaussExcite(FDTD,0.5*(f_start+f_stop),0.5*(f_stop-f_start));
BC = {'PML_8' 'PML_8' 'PML_8' 'PML_8' 'PML_8' 'PML_8'}; % boundary conditions
FDTD = SetBoundaryCond( FDTD, BC );
@ -126,7 +126,7 @@ CSX = AddCylinder(CSX,'excite',0 ,start,stop,horn.radius);
%% voltage and current definitions using the mode matching probes %%%%%%%%%
%port 1
start = [-horn.radius -horn.radius mesh.z(1)+horn.feed_length/2];
stop = [ horn.radius horn.radius mesh.z(1)+horn.feed_length/2]
stop = [ horn.radius horn.radius mesh.z(1)+horn.feed_length/2];
CSX = AddProbe(CSX, 'ut1', 10, 1, [], 'ModeFunction',{func_Ex,func_Ey,0});
CSX = AddBox(CSX, 'ut1', 0 ,start,stop);
CSX = AddProbe(CSX,'it1', 11, 1, [], 'ModeFunction',{func_Hx,func_Hy,0});
@ -151,7 +151,7 @@ WriteOpenEMS( [Sim_Path '/' Sim_CSX], FDTD, CSX );
CSXGeomPlot( [Sim_Path '/' Sim_CSX] );
%% run openEMS
RunOpenEMS( Sim_Path, Sim_CSX ,'--debug-PEC');
RunOpenEMS( Sim_Path, Sim_CSX);
%% postprocessing & do the plots
U = ReadUI( 'ut1', Sim_Path, freq ); % time domain/freq domain voltage
@ -173,6 +173,8 @@ ylabel( 'reflection coefficient |S_{11}|' );
P_in = 0.5*uf_inc .* conj( if_inc ); % antenna feed power
drawnow
%% NFFF contour plots %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% calculate the far field at phi=0 degrees and at phi=90 degrees
@ -243,4 +245,4 @@ ylabel( 'y' );
zlabel( 'z' );
%%
DumpFF2VTK('Conical_Horn_Pattern.vtk',E_far_normalized,thetaRange,phiRange,1e-3);
DumpFF2VTK([Sim_Path '/Conical_Horn_Pattern.vtk'],E_far_normalized,thetaRange,phiRange,1e-3);

View File

@ -5,10 +5,10 @@
% http://openems.de/index.php/Tutorial:_2D_Cylindrical_Wave
%
% Tested with
% - Matlab 2009b
% - openEMS v0.0.23
% - Matlab 2011a/ Octave 3.4.3
% - openEMS v0.0.26
%
% (C) 2011 Thorsten Liebig <thorsten.liebig@gmx.de>
% (C) 2011,2012 Thorsten Liebig <thorsten.liebig@gmx.de>
close all
clear
@ -28,7 +28,7 @@ exite_offset = 1300;
excite_angle = 45;
%% setup FDTD parameter & excitation function %%%%%%%%%%%%%%%%%%%%%%%%%%%%%
FDTD = InitCylindricalFDTD(100000,1e-4,'OverSampling',5,'MultiGrid',split);
FDTD = InitFDTD(100000,1e-4,'CoordSystem',1,'MultiGrid',split);
FDTD = SetGaussExcite(FDTD,f0,f0/2);
BC = [0 3 0 0 0 0]; % pml in positive r-direction
FDTD = SetBoundaryCond(FDTD,BC);
@ -73,6 +73,9 @@ Sim_CSX = '2D_CC_Wave.xml';
WriteOpenEMS([Sim_Path '/' Sim_CSX],FDTD,CSX);
RunOpenEMS(Sim_Path, Sim_CSX);
%%
disp('use Paraview to visualize the vtk field dump...');
%%
[field mesh_h5] = ReadHDF5Dump([Sim_Path '/Ef_ra.h5']);

View File

@ -5,10 +5,10 @@
% http://openems.de/index.php/Tutorial:_Horn_Antenna
%
% Tested with
% - Matlab 2011a
% - openEMS v0.0.25
% - Matlab 2011a / Octave 3.4.3
% - openEMS v0.0.26
%
% (C) 2011 Thorsten Liebig <thorsten.liebig@uni-due.de>
% (C) 2011,2012 Thorsten Liebig <thorsten.liebig@uni-due.de>
close all
clear
@ -73,7 +73,7 @@ if (f_start<fc)
end
%% setup FDTD parameter & excitation function
FDTD = InitFDTD( 30000, 1e-5 );
FDTD = InitFDTD( 30000, 1e-4 );
FDTD = SetGaussExcite(FDTD,0.5*(f_start+f_stop),0.5*(f_stop-f_start));
BC = {'PML_8' 'PML_8' 'PML_8' 'PML_8' 'PML_8' 'PML_8'}; % boundary conditions
FDTD = SetBoundaryCond( FDTD, BC );
@ -199,6 +199,8 @@ ylabel( 'reflection coefficient |S_{11}|' );
P_in = 0.5*uf_inc .* conj( if_inc ); % antenna feed power
drawnow
%% NFFF contour plots %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% calculate the far field at phi=0 degrees and at phi=90 degrees
@ -269,4 +271,4 @@ ylabel( 'y' );
zlabel( 'z' );
%%
DumpFF2VTK('Horn_Pattern.vtk',E_far_normalized,thetaRange,phiRange,1e-3);
DumpFF2VTK([Sim_Path '/Horn_Pattern.vtk'],E_far_normalized,thetaRange,phiRange,1e-3);

View File

@ -5,10 +5,10 @@
% http://openems.de/index.php/Tutorial:_Microstrip_Notch_Filter
%
% Tested with
% - Matlab 2009b
% - openEMS v0.0.23
% - Matlab 2011a / Octave 3.4.3
% - openEMS v0.0.26
%
% (C) 2011 Thorsten Liebig <thorsten.liebig@gmx.de>
% (C) 2011,2012 Thorsten Liebig <thorsten.liebig@gmx.de>
close all
clear
@ -25,7 +25,7 @@ stub_length = 12e3;
f_max = 7e9;
%% setup FDTD parameters & excitation function %%%%%%%%%%%%%%%%%%%%%%%%%%%%
FDTD = InitFDTD( 20000, 1e-6, 'OverSampling', 10 );
FDTD = InitFDTD();
FDTD = SetGaussExcite( FDTD, f_max/2, f_max/2 );
BC = {'PML_8' 'PML_8' 'MUR' 'MUR' 'PEC' 'MUR'};
FDTD = SetBoundaryCond( FDTD, BC );
@ -86,8 +86,7 @@ plot(f/1e9,20*log10(abs(s11)),'k-','LineWidth',2);
hold on;
grid on;
plot(f/1e9,20*log10(abs(s21)),'r--','LineWidth',2);
l = legend('S_{11}','S_{21}','Location','Best');
set(l,'FontSize',12);
legend('S_{11}','S_{21}');
ylabel('S-Parameter (dB)','FontSize',12);
xlabel('frequency (GHz) \rightarrow','FontSize',12);
ylim([-40 2]);

View File

@ -0,0 +1,51 @@
%
% Tutorials / Parallel_Plate_Waveguide
%
% Describtion at:
% http://openems.de/index.php/Tutorial:_Parallel_Plate_Waveguide
%
% Tested with
% - Matlab 2011a / Octave 3.4.3
% - openEMS v0.0.26
%
% (C) 2011,2012 Sebastian Held <sebastian.held@gmx.de>
% (C) 2011,2012 Thorsten Liebig <thorsten.liebig@gmx.de>
close all
clear
clc
% init and define FDTD parameter
FDTD = InitFDTD(100,0,'OverSampling',50);
FDTD = SetSinusExcite(FDTD,10e6);
BC = {'PMC' 'PMC' 'PEC' 'PEC' 'MUR' 'MUR'};
FDTD = SetBoundaryCond(FDTD,BC);
% init and define FDTD mesh
CSX = InitCSX();
mesh.x = -10:10;
mesh.y = -10:10;
mesh.z = -10:30;
CSX = DefineRectGrid(CSX, 1, mesh);
% define the excitation
CSX = AddExcitation(CSX,'excitation',0,[0 1 0]);
CSX = AddBox(CSX,'excitation',0,[-10 -10 0],[10 10 0]);
% define a time domain e-field dump box
CSX = AddDump(CSX,'Et','DumpMode',0);
CSX = AddBox(CSX,'Et',0,[-10 0 -10],[10 0 30]);
% remove old simulation results (if exist)
rmdir('tmp','s');mkdir('tmp');
% write openEMS xml data file
WriteOpenEMS('tmp/tmp.xml',FDTD,CSX);
% view defined structure
CSXGeomPlot( 'tmp/tmp.xml' );
% run openEMS simulation
RunOpenEMS('tmp','tmp.xml','');
disp('use Paraview to visualize the FDTD result...');

View File

@ -5,10 +5,10 @@
% http://openems.de/index.php/Tutorial:_Rectangular_Waveguide
%
% Tested with
% - Matlab 2009b
% - openEMS v0.0.23
% - Matlab 2011a / Octave 3.4.3
% - openEMS v0.0.26
%
% (C) 2010,2011 Thorsten Liebig <thorsten.liebig@gmx.de>
% (C) 2010-2012 Thorsten Liebig <thorsten.liebig@gmx.de>
close all
clear
@ -57,7 +57,7 @@ if (f_start<fc)
end
%% setup FDTD parameter & excitation function %%%%%%%%%%%%%%%%%%%%%%%%%%%%%
FDTD = InitFDTD(numTS,1e-5,'OverSampling',6);
FDTD = InitFDTD(numTS,1e-5);
FDTD = SetGaussExcite(FDTD,0.5*(f_start+f_stop),0.5*(f_stop-f_start));
% boundary conditions

View File

@ -5,10 +5,10 @@
% http://openems.de/index.php/Tutorial:_Simple_Patch_Antenna
%
% Tested with
% - Matlab 2009b
% - openEMS v0.0.23
% - Matlab 2011a / Octave 3.4.3
% - openEMS v0.0.26
%
% (C) 2010,2011 Thorsten Liebig <thorsten.liebig@uni-due.de>
% (C) 2010-2012 Thorsten Liebig <thorsten.liebig@uni-due.de>
close all
clear
@ -40,9 +40,9 @@ feed.R = 50; %feed resistance
SimBox = [200 200 100];
%% setup FDTD parameter & excitation function
f0 = 0e9; % center frequency
fc = 3e9; % 20 dB corner frequency (in this case 0 Hz - 3e9 Hz)
FDTD = InitFDTD( 30000, 1e-5 );
f0 = 2e9; % center frequency
fc = 1e9; % 20 dB corner frequency
FDTD = InitFDTD( 30000 );
FDTD = SetGaussExcite( FDTD, f0, fc );
BC = {'MUR' 'MUR' 'MUR' 'MUR' 'MUR' 'MUR'}; % boundary conditions
FDTD = SetBoundaryCond( FDTD, BC );
@ -141,6 +141,8 @@ ylabel( 'reflection coefficient |S_{11}|' );
P_in = 0.5*U.FD{1}.val .* conj( I.FD{1}.val ); % antenna feed power
drawnow
%% NFFF contour plots %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%find resonance frequncy from s11
f_res_ind = find(s11==min(s11));