|
2 | 2 |
|
3 | 3 | ### Breaking Changes |
4 | 4 |
|
5 | | -* For h5 files, the internal data layout has changed. rayx/rayx-ui wont be able to write/read the old format |
6 | | - |
7 | 5 | ### RAYX-CORE |
8 | | -* New optical element: **Crystal** (https://github.com/hz-b/rayx/pull/380) |
9 | | - * For more information visit our [wiki](https://hz-b.github.io): https://hz-b.github.io/rayx/Model/BeamlineObjects/OpticalElements/Crystal.html |
10 | | -* New optical element: **Single layer foil** (https://github.com/hz-b/rayx/pull/391) |
11 | | - * For more information visit our [wiki](https://hz-b.github.io): https://hz-b.github.io/rayx/Model/BeamlineObjects/OpticalElements/Foil.html |
12 | | -* Beamlines are now represented as a tree graph (improved support for grouping of elements) (https://github.com/hz-b/rayx/pull/350) |
13 | | -* For h5 files, the internal data layout has changed (https://github.com/hz-b/rayx/pull/374) |
14 | | - * Each attribute is stored separately |
15 | | - * Each attribute may or may not be stored, depending on format options set (`--format ...` flag) |
16 | | -* May record events from a single element only (https://github.com/hz-b/rayx/pull/365) |
17 | | -* May record specific attributes of events only (https://github.com/hz-b/rayx/pull/374) |
18 | | -* Advance electric field using optical path length (https://github.com/hz-b/rayx/pull/394) |
19 | | -* Rework verbose mode console output (`--verbose` flag) |
20 | | -* Fix efficiency calculation |
21 | | -* Updated dependency `alpaka` to version `2.0.0` (https://github.com/alpaka-group/alpaka/releases/tag/2.0.0) (https://github.com/hz-b/rayx/pull/399) |
22 | | - * Inherently, the build dependency `boost` was dropped in rayx |
23 | | -* By default, rayx-core now compiles for all major cuda architectures (https://github.com/hz-b/rayx/pull/399) |
| 6 | + |
| 7 | +* New optical element: **Multi Layer Mirror** |
| 8 | + * support for up to 1000 coatings |
| 9 | +* New source: **Ray List Source** |
| 10 | + * user can provide a list of rays to be taced |
| 11 | +* Generate rays on selected device |
| 12 | + before, rays were generated from sources on the cpu, singlethreaded |
| 13 | + now, ray generation will take place on the selected device, gpu or cpu, multithreaded |
| 14 | + * record generated rays, so they can be analyzed and plotted by the user |
| 15 | +* Changes in Ray attributes |
| 16 | + * refactor `path_length` to `optical_path_length` |
| 17 | + before, represented the geometrical path length |
| 18 | + now, represents the optical path length |
| 19 | + * refactor `element_id` to `object_id` |
| 20 | + before, an event refered to an element |
| 21 | + now an event may relate to generated rays from a source or element |
| 22 | +* Drop support for misalignment |
| 23 | + * 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 |
| 24 | +* Rework reading and writing rays to csv file |
| 25 | + * improve readability of csv files |
| 26 | + * allow scientific notation |
| 27 | + * use precise number of digits for floating point numbers |
| 28 | + * add ability to write integers and strings |
| 29 | + * use ray attribute mask, to determine what attributes are written |
| 30 | +* Extend beamline tree (`class BeamlineNode`, `class Group`) |
| 31 | + * add node to tree, release node from tree, reparent node, find node |
| 32 | + * add bijection between sources/elements and object_id |
| 33 | +* Extend `struct Rays` (structure of arrays) |
| 34 | +* Make more types be used in type-safe manner, in preparation to make them available from rayx-python (https://github.com/hz-b/rayx/pull/415) |
| 35 | +* Several performance optimizations |
| 36 | + * use rays in SoA fashion, including gpu kernels, allows for masking recorded attributes as early as possible |
| 37 | +* Fix energy distribuition type: list of weighted values for photon energy (dat file) |
| 38 | +* Fix single precision calculation in conversion from global to local electric field and calculation of degree of polarization. use double precision |
24 | 39 |
|
25 | 40 | ### RAYX (cli) |
26 | 41 |
|
27 | | -* Rename cli format options |
28 | | -`-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 "` |
29 | | -* Add cli option to dump meta data of h5 and rml files |
30 | | -`-D,--dump TEXT Dump the meta data of a file (h5 or rml)` |
31 | | -* Add cli option to record events from a single element only |
32 | | -`-R,--record-element INT Record events only for a specifc element` |
33 | | -* Add cli option to specify output filepath of csv or h5 files (https://github.com/hz-b/rayx/pull/366) |
34 | | -`-o,--output TEXT Output path or filename` |
| 42 | +* Add cli option to override the number of rays in the sources of the traced beamline |
| 43 | +`-n,--number-of-rays INT Override the number of rays for all sources` |
| 44 | +* Add cli option to sort output events by object_id. This can speed-up analysis when plotting per object |
| 45 | +`-O,--sort-by-object-id Sort rays by object_id before writing to output file` |
| 46 | + |
| 47 | +* Enable usage of option `-o` to specify output directory of trace results for multiple rml inputs |
35 | 48 |
|
36 | | -### RAYX-UI |
| 49 | +* rework cli parsing |
| 50 | + * add capability to positional arguments |
| 51 | + by default arguments will be treated as RML input |
| 52 | + e.g. `./rayx my_beamline.rml my_other_beamline.rml` |
| 53 | + this allows for double clicking rml files in the file manager to run rayx. just set rayx as default application for file extension `.rml` |
| 54 | + * add capability to array-like arguments |
| 55 | + e.g. `rayx my_beamline.rml -A position_x position_z` |
| 56 | + * use `--` to terminate the list of values to an array-like argument) |
| 57 | + e.g. `./rayx -A position_x position_z -- my_beamline.rml` |
37 | 58 |
|
38 | | -* Improve Wayland support on Linux (https://github.com/hz-b/rayx/pull/353) |
39 | | -* Add flag to run in verbose mode (`--verbose` flag) (https://github.com/hz-b/rayx/pull/351) |
| 59 | +* Rename some of the cli arguments |
| 60 | +* Validate output events |
40 | 61 |
|
41 | 62 | ### Other Changes |
42 | | -* Improved ease of compilation using `compile.sh` script (https://github.com/hz-b/rayx/pull/385) |
43 | | -* Add CMake option to enable/disable OpenMP backend (https://github.com/hz-b/rayx/pull/357) |
44 | | -* Add CMake option to build `rayx-core` as static lib (https://github.com/hz-b/rayx/pull/343) |
45 | | -* Enable use of rayx as a submodule in another project (https://github.com/hz-b/rayx/pull/359) |
46 | | -* Add shell.nix file, for starting a nix-shell environment, containing all dependencies required to build (https://github.com/hz-b/rayx/pull/389) |
47 | 63 |
|
48 | | -## New Contributors |
49 | | -* @JonasTrenkler made their first contribution (https://github.com/hz-b/rayx/pull/357) |
| 64 | +* Fallback to single-threaded tracing on CPU when OpenMP is not available during compilation |
50 | 65 |
|
51 | 66 | ## Other |
52 | 67 |
|
53 | | -**Full Changelog**: https://github.com/hz-b/rayx/compare/v0.21.2...v1.0.0 |
54 | | - |
55 | | -<!-- ### Runtime Performance Comparison --> |
56 | | -<!-- Runtime performance compared to the previous release (https://github.com/hz-b/rayx/tree/v0.21.2) --> |
57 | | - |
58 | | -## Probably coming soon |
59 | | - |
60 | | -* Mac support including multithreaded tracing on CPU using OpenMP (arm, x86) |
61 | | -* Nix flake for reproducable dependency handling to make developing and building rayx more accessible |
62 | | -* Multi layer foil |
| 68 | +**Full Changelog**: https://github.com/hz-b/rayx/compare/v0.1.0...v1.0.0 |
0 commit comments