Mininec Resonant Frequency
For my antenna modeling code pymininec (which is a Python re-implementation of the original Mininec Basic-code) I was researching why the resonant frequency computed by Mininec is always a little too high (so the real resonant frequency is slightly lower than simulated and to get the correct higher resonance frequency, wires need to be cut a little shorter than simulated by Mininec).
This means that when we compute the resonant length for a given frequency, Mininec will compute a slightly longer wire length at resonance than NEC-2.
From the Mininec report [LR86] we know that Mininec breaks wires into segments (well in fact the user needs to specify the number of segments to use) and calls the points between adjacent segments pulses. It computes the current at each pulse and determines the resulting antenna pattern from these currents. Since there is no pulse at the end of a wire (unless another wire is connected at this point) the simulation leaves out half a segment length at the end of each unconnected wire.
This means that for a dipole at each end Mininec leaves out half a segment and the resulting resonant frequency is a little too high due to the shorter length.
So the hypothesis is that when we use shorter segments at the end of a wire we should get a lower resonant frequency – or equivalently – a shorter resonant length when the frequency is fixed.
To test this hypothesis, I've plotted the resonant length of dipole against the number of segments used in the simulation for both, NEC-2 and pymininec. In addition I'm using length-tapering, i.e. I'm using short segments at the end of the wire while using longer segments at the center of the dipole. Segment lengths are tapered by a factor of two for each increase in wire length up to a maximum of \(\lambda/20\) for the segment length. This length-tapering mechanism is a builtin feature in pymininec. The minimum segment length was set to \(\lambda/400\).
It can be seen that the orange pymininec curve (labelled Mininec length) converges slowly to the blue NEC-length-curve (as segments are getting shorter) but that around 16 segments the green line labelled Mininec T1 length with pymininec end-tapered segment lengths already converged nearly to the NEC-2 value.
There are two traces not shown by default which can be shown by clicking into the legend on the right side. The grey curve labelled Ballanis 2016 is an estimate of the resonant dipole length from an antenna book by C. Balanis [Bal16]. The red line labelled Mininec T2 length is another length-tapered version computed by mininec, but this time the short segments are in the middle of the dipole (at the feedpoint) and the longer segments at the wire ends.
Even for very short segment length (\(10^{-5}\lambda\), not shown) the pymininec length-tapered curve stays close to the NEC-2 curve even though the thin-wire asumption is violated (the segments are thicker than long for this short segment length). It seems the Mininec algorithm can deal with very short segment lengths as long as those segments belong to a single wire.
From this experiment it is clear that the Mininec algorithm systematically models a shorter wire than specified by the user due to ignoring the last half-segment at each wire end. I intend to experiment with an artificially elongated segment at the end of each wire to see if this systematic error can be eliminated.
J. C. Logan and J. W. Rockway. The new MININEC (version 3): A mini-numerical electromagnetic code. Technical Report NOSC TD 938, Naval Ocean Systems Center (NOSC), San Diego, California, September 1986. The original is ADA181682, a transcribed version is available on github (better readability).
Constantine A. Balanis. Antenna Theory – Analysis and Design. John Wiley & Sons, fourth edition, 2016.