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 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 Presentations, papers and reports (ideal for an overview)
- OPAL development manual HTML manual PDF, release notes
- OPAL 2.2 manual HTML, manual PDF, release notes
- OPAL 2.0 manual HTML, manual PDF, release notes
- OPAL 1.6 manual PDF, release notes
- OPAL conversion utilities
Using and Compiling OPAL
Start with Examples
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
OPAL for Developers: Coding Style and Conventions
- Coding Style and Conventions
- Development workflow, Git and Gitlab usage
- OPAL source code documentation
- Building, executing and writing unit tests
- Technology & Ideas
- File Format for stat Storage
- IPPL Documentation
- Release Procedure
- Periodic Tele-cons
- Most Used Directories in the Code