/rayx

RAYX is a simulation tool for beamlines at electron storage rings. It traces synchrotron radiation through a series of mirrors, gratings and more and provides the user with helpful insights, how a given beamline performs.

Primary LanguageC++MIT LicenseMIT

RAYX

RAYX Logo RAYX is a powerful, multi-component simulation platform designed to streamline the design and optimization of beamlines in synchrotron light source facilities. At the core of the platform is rayx-core, a high-performance library that delivers precise light tracing capabilities on both CPUs and GPUs. This core library ensures that users can achieve detailed and accurate simulations at high speeds, making it an ideal solution for complex beamline designs.

To simplify the usage of rayx-core, the platform includes rayx, a command-line interface (CLI) tool designed for fast, one-shot tracing of beamlines. It provides comprehensive data on every ray-element intersection, making it especially valuable for generating large datasets efficiently. With its focus on ease of use, rayx empowers users to quickly run simulations and retrieve detailed ray-tracing results.

For users who prefer a more visual approach, rayx-ui offers a graphical user interface (GUI) that includes a 3D viewport of the beamline, enabling interactive design and exploration. This GUI provides an intuitive interface to construct and modify beamlines, allowing users to visualize their designs in real-time. rayx-ui not only enhances the design process but also allows users to iteratively optimize configurations based on immediate visual feedback.

RAYX vs RAY-UI

RAYX offers several advanced features, including:

  • Global (not sequential) tracing of beamlines
  • GPU utilization for accelerated tracing performance
  • A dedicated mode for tracing multiple beamlines with ease
  • Objects in RAYX can be grouped for simplified group transformations
  • A GUI for intuitive beamline design

Installing or Building RAYX

testUbuntu testWindows testUbuntuClang MDBookDeploy

For additional information, please visit our Wiki. We are committed to delivering stable releases, which can be found here. Please note that the master branch and other branches might be unstable, and building RAYX from the source could lead to unstable software. We recommend this only for developers and experienced users. If you experience issues with our distributed binaries or API, do not hesitate to open an issue. We are keen to provide assistance and develop features as the need arises.