......................................................................... from the Applied Computational Electromagnetics Society Newsletter, vol. 8, no. 3, pp. 8-10, November 1993. ......................................................................... INFORMATION ON THE HISTORY AND AVAILABILITY OF NEC-MOM CODES FOR PC's & UNIX (part I of II) Dick Adler ACES Software Exchange Committee (This short note was written to address the many requests ACES receives concerning the status of the NEC-MOM codes [NEC2 (ca 1981), NEC3 (ca 1985), and NEC4 (1993)]. The Software Exchange Committee is tasked to distribute information on the availability of all major CEM tools. The committee's Software Source Book (under development) will list all available CEM codes and will cite information on eligibility for purchasing restricted codes like NEC3 and NEC4.) NEC2 The original NEC2 was developed for the Navy by Lawrence Livermore Labs in 1981. Jerry Burke has been and still is the major contributor to the NEC-MOM family of codes. The code has always been a "card image/batch run" operation initially designed for CDC and later for VAX computers. It has been ported to many other machines by myriad individuals. Any existing copy of the code has a genealogy, but few users are aware of where their copy "has been" and how "up to date" its capabilities are. NEC2's identifying features are the Sommerfield-Norton ground interaction for wire structures above lossy ground and a numerical Green's function that provides an option for modifying a structure without repeating the complete solution. The documentation that exists FOR THE ORIGINAL VERSION OF THE CODE is in three parts: A theory manual (Vol. 1, Pt. I), a code manual (Vol I, Pt. II) containing a detailed description of the Fortran source code, and a user manual (Vol. 2, Pt. III) containing instructions on using the code with some sample input/outputs. Jerry Burke can sometimes provide some of these manuals or they can be obtained through NTIA as NOSC TD 116. The PC versions of NEC2 fall into two categories: 1. A code that "fits into" the DOS-limited 640 kB of memory space, and 2. A code that will compile and run (hopefully) under DOS-extended 16 and 32 bit Fortran 77 compilers. (The 32-bit versions of these compilers are usually derived from 32-bit UNIX Fortran 77 compilers. Typical companies providing these compilers and DOS extenders are Lahey, Microway, OTG/Salford, Watcom, Microsoft (power Book Fortran), etc. If a particular version of a modified NEC2 compiles and runs under one release of one version of these compilers, it does not mean it will still run under newer, updated releases. Sometimes the problems are traceable to the ability or tolerance of the compilers to accept non-77 statements that abound in NEC2.) IGUANA NOSC began development, in the early 1980's, of a software package called IGUANA (Interactive Graphics Utilities for Automated NEC Analysis). IGUANA was developed on an IBM-PC compatible platform with CGA graphics and with peripherals available at the time. It featured a heavily prompted input editor for creating NEC input data sets (card decks). It also allowed a serious user to input geometry data via an acoustic digitizer. The visualization of the input structure (wires only) was a useful feature. The output data could be plotted via a simple graphics package called GRAPS which allowed linear, log, polar, Smith Chart, and limited 2-D contour plots. IGUANA was intended to feed a mainframe-resident version of NEC2 and to receive ASCII output data for plotting. A collection of other utilities was included in IGUANA. As is often the case with software development, the limited funds available to NOSC did not provide for a bug-free version of the several IGUANA's that were developed. Nevertheless, users learned to live with the limitations and quirks of early IGUANA's. Version 4.2 was the most useable and formed the basis for NEEDS 1.0 (The Numerical Electromagnetics Engineering Design System) that would become the first PC-based NEC software package, in 1987. The current NEEDS 2.0 contains IGUANA 5.4. Version 6 of IGUANA was initiated several years ago, but was never debugged. NEEDS and NEC81 During the mid-80's, mainframe NEC users modified NEC2 to "fit" into the severe 640 kB limit of the PC-DOS environment. Compilers available at that time (notably Microsoft Fortran 3.31 and RM Fortran 2.4) allowed overlay structures and versions of NEC2 for PC's sprung up all over the planet. Some were limited to 75 unknowns (no overlay) and some boasted over 500 unknowns (by stripping out many of NEC2's memory-consuming features.) The version of NEC-PC in NEEDS 1.0 was somewhat limited in capability, but still provided many users with a useable miniature version of NEC2 on a PC. The most bug-free and successful porting of NEC2 to the PC was completed in 1989 by David J. Pinion, P.E., who named it NEC81. Dave, starting with an IBM mainframe version which had been overlaid to fit into a 360 kB "mainfrane" at NPS, managed to squeeze 90 unknowns (an array of 8100 elements) into memory, with a maximum limit of 300 unknowns, using the NEC2 out-of-core capability. (Out-of-core uses RAM disk or hard disk to store files when the in-core capability is exceeded. Notice the use of mainframe terms like "core" in place of memory.) Dave geneorously made version 2.2 of the code available to ACES for inclusion in NEEDS 2.0, the still-current version. ......................................................................... from the Applied Computational Electromagnetics Society Newsletter, vol. 8, no. 3, pp. 8-10, November 1993. ......................................................................... INFORMATION ON THE HISTORY AND AVAILABILITY OF NEC-MOM CODES FOR PC's & UNIX (part II of II) Dick Adler ACES Software Exchange Committee DOS-EXTENDED NEC2's During the mid 1980's (before the 80386 arrived), IBM introduced their ill-fated PC/RT which used a 32 bit RISC processor, running under AIX, a version of UNIX. The PC/RT was aimed at the frustrated PC user that refused to take the UNIX "cold shower". It offered a "DOS" capability (80286) under the UNIX banner. Theoretically, one could port a mainframe NEC to the RT, compile, and link it under the 32-bit RT Fortran, run NEC jobs under UNIX, while at the same time, under the DOS umbrella, crank out input datasets and process outputs. It failed miserably. The Fortran was a version that Bell Labs "threw in the garbage can" because it was too buggy to fix. Someone forked it out of the trash and "repaired" it, but the repairs could not fix the slow, inaccurate performance. And the RT's DOS operation was slower than the original 6 MHz IBM-PC/AT; the DOS operations were emulated under UNIX and screen writes were done at about 300 baud, and looked like a Selectric typewriter! Other attempts to juice-up AT-based Fortran codes involved special 68000-based co-processor add-in cards. The Definicon 20 MHz board was popular, but its Achilles heel was an ill-fated compiler that had the same roots as the IBM RT compiler. Several other early 32-bit extended DOS compilers suffered from the same origins. (Their common ancestry was discovered when the same identical error numbers and error messages arose with every new compiler we tried!) The first successful PC Fortran 77 32-bit compiler that was robust enough to handle NEC was the Microway NDP Fortran v. 1.4.3. Unfortunately, the compiler was modified and upgraded so often that very few people could keep up with the "improvements". As the version numbers increased, the solution times of NEC problems also increased. Meanwhile, Microsoft was never able to produce a true 32-bit compiler. Rumour has it that their early 32-bit compiler staff abandoned ship and went to Absoft and produced an excellent Macintosh 32-bit Fortran compiler, which Jerry Burke uses very successfully on all versions of NEC. During the last 3-4 years, a flood of 32-bit compilers has washed over the PC community. There does not seem to be a comprehensive list of each version with documented highlights of successes and failures. The ACES Newsletter is a logical home for such an effort. Perhaps this short note will spark interest in sharing information among the NEC-PC community, via the Newsletter. The various 32-bit compilers all support the xxx87 Intel math co-processor which features a double-precision mantissa. The speedy Weitek math coprocessor has been used on NEC but ultimately fails in high-precision solutions due to its limited single-precision mantissa. Most Weitek chip versions have not supported DOUBLE PRECISION computations. Use of single precision computations with the xxx387 coprocessor is not successful. The NEC code was designed for a 64-bit CDC system, so VAX and IBM 32-bit systems demand double precision versions of the source code, or the use of an autodouble option at compile time. NEC81 judiciously uses double precision based on a trial and error elimination of unneeded double precision calls, a technique that allowed the maximum number of unknowns in the restricted DOS contiguous memory space. Such careful use of DP is not necessary in DOS-extended operation. The penalty for brute-force DP use is only about 15% increase in run-time for most current 32-bit compilers. 32-BIT NEC2's: A MACINTOSH version of NEC2 was produced by Jerry Burke then was converted to a PC version via the Microway compiler by Tom Wallace of Arco Power Technology Inc. of Washington, D.C., and was increased to 2000 or more unknowns and was called NEC2S and NEC2D. It has not been extensively tested by the ACES Software Exchange Committee and as such is not considered a supported code. It will be sent to requestors with no prediction of performance capability, but any and all experiences with its use that are reported will be shared via the [ACES] Newsletter. These reports will be used to help elevate the code to placement on ACES SOFTWARE LIST for distribution to anyone. NEC2S and NEC2D for a UNIX SUN4 workstation has been provided to ACES by Per Hj. Lehne of Norwegian Telcom Research for use on a UNIX SUN SPARC4 workstation. The same conditions of support are in existance as for the ARCO PC NEC2. The origin of NEC2/UNIX is the ARCO NEC2D. NEC2S/MAC and NEC2D/MAC for the Macintosh, originated by Jerry Burke, are available from Jerry Burke under the same conditions. MININEC CODES AND SUPPORT SOFTWARE The NOSC public domain version of MININEC 3.13 is distributed via ACES as part of the NEEDS 2.0 package. It is interactive but has no built-in structure viewer nor output plotting. Several amateur radio-targeted third-party versions of MININEC have been developed by computer-savvy amateurs and are for sale. The two most popular MININEC derivatives are MN by Brian Beezley of Vista, CA and ELNEC by Roy Lewallen of Beaverton, OR. Both have excellent structure viewers and pattern plotters. Both can superimpose wire currents (including phase) on the structure views and ELNEC supports a one-plane radiation pattern overlaid on the structure view. ELNEC's data input scheme is easy to use for the beginner and offers limited geometry manipulation and duplication features, including a tapering option for segments. MN provides near fields; ELNEC does not. NEC3 AND NEC4 The remaining NEC codes in the preface paragraph, NEC3 (allows buried wires) and NEC4 (improved accuracy for stepped-radius wires and electrically-small segments, adds end caps and insulated wires, smart input card-reader, catenary-shaped wires, and improved error detection) are still Military Critical technology. That status is under question and may hopefully disappear eventually. .........................................................................