ICOOL is under active development at the present time. It is being made available as a potential aid to members of the collaboration for studying ionization cooling problems. Although considerable effort has gone into making the code give accurate answers, it is ultimately the user's responsibility to check that the program gives reasonable answers to any specific problem.
No modifications should be necessary in existing input decks.
The ENDOF9 and BUNCH9 utilities have been updated. Dave Neuffer has written a new version of ECALC9 (ECALCXY) that should be more suitable for calculating emittance in channels that contain dipoles and quadrupoles. The ICOOL User's Guide has been updated.
(27 February 2008)
Version 3.05 includes a new field model SOL(10) for specifying a solenoid from the on-axis field. It also includes a new helix model HEL(5) for specifying helical multipoles from their Fourier coefficients. BSOL(3) was modified to allow calculations of off-axis fields up to 5th order, to allow specifying the a0 multipole, and to increase the execution speed. The space charge algorithm was changed by removing all particles more than 4-sigma from the mean in radius or axial position before calculating the bunch sigmas used for the space charge calculation. A normalization error was fixed in BROD. Errors were fixed in WIG(4). An error was fixed in the value of z0 for beam restarts. Users of previous versions should be aware that some of the parameters have been changed for BSOL(3) and WIG(4). The VIEW9 utility has been updated. (19 March 2007)
Version 3.01 includes a new field model (BROD) for bent axial current carrying rods. There is also a new static electric field model (EFLD) from Scott Berg. New phase models 5 and 6 allow quadratic variation of the reference particle energy with distance. The pillbox cavity model ACCEL(2) now has parameters to offset the transverse position of the cavity. The tracking logic was modified to allow starting particles at z locations greater than 0. The F9DP control variable has a new option (17) to write out 3 digit exponents. The grid interpolation logic was modified to give B=0 for any point outside a grid. The internal particle masses were updated to use the latest PDG values. The mean excitation potentials were updated. The maximum number of characters per line for name substitutions was increased. Bugs were fixed in the simulation of polarization, energy loss and muon decay. Users of previous versions should be aware that the meaning of PHASEMODEL 5 has changed. The beam restart logic was modified to require a reference particle. The BUNCH9, ECALC9F, ERRSUM2, EXTPAR9, EXTREG9, ENDOF9,and NOTEND9 utilities have been updated. BUNCH9 now includes helicity information. ECALC9F has a new parameter that produces a file containing the particle track numbers for tracks inside the acceptance cuts. ENDOF9 can now optionally read and process the list of accepted particles from ECALC9F. (18 September 2006)
Version 2.96 includes new scattering models due to Fano and Tollestrup. The default scattering model was changed from the Bethe to the Fano model. There is a new simple helical wiggler and a planar wiggler model. The number of particles kept in memory was increased to 300000. The SUB command was modified to only process up to first ENDS command. ELMS was modified to read the external file ELMSCOM.TXT for paths. The histogram HCPRN command was modified to write to a specified file. The curvature factor logic in BSOL was changed. Errors were fixed in the phasemodel 4 time and the Twiss beam correlations. Users of previous versions should be aware that the ELMSDIR and ELMSDB interaction variables are no longer used. The meaning of some parameters have been changed in all the BSOL and WIG commands. The ERRSUM2, EXTREG9, ENDOF9,and NOTEND9 utilities have been updated. (10 April 2006)
Version 2.92 has changed ACCEL model 5 to directly read output from Superfish. HORN model 2 was changed to allow radially-stacked horn configurations. Errors were fixed in the BSOL and DIP fields for negative field direction. A bug was fixed for the ROTATE command for rotations around the x and y axes. Thanks to Scott Berg for pointing out these errors. A bug was fixed in the CUTV command. Users of previous versions should be aware that the functionality and parameter meaning of the ACCE(5) and HORN(2) commands have been changed. The ERRSUM2 utility was updated. There is a new version of the ICOOL User's Guide. (17 November 2005)
Version 2.89 has a new solenoid model (9) to conveniently set the on-axis field from a table of Fourier coefficients. A new command DENP allows a material to have a variable density along a specified direction. The WEDGE command was modified to allow the user to specify the material exterior to the wedge. The code was modified to force fixed-stepping when using phasemodel 2. Bugs were fixed in the internal beam creation, in writing Bz to for009, and in ACCEL(11). There should be no incompatibilities with previous versions. The EXTPAR9 and VIEW1 utilities were updated. There is a new version of the ICOOL User's Guide. (6 June 2005)
The tables below describes the available files, including a Windows executable, manual, revision history, examples and source code. The code may be accessed using the link at the bottom of the page.
| icool.for | general monte carlo framework |
|---|---|
| ifld.for | field routines |
| iint.for | particle interaction routines |
| idiag.for | built-in diagnostics |
| imath.for | mathematical routines |
| imsoft.for | Windows-specific code |
| icommon.inc | common blocks include file |
| icool.exe | Windows PC executable (binary) |
| icoolman.html | ICOOL reference manual |
| icoolman.pdf | ICOOL reference manual |
| ICguide.pdf | ICOOL user's guide |
Some files that are useful for running ICOOL on UNIX machines are given in the following table.
| iunix*.* | Scott Berg's UNIX replacements for file imsoft.for |
|---|---|
| Makefile.txt | Scott Berg's UNIX make file |
| Makefile2 | Adam Lichtl's UNIX make file |
A number of auxiliary files are available to enrich your ICOOL experience. These include further descriptions of the code, its revision history, and tutorials. A number of separate utility programs can examine ICOOL input and output files.
| icool99.pdf | ICOOL description from PAC99 |
|---|---|
| icool05.pdf | ICOOL description from PAC05 |
| changes.txt | History of changes made to code |
| tutor.pdf | Steve Bracker's tutorial on regions, cells, sections |
| wedges.pdf | Steve Bracker's tutorial on wedges |
| view1.exe | A Windows graphical preprocessor. This program extracts geometrical information from the ICOOL command file for001.dat. It displays the geometry information from for001.dat and from any other associated magnet data files. The executable works on Windows NT and XP, but not on ME. |
| view1man.pdf | VIEW1 user's manual |
| errsum2.* | Makes error message summary from ICOOL log file. This program reads the ICOOL log file for002.dat. It displays a short error summary on the terminal and writes a more detailed error analysis on a file. |
| ecalc9f.* | Gregg Penn's postprocessor for calculating emittance with standard cuts. This version reads the ICOOL physics output file for009.dat and a second file containing the parameter values for the analysis. |
| emitcalc.* | Gregg Penn's postprocessor for calculating emittance with standard cuts in all three phase space planes. The routine reads the ICOOL physics output file for009.dat and a second file containing the parameter values for the analysis. |
| ecalcxy.* | Dave Neuffer's postprocessor for calculating emittance in channels that are not azimuthally symmetric. This is more suitable for channels containing dipoles and quadrupoles than ECALC9F. The routine reads the ICOOL physics output file for009.dat and a second file containing the parameter values for the analysis. |
| view9.exe | A Windows graphical postprocessor. This program reads the ICOOL physics output file for009.dat. Scatter plots of user-selected variables are displayed for every region on the file. |
| view9man.pdf | VIEW9 user's manual |
| endof9.* | This program reads the ICOOL physics output file for009.dat. It writes a new file in for009.dat format that only contains information for particles that get to end of simulation. |
| notend9.* | This program reads the ICOOL physics output file for009.dat. It writes a new file in for009.dat format that only contains information for particles that do NOT get to end of simulation. |
| extpar9.* | This program reads the ICOOL physics output file for009.dat and a parameter file. It writes a new file that only contains information for user-selected particles. |
| extreg9.* | This program reads the ICOOL physics output file for009.dat and a parameter file. It writes a new file that only contains information for user-selected regions. |
| bunch9.* | This program reads the ICOOL physics output file for009.dat and a parameter file. It writes an analysis file containing bunching data along with several other auxilliary files. |
| elmsdb.zip | Data files needed for running ICOOL with ELMS |
A number of example files have also been included. The example file naming scheme begins with a four character tag to describe a general problem. The next (up to 4) characters define a specific example. The 3-character extension defines the type of file. For example, DRIF.F01 is the FOR001.DAT file for a DRIFt space example, which is a minimal-input running deck provided for beginning users. Some examples have additional data files that must also be renamed in order for the example to run, e.g. ASOL.F03 -> FOR003.DAT. These examples are only intended to illustrate the input command structure and to give the user a test output to check if the program is executing properly.
| adib.f## | Adiabatic buncher example. This illustrates using two reference particles together with ACCEL model 10 and using &SUB name substitutions. |
|---|---|
| asol.f## | Alternating solenoid example. This is an early transverse cooling lattice. |
| cool_mg.f## | s-fofo 2.75 m cooling lattice from Feasibility Study 2. It uses a "moving grid" (SHEET model 4). |
| drif.f## | Drift space example |
| horn.f## | BNL E889 horn example. This example also illustrates multiple beam type generation and creation of a neutrino production data file. |
| ring.f## | Balbekov ring example. This illustrates using the BEGS, multiple GRID, and EDGE commands. |
| *.f01 | Command input |
| *.f02 | Program output |
| *.f03 | Beam input |
| *.f07 | Region summary table |
| *.f20 | Current sheet or other input 20, etc. |
All the above files are contained in the following zip file.
| icool.zip | zip file containing all other files |
|---|
You can download these files from the subdirectory V310 .
The previous release version can be found in V305 .