Version history

1.6.0 (17 Jul 2023):
1.5.0 (8 Sep 2022):
1.4.0 (22 Sep 2021):
  • Major update for the undulator sources module:

  • Custom synchrotron sources calculation extended for non-periodic cases, including bending magnets.

  • Multiple performance optimizations, Gauss-Legendre grid replaced with Clenshaw-Curtis.

  • Extended functionality to estimate and visualize convergence.

  • Added pure NumPy implementation for near field model and custom magnetic structures.

  • Added setters and getters, doing reset() is no longer required after post-init update of parameters.

  • Added asymmetric angular limits.

  • Angular limits get automatically extended to account for divergence/emittance, important if used with the slits/apertures matching angular acceptance.

  • Enable closed surfaces in xrtGlow.

  • Bug fixes.

1.3.5 (19 Nov 2020):
  • Bug fixes.

  • Variable d-spacing in crystals given by a user method; thanks to H. Gretarsson (DESY) for testing.

1.3.4 (21 May 2020):
  • Bug fixes and minor updates.

  • Several user stories made us insert warnings in the code and explanations in the docs about the proper usage of mesh-based methods of xrt Undulator.

  • Added custom orientation to apertures.

  • Added undulator source size from FT of the back propagated angular distribution (following Coïsson [Coïsson]). The description to come in a paper about coherence properties.

1.3.3 (11 Mar 2019):
  • Added mosaic crystals. (thank you to B. Kozioziemski (LLNL) for deep testing)

  • Added Polygonal Apertures.

  • Bug fixes and minor updates.

1.3.2 (7 Jun 2018):
  • Bug fixes and minor updates.

1.3.1 (24 May 2018):
1.3.0 (25 Mar 2018):
  • Addition of xrtGlow – a 3D beamline viewer.

  • Almost all old examples can now be viewed in xrtGlow as well, just select a proper value for the switch showIn3D. Those example scripts having a generator for making scans can also save a movie – a series of grabbed 3D views, as e.g. in here.

  • The documentation has moved to Read the Docs. It loads much faster and builds automatically from GitHub xrt sources.

  • Added ‘Chantler total’ (see Material) to the list of absorption tables. This table also adds inelastic scattering channels to the photoelectric absorption cross-section (thanks to B. Kozioziemski (LLNL) for discovering the need).

  • Added modelling of interdiffusion/roughness interface to Multilayer. Added Coated material – a derivative class from Multilayer with a single reflective layer on a substrate.

  • A new module coherence that has functions for 1D and 2D analysis of coherence and functions for 1D plotting of degree of coherence and 2D plotting of eigen modes. Reworked analysis of coherence in SoftiMAX at MAX IV example.

  • Added electron energy spread dependence to the linear and angular sizes of undulator source. See the formulation and an application example.

  • Added tests of optical elements which currently have a test for asymmetric crystal optics (phase space volume conservation) and a test with backscattering at highly asymmetric crystals (comparison with experiment).

  • Speed tests include wave propagation on CPU and GPU nodes.

  • Numerous updates.

1.2.4 (3 May 2017):
  • Reworked and extended Speed tests.

  • Minor bug fixes and updates.

1.2.3 (19 Mar 2017):
  • Minor bug fixes.

1.2.2 (17 Mar 2017):
  • Numerous minor bug fixes and updates.

1.2.1 (19 Sep 2016):
  • Added SRW to some comparisons of synchrotron sources. See here.

  • As the major browsers stop supporting flash animations, we have rebuilt all our animations on the documentation pages. The images are now animated in JavaScript and feature on spot zooming by mouse click (not in IE though). The total size of the images has become smaller at better image quality and bidirectional animations (doubled number of frames).

  • xrtQook works now with Qt versions up to 5.7.

  • Minor bug fixes and updates.

1.2.0 (09 Jul 2016):
  • We’ve created a repository on GitHub.

  • Added custom field undulator, see an example.

  • Improved and optimized formulas of undulator source, resulting in correct behaviour at high energies, see here.

  • Prepared for singular optics (vortex beams): added GaussianBeam and LaguerreGaussianBeam as geometric sources. We have used them for testing our Kirchhoff integration. The tests demonstrate identical images in analytical and numerically diffracted fields, see here.

  • Modified CRLs to get loops over the lenses internally by multiple_refract method. The number of lenses can also be calculated internally given energy, material and focal distance.

  • Several minor bug fixes and updates.

1.1.0 (26 Mar 2016):
  • xrtQook – a GUI for creating scripts. Tested with Python 2 and 3, PyQt4, PyQt5 and PySide, Windows and Linux.

  • The examples have been restructured such that the creation of plots and scan generators has moved into module-level functions. With this structure, the examples are better readable.

  • Re-written startup routines for running OpenCL codes.

  • Improved alignment of highly asymmetric crystals.

  • Several minor bug fixes and updates.

  • The documentation has switched to MathJax from pngmath (nicer view of mathematical formulas).

1.0.2 (21 Jan 2016):
1.0.1 (07 Jan 2016):
  • Bug fixes.

1.0.0 (05 Jan 2016):
  • xrt can now calculate sequential wave propagation. Added example for a complete beamline comparing pure ray tracing, rays+wave combination and pure wave propagation.

  • Added analysis of correlation functions as means of quantifying coherence properties.

  • Added example for using mirrors with a figure error defined as a tabulation or a function.

  • xrt can now run in both Python branches: 2 and 3, without translation.

  • The usage of pyopencl is extended to include multiple simultaneous platforms/devices.

  • Physical constants are unified in a single module physconsts.

0.9.99 (12 Apr 2015):
0.9.5 (Dec 2014):
  • HemisphericScreen has been added.

  • Extra angles for OE misalignments.

  • The constructor of apertures has changed! It now has center field, as many other objects. Before, it had x and y. This change requires small modifications in old application scripts.

  • Example of von Hamos spectrometer and comparison with Rowland circle based spectrometers.

  • Minor bug fixes.

0.9.4 (13 Jun 2014):
  • Near field calculations of undulators.

  • Search for intersections of rays with surface done with OpenCL.

  • Rotations of optical elements have been revised. Now, the sequence of pitch, roll and yaw can be re-defined by the user, which can be convenient when rotations are more than one.

  • Minor bug fixes.

0.9.3 (23 Apr 2014):
  • CrystalFromCell is added. Now, crystals of “any” structure can be ray-traced, not only of fcc and diamond-like structures, as was before.

  • Minor bug fixes.

0.9.2 (03 Apr 2014):
  • The code is prepared for fully automatic 2to3 conversion.

  • Undulator can now have a tapered gap.

  • Undulator can now be calculated on GPU.

  • Natural source size of undulator radiation is now \(\sigma_R = \sqrt{2\lambda L}/(2\pi)\), as by Walker, by Ellaume and by Tanaka and Kitamura; the value by Kim (the orange booklet) is \(2\sqrt{2}\) times smaller.

0.9.1 (08 Jan 2014):
  • Minor bug fixes in OEs and examples.

0.9.0 (03 Jan 2014):
  • Internal implementation of synchrotron sources. Roman Chernikov as co-author of xrt.

  • Minor new features and minor bug fixes.

  • Example of bent tapered polycapillary.

0.8.1 (12 Sep 2013):
  • Bug fixes.

0.8.0:
  • Synchrotron sources (external),

  • Absolute flux units,

  • Coloring by power,

  • Power density isolines,

  • Gratings,

  • FZPs,

  • Bragg-Fresnel optics,

  • Multiple reflections,

  • Non-sequential optics.

0.7:
  • Several examples are generated on refractive and crystal optics: single- and double- crystal monochromators in Bragg and Laue geometries, bent and ground-bent crystal analyzers in Bragg and Laue geometries with optionally diced crystals, compound refractive lenses, plane and bent quarter-wave plates in Bragg and Laue geometries.

0.6:

materials created for getting properties of elements, materials and crystal optics

0.5:

raycing implemented with material- and polarization- dependent reflectivity

0.4:

Own ray-tracing backend (raycing) implemented without intensity (reflectivity) and without synchrotron sources