December 28, 2003
Poisson Superfish Update Announcement
From: "James H. Billen"
Date: Sun, 28 Dec 2003 16:22:14 -0700
To: Poisson Superfish Users
From: James H. Billen
Holiday greetings and best wishes for a prosperous 2004.
Poisson Superfish Version 7.09 is now available on the
LAACG FTP servers.
The last announcement was April 4, 2003 for Version 7.00.
Poisson Superfish codes now use Winteracter version 5.10e
and Lahey/Fujistu Fortran 95 version 5.7d.
Automesh and Very Large Meshes
We fixed a serious bug in Automesh that would affect any
problem with a very large number of mesh points. The bug
has been in all previous versions of Poisson Superfish, but
only became apparent when people began to take advantage
of modern powerful computers to run larger meshes than
ever attempted in the past. The trouble was in the part
of Automesh that was formerly a separate program known
as "Lattice." When assigning the interior points of the mesh
the code included some integer arithmetic that multiplied
together four numbers that could be as large as the quantity
(Kmax*Lmax)2, where Kmax and Lmax are the number
of mesh intervals in the X and Y directions. For a mesh with
equal intervals in both directions, this intermediate product
would exceed the largest positive 4-byte integer if both logical
coordinates K and L exceeded 215. Oblong meshes were
not as troublesome. For example, a problem with Kmax =
462 and Lmax = 100 would not cause a problem. The
symptoms of this bug were varied. The initial assignments
of the interior points could result in a severely distorted mesh,
but the successive over-relaxation optimization procedure,
which tries to equalize triangle areas, might correct any
problems. In some cases, the problems could be so severe
that Automesh would issue an error message about
overlapping or near-zero-area triangles. Problems were
less likely to occur if the geometry contained line regions.
The worst situation appears to have been large expanses
that lacked both line regions and features described by
Poisson and Pandira Solutions for a Series of Current Multipliers
At the request of a user at Brookhaven National Laboratory,
we added to Poisson and Pandira the ability to compute a series
of solutions for different values of the current multiplier XJFACT.
To implement the feature, the user supplies two REG namelist
variables in the Automesh input file. Variable XJFEND is the
ending value and XJSTEPS is the number of steps in the series
after the first calculation. Variable XJFACT itself serves as the
starting value for the series. The code saves output files with
filenames that include the number in the series of calculations.
Vanadium Permendur Table Added
Poisson and Pandira problems now may select an internal
permeability table for vanadium permendur. The data were
obtained through a user at Argonne National Laboratory, but
we are still trying to locate the original source to include in
We had planned to add more material tables for several years,
but convergence problems in Poisson with vanadium permendur
delayed this project. We recently became aware of the reason
for the convergence problems. Convergence can be sensitive to
variable RHOGAM, which is an under-relaxation parameter that
limits the rate of change in the reluctivity at each re-calculation.
The default value of 0.08 is usually near optimum for 1010 steel
(the default material table), but it may be too large for some
materials, in particular for vanadium permendur. Automesh will
issue a warning message if RHOGAM remains at its default
setting when the vanadium permendur table is in use. Poisson
will issue a warning if the residuals RESIDA or RESIDI do not
decrease steadily. The warning message advises that a possible
cause of the oscillation is too large a value for under-relaxation
Complex Root Finder Improvements
We made some changes in the complex root finder used by
program CFish. The code now counts the number of materials
that have a nonzero imaginary part of either permittivity or
permeability. If there are no complex materials, the root finder
and convergence are the same as in program Fish. With no
complex materials, CFish does not attempt to fit a resonance
circle to the driving-point field error data. It just returns the
usual D(k2) value. If there are any complex materials, then
the convergence criteria on the slope of D(k2) being close to
-1 is replaced by the requirement that the slope is negative.
During a resonance search, CFish will not test for convergence
until it has enough data (3 cycles) to fit a circle to the driving-
point field error in the complex plane. The documentation (in
file SFcodes.doc) includes a new section that discusses the
complex root finder. We made some changes to the plot file
FishScan.tbl written by programs Fish and CFish. The column
of sequence numbers, which was seldom of any use has been
omitted. CFish now writes both real and imaginary parts of
D(k2) and dH1, the field error at the driving point.
There are two new SF.INI variables related to the changes
in the CFish code. Variable CFishCirclePlot controls whether
CFish writes an input file for program Quikplot to display fitted
resonance circles at each cycle of a mode search. Variable
ScanFormatComplex controls whether the initial FishScan.tbl
display shows a plot of the driving-point field error in the
complex plane or a plot of D(k2) versus frequency as it
does for the results written by program Fish.
We added two new options in program Tablplot that are useful
for displaying the driving-point field error in the complex plane
mentioned above. The code can sort the data table by a
specified column, and it can label individual data points by the
values from a specified column. The features can be activated
by keywords in the input file or from menu items after the
program starts. When labeling points, the user can select
which point to start with, how many points to skip between
labeled points, the number of significant digits in the labels,
and the label orientation angles.
While working on these CFish changes, we found that both
Fish and CFish failed to complete the output file OUTFIS.TXT
if one used the Escape key to stop the program while the code
performs a frequency scan. File OUTFIS.TXT will now
contain all the calculated data is the scan is interrupted.
Improvements in Program ConvertF
We made the some improvements in ConvertF, which converts
rf cavity frequencies between ambient and operating conditions.
The changes include:
- Radio buttons replace previous scrolling text boxes to select
ambient gas and cavity material.
- Cavity material "Other" selects the user-supplied thermal
expansion coefficient in units corresponding to the current
temperature input units (e.g., /deg F or /deg C).
- Results appear in color in a text box that allows the user to
highlight and copy text.
- The computed expansion coefficient now appear in the results
text box and also in the output file XFREQ.TXT.
- Precision of frequency output changed from 10 Hz to 1 Hz.
- The dialog box now has buttons to update results or stop the
program. (As in previous versions, changing entry fields also
updates the results automatically.)
- Results appear in a larger display region to avoid writing
multiple lines when certain Windows fonts are in use.
We added a new namelist type in program Automesh.
Variables in the POA namelist define a single-point
boundary value at location XA,YA. Boundary value
ASET corresponds to the vector potential Az (or Aphi)
for magnet problems, voltage V for electrostatic problems,
or the magnetic field Hz (or Hphi) for rf problems. This
feature restores a capability previously found in older
versions of Poisson and Pandira. In version 4 and earlier,
users could provide a list of logical coordinates and
potential values directly to these solver programs. The
present implementation defines the points using their
physical coordinates instead of their logical coordinates,
and the entries are part of the Automesh input file.
We fixed a potential problem in the line parser used in all
Poisson Superfish codes. In previous versions, the line
parser would attempt to read as real variables certain
character strings that did not represent numbers. The
codes will now recognize examples such as "100E0.2" or
"1.0E+400" or "1.0E-400" as character strings rather than
numbers. Any decimal point must precede the "E" or "D"
that signals a number in scientific notation. Also, for
numbers in scientific notation, the exponent must be in the
range -307 to +307. This change should result in a useful
error message if this sort of typographical error occurs in
an input file.
We fixed a bug in Automesh that affected input files that
use lines regions and also use units other than centimeters
(CONV values other than 1.0). The code could diagnose
an error because line-region coordinates in user units were
being compared with problem boundaries in centimeters.
In Automesh, there is no longer a default value for variable
KPROB. Users must set KPROB in the first REG namelist
to define the problem type. Allowed values are KPROB = 0
for a Poisson or Pandira problem, or KPROB = 1 for a
We changed the way Automesh reads title lines from the
input file. The title still contains up to ten 80-character
title lines, but there can now be blank lines or comment
lines (starting with a semicolon or an exclamation mark)
interspersed among title lines. The code includes more
error checking when reading title lines and will write a
warning message if the file contains no title lines or more
than 10 title lines before the first REG namelist. This
change affects tuning programs. If comment lines appear
in the Title/EndTitle section of a tuning-code control file,
the code transfers these lines to subsequent control files,
log files, and to each Automesh input file. Automesh
ignores these comment lines and they will not appear in
output files written by Automesh, Fish or SFO.
We fixed a bug in SFO reported by a user at SLAC. If
the Automesh input file included the NORM=3 option to
normalize fields to the value of ASCALE, and if SFO read
a .SEG file, the code would set ASCALE = 0 unless the
.SEG file included a value for ASCALE.
Program Tablplot now changes the correct scale (X or Y)
from linear to log or back when the menu item is selected.
We fixed a bug in several programs that resulted in
truncated names for some output files if the original
Automesh input file had a name longer than 12 characters.
The problem affected output files written by SFO, SF7,
Poisson, and Pandira.
We noticed that two options from pre-1992 versions of
Poisson could not be selected because the appropriate REG
namelist variables were not recognized. It is doubtful that
the features of of much use, but nevertheless, we added
the variables ICAL, IHDL, and ICYSEN to the REG
namelist variables. The limited documentation we could
find for these features appears in sections under "Input
options for Poisson and Pandira" in file SFcodes.Doc.
New SF.INI variable Force1MVperMeter controls whether
postprocessor SF7 normalizes the fields calculated for
Parmela to EZERO = 1.0 MV/m when running the code
with a .IN7 input file. Previously, in order to turn off the
1-MV/m normalization, the user would have to use the
dialog window and uncheck the box labeled "Force E0 =
1 MV/m." Variable Force1MVperMeter also defines the
initial setting of the check box in the SF7 dialog window.
We fixed a bug in the calculation of power losses and
stored energy for rectangular regions computed by SF7
and WSFplot. The area of some mesh triangles near
corners of the rectangular region were being calculated
incorrectly. The bug was encountered only rarely because
the only triangles affected were those that had one point
outside the rectangular region and that point plus one
other point were both exactly on one of the boundaries
of the rectangular region.
Error messages 384 and 386 include a clarifying comment
about the origin of the quantities XMIN, XMAX, YMIN,
We failed to assign a number to two SFO error messages
when Poisson Superfish version 7 was first released. Error
600 now occurs if SFO cannot allocate arrays for boundary-
point data. Error 638 occurs if the SFO input file contains
an unrecognized keyword.
The preference files containing start-up settings written
by plotting programs WSFplot, Quikplot, and Tablplot are
now text files rather than binary files. The codes will
delete old copies of the binary files with extension .PRF.
The new text filenames are WSFPRF.Txt, QplotPRF.Txt,
We fixed a bug in SF7 that caused the code to crash on
electrostatic problems when interpolating on a grid.
Poisson and Pandira now report the correct (positive)
sign of the stored energy for electrostatic problems in