OptiMX: A Program for Accelerator Optics
OptiM is a GUI-oriented program whose principal aim
is to be an easy to use yet comprehensive interactive accelerator optics design and analysis tool.
Implemented in C++, it was originally developed as an MS Windows centric application using
the commercial Borland OWL framework. OWL was discontinued in late 1999
and is now considered obsolete.
The OWL dependency made maintaining and developing OptiM an increasingly problematic proposition; compatibility with post XP versions of MS Windows
was one of many issues.
In the spring of 2014, a decision was made to port
OptiM to Qt, a modern, portable and open framework.
As much as possible, the original interface has been preserved. While a significant amount
of refactoring was required, the underlying physics has been left unchanged. The custom plotting
capabilities of the original application have been replaced with functional equivalents based on
a stable and well-established library (qwt).
With very few minor exceptions (which are being addressed)
the new refactored OptiM (dubbed OptiMX) should be a drop-in replacement for the original OWL version.
The original code was authored by Valeri Lebedev (val_at_fnal_dot_gov) starting in the mid-1990s; he
further developed and maintained it until late 2014.
The Qt port, refactoring and subsequent development are by J.-F. Ostiguy (ostiguy_at_fnal_dot_gov).
The on-line help was created by editing an automatically converted version of the original Windows help file.
While already quite usable, it still needs improvement.
The help files are bundled with the installer packages. Up-to-date html help files are also accessible
from this link .
Supported Operating Systems
OptiMX runs under MS Windows, Linux and Mac OSX. Binary installation packages are currently available only for MS-Windows and Linux.
The native Mac OS X version is still experimental; please contact us if you are interested.
Here is a screenshot of OptiM running under OS X.
For a summary of bugfixes and changes please consult the ChangeLog page.
Simply run the installer (OptiMX-xxxxxxxx-setup.exe). You can uninstall from the control panel like any standard application; alternatively, you can
run the executable uninstall.exe located in the OptiMX installation directory. It is advisable to uninstall any previous version before installing a newer one;
however, the installer will attempt to automatically detect and uninstall an older version.
NOTE: As of Apr 22 2019, a Windows 64-bit binary installation package is made available. Floating-point operations are generally more accurate in 64-bit mode.
In most cases, the 32 and 64-bit executables offer comparable performance.
If you decide to install the 64-bit executable to replace an existing 32-bit one, you MUST first uninstall the latter.
NOTE: Administrator privileges are not required for installation.
If as a user, you also have administrator privileges, you will be given the option of a per-machine (for everyone) or per-user (private), installation.
If you do not have admin privileges, no option will be presented and the installation will proceed as per-user (private).
For a per-machine (public) installation, the default installation folder will be located under Program Files (x86) (32 bit exe) or under Program Files (64-bit exe).
For a per-user installation, the installation folder will be located under %USER%\Application Data.
Note that if you wish to switch from a previous installation performed as a user with admin privileges to a private installation,
you should first explicitly perform an uninstallation (as a user with admin privileges).
To install OptimX under linux we use the AppImage format which is the most convenient and the
most portable solution. No administrative privilege is required.
The AppImage executable was created under RHEL7.7. It should work on most popular linux distributions of more recent vintage.
- Download optimx-appimage-yyyymmdd.tar.gz
- Untar the file in a convenient location, preferably in a new empty directory (tar -zxvf optimx-appimage-yyyymmdd.tar.gz).
The tar archive contains a file named OptimX-****.AppImage and a collection of input file samples grouped under a directory named examples.
- Make the file OptimX-****.AppImage executable ( i.e. chmod +x OptimX-****.AppImage) and rename it to optimx (mv OptimX-****.AppImage optimx).
Move the executable and the example files to locations of your choice and optionally, aadd the directory path of the optimx executable to the search path
specified by your PATH environment variable. Under the standard bash shell:
Most linux distributions use a package manager (e.g. rpm, apt ..etc) that automatically deals with dependencies,
and ensures that all required shared libraries are present and at a compatible version level.
While from a user perspective it would be simpler to provide distribution specific binary packages, putting together, testing and maintaining
such packages for multiple distributions represents a significant effort. The AppImage format is a good compromise; it includes most (but not all) of the required
dependencies under directories located in a hidden compressed filesystem. The private filesystem and its contents will not
interfere with the rest of your system. If you get an error message about a missing or incompatible shared library, please
contact us . It is simply not possible to anticipate all potential issues.
We are planning some improvements, including, in particular, better support for longitudinal dynamics.
Original (OWL) Version for MS Windows
MS Windows binaries for the original (OWL based) version as well as additional material and information remain available
from V. Lebedev's OptiM page .
Bugs are unavoidable; if you spot something that is not working as expected, we would appreciate hearing from you. To report a bug, please send email to the optim-support
mailing list. General comments/criticisms are always welcome and can also be sent to that list.
Two mailing lists are available: [ Instructions ]
- optim-announce (at_fnal_dot_gov) for announcements
- optim-support (at_fnal_dot_gov) for bug reports, questions, suggestions, etc.