This example analyzes the impedance behavior of a center-fed dipole antenna at varying mesh resolution/size and at a single frequency of operation. The resistance and reactance of the dipole are plotted and compared with the theoretical results. A relative convergence curve is established for the impedance.
The default dipole has a width of 10 cm. Reduce the width to 1 cm and make the change to the dipole parameter Width.
mydipole = dipole; w = 1e-2; mydipole.Width = w;
Calculate and store the impedance and the number of triangular facets in the mesh when using the default mesh. Since the dipole length is 2 m, we choose the analysis frequency as half-wavelength frequency , where c, is the speed of light.
c = 2.99792458e8; f = c/(2*mydipole.Length); Zbaseline = impedance(mydipole,f); meshdata = mesh(mydipole); Nbaseline = meshdata.NumTriangles; Mbaseline = meshdata.MaxEdgeLength;
Create parameters to store impedance, the relative change in impedance and the mesh size.
Zin = Zbaseline; numTri = Nbaseline; Ztemp = Zin(1);
The triangular surface mesh implies a discretization of the surface geometry into small planar triangles. All antenna surfaces in the Antenna Toolbox™ are discretized into triangles. You can evaluate the accuracy of the simulation results by uniformly refining the mesh. To specify the resolution of the mesh, provide the size of the maximum edge length, i.e. the longest side of a triangle among all triangles in the mesh, prior to analysis.
For each value of the maximum edge length, update the mesh, calculate the impedance at the predefined operating frequency, and calculate the number of triangles in the mesh. Store the impedance and the number of triangles in the mesh for subsequent analysis. Finally, calculate the relative change in the antenna impedance between subsequent mesh refinements until a desired convergence criterion is met.
exptol = .001; tolCheck = ; n = 1; nmax = 10; pretol = 1; ShrinkFactor = 0.95; while (n < nmax+1)&&(pretol > exptol) Mbaseline(n+1)=Mbaseline(n)*ShrinkFactor^(n-1); meshdata = mesh(mydipole,'MaxEdgeLength',Mbaseline(n+1)); numTri(n+1) = meshdata.NumTriangles; % Check if mesh has changed and only then calculate impedance if numTri(n+1)~=numTri(n) Zin(n+1) = impedance(mydipole,f); Zchange = abs((Zin(n+1)-Ztemp)/Zin(n+1)); else Zin(n+1) = Zin(n); Zchange = pretol; end tolCheck(n) = Zchange; %#ok<SAGROW> pretol = tolCheck(n); Ztemp = Zin(n+1); n = n+1; end tolValue = exptol.*ones(1,n); tolCheck = [nan tolCheck];
Plot the input impedance at the operating frequency for each mesh update. At the end of this analysis, the resistance, and reactance, become,
, . This value is in good agreement with the results reported in , . Better results are obtained with an adaptive mesh refinement algorithm, which implies selective mesh refinement in the domain of a maximum numerical error.
figure; subplot(211) plot(numTri,real(Zin),'-x','LineWidth',2) hold on plot(Nbaseline,real(Zbaseline),'o','MarkerSize',8) hold off axis([min(numTri),max(numTri),min(real(Zin)),max(real(Zin))]) grid on legend('R_i_n','R_i_n - Baseline') ylabel('Input Resistance R_i_n (\Omega)') title('Dipole Impedance vs. Number of Triangles in Mesh') subplot(212) plot(numTri,imag(Zin),'-xr','LineWidth',2) hold on plot(Nbaseline,imag(Zbaseline),'ro','MarkerSize',8) axis([min(numTri),max(numTri),min(imag(Zin)),max(imag(Zin))]) grid on legend('X_i_n','X_i_n - Baseline') xlabel('Number of triangles') ylabel('Input Reactance X_i_n (\Omega)') hold off
 S. N. Makarov, 'Antenna and EM Modeling with MATLAB,' p.66, Wiley, 2002.
 C. A. Balanis, 'Antenna Theory. Analysis and Design,' p.514, Wiley, New York, 3rd Edition, 2005
 R. C. Hansen, "Carter Dipoles and Resonant Dipoles," Proceedings of the Antenna Application Symposium, Allerton Park, Monticello, IL, pp.282-284, Sep. 21-23rd 2010.