Skip to content

mcxtrace-1.7.1-release

Compare
Choose a tag to compare

December 16th 2022: McXtrace 1.7.1 and McXtrace 3.1 released

Dear all, A new PAIR of releases of McXtrace:

McXtrace "classic" v. 1.7.1
McXtrace "next-generation", v. 3.1
are both built and ready for download!
Download and installation instructions are available via our GitHub INSTALL-doc pages and also available for some platforms below.

Selected highligts from the releases are listed below. The full list of changes for both releases is also available at our CHANGES_McXtrace document

Please start your migration to 3.x:

McXtrace 1.7.1 is very likely the "last update" to the 1.x series, sharing a subset of tool features with McXtrace 3.1. The Wiki has a dedicated section on McXtrace 1.x -> McXtrace 3.x conversion that includes:

An overview of differences
A nomenclature list containing short descriptions of new concepts and important keywords in McXtrace 3.x and OpenACC / CUDA code in general.
A document outlining the most importand differences between 1.x and 3.x.
A guide for 1.x -> 3.x instrument conversion.
A guide for 2.x -> 3.x component conversion.

  • If you are still in trouble, please write us a GitHub issue or an email to [email protected]

Release highligts
(!!3.1 only denotes features or improvements that are 3.1 specific!!)

Documentation & guides:
The component pages now include an extra column in the parameter-table. When filling in this column with wanted values, plus filling the entry-boxes for AT, ROTATED and instance name, pressing "Generate" will put a code-snipet for your component instance directly on your computer clipboard, for easy transfer to the mxgui editor or any other editor of choice!
mxdoc has been made "less picky" wrt. component and instrument structure for a more robust experience.
mxgui has a new "Docs" button for easier access to the generated mxdoc pages (that give easy access to components, instruments, manuals, datafiles and more.
Interoperability with other codes:
We have worked on the interface with MCPL (v. 1.6.1 included) and a mechanism was developed to automatically detect its location using the mcpl-config util. In practice this happens prior/during to the code-generation step, see below under mxrun. Thanks to Thomas Kittelmann (ESS) for your help in this area.
Tools:
mxrun has a new solution to support 3 new keywords CMD(), ENV() and GETPATH() through the DEPENDENCY line as collected by the code-generator. (see CHANGES doc for more details)
As mentioned above, mxdoc has been made "less picky" wrt. component and instrument structure and enriched with JavaScript for easy transfer of information to you editor.
mxplot(-pyqtgraph) has received a nice update with an infobar at the bottom of the window. The infobar is updated with coordinates of the cursor on the active plot, meaning that you can easily determine the coordinates of e.g. a peak. The code has also received a number of bugfixes relating to colorbars, the order of monitor output in overviews etc. Thanks to Tobias Weber (ILL) for your work on mxplot.
3.1 only: The new mxdisplay-cad variant has come along, and is currently included in the form of a technology-preview. The code uses the Python module cadquery (https://github.com/CadQuery/cadquery) and is able to write e.g. STEP or STL output. For now, resolving the required dependencies is left to the user, but we foresee that this tool will mature over the coming releases. Thanks to Greg Tyler (ESS) for contributing this tool.
Components and Instruments:
3.1 only: Most of the standard monitors will now fill in their own "instance name" as filename in case a filename was not defined. A small but very useful convenience.
The Isotropic_Sqw sample which can be used to model structure and dynamics in isotropic materials, such as powders and liquids has been added. The component is developed by Emmanuel Farhi and also exists in the McStas code. The component is currently in "Experimental" state in McXtrace.
Multiple new SOLEIL instruments have been added, thanks to lots of work from Antoine Pado, Stephane Bac and Emmanuel Farhi:
SOLEIL_ANATOMIX.instr tomography beam-line
SOLEIL_DISCO.instr in the imaging mode
SOLEIL_MARS.instr in the XRD mode
SOLEIL_PX2a.instr protein crystallography beam-line
The AstroX toolbox for simulating X-ray telescopes has been included as a special component category.3.1 only: GPU support in the related components/instruments is newly developed and likely not perfect in all cases.
Lens_elliptical.comp fixed
Grating_reflect.comp fixed, and created a test for it.
Udated/fixed Mirror_elliptic.comp and created a test for it.
Beamline ssrl 11-2 (in it's unfocused and uncollimated mode) added (related to work done on glitches).
Czerny_Turner instrument created.
Single_crystal component, corrected absorption cross-section.
Core and libs:
3.1 only: Previously, any component present in a McXtrace instrument would trigger the transformation of every photon to its local coordinate system, even in the case of an Arm() (empty TRACE) without an EXTEND block. We now instead detect components with an empty TRACE that have no EXTEND block and are able to completely skip these in the calculation. This results in a speedup in case of instruments with many "empty" components. Thanks to Mads Bertelsen (ESS) for investigating the problem and finding a good solution.
3.1 only: A new syntax called SHELL has been added to the grammar, allowing users to run a system command prior to code-generation. This may for instance be used to generate an instrument-snippet that you may %include in the instrument (think for-loops of an assembly of identical components). One could also imagine compilation of a needed library, wget of a data file etc. The synax is SHELL "command-to-execute" and it should be placed directly after a DEPENDENCY line within an instrument or component. We expect that applications and examples will come in the next couple of releases.
3.1 only: Components may from McXtrace 3.1 request USERVARS that become part of the particle struct. (For the time being only in the form of basic C types like double, int etc. and corresponding arrays / pointers.) This will mean that e.g. the optimisations in Single_crystal and PowderN in SPLIT scenarios can be introduced also in GPU settings.
A flaw was spotted in our NeXus implementation in the case of event lists: A small chunk-size of (1,6) was used, leading to slow I/O and lots of size-overhead. Thanks to Simon Heybrock (ESS) for spotting this!
Platforms:
We still support 64bit Windows 10/11 on Intel, all recent 64bit macOS including 11.x - 13.x Monterey on both Intel and Apple Silicon/M1 processors. Debian/Ubuntu-based distros on Intel and Arm, our RPM-based distro is Fedora on Intel. (Official support for CentOS has been dropped, but you should be able to "roll your own" from the src packages.)

Our Docker and binder containers will be updated within the following weeks.

We hope you will enjoy these new releases!!!