(doc/xnec2.html)
Version 3.6-beta: I migrated Xnec2c to the latest GTK+-3.22 toolkit to bring it
up to date. A lot of changes were needed to both the GUI and parts of the
Xnec2c source code, mainly the use of GTK3's GUI Builder for creating the User
Interface and the revised drawing model of GDK for presenting the Graphics
displays. A new autogen.sh script has also been incorporated in the source
package and internationalization has been migrated to the GNU GetText system.
Because Xnec2c is very complicated and thorough testing is difficult, I am
releasing this version as a beta.
Version 3.6.1-beta: After a request by Don Walters W9DKI I modified the
xnec2c.glade file to reduce the default size of the drawing areas as they would
not fit in displays with reduced resolution. I also removed some legacy code,
left over from the migration of xnec2c to GTK3, which was producing error
messages from GTK3 during the dragging of structure or radiation pattern
displays. And I modified the Makefile.am file to get "make install" to install
program files and documentation to the right places.
Version 3.7-beta: After some feature requests by users of xnec2c, I implemented
a number of changes to xnec2c so that it can save the state of the GUI at exit
and restore it on start up. To this effect xnec2c now produces a configuration
file xnec2c.config in the user's ~/.config directory. In this file xnec2c saves
the state (position, size, active toggle buttons, projection parameters for
structure and radiation pattern displays, the state of the frequency loop etc)
of the main windows, e.g. structure, radiation pattern, frequency plots and
NEC2 editor.
I have also added keyboard accelerators for a number of buttons and menu items,
more commonly used in the main windows of xnec2c, and a new "Zo" NEC2 "card" to
specify transmission line impedance.
Version 3.7.1-beta: Fixed a reported bug that prevented wire diameter entries
less than 0.01 in the Helix (GH) card editor. This was due to specifying a
minimum value of 0.01 in the xnec2c.glade file.
Version 3.8-beta: I edited some of the code so that when a NEC2 file is saved,
the Center x and y offsets (the change of position) of the structure and
radiation pattern are not changed. I also arranged for the offset values to be
saved in ~/.config/xnec2c.config when closing xnec2c, and to be read back and
restored when starting.
Version 3.9-beta: I have arranged for some user actions to be "nested", mainly
regarding the saving of NEC2 editor data followed by the opening of another
file or starting a new project. Some such functionality already existed in
previous versions but it is now more comprehensive.
Another useful change is fixing a bug in the original NEC2 code for producing a
helix (as specified by the GH "card"). This bug resulted a division by zero if
the helix length was specified as zero, possibly intended to produce a spiral.
The GH card can now be used to produce both a helix or a spiral with no
floating point exceptions.
Version 3.9: Since I have not received any bug reports for some time after
releasing version 3.9-b, and having fixed a bug that resulted in a
gtk_widget_destroy() command to be passed on an invalid widget pointer, I am
releasing xnec2c as version 3.9.
Version 4.0: I have changed the code that saves the state of the
View-Polarization menu items, as it would only correctly save the state of
these items in the Main (structure) window. I also changed the code that
handles the removal of "card" entries in the NEC2 editor, as it was causing
crashes of xnec2c under some user action combinations.
Version 4.0: I corrected some mistakes in the GUI interface code, which handles
the creation of windows and dialogs from the glade UI description file. These
mistakes were such that they did not effect the operation of xnec2c but in any
case I fixed them for the sake of correct programming. Also changed the wire
designer dialog to include the Tapered Wire selection check-button in the
dialog's frame and the relevant code to deal with this better.
Version 4.1: I corrected some mistakes in the GUI interface code, which handles
the creation of windows and dialogs from the glade UI description file. These
mistakes were such that they did not effect the operation of xnec2c but in any
case I fixed them for the sake of correct programming. Also changed the wire
designer dialog to include the Tapered Wire selection check-button in the
dialog's frame and the relevant code to deal with this better.
Version 4.1.1: I made a small change to the Radiation Pattern code to allow the
drawing of both horizontal an vertical "cuts" in the radiation pattern, in the
zx and zy vertical planes and the xy horizontal plane. Also changed the
accelerator keys for the Add, Remove, Clear, Save As, Save and Revert buttons
to be Modified by the Control button as the original accelerator keys were
being activated when writing in the Comments Treeview.
Version 4.1.2: Changed the installation commands in Makefile.am so that all the
relevant files (desktop file, application pixmap, configuration file,
executable binary etc) are installed under any location specified to the
configure script by the --prefix= option. Also modified the program so that on
first start up after installation, the application will create its working
directory by copying files from the relevant directories under the installation
prefix.
Version 4.1.3: Arranged the pipe reading function for the parent process to
re-read from the child processes if not all data is transferred at the first
read(). In this case xnec2c was crushing with "Resource temporarily
unavailable" error message.
Version 4.1.4: Added the stdint.h include file to common.h to fix a compilation
error reported by Nick G3VNC.
Version 4.1.5: After an inquiry by Eric Wheeler KJ7LNW regarding the use of the
GH card to create spirals, I found a bug that caused the GH editor to delete
the GH entry in NEC2 Editor's treeview. I also found a bug that caused the
number of turns of a spiral to be rounded to the nearest integer. Both bugs
have been fixed in this version.
pkglint -r --network --only "migrate"
As a side-effect of migrating the homepages, pkglint also fixed a few
indentations in unrelated lines. These and the new homepages have been
checked manually.
-----------------------------
(from doc/xnec2c.html)
Version 3.5.1:
After a request by FanJun BH1SCW, I replaced the original
makeshift desktop icon with one provided by Serge ON4AA.
-----------------------------
(from doc/xnec2c.html)
Version 3.5:
I modified the NEC2 Editor code so that when a Geometry or
Command editor window is opened, activating Apply or OK will
save data in the editor window to the treeview, even if the
default data is not edited.
I modified the NEC2 Editor code so that if a treeview row is
removed while the relevant editor window is open, then
activating Apply or OK will not attempt to save data to the
treeview, since this will cause an illegal memory access and
will crash xnec2c.
Fixed a bug in the Helix editor which caused incorrect
calculation of the segment length as a percentage of
wavelength or of the number of segments/turn that correspond
to a given segment length as a percentage of wavelength.
Existing SHA1 digests verified, all found to be the same on the
machine holding the existing distfiles (morden). Existing SHA1
digests retained for now as an audit trail.
-----------------
Version 3.4:
I fixed a bug in the code that implements the modified GS (scaling)
card. In NEC2 the GS card scales all of the structure, but in Xnec2c I
modified the code so that it is possible to specify a range of tag
numbers to apply scaling to only. When a GS card follows a GX card,
selective scaling doesn't work correctly because a symmetric structure
is created. If you are using a GS card, it may be better to avoid
specifying a tag number range, just in case the bug fix is not
complete.
(from doc/xnec2c.html)
-----------------
Version 3.3:
I fixed a bug that was in the code that reads the commands
from the NEC2 input file, where xnec2c would crash with a
segmentation fault when the FR card was after the RP
card. Also modified the Strtod() function to avoid freeing the
end pointer before it was used, causing problems.
----------------
Version 3.2:
I made some changes to the Strlcat() function and its usage in
the xnec2c code, to improve safe handling of string
concatenation operations. Hopefully this has not broken the
handling of various strings in xnec2c! ;-)
Version 3.1:
I have made several changes to the code that renders wire frame
drawings and displays some data, like the projection parameters
(azimuth and elevation of the structure and the radiation pattern) and
gain values. This has resulted in a faster and smoother animation of
these drawings and reduced workload on the processor during dragging
of these images. I have also reduced the default minimum size of
xnec2c's windows, as I had reports that they would not fit in the
displays of some laptops or monitors, with resolutions on the lower
side.
------------------------------
Version 2.4:
I submitted xnec2c (and nec2c) for scanning to the Coverity source code
audit website, which produced a list of no less than 57 issues to be
fixed! Most of them were not bugs that affected calculations but possibly
two, both in the Somnec code, one in function rom1() and one in gshank()
likely could have caused errors in the relevant
calculations. Unfortunately the Fortran source of Somnec (as well as that
of the NEC2) is very difficult to read so I cannot say with certainty if
this was so.
Version 2.5:
After a bug report by Jean Collin, I made some changes to the input file
parser code in input.c, to properly identify tabs in the input file.
Version 2.6:
After a bug report by Lucjan SQ9VPA, I changed the case of the signal
handler that deals with SIGCHLD so that it doesn't cause xnec2c to exit
when the SIGCHLD signal does not originate from child processes created
by xnec2c. It appears that in some Linux installations a SIGCHLD signal
is sent to xnec2c even if it is not running forked, e.g. the -j option is
not used in the command line.
Version 2.7:
After a bug report by Tim, WJ5Q, I fixed a bug that was preventing the
creation of an LD card of type 5 (LDTYP=5) when wire conductivity (S/m)
was specified in the GW card (Wire) editor. The same bug was present in
the GH (Helix) card editor and it was also fixed. I added code so that
the wire conductivity for GW, GA and GH cards can be read from the
relevant LD card and shown in the Conductivity (S/m) spin button.
After all these changes I checked the xnec2c source code using the
Coverity Scan service and I fixed an out-of-bounds read error that was
reported by the scanner, in the plot_freqdat.c file.
Version 2.8:
Fixed a bug in the GN card editor function which caused xnec2c to save
the GN card parameters in the .nec antenna description file without
clearing the number of radials to zero. This resulted in the GN card
editor window to open with confusing and incorrect defaults for the
radial screen, when the Reflection Coefficient Approximation method was
selected for specifying ground parameters.
Also fixed some bugs (missing variable initializations) in the Ground
Parameters calculation functions which resulted in incorrect Radiation
Pattern calculations. This would happen if a .nec file, with Perfect
Ground (iperf = 1) specified in the GN card, was opened after a .nec
file, with a Radial Ground Screen specified in the GN card, was
processed.
Version 2.9:
After a request by the Debian maintainer of xnec2c, I added a rudimentary
man page he sent me and corrected some spelling errors (arbitary to
arbitrary).
Version 3.0:
I have modified the NEC2 file parser so that it can read the file with
both the '.' and ',' as decimal point characters. This is necessary to
make xnec2c compatible with different locales. I also fixed a resource
(memory) leak, reported by valgrind, in the xyz axes drawing routine.
xnec2c is a GTK+ graphical interactive version of nec2c. It
incorporates the nec2c core which it uses for reading input files
and calculating output data, but it does not need and indeed does
not produce an output file by default. Since xnec2c incorporates
the nec2c core, it has access to all internal buffers, including
structure data, frequency-related data (structure currents, input
impedance, gain etc) and radiation pattern data (for the far field
and near field). It therefore has the ability to graphically display
user-requested data directly, as the frequency loop progresses or
after input from the user. Graphs of frequency-related data and
the current or charge distribution evolve as the frequency loop
progresses, and radiation patterns (far and near field) are
sequentially drawn for each frequency step. A new frequency can be
entered by the user from spin buttons in the main or radiation
pattern windows or by clicking on the graphs of frequency-related
data. New output data are then computed and displayed in text and
graphical form.