Antenna Scatterers Analysis Program

Quick Reference

User's Quick Reference - Most Frequent Problems - Bugs

(Well, It's supposed to be quick, but it keeps getting longer)

By Ray L. Cross

Last Text Modification Saturday, 21 August 2004.

To analyze an antenna problem there are several steps.

  1. Create the problem to be analyzed - (i.e. sketch on paper - see Examples )
  2. Translate problem into the input file format - (by using an ASCII editor to create the input file in the format listed in the User's Manual ; see Examples )
  3. Double Check List of Most Common Problems (this file - see below)
  4. Run the Input File Through ASAP - (program available in Download area)
  5. Output File is Analyzed - (directly or post processed)

An example input file for quick reference (new input format).

0 0 0 / Notes may be placed
1 0 0 / after each of the input wire
2 0 0 / geometry points when GXYZ is used by using
3 0 0 / slashes to delineate end of the fortran READ.
4 0 0 / Useful for pre-processor placed notes.
1 2  /Notes can also be placed
2 3  /after the node connection
3 4  /points.
4 5

Another example input file for quick reference (original input format).

Potential Pitfalls, Problems, and Bugs

The users manual for ASAP should be read very carefully to avoid some pitfalls which are not obvious. Some of these potential problems are:

* ALL CAPITAL LETTERS must be used in the input file as the program's character recognition only includes this set.

* Comment lines must start with the letter 'C' (capital) in the first column and MUST be followed by at least 4 blanks or an error message will be generated when ASAP reads the file. The COMMENT CARD is the only type of input card that position in the data block is critical. This (these) card(s) must be placed at the beginning of a data block. A data block is a series of related data cards. A "CHANGE" or "END" card sets off a block from other blocks.

* There is no built in geometry generator. All specific x,y,z points for the wire structure and the connection list must be provided by the user. There can be only one input of any given 3-dimentional point in space. This is unlike some other antenna modeling programs where endpoints of wire segments are joined by making their coordinates equal. In ASAP all points are distinct. Points are joined through explicitly giving the list of points to be joined. Therefore caution must be exercised when creating multiple segments (such as when using a "preprocessor" program) that the endpoints to be joined are separated by an appropriate distance. An example preprocessor program is available in the download area. It is also possible to use spreadsheet programs such as "Excel" or "Lotus 123" to generate input points as shown in the examples .

* A maximum of four segments can meet at any given node,

* An isolated wire must contain at least two segments and three nodes.

* The order in which points are jointed together to form segments using DESCRIPTION or DNODE is important near a FEED. If you have for example 3 nodes 1,2,3; with 2 as the feeding point, 1 is connected to 2 and 2 to 3, you cannot write the DESC-matrix like this: DESC(1-2/3-2) or DESC(2-1/2-3). This produces a current-matrix where all elements are zero. So it seems that the position of the node number in the DESC-matrix fixes the direction of the current. Both segments at the feeding point must have the same direction like (1-2/2-3) or (3-2/2-1). The use of a GENERATOR apparently doesn't have this problem (see bug area below for an email about this).

* The use of a groundplane will double the amount of memory usage thereby taking away from the available total (i.e. a structure defined with 80 segments will actually be 160 segments if the groundplane option is used).

* For a perfectly conducting ground, the code generates an image of the structure reflected in the ground surface. The image is exactly equivalent to a perfectly conducting ground and results in solution accuracy comparable to that for a free-space model. Structures may be close to the ground or contacting it in the perfect conducting case. The height should be at least several times the radius for the thin-wire approximation to be valid.

* All points which contact the groundplane (if any exist) must be the first points listed in the geometry descriptions so that these points become the lowest numbered nodes. When giving the connection list in either DESCRIPTION or DNODE the ground plane node must be listed first in the pair. This is easy to remember as long as the lowest numbered nodes are always specified in the connection pair first. This always works since ground plane nodes must be the lowest numbered nodes. (Note: when using some form of simple pre-processor to generate points, the preproccesor should be set to skip the N points that will be manually entered that will touch the groundplane so that the point connection description will be correct.)

* Ground plane nodes cannot be directly connected to each other as they are already on a conducting surface. Nodes on the ground plane can only be connected to each other through at least one other point not on the ground plane. Note: Some structures with multiple connections to the ground plane may be numerically unstable especially if the ground plane is not perfectly conducting.

* The finitely conducting ground is modeled by an image modified by the Fresnel plane-wave reflection coefficients. This method is fast but of limited accuracy and should not be used for structures close to the ground. The reflection coefficient approximation for the near fields can yield reasonable accuracy if the structure is at least several tenths of a wavelength above the ground. It should not be used for structures having a large horizontal extent over the ground such as some traveling-wave antennas.

* Generally speaking it is a bad idea to have connections to a Ground plane with less than perfect conductivity. A ground stake in or connections to lossy ground (this includes the "GOOD" ground option) cannot be accurately modeled in ASAP since there is presently no provision to compute current interactions across the interface. The program will run these kinds of geometries but the answers will be suspect. Large deviations in impedance (including negative real parts) and erroneous efficiencies can result. (see example in bug file below)

* Height of a horizontal wire above the groundplane (if used) must be greater than the wire diameter plus insulation.

* Wire radius < .01 wavelength for thin wire assumption

* longest segment < .25 wavelength

* [longest segment]/[shortest segment] < 100

* total wire length must be > 30 wire diameters; best results may be obtained when the shortest segment is > 30 times the wire diameter

* acute wire bend angles > 30 degrees

* wire conductivity >> ambient medium conductivity

* Dielectric layers placed on wires must be electrically thin.

* Power gain reported by the program is linear (not dB) power gain relative to an isotropic source (not a dipole source). (A bug which did not correct the power gain for the presence of a ground plane has been fixed in version 3.0.)

* The phi and theta directions are not those of the normal mathematical spherical coordinate systems. Phi is the angle measured from the x-axis in the x-y plane with the positive angle toward the y-axis. Theta is the angle measured from the z-axis; it is positive in the direction of the phi angle. The x-y plane is the plane in which the ground plane will exist if it is used. The z axis is the "height" direction above the ground plane (if used).

* The CHANGE card when used only retains the structure (wire size, geometry, and connection list) and the frequency. The number for the calculation INTERVAL is reset to the default value. Requesting different outputs may cause recalculation of the whole problem so it is best to request all possible outputs in one block if possible.

* A CHANGE card should generally not be used to modify the geometry or node connections. It is best to use a END card (which sets up the problem from scratch) instead. This is especially true if there are points touching the ground plane. There are some exceptions to this rule (such as the example shown in the original users manual where only the geometry points were moved (the connections were left the same) and there was no ground plane.

* If a closed form solution (i.e. INTE(0) ) causes numerical overflow, try a large number of intervals instead. Remember that INTERVAL is reset to the default value for each new block (such as after a CHANGE card).

* The STOP card at the end of the data input should be followed by a blank line to insure that the ASAP input routines know that the last card has been read.

* There are some "improvements" in the way that geometry points and connection descriptions can be made that are not in the original manual. The original input format used the GEOM and DESCR cards. The modifications made to the program allow input using GXYZ and DNODE cards as well. Each list should end with four capital 'X' i.e. XXXX to signal the end of the data input.

* Starting with version 3.2 there are also some improvements in the way that geometry points can be entered for NEAR field points. The original NEAR keyword in the OUTPUT card was limited to the number of points that could be placed on one line. The new NEAR keyword list is limited only by memory.

* Note that the letter extensions U, M, or K to indicate engineering multipliers will not work with the new list inputs for GXZY or NEAR

* It is recomended that the numerical stability for a problem be checked by making small changes to geometry and or INTERVAL and rerunning problem. Small changes on input should (generally) only result in small changes in the output (exceptions: problems with lots of closely spaced wires and/or lots of "nonradiating" circulating "reactive" currents). It may be necessary to use a larger value of INTE , when wires are closely spaced in terms of wavelength.

* A bug in the efficiency calculation which caused efficiencies greater than 100 percent has been fixed in version 3.0 but has not been thoroughly checked out. Efficiency calculations do not appear to include the effects of lossy dielectric or lossy exterior media. Efficiency calculations will still be wrong for geometries (such as wire connections to lossy ground) if the mathematical routines are unable to deal properly with the problem.

* For Version 3.1 and earlier: Because the original program was only designed for 50 or 60 segments, the printout fields for the node and segment numbers were only designed for 2 digits. When the problem has more than 99 segments the field will overflow and will - by design - print two asterisks in that field. Design the problem so that if it is necessary to find a particular node or segment current in the printout that the node/segment in question is early in the geometry description so that its number is less than 100. This problem has been fixed in version 3.2 and later. These output fields now support up to 6 digits.

* The output is formatted for wide line printers. It will be necessary to use a text editor that allows long lines (such as the "freeware" Professional File Editor) that don't wrap or the output could be confusing. A web-browser actually works well as an output viewer and can also be used to copy and paste into other applications. ("WRITE" for MS Windows will also work if the page setup is changed to landscape, the text is selected, and the font is changed to a small enough monospace font such as 'Courier' 7.) Whether the printed "PLOT" output is at the proper aspect ratio will depend on what type of font is used in the file editor (or printer).

* The program was written to use first column carriage controls for control of line printers. Depending on the compiler used these will either appear as plain text or as a control characters.

Corrected BUGS

AUGUST 2004: Latest version is Version 3.2 which is mostly cosmetic bug fixes but it does support NEAR field point lists.

This is a new Keyword that works like GXYZ or DNODE where you give a list of points then end the list with XXXX

0.0  0.1  0.2
1.3   5.3  4.0
2.0   3.4   5.9

Due to a new compiler and the way it handles input output filenames I changed the input/output filename for Version 3.2 so that the input filename is always in.txt and the output filename is always out.txt.

Version 3.2 fixes other things like the segment and node number printout formats to handle numbers up to 6 digits. Also changed the fixed format floating point print format in several locations (such as nearfield printout) into an exponential type so that small values don't disappear to zero. For the double precision version I fixed various double precision warnings and error that cause problems with some compilers.

Version 3.2 does not have any new improvements on the math core.

I got this note from Ed Wheeler in March 1998 which prompted release of version 3.1


I was just trying out the ASAP source for use with dielectric 
coated dipoles and received strange results(dipole impedance was
capacitive below first resonance frequency and also above it.  
Without the dielectric shell everything seems fine.
What I found was that the EP2 variable is being
given a complex part due to the SIG2 variable being intialized to
-1. rather than 0.  Changing this to zero seems to take care of
things.  I have the old report by Richmond to NASA Langley in which
all this stuff was read from cards. This means anything not
initialized would have been set to zero (in old compilers)...


This problem only occured if the dielectric was specified but the conductivity was left at default. If both the dielectric constant and conductivity were specified, the program worked correctly. I have fixed this problem in the source code. I have made some corrections to the ASAP source code that may also fix a similar problem with the exterior medium.

In order to fix this problem I also chose to set SIG2 to zero. I also set SIG3 and TD2 to zero. However, in order to preserve the logic of the program input it was necessary to change some IF statements as well.

Other BUGS

Order of description nodes important near feed points.

Subject: ASAP
Date: Thu, 13 Apr 2000 18:34:15 +0200
From: G--- F--- < ---@---- >
Organization: Institut für Weltraumforschung, Graz

Dear Ray,

while calculating some antennas with ASAP I found out, that the position of the numbers of the nodes in the DESC-matrix is crucial for the two segments at the feeding point. If you have for example 3 nodes 1,2,3; 2 is the feeding point, 1 is connected to 2 and 2 to 3, you cannot write the DESC-matrix like this: DESC(1-2/3-2) or DESC(2-1/2-3). This produces a current-matrix where all elements are zero. So it seems to me that the position of the node number in the DESC-matrix fixes the direction of the current. Both segments at the feeding point must have the same direction like (1-2/2-3) or (3-2/2-1).

Another thing is that I found out that the ASAP-calculations are more reliable if the shortest segment is greater than 30 times the wire diameter and not just the total wire length being greater than that.

You might be interested in the fact that ASAP was used by the University of Bochum in Germany to simulate the antenna-system of the spacecraft Cassini. At the moment I use ASAP for the simulation of ground based radio-antennas for radio-astronomy.

Thanks for putting ASAP to the Internet for public use

G---- F-----
Austrian Academy of Science

Subject: Re: ASAP
Date: Fri, 14 Apr 2000 17:23:21 -0700
From: "Ray L. Cross" < >
To: G--- F----< --@o-->

Dear G---, Thank you for the information. I am always happy to hear that someone is making practical use of the code.
When my next surge of activity for ASAP hits me I will update the documentation to warn about the node directions at current feed points.
I do have a question: Do you know if the same problem exists for both the "FEED" and "GENERATOR" cards?
Thanks again for letting me know about your use of ASAP.


Subject: Re:ASAP
Date: Tue, 18 Apr 2000 08:55:32 +0200
From: G--- F- < --@-- >
Organization: Institut für Weltraumforschung, Graz
To: "Ray L. Cross" < >

Dear Ray,

until now I have just worked with the FEED card, but after getting your email I also tested it with the GENERATOR card and this problem did not appear. I tested it with a simple dipole, and all possible directions of the GENERATOR segment and the two neighbouring segments gained the same results. Besides I realized that it doesn't seem to be possible to get a symmetric current distribution of a center-fed dipole by using the GENERATOR card, which is of course possible with a Feeding Point in the center of the dipole.

.... I am just calculating a complicated symmetric logarithmic periodic antenna and I only get a symmetric current distribution when the shortest segment is greater than 30 times the wire diameter and the wires are not to close to each other and when I use INTE=0.

Bye, G----

Improvements Could be Made in Coupling Symmetry

Because of my extreme range of interests no single interest seems to get much attention. Someday (...someday) I may also look into implementing some improvements. Some of these improvements would include fixing not only some of the "bugs" but also improving some of the underlying algorithms. For example there are improvements suggested by the following:

Richmond, Wang, and Pathak, "New Expressions for Mutual Impedance of Nonplanar-Skew Sinusoidal Monopoles", IEEE Transaction on Antenna and Propagation, VOL. 38 NO. 2 February 1990 pp 275-276.


Tilston and Balmain, "On the Suppression of Asymmetric Artifacts Arising in an Implementation of the Thin-Wire Method of Moments", IEEE Transaction on Antenna and Propagation, VOL. 38 NO. 2 February 1990 pp 281-285.


Tilston and Balmain, "A Multiradius, Reciprocal Implementation of the Thin-Wire Moment Method", IEEE Transaction on Antenna and Propagation, VOL. 38 NO. 10 October 1990 pp 1636-1644

These articles suggest improvements to the original Richmond formulation to improve speed and accuracy. Most of the improvement arises from elimination of certain asymetries between the coupled elements.

Unfortunately I suspect that it will be sometime before I pursue this. I mention it for completeness sake in case someone else would like to pursue it. I would be interested in any such improvements anyone makes.

Ray L. Cross, asapemail.gif 1.25 K , WK0O,
and sometimes Webpage Curator

Connections to Lossy Ground Not Supported in the Mathematical Model

It was recently called to my attention that the program has a problem with connections to a lossy groundplane. This is because there is no mathematical support for currents crossing from the "space" interface into the ground. The lossy ground support uses modified Fresnel reflection coefficients to model the effects of a lossy ground on the radiation field of a structure suspended over lossy ground.

Some day in my spare time (Ha!) I will look into this more. I did check the NEC manual and it has the same "problem." The SOMNEC routines in NEC do not solve this issue.

Here is the email exchange that reminded me of this issue. (I was sort of aware of it before but forgot). The ASAP manuals didn't specifically warn about this and I have now modified them so that they do.

Ray L. Cross, 4 July 2001

Bob **** wrote:
 Any idea what I am doing wrong here?
 I am trying to model a vertical antenna over a
 good ground plane, fed about 1/10 of a meter above
 the g.p; I have network analyzer measurements on such
 a structure, so I know roughly what to expect. I got
 Asap working for a simple dipole, and the results
 make sense, but for my antenna, I get questionable
 results: *negative* real part of the feed-point
 impedance, and results that do not come close to the
 network analyzer measurements!
 Here is the input file:
C       Vertical ...
0 0 0
0 0 0.1
0 0 1.5
0 0 2.5
0 0 3.5
1 2
2 3
3 4
4 5
If I understand this correctly, by placing the first
node at a coordinate of (x,y,z)=(0,0,0) I am telling
the program that node 1 is connected to the ground plane(?)



    2 <--- feed


any comments would be appreciated -- this looks like just
what I need, (if i can get it to work :-))
bob *** 

             [Fwd: Re: ASAP question]
             Tue, 03 Jul 2001 08:19:49 -0500
             Ray Cross 
             AT&T WorldNet Service
             Bob --- e <***>


I got to it a little sooner than I expected.  I have checked your input
file by running it here.  I get nonsense answers for the low frequency
end also.  There is nothing wrong with your input file; the problem is
in ASAP and its treatment of structures that are very small compared to
a wavelength especially over lossy ground.  

Unfortunately I have discovered in my own modeling that structures that
are very small compared to a wavelength operating over lossy ground will
result in ASAP giving some very strange answers.  The reactance part of
the answer should get a lot better if you use a "PERFECT" ground instead
of just "GOOD".  Be advised that the "good" ground is  .02 mhos/meter
and the relative dielectric constant of 30 which is not very good at all
if your measurements are being made with any kind of metallic ground
plane.  For reference copper is around 50 megamhos/meter.

I have found that for small wavelength antennas that the best accuracy
is achieved by using the double precision version, use INTEG(0), and
avoid the use of lossy ground.  Even then the resistive portion can be

I can always tell when the answer is acting up by looking at both the
efficiency and the resistive portion.  If those two numbers are
out-of-whack then I know bad things are happening.  Sometimes the
efficiency can be wrong and still have a fairly good answer.

I really need to sit down some day and look into this whole area more. 
I especially need to see if this issue has been "fixed" in NEC or
whether this is intrinsic to the core numerical algorithms.  (If you
note who the thesis advisor for ASAP is you will see that he was one of
the people involved with NEC; a lot of the math is the same but the
implementation may be a little different).

If you happen to get a chance to run the same structure on NEC I would
be interested.  I am going to be busy the next several days.

By running the following file I got the answers below:

C       Vertical ...
0 0 0
0 0 0.1
0 0 1.5
0 0 2.5
0 0 3.5
1 2
2 3
3 4
4 5

FREQ(2)          THE INPUT IMPEDANCE AT NODE   2 IS       .2978205 + J 

FREQ(3)         THE INPUT IMPEDANCE AT NODE   2 IS       .5944734 + J 

FREQ(5)          THE INPUT IMPEDANCE AT NODE   2 IS      1.5322534 + J 

FREQ(20)          THE INPUT IMPEDANCE AT NODE   2 IS     32.4568693 +
J    -26.0813664

The efficiency was large and negative until 20 MHz was reached


             [Fwd: [Fwd: Re: ASAP question]]
             Wed, 04 Jul 2001 18:22:55 -0500
             Ray Cross 
             AT&T WorldNet Service


After thinking about this problem some more and digging through the
references I realized that I had run into this problem before.  The math
in the program doesn't really support connections to lossy ground
planes.  Even NEC doesn't do this.  This is because... well... to be
perfectly blunt it is difficult to do .  What both NEC and ASAP do is to
use Fresnel reflection coefficients to get far fields from wire
structures suspended above lossy earth.  However there is no support for
currents across the "space" to earth interface.  Adding them I would
judge to be quite tricky since the Fresnel stuff is really an
approximation in the near field  (a quite gross one if the wires are
close to the ground).

NEC has additional routines (using SOMNEC) to get Sommerfeld/Norton
solutions for near fields but even that does nothing for this problem. 
The NEC manual indicates that it will not support a "ground stake" in
lossy ground and suggests using a suspended wire ground plane above the
lossy ground.

I fear that you are not going to be able to solve your problem easily
with either ASAP or NEC.  

However it may be possible to build a wire grid loaded with impedances
to simulate a lossy ground plane.  Such a solution should be "exact" as
any wire griding method since electromagnetic theory shows that any
material body can be replaced with equivalent surface currents.
Unfortunately I don't have time to investigate this right now but I
would be interested in any results.  



Goto Full User's Manual (from Thesis)

Goto Systems Manual (Theory of Operation)

Goto Examples page

Return to ASAP Homepage

Note that the whole text portion of the ASAP website including Users Manual, System Manual and other items (except for the executables and source) code is now available in one zip file from the download page. When it is unzipped keep the directory structure the same for the links to work. The executables and source code should be downloaded separately from the download page.

Last modified on: 3 Nov 2007