.. title: Modeling a Wire Antenna with Insulation
.. slug: 17
.. date: 2024-09-17 15:45
.. tags: documentation,english,howto,hamradio,antenna modeling
.. description:
.. wp-status: publish
.. has_math: true
.. |--| unicode:: U+2013 .. en dash
.. |ohm| unicode:: U+02126 .. Omega
:trim:
.. |_| unicode:: U+00A0 .. Non-breaking space
:trim:
.. |mho| unicode:: U+2127 .. upside-down Omega
[Update 2024-08-20: Correction of formula for L and equivalent radius]
[Update 2024-09-19: Correction of citation of article by Stearns,
Supplement to Antenna Book [5]_]
For my antenna modeling code pymininec_ (which is a re-implementation of
the original Mininec_ code in Basic) I was researching how to model
insulated wires. I had asked Roy Lewallen, W7EL, the author of EZNEC_
what he is using in EZNEC_ and received a pointer to a paper by J. H.
Richmond [1]_ which seems the first paper to propose an algorithm for
modeling insulated wires in an antenna and actually implementing it.
The algorithm was implemented by Jerry McCormack in his masters thesis
[2]_ and later incorporated into a contractor report [3]_ (the
contractor report is almost identical with the thesis except for updated
Fortran code but has a different author). The original
Fortran_ code is not only listed in the reports but is still made
available by Ray L. Cross on his "Antenna Scatterers Analysis Program"
(ASAP_) page. The subroutine "DSHELL" implements the insulated wire
algorithm. With some modifications I was able to run this code today.
Many thanks go to Roy, W7EL for sending me this information.
To test my implementation in pymininec_ against real measured data, I
dug up a paper by David Lamensdorf [4]_ where the effect of insulation
were actually measured. Since at the time the insulation could only be
modelled as an infinite cylinder, the experiment used insulation that
goes beyond the end of the wire until no more changes in the measured
parameters were observed.
Experiments with the formulation by Richmond [1]_ indicated that the
resulting impedance matrix is very ill-conditioned: For short wire
segments the formulation yields very large absolute values that are
added to the main diagonal of the impedance matrix and subtracted from
the second diagonals (the matrix is symmetric and the second diagonal is
the same for the lower and upper triangle). Since these large values are
subtracted during the matrix inversion this leads to `Catastrophic
Cancellation`_ and results that are dominated by cancellation effects.
So I investigated further and found a paper [5]_ and a presentation [6]_
by Steve Stearns, K6OIK which gives distributed inductance and an
equivalent-radius formula for modeling insulation. His presentation also
has a great history of various approaches to modeling insulation with
programs that originally do not support it (like the original `NEC-2`_
and the original Mininec_):
.. math::
a_e &= a \left(\frac{b}{a}\right)^{\left(1-
\frac{1}{\varepsilon_r}\right)} \\
L &= \frac{\mu_0}{2\pi}\left(1-\frac{1}{\varepsilon_r}
\right)\log\left(\frac{b}{a}\right) \\
\sigma_e &=
\sigma\left(\frac{a}{b}\right)^{2\left(1-\frac{1}{\varepsilon_r}\right)} \\
where :math:`a` is the original radius of the wire, :math:`b` is the
radius of the wire *including insulation*, :math:`\sigma` is the
conductivity of the wire, :math:`\varepsilon_r` is the relative dieelectric
constant of the insulation, :math:`a_e` is the equivalent radius and
:math:`\sigma_e` is the equivalent conductivity that is used for
removing the effect of the changed radius on the computation of the skin
effect loading of the wire. The inductance :math:`L` is the inductance
per length of the insulated wire (or wire segment).
I then searched for a paper that would confirm the formulas by Steve
Stearns and found an even older paper by Tai Tsun Wu [7]_ which has
exactly the formula for the equivalent radius :math:`a_e` and for the
distributed inductance :math:`L`.
The formula for the equivalent conductivity is just used to cancel the
effect of the equivalent radius on the computation of the skin effect
load. In a previous blog post [8]_ I had given the formula for the skin
effect load. In that formula, the conductivity :math:`\sigma` appears as
its reciprocal :math:`\rho`, the resistivity. The square root of
:math:`\sigma` is always used as a product with the radius. So we can
undo the equivalent radius correction by multiplying :math:`\sigma` with
the reciprocal of the equivalent radius factor. We get
.. math::
\sqrt{\sigma}a &=
\sqrt{\sigma_e}a\left(\frac{b}{a}\right)^{\left
(1-\frac{1}{\varepsilon_r}\right)} \\
\frac{\sigma_e}{\sigma} &=
\frac{1}{\left(\frac{b}{a}\right)^{2\left
(1-\frac{1}{\varepsilon_r}\right)}}
= \left(\frac{a}{b}\right)^{2\left(1-\frac{1}{\varepsilon_r}\right)} \\
In pymininec_ I don't need to correct the equivalent radius for the
skin effect computation, I can simply use the original radius there.
In the following three graphics I'm comparing various implementations of
insulated wires with the measurements by Lamensdorf [4]_. The wire has a
diameter (not radius!) of 0.25in, the frequency is 600MHz. I'm using
only the measurements with :math:`\varepsilon_r = 3.2`, the higher
relative permittivities are unrealistic in practice and will deviate
from the formulas due to the unrealistic experimental setup.
I'm plotting the real- (conductance) and imaginary (susceptance) parts
of the admittance (reciprocal of the impedance). The three graphics
are:
- Without any insulation
- Diameter of wire with insulation of 0.375in (insulation 0.125in)
- Diameter of wire with insulation of 0.5in (insulation 0.25in)
.. iframe:: /content/2024/09/plotly/admittance-1.html
:width: 800
:height: 640
.. iframe:: /content/2024/09/plotly/admittance-2.html
:width: 800
:height: 640
.. iframe:: /content/2024/09/plotly/admittance-3.html
:width: 800
:height: 640
The traces in the plots are:
- ASAP_ with two, four, eight and 16 segments for each half of a dipole,
the traces are marked 'AS02', 'AS04', 'AS08' and 'AS16', respectively,
I'm not showing all four traces in each plot
- 4NEC2 which, according to Stearns [6]_, implements a formula derived by
Cebik [9]_, these traces are marked '4N2'
- `NEC-2`_ using Wu's [7]_ formula for equivalent radius and distributed
inductance as well as Stearns' [6]_ formula for equivalent
:math:`\sigma` marked as 'NEC'
- My pymininec_ implementation using Wu's [7]_ formula for equivalent
radius and distributed inductance (but not the :math:`\sigma`
correction because I can use the original radius for the skin effect
directly) marked as 'mini'
- The measurements from Lamensdorf [4]_ are the blue and orange bubbles
(for the real and imaginary parts of the impedance, respectively)
- In the graphics with insulation I'm also showing the results of
EZNEC_, the traces are greyed out and can be turned on in the legend
on the right side
The Formula by Cebik [9]_ and by Wu [7]_ are very similar, the
traces '4N2' and 'NEC' are almost identical.
I'm greying out the EZNEC_ traces and some of the ASAP_ traces because
they exhibit numerical problems due to the ill-conditioned impedance
matrix resulting from Richmond's formulation. It is interesting to see
that EZNEC_ also exhibits numerical problems for smaller segments.
You can see the traces by clicking into the legend on the right side.
The segmentation in all examples is 21 segments for the wire. This
means small segments for the lower end of the lengths computed.
It triggers a small segment warning in EZNEC_ for the first three points
(up to and including :math:`\frac{4.2}{32} = 0.06558125` wavelength) but
not for the clearly numerically invalid 6th value in the first graphics
with insulation and the points exhibiting numeric instability in the
second graphics with insulation.
Note that the measurements by Lamensdorf [4]_ were performed on
monopole-antennas. I'm
simulating dipoles. The impedance of monopole is half that of a dipole,
so for admittance I'm multiplying by 2. All admittances are in
milli-Siemens, called milli-mhos (mho being ohm spelled backwards) with
the symbol |mho| at the time of the Lamensdorf [4]_ paper.
.. [1] J. H. Richmond. Radiation and scattering by thin-wire structures
in the complex frequency domain. Contractor Report CR-2396, NASA,
Columbia, Ohio, May 1974. Available as `CR-2936`_
.. [2] Jerry Wayne McCormack. "ASAP" antennas-scatterers analysis
program, a general purpose user-oriented computer program for
analysis of thin-wire structures in the presence of finite
ground. Master’s thesis, Naval Postgraduate School, Monterey,
California, December 1974. `Thesis available here`_
.. [3] Richard W. Adler. "ASAP" antennas-scatterers analysis program: A
user-oriented thin wire antenna computer code. Contractor Report
NPS-62AB770801, Naval Postgraduate School, Monterey, California,
August 1977. Revised Version. Available as ADA050015_
.. [4] David Lamensdorf. An experimental investigation of
dielectric-coated antennas. IEEE Transactions on Antennas and
Propagation, 15(6):767–771, November 1967.
.. [5] Steve Stearns. `Modeling insulated wire`_. In Silver [11]_.
Supplement to Antenna Book, page visited 2024-08-26.
.. [6] Steve Stearns. Grow an antenna ... from seeds. Presentation
slides, October 2023. `Available from FARS`_
.. [7] Tai Tsun Wu. Theory of the dipole antenna and the two-wire
transmission line. Journal of Mathematical Physics, 2(4):550–574,
July 1961.
.. [8] Ralf Schlatterbeck. `Skin Effect Load Update`_. Blog post, Open
Source Consulting, July 2024.
.. [9] L. B. Cebik. Insulated wires: The NEC-2 way. In Antenna Modeling
Notes [9], chapter 83, pages 124–141. Available as `Antenna
Modeling Notes Episode 83`_
.. [10] L. B. Cebik. Antenna Modeling Notes, volume 4. antenneX Online
Magazine, 2006. Available from the `Cebik collection`_.
.. [11] H. Ward Silver, editor. The ARRL Antenna Book for Radio
Communications. American Radio Relay League (ARRL), 25th edition, 2023.
.. _`CR-2936`: https://ntrs.nasa.gov/citations/19740013743
.. _ASAP: http://raylcross.net/asap/index.html
.. _ADA050015: https://apps.dtic.mil/sti/tr/pdf/ADA050015.pdf
.. _`Thesis available here`: https://calhoun.nps.edu/handle/10945/16899
.. _pymininec: https://github.com/schlatterbeck/pymininec
.. _Mininec: https://github.com/schlatterbeck/MiniNec
.. _Fortran: https://en.wikipedia.org/wiki/Fortran
.. _`Catastrophic Cancellation`:
https://en.wikipedia.org/wiki/Catastrophic_cancellation
.. _`NEC-2`: https://en.wikipedia.org/wiki/Numerical_Electromagnetics_Code
.. _`Available from FARS`: https://www.fars.k6ya.org/docs/Stearns_K6OIK-Grow_an_Antenna_..._from_Seeds-Pacificon_Antenna_Seminar-r1-Oct_2023.pdf
.. _`Antenna Modeling Notes Episode 83`:
http://on5au.be/content/amod/amod83.html
.. _`Cebik collection`: http://on5au.be/Books/allmodnotes.zip
.. _`EZNEC`: https://eznec.com/
.. _`Skin effect load update`: https://blog.runtux.com/posts/2024/07/28/
.. _`Modeling insulated wire`:
http://www.arrl.org/files/file/Modeling%20Insulated%20Wire%20-%20K6OIK.pdf