Object Oriented Parallel Accelerator Library (OPAL)
Introduction
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 excluding the undulator.
- 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@ … (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.
Documentation & Help
OPAL documentation
Version | Manual | Source code documentation |
Release notes |
---|---|---|---|
OPAL development | HTML, PDF | HTML | Wiki |
OPAL 2.4 | HTML, PDF | HTML | Wiki |
OPAL 2.2 | HTML, PDF | HTML | Wiki |
OPAL 2.0 | HTML, PDF | HTML | Wiki |
Download
Version | Source | Linux binary |
macOS binary |
Release notes of binary package |
---|---|---|---|---|
OPAL 2.4.0 | tar.xz, md5 | tar.xz, md5 | tar.xz, md5 | Wiki |
OPAL-2.2.1 | tar.xz, md5 | tar.xz, md5 | n.a. | Wiki |
OPAL-2.2.0 | tar.xz, md5 | tar.xz, md5 | tar.xz, md5 | Wiki |
OPAL-2.0.2 | tar.xz, md5 | tar.xz, md5 | tar.xz, md5 | Wiki |
Documentation about installing and running the OPAL binary package is available here.
Git repository
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]
Using and Compiling OPAL
Start with Examples
Tools
The runOPAL.py Script
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.
Post Processing and pyOPALTools
The pyOPALTools Python package contains many tools for pre- and postprocessing, and analysing and plotting output data. See also Post Processing.
Conversion utilities
OPAL for Developers
- Development
- Documentation
- Technology & Ideas
- Periodic Tele-cons
- regression tests for current OPAL versions