This file describes changes, additions, and bug fixes in Poisson Superfish version 7. The entries are in reverse chronological order. June 14, 2004 Poisson Superfish Version 7.13.0005 Poisson Superfish now uses Winteracter version 5.10f. The Fortran compiler remains Lahey/Fujistu Fortran 95 version 5.7d. We fixed a bug in Automesh that affected problems with very small mesh dimensions (e.g., Xmax-Xmin less than 0.0001). The bug was apparently introduced in Automesh version 7.09. In the section where the code traces the path along circular or elliptical segments, Automesh was using a tolerance for comparisons based upon the smallest mesh interval. However, in that section of code, the coordinates have been scaled to a "logical plane" where a mesh interval is 1 unit regardless of the physical dimensions. For very small dimensions, the code stopped with error 360 because it could not satisfy a convergence requirement when computing the location of the next point along the arc. Program SFOtable now reads RFQfish-generated SFO files if keyword CartesianCoordinates appears in the SFOtable control file. Before, the code would reach the end of SFO files unexpectedly because it could not find items that are only calculated for problems with cylindrical symmetry (e.g., E0, transit-time factor, etc.) Program RFQfish now writes entries in the SFO output file (in the list of tuning-code setup parameters) for the first eight parameters in the Data/EndData section. The Data/EndData section of RFQfish control files may include a tenth column supplied by the user. The name of this data column appears on new keyword line ParameterName line near the beginning of the file. If present, the value of the tenth column appears in the list of setup parameters in the SFO file. When more than one Poisson Superfish job runs simultaneously on the same machine, two programs could cause a sharing violation when opening file SF.INI or other preference files. The codes now check for this problem. If unable to open SF.INI after a few tries, the codes will write a warning in the output text file and alert the user with a pop-up warning message. The example file CVFInterp1.f90 that demonstrates how to create a Compaq Visual Fortran (CVF) program that calls the field interpolator DLL has been updated. The new version contains compiler directives that allow compilation to proceed with all default compiler settings. We thank Tibor Kibedi of the Australian National University for sending the updated example file. April 7, 2004 Poisson Superfish Version 7.12.0008 We fixed a formatting error in warning message 184 in SFO. March 26, 2004 Poisson Superfish Version 7.12.0006 In version 7.05, we added SF.INI variable Force1MVperMeter to control whether postprocessor SF7 normalizes the fields calculated for Parmela to EZERO = 1.0 MV/m when running the code with a .IN7 input file. It is now possible to specify whether or not to do this normalization in the .IN7 file itself. If the new keyword Normalization appears on the Parmela command line for interpolating on a grid, then SF7 forces EZERO = 1.0 MV/m. But, if the keyword NoNormalization appears, then the code uses the normalization computed by postprocessor SFO (or the default of H = 1000 A/m at the driving point if SFO has not been run). For multiple sets of interpolations in the same file, the last setting remains in effect until changed by another keyword. March 26, 2004 Poisson Superfish Version 7.12.0004 We fixed a bug that could cause Automesh to crash if any single-point regions appeared in the Automesh input file before other regions containing the same point(s). The POA namelist in Automesh input files now works correctly for input units other than centimeters (CONV set to a value other than 1.0). Tuning programs CCLfish, CDTfish, DTLfish, and ELLfish will now create an input control file for program ReadPMI under certain circumstances. ReadPMI is distributed with the Parmila program. A tuning code creates this input file if ParmilaData = Yes in file SF.INI (indicating that the code should produce PMI files containing transit-time factor integrals), and if the particle velocity always increases from one problem to the next, and if tuning code control file contains at least two problems. The ReadPMI input file has extension .RDP. March 16, 2004 Poisson Superfish Version 7.11.0006 We removed an extra unused check box from the ConvertF dialog window. When looking for file SF.INI, codes previously could fail to find SF.INI if the path to the working directory contained the name of the program. This bug has been fixed. The error did not occur if the working directory contained a copy of SF.INI, if the file was in the location set by environment variable SFINI. February 25, 2004 Poisson Superfish Version 7.11.0005 Command lines in the sample batch files can now accept path names that contain blank characters. Previously, if a user installed the codes in a directory containing a blank character (e.g., in Program Files), these batch files would not work. February 22, 2004 Poisson Superfish Version 7.11.0001 Program SF7 can now duplicate the feature in Poisson and Pandira that creates a 2-D field map for input to the Parmela program. Using this feature does not require any settings in the Automesh input file, nor any settings in file SF.INI. SF7 is now the preferred method for creating all three types of 2-D cylindrically symmetric field maps: rf, magnetic, and electrostatic. Program SF7 has several new settings in file SF.INI that define default values for most entries in the program's dialog window. The SF7 dialog window now includes a browse button to find an input file when interpolating along a user-supplied curve and when reading a file containing command lines. January 29, 2004 Poisson Superfish Version 7.10.0002 We added a second permeability table for vanadium permendur and updated the documentation (file SFcodes.Doc) to give the source of both vanadium permendur tables. January 27, 2004 Poisson Superfish Version 7.10.0001 We fixed a bug and some other potential problems in programs that invert a tridiagonal matrix (Fish, CFish, Autofish, Pandira and tuning codes). The changes affect mainly large problems that need to write temporary data to a disk file. To invert the matrix, the code saves two arrays associated with M submatrices, where M is the larger of Kmax and Lmax. One array has dimension N x M-1, where N is the smaller of Kmax and Lmax, and the other array has dimension N*N x M-1. During each cycle, the code saves the arrays to either memory or disk, then reads them back in reverse order. Previously, if a disk file were needed, both arrays were saved to the file. Now the code always allocates memory to save the smaller array. Some integer arithmetic that could overflow for very large problems has been replaced by floating-point calculations. Program ConvertF has a new check box that selects whether or not the cavity ambient temperature and gas temperature should change together. December 28, 2003 Poisson Superfish Version 7.09.0001 Poisson Superfish now uses Winteracter version 5.10e. The Fortran compiler remains Lahey/Fujistu Fortran 95 version 5.7d. 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 (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 was unable to resolve the mess and 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 closed regions. 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. Poisson and Pandira problems now may select an internal permeability table for vanadium permendur. Potential users of this feature will also be interested in next few paragraphs. We have added documentation and some warning messages in Automesh and Poisson related 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. Some problems may not converge if RHOGAM remains at the default value. Automesh issues warning 190 if under-relaxation parameter RHOGAM remains at its default setting when the internal permeability table for vanadium permendur is in use. The pop-up warning is turned ON by default, but it may be disabled with the line "ShowWarning=-190" in the [Global] section of SF.INI. Automesh issues warning 191 if under-relaxation parameter RHOGAM remains at its default setting when a user-supplied permeability table is in use. The pop-up warning is turned OFF by default, but it may be enabled with the line "ShowWarning=191" in the [Global] section of SF.INI. Poisson issues warning 192 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 parameter RHOGAM. The pop-up warning is turned ON by default, and will occur once after cycle 1000 if a residual has increased more than half the number of times that it has decreased. The warning may be disabled with the line "ShowWarning=-192" in the [Global] section of SF.INI. December 14, 2003 Poisson Superfish Version 7.08.0001 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. December 10, 2003 Poisson Superfish Version 7.07.0002 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. December 2, 2003 Poisson Superfish Version 7.07.0001 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(k^2) and dH1, the field error at the driving point. 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 epsilon or mu. 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(k^2) value. If there are any complex materials, then the convergence criteria on the slope of D(k^2) 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. 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. If one uses the Escape key to stop program Fish or CFish while the code is performing a frequency scan, the output file OUTFIS.TXT will now contain all the calculated data. The file was not closed properly if previous versions, so it was missing several lines of text. 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. Program Tablplot has two new options. 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. One use of these features is to view a trajectory of points in the X-Y plane as a function of some other variable. For example, one may plot the rf reflection coefficient in the complex plane, but sort (and label, if desired) the plotted points according to the rf frequency. November 5, 2003 Poisson Superfish Version 7.06.0002 Poisson Superfish now uses Winteracter version 5.10c. The Fortran compiler remains Lahey/Fujistu Fortran 95 version 5.7d. October 2, 2003 Poisson Superfish Version 7.06.0001 For magnet problems, two new Automesh REG namelist variables instruct Poisson and Pandira to compute a series of solutions for different values of the current multiplier XJFACT. Variable XJFACT itself serves as the starting value for the series. Variable XJFEND is the ending value and XJSTEPS is the number of steps in the series after the first calculation. The code saves output files with filenames that include the number in the series of calculations. This feature was suggested by a user at Brookhaven National Laboratory. 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 are 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. September 22, 2003 Poisson Superfish Version 7.05.0001 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. September 12, 2003 Poisson Superfish Version 7.04.0005 Poisson Superfish now uses Lahey/Fujistu Fortran 95 version 5.7d and Winteracter version 5.0g. August 21, 2003 Poisson Superfish Version 7.04.0003 Eliminated a divide-by-zero error in ConvertF that occurred when the cavity temperature and operating temperature were equal. The error had no effect on results, except that the computed value of the expansion coefficient (which is not used in this case) would not correspond to the entered conditions. The code now displays a message indicating that the expansion coefficient is unreliable if the two temperature are equal. August 11, 2003 Poisson Superfish Version 7.04.0002 Error messages 384 and 386 include a clarifying comment about the origin of the quantities XMIN, XMAX, YMIN, and YMAX. July 3, 2003 Poisson Superfish Version 7.04.0001 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 (WSFDATA.PRF, Quikplot.PRF, Tablplot.PRF, Qplot95.PRF, and Tplot95.PRF) when started in a directory contain these files. The text filenames are WSFPRF.TXT, QplotPRF.TXT, and TplotPRF.TXT. June 26, 2003 Poisson Superfish Version 7.03.0002 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 Cartesian coordinates. We made a cosmetic change to the ConvertF dialog box to use a larger display region for the results. If a large Windows font size were in use, the results sometimes used more than one line per item. June 3, 2003 Poisson Superfish Version 7.03.0001 We added a new namelist type in program Automesh. Variables in the POA namelist define a single-point boundary value at location XA,YA. The 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 made the following improvements in ConvertF, the frequency conversion program: - 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. - Dialog box now has buttons to update results or stop the program. (As in previous versions, changing entry fields also updates the results automatically.) April 17, 2003 Poisson Superfish Version 7.02.0001 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. The only allowed values are KPROB = 0 for a Poisson or Pandira problem, or KPROB = 1 for a Superfish problem. April 15, 2003 Poisson Superfish Version 7.01.0000 We changed the way Automesh reads title lines from the input file. The problem 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. The change discussed above also 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. First release, April 4, 2003 Poisson Superfish Version 7.00.0006 Poisson Superfish now uses Lahey/Fujistu Fortran 95 version 5.7c and Winteracter version 5.0b. We now provide files for several language systems that allow users to call the Poisson Superfish field interpolator from their own programs via a Windows dynamic link library (DLL). The supported languages are: - Absoft Fortran version 8.0 and later. - Borland C++, version 5.0 and later (also works with Borland C). - Borland Delphi, version 2.0 and later. - Lahey Fortran 90, version 2.01 and later. - Lahey/Fujitsu Fortran 95 (5.0 and later) - Microsoft Visual C++, version 2.0 and later. - Microsoft Visual Basic, version 4.0 and later. Many Fortran compilers support linking with object modules made with one or more of these C languages, which provides a way for your Fortran code to call the DLL. The DLL for each language system appears in its own directory. The directory contains a dynamic link library (DLL), the object module used to create the DLL, an import library, and (if available) an example main program that calls the DLL. We continue to provide source files and a Fortran library for users of Lahey/Fujitsu Fortran 95 (version 5.7). There is no practical limit except disk space for the size of a scratch file if needed by programs Fish, CFish, Pandira, or the tuning codes. The previous limit under Lahey LF90 was 2 GB. The LF95 limit is 18 EB, nearly 10 billion times larger. Variables XMAX, XMIN, YMIN, and YMAX are no longer needed in the Automesh input file. Automesh computes these quantities from the first region's boundaries. Automesh will issue warning messages if these variables appear in the input file. Users may either remove the obsolete variables or disable the warning messages as described below. SF.INI settings MaxXLineRegions, MaxYLineRegions, MaxMaterialTables, and MaxMaterials have all been eliminated. Automesh, Autofish and the tuning programs now pre-parse input files to determine the required settings. The settings are passed to other codes in the Poisson Superfish solution file. Poisson Superfish codes now have numbered error and warning messages. Users can enable or disable the pop-up warning messages. Warnings still appear in the output text files. To disable warnings about obsolete variables XMAX, XMIN, YMIN, and YMAX, add line "ShowWarning=-118,-119,-120,-121" to the [Global] section of SF.INI. Output text files will include the complete path to the executable file that created it. Poisson, Pandira, and SF7 allow user configuration of the precision of field data in output files written by Poisson, Pandira, and SF7 (OUTPOI.TXT, OUTPAN.TXT, and OUTSF7.TXT). Because of the change in compilers from version 6 to version 7, the format of the Poisson Superfish solution file has changed. Version 7 codes will automatically translate old files to the LF95 binary file format. The change is irreversible. Double-clicking and right-clicking on files with registered extensions will now use the complete path to the executable files. You would need to edit the setting (e.g., under Tools, Folder Options, File Types) if you want the operating system to search the PATH for the program. When opening file SF.INI, programs no longer look on the PATH. A code first looks in the current directory. Next, it checks environment variable SFINI for the directory containing SF.INI. Last, it looks in the directory containing the executable file. The first file found is the one the program will use. Fixed a formatting error in Quikplot and Tablplot dialog boxes for displaying fitting results. If the leading coefficient was negative, the minus sign did not appear. Fixed the program menu displayed when plotting residuals of a fit in Quikplot and Tablplot. The Hardcopy and Fit menu items were previously grayed out, but are now available. The only way to return from the residuals plot is to Select Fit, Residuals a second time. Tablplot now include the option to "Plot only this column" when building a new data column in either the Edit Column dialog window or the Combine Column dialog window. Error 200 previously stated that a file did not exist if a code could not open it. The message now also mentions that the file may be in use by another application. MDTfish now sets Superfish variable EPSIK = 1.0E-8, which ensures that the solver produces an accurate result for very large problems. In the Poisson and Pandira chapter of the documentation, We added discussion about using these codes for conformally mapped problems. When SF.INI variable PrintBGammaTables=Yes, programs Poisson and Pandira will now create Tablplot input files containing the material tables. Previously, this data would appear in output files OUTPOI.TXT or OUTPAN.TXT. Programs SFO, SF7, and WSFplot have an improved algorithm for computing rf stored energy and power dissipation in dielectric and magnetic materials. In previous versions, only the power dissipation for problems solved by CFish handled multiple materials correctly, and for that calculation SF7 and WSFplot only included mesh triangles if the entire triangle was inside the rectangle that defined the integration limits. The stored energy and magnetic flux integrals in SF7 gave incorrect results if the integration grid spanned more than one material. The new procedure handles multiple materials. If an integration limit cuts through mesh triangles, the codes include the portion of mesh triangles inside the integration area. Program SF7 uses the same algorithm to compute the magnetic flux.