matlab: update tutorials and examples
Signed-off-by: Stefan Mahr <stefan.mahr@sphairon.com>
This commit is contained in:
parent
214f9ecdb2
commit
74535823eb
@ -41,7 +41,7 @@ f_stop = 20e9;
|
|||||||
f0 = 15e9;
|
f0 = 15e9;
|
||||||
|
|
||||||
%% setup FDTD parameter & excitation function
|
%% setup FDTD parameter & excitation function
|
||||||
FDTD = InitFDTD( 30000, 1e-4 );
|
FDTD = InitFDTD( 'NrTS', 30000, 'EndCriteria', 1e-4 );
|
||||||
FDTD = SetGaussExcite(FDTD,0.5*(f_start+f_stop),0.5*(f_stop-f_start));
|
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
|
BC = {'PML_8' 'PML_8' 'PML_8' 'PML_8' 'PML_8' 'PML_8'}; % boundary conditions
|
||||||
FDTD = SetBoundaryCond( FDTD, BC );
|
FDTD = SetBoundaryCond( FDTD, BC );
|
||||||
@ -140,7 +140,6 @@ drawnow
|
|||||||
|
|
||||||
% calculate the far field at phi=0 degrees and at phi=90 degrees
|
% calculate the far field at phi=0 degrees and at phi=90 degrees
|
||||||
thetaRange = (0:2:359) - 180;
|
thetaRange = (0:2:359) - 180;
|
||||||
r = 1; % evaluate fields at radius r
|
|
||||||
disp( 'calculating far field at phi=[0 90] deg...' );
|
disp( 'calculating far field at phi=[0 90] deg...' );
|
||||||
nf2ff = CalcNF2FF(nf2ff, Sim_Path, f0, thetaRange*pi/180, [0 90]*pi/180);
|
nf2ff = CalcNF2FF(nf2ff, Sim_Path, f0, thetaRange*pi/180, [0 90]*pi/180);
|
||||||
|
|
||||||
@ -153,24 +152,20 @@ disp( ['radiated power: Prad = ' num2str(nf2ff.Prad) ' Watt']);
|
|||||||
disp( ['directivity: Dmax = ' num2str(Dlog) ' dBi'] );
|
disp( ['directivity: Dmax = ' num2str(Dlog) ' dBi'] );
|
||||||
disp( ['aperture efficiency: e_a = ' num2str(e_a*100) '%'] );
|
disp( ['aperture efficiency: e_a = ' num2str(e_a*100) '%'] );
|
||||||
|
|
||||||
|
|
||||||
%%
|
%%
|
||||||
% normalized directivity
|
% normalized directivity
|
||||||
D_log = 20*log10(nf2ff.E_norm{1}/max(max(nf2ff.E_norm{1})));
|
|
||||||
% directivity
|
|
||||||
D_log = D_log + 10*log10(nf2ff.Dmax);
|
|
||||||
|
|
||||||
% display polar plot
|
|
||||||
figure
|
figure
|
||||||
plot( nf2ff.theta, D_log(:,1) ,'k-' );
|
plotFFdB(nf2ff,'xaxis','theta','param',[1 2]);
|
||||||
xlabel( 'theta (deg)' );
|
|
||||||
ylabel( 'directivity (dBi)');
|
|
||||||
grid on;
|
|
||||||
hold on;
|
|
||||||
plot( nf2ff.theta, D_log(:,2) ,'r-' );
|
|
||||||
legend('phi=0','phi=90')
|
|
||||||
|
|
||||||
drawnow
|
drawnow
|
||||||
|
% D_log = 20*log10(nf2ff.E_norm{1}/max(max(nf2ff.E_norm{1})));
|
||||||
|
% D_log = D_log + 10*log10(nf2ff.Dmax);
|
||||||
|
% plot( nf2ff.theta, D_log(:,1) ,'k-', nf2ff.theta, D_log(:,2) ,'r-' );
|
||||||
|
|
||||||
|
% polar plot
|
||||||
|
figure
|
||||||
|
polarFF(nf2ff,'xaxis','theta','param',[1 2],'logscale',[-40 20], 'xtics', 12);
|
||||||
|
drawnow
|
||||||
|
% polar( nf2ff.theta, nf2ff.E_norm{1}(:,1) )
|
||||||
|
|
||||||
%% calculate 3D pattern
|
%% calculate 3D pattern
|
||||||
phiRange = sort( unique( [-180:5:-100 -100:2.5:-50 -50:1:50 50:2.5:100 100:5:180] ) );
|
phiRange = sort( unique( [-180:5:-100 -100:2.5:-50 -50:1:50 50:2.5:100 100:5:180] ) );
|
||||||
@ -183,4 +178,5 @@ figure
|
|||||||
plotFF3D(nf2ff); % plot liear 3D far field
|
plotFF3D(nf2ff); % plot liear 3D far field
|
||||||
|
|
||||||
%%
|
%%
|
||||||
|
E_far_normalized = nf2ff.E_norm{1}/max(nf2ff.E_norm{1}(:));
|
||||||
DumpFF2VTK([Sim_Path '/Conical_Horn_Pattern.vtk'],E_far_normalized,thetaRange,phiRange,'scale',1e-3);
|
DumpFF2VTK([Sim_Path '/Conical_Horn_Pattern.vtk'],E_far_normalized,thetaRange,phiRange,'scale',1e-3);
|
||||||
|
@ -175,21 +175,18 @@ disp( ['aperture efficiency: e_a = ' num2str(e_a*100) '%'] );
|
|||||||
|
|
||||||
%%
|
%%
|
||||||
% normalized directivity
|
% normalized directivity
|
||||||
D_log = 20*log10(nf2ff.E_norm{1}/max(max(nf2ff.E_norm{1})));
|
|
||||||
% directivity
|
|
||||||
D_log = D_log + 10*log10(nf2ff.Dmax);
|
|
||||||
|
|
||||||
% display polar plot
|
|
||||||
figure
|
figure
|
||||||
plot( nf2ff.theta, D_log(:,1) ,'k-' );
|
plotFFdB(nf2ff,'xaxis','theta','param',[1 2]);
|
||||||
xlabel( 'theta (deg)' );
|
|
||||||
ylabel( 'directivity (dBi)');
|
|
||||||
grid on;
|
|
||||||
hold on;
|
|
||||||
plot( nf2ff.theta, D_log(:,2) ,'r-' );
|
|
||||||
legend('phi=0','phi=90')
|
|
||||||
|
|
||||||
drawnow
|
drawnow
|
||||||
|
% D_log = 20*log10(nf2ff.E_norm{1}/max(max(nf2ff.E_norm{1})));
|
||||||
|
% D_log = D_log + 10*log10(nf2ff.Dmax);
|
||||||
|
% plot( nf2ff.theta, D_log(:,1) ,'k-', nf2ff.theta, D_log(:,2) ,'r-' );
|
||||||
|
|
||||||
|
% polar plot
|
||||||
|
figure
|
||||||
|
polarFF(nf2ff,'xaxis','theta','param',[1 2],'logscale',[-40 20], 'xtics', 12);
|
||||||
|
drawnow
|
||||||
|
% polar( nf2ff.theta, nf2ff.E_norm{1}(:,1) )
|
||||||
|
|
||||||
%% calculate 3D pattern
|
%% calculate 3D pattern
|
||||||
phiRange = sort( unique( [-180:5:-100 -100:2.5:-50 -50:1:50 50:2.5:100 100:5:180] ) );
|
phiRange = sort( unique( [-180:5:-100 -100:2.5:-50 -50:1:50 50:2.5:100 100:5:180] ) );
|
||||||
@ -202,4 +199,5 @@ figure
|
|||||||
plotFF3D(nf2ff);
|
plotFF3D(nf2ff);
|
||||||
|
|
||||||
%%
|
%%
|
||||||
|
E_far_normalized = nf2ff.E_norm{1}/max(nf2ff.E_norm{1}(:));
|
||||||
DumpFF2VTK([Sim_Path '/Horn_Pattern.vtk'],E_far_normalized,thetaRange,phiRange,'scale',1e-3);
|
DumpFF2VTK([Sim_Path '/Horn_Pattern.vtk'],E_far_normalized,thetaRange,phiRange,'scale',1e-3);
|
||||||
|
@ -57,7 +57,7 @@ if ~postprocessing_only
|
|||||||
% setup FDTD parameters & excitation function
|
% setup FDTD parameters & excitation function
|
||||||
max_timesteps = 2000;
|
max_timesteps = 2000;
|
||||||
min_decrement = 1e-6;
|
min_decrement = 1e-6;
|
||||||
FDTD = InitFDTD( max_timesteps, min_decrement, 'OverSampling',10 );
|
FDTD = InitFDTD( 'NrTS', max_timesteps, 'EndCriteria', min_decrement, 'OverSampling',10 );
|
||||||
FDTD = SetGaussExcite( FDTD, f_max/2, f_max/2 );
|
FDTD = SetGaussExcite( FDTD, f_max/2, f_max/2 );
|
||||||
BC = {'PML_8' 'PML_8' 'PML_8' 'PML_8' 'PML_8' 'PML_8'};
|
BC = {'PML_8' 'PML_8' 'PML_8' 'PML_8' 'PML_8' 'PML_8'};
|
||||||
FDTD = SetBoundaryCond( FDTD, BC );
|
FDTD = SetBoundaryCond( FDTD, BC );
|
||||||
@ -94,34 +94,18 @@ disp( ['radiated power: Prad = ' num2str(Prad)] );
|
|||||||
disp( ['directivity: Dmax = ' num2str(Dmax)] );
|
disp( ['directivity: Dmax = ' num2str(Dmax)] );
|
||||||
disp( ['theta_HPBW = ' num2str(theta_HPBW) ' °']);
|
disp( ['theta_HPBW = ' num2str(theta_HPBW) ' °']);
|
||||||
|
|
||||||
% display polar plot for the e-field magnitude for phi = 0 deg
|
% display polar plot for the e-field magnitude for phi = 0 & 90 deg
|
||||||
figure
|
figure
|
||||||
polar( thetaRange/180*pi, nf2ff.E_norm{1}(:,1)' );
|
polarFF(nf2ff,'xaxis','theta','param',[1 2]);
|
||||||
ylabel( 'theta / deg' );
|
|
||||||
title( 'electrical far field (V/m); r=1 m phi=0 deg' );
|
|
||||||
legend( 'e-field magnitude', 'Location', 'BestOutside' );
|
|
||||||
|
|
||||||
% display polar plot for the e-field magnitude for phi = 90 deg
|
|
||||||
figure
|
|
||||||
polar( thetaRange/180*pi, nf2ff.E_norm{1}(:,2)' );
|
|
||||||
ylabel( 'theta / deg' );
|
|
||||||
title( 'electrical far field (V/m); r=1 m phi=90 deg' );
|
|
||||||
legend( 'e-field magnitude', 'Location', 'BestOutside' );
|
|
||||||
|
|
||||||
%% calculate the far field at theta=90 degrees
|
%% calculate the far field at theta=90 degrees
|
||||||
phiRange = 0:2:359;
|
phiRange = 0:2:359;
|
||||||
disp( 'calculating far field at theta=90 deg..' );
|
disp( 'calculating far field at theta=90 deg..' );
|
||||||
nf2ff = CalcNF2FF( nf2ff, Sim_Path, f_max, 90, phiRange/180*pi, 'Mode', 1 );
|
nf2ff = CalcNF2FF( nf2ff, Sim_Path, f_max, 90/180*pi, phiRange/180*pi, 'Mode', 1 );
|
||||||
Prad = nf2ff.Prad;
|
|
||||||
Dmax = nf2ff.Dmax;
|
|
||||||
|
|
||||||
% display polar plot
|
% display polar plot
|
||||||
figure
|
figure
|
||||||
polar( phiRange/180*pi, nf2ff.E_norm{1} );
|
polarFF(nf2ff,'xaxis','phi','param',1);
|
||||||
ylabel( 'phi / deg' );
|
|
||||||
title( 'electrical far field (V/m); r=1 m theta=90 deg' );
|
|
||||||
legend( 'e-field magnitude', 'Location', 'BestOutside' );
|
|
||||||
|
|
||||||
|
|
||||||
%% calculate 3D pattern
|
%% calculate 3D pattern
|
||||||
phiRange = 0:5:360;
|
phiRange = 0:5:360;
|
||||||
|
Loading…
Reference in New Issue
Block a user