Releases: hz-b/rayx
Releases · hz-b/rayx
v1.1.0
Changelog
RAYX-CORE
- New optical element: Multi Layer Mirror
- support for up to 1000 coatings
- New source: Ray List Source
- user can provide a list of rays to be taced
- Generate rays on selected device
before, rays were generated from sources on the cpu, singlethreaded
now, ray generation will take place on the selected device, gpu or cpu, multithreaded- record generated rays, so they can be analyzed and plotted by the user
- Changes in Ray attributes
- refactor
path_lengthtooptical_path_length
before, represented the geometrical path length
now, represents the optical path length - refactor
element_idtoobject_id
before, an event refered to an element
now an event may relate to generated rays from a source or element
- refactor
- Drop support for misalignment
- misalignment was an artifact from RAY-UI, which was incomplete in rayx, incapable of applying translational and rotational adjustments correctly. now it is removed, making space for a new design of this concept
- Rework reading and writing rays to csv file
- improve readability of csv files
- allow scientific notation
- use precise number of digits for floating point numbers
- add ability to write integers and strings
- use ray attribute mask, to determine what attributes are written
- improve readability of csv files
- Extend beamline tree (
class BeamlineNode,class Group)- add node to tree, release node from tree, reparent node, find node
- add bijection between sources/elements and object_id
- Extend
struct Rays(structure of arrays) - Make more types be used in type-safe manner, in preparation to make them available from rayx-python (#415)
- Several performance optimizations
- use rays in SoA fashion, including gpu kernels, allows for masking recorded attributes as early as possible
- Fix energy distribuition type: list of weighted values for photon energy (dat file)
- Fix single precision calculation in conversion from global to local electric field and calculation of degree of polarization. use double precision
RAYX (cli)
-
Add cli option to override the number of rays in the sources of the traced beamline
-n,--number-of-rays INT Override the number of rays for all sources -
Add cli option to sort output events by object_id. This can speed-up analysis when plotting per object
-O,--sort-by-object-id Sort rays by object_id before writing to output file -
Enable usage of option
-oto specify output directory of trace results for multiple rml inputs -
rework cli parsing
- add capability to positional arguments
by default arguments will be treated as RML input
e.g../rayx my_beamline.rml my_other_beamline.rml
this allows for double clicking rml files in the file manager to run rayx. just set rayx as default application for file extension.rml - add capability to array-like arguments
e.g.rayx my_beamline.rml -A position_x position_z - use
--to terminate the list of values to an array-like argument)
e.g../rayx -A position_x position_z -- my_beamline.rml
- add capability to positional arguments
-
Rename some of the cli arguments
-
Validate output events
Other Changes
- Fallback to single-threaded tracing on CPU when OpenMP is not available during compilation
Other
Full Changelog: v1.0.0...v1.1.0
v1.0.0
Changelog
Breaking Changes
- For h5 files, the internal data layout has changed. rayx/rayx-ui wont be able to write/read the old format
RAYX-CORE
- New optical element: Crystal (#380)
- For more information visit our wiki: https://hz-b.github.io/rayx/Model/BeamlineObjects/OpticalElements/Crystal.html
- New optical element: Single layer foil (#391)
- For more information visit our wiki: https://hz-b.github.io/rayx/Model/BeamlineObjects/OpticalElements/Foil.html
- Beamlines are now represented as a tree graph (improved support for grouping of elements) (#350)
- For h5 files, the internal data layout has changed (#374)
- Each attribute is stored separately
- Each attribute may or may not be stored, depending on format options set (
--format ...flag)
- May record events from a single element only (#365)
- May record specific attributes of events only (#374)
- Advance electric field using optical path length (#394)
- Rework verbose mode console output (
--verboseflag) - Fix efficiency calculation
- Updated dependency
alpakato version2.0.0(https://github.com/alpaka-group/alpaka/releases/tag/2.0.0) (#399)- Inherently, the build dependency
boostwas dropped in rayx
- Inherently, the build dependency
- By default, rayx-core now compiles for all major cuda architectures (#399)
RAYX (cli)
- Rename cli format options
-F,--format TEXT Write specific Ray attributes to output H5 files. Provide a space-separated list of attributes. default value: "path_id position_x position_y position_z event_type direction_x direction_y direction_z energy electric_field_x electric_field_y electric_field_z path_length order element_id source_id " - Add cli option to dump meta data of h5 and rml files
-D,--dump TEXT Dump the meta data of a file (h5 or rml) - Add cli option to record events from a single element only
-R,--record-element INT Record events only for a specifc element - Add cli option to specify output filepath of csv or h5 files (#366)
-o,--output TEXT Output path or filename
RAYX-UI
Other Changes
- Improved ease of compilation using
compile.shscript (#385) - Add CMake option to enable/disable OpenMP backend (#357)
- Add CMake option to build
rayx-coreas static lib (#343) - Enable use of rayx as a submodule in another project (#359)
- Add shell.nix file, for starting a nix-shell environment, containing all dependencies required to build (#389)
New Contributors
- @JonasTrenkler made their first contribution (#357)
Other
Full Changelog: v0.21.2...v1.0.0
Probably coming soon
- Mac support including multithreaded tracing on CPU using OpenMP (arm, x86)
- Nix flake for reproducable dependency handling to make developing and building rayx more accessible
- Multi layer foil
v0.21.2
Changes
RAYX-CORE
- Improve tests on correctness for gratings by @fannyzotter in #307
- Rework Refrac2D by @fannyzotter in #308
- Exchange Vulkan GPU tracer with Alpaka (using Cuda) and enable multithreaded CPU tracing. by @ichinii in #304
- adapt compile.sh by @ichinii in #317
- Rework/core classes by @Atraxus in #316
- Exchange custom math library with std math library for complex numbers and trigonometry
- Minor bug fixes
RAYX-UI
- RAYX-UI Cleanup by @Atraxus in #292
- RAYX-UI Optimization by @EnricoAhlers in #305
- Rework file dialog by @Atraxus in #290
- New: UI for beamline design by @EnricoAhlers in #296
New Contributors
Full Changelog: v0.20.0...v0.21.0
v0.20.0
Changes
RAYX-UI
- UI restyling
- Added dockspace for more flexibility
- UI Scale slider
- Improvements for tracing with RAYX-UI
- Loading witout h5
RAYX-CORE
- Improved flexibility for optical elements (cutout, surface, behaviour)
Known Bugs
- RAYX-UI can crash on ubuntu when opening the file dialog
- use -i CLI argument for now if that is the case, we are working on a fix
v0.19.4
Changes
- Improve robustness of rayx-ui optical element rendering
- Fixing asset distribution for rayx-ui
- Fixing script distribution for rayx
v0.19.3
Changes
- Fixing shader distribution with binaries again
v0.19.2
Changes
- Fixing shader distribution with binaries
- Fixing material data distribution with binaries
- Documentaion improvements
v0.19.1
Changes
- Fixing shader distribution with binaries
v0.19.0
Changes
- rayx-core:
- Added optical elements
- Paraboloid
- Added light sources
- Simple Undulator
- Pixel Source
- Dipole Source
- Improved code consistency for optical elements and light sources
- Improved test suite
- Fixes for RZP tracing
- Added optical elements
- rayx:
- Added more options to customize the export of rays and speed up the tracing
- Added option to choose GPU
- Improved runtime by optimizing data handling
- rayx-ui:
- Added orthographic camera
- Added footprints/heatmaps/histograms for simple optical elements
- Changed default camera position and orientation
- Jump to light source is possible now
- Correctly render slits
- Fixed positioning of light sources
- Fixed triangulation bugs
- Fixed general rendering bugs
- General bugfixes and documentation updates
Release v0.18.0
Changes
- Addition of first prototype for RAYX-UI, which allows rendering of beamlines
- Added -s option for sequential tracing
- Added option for specific h5 format when exporting rays
- Bug fixes for the RZP (but still being worked on)
- Added additional benchmarking tools
- Exposed additional RAYX-CORE features for outside use
- Improved documentation
- Improved software testing