Object Oriented Parallel Accelerator Library (OPAL)
OPAL (Object Oriented Parallel Accelerator Library) is a parallel open source tool for charged-particle optics in linear accelerators and rings, including 3D space charge. Using the MAD language with extensions, OPAL can run on a laptop as well as on the largest high performance computing systems. OPAL is built from the ground up as a parallel application exemplifying the fact that high performance computing is the third leg of science, complementing theory and experiment.
The OPAL framework makes it easy to add new features in the form of new C++ classes. OPAL comes in the following flavours:
OPAL-cycl: tracks particles with 3D space charge including neighbouring turns in cyclotrons and FFAs with time as the independent variable.
OPAL-t: models beam lines, linacs, rf-photo injectors and complete XFELs.
OPAL-map: map tracking (experimental).
The code is managed through the Git distributed version control system. A suite of unit tests have been developed for various parts of OPAL, validating each part of the code independently. Unit tests use the google testing framework. System tests validate the overall integration of different elements. Documentation is written in Asciidoc. Tools are available to readily convert Asciidoc into formats such as PDF and HTML for display.
Please use the OPAL mailing list opal AT lists.psi.ch to discuss problems and issues. Subscribe to the mailing list.
Please report bugs and feature requests to the issue tracker or to the mailing list.
Download, Documentation, Help, Presentations & Papers
Instead of downloading the source tar-ball you can get the OPAL source via Git. Either clone the whole Git repository (~ 2 GB!) with
git clone https://gitlab.psi.ch/OPAL/src.git
or clone a specific branch/tag with
git clone --single-branch --depth 1 --branch BRANCH_OR_TAG https://gitlab.psi.ch/OPAL/src.git [DIR]
OPAL binary packages
Start with Examples
Presentations & Papers
Using OPAL at PSI
The runOPAL Python scripts allows you to run, automated, several OPAL jobs and obtain the data in a conceived way. Scans of multiple dimensions are easy to perform.
The pyOPALTools Python package contains many tools for pre- and postprocessing, and analysing and plotting output data. See also Post Processing.
OPAL for Developers
Build-, Unit- and Regression Tests