McStas/McXtrace version 3.6.0
What's Changed - Main Highlights:
Overall release focus:
- Code quality improvements: Suppression of warnings from c-compilers and our static code analysis tool
cppcheck - Continuous integration improvement: Any change in instrument/component code is tested via GitHub CI features
New tool features / capabilities:
mcrun/mxrunsimulation launch tool: (@willend)- Scans can be parallelised at the "step number" level, use
--scan_split. Contribution from @Lomholy. - If installed,
cppcheckcan be used to perform static code analysis on the generated code, use-C/--c-lint? - Improved string-handling in input parameters, e.g. in use with
NCrystalconfig strings. Contribution from @tkittel.
- Scans can be parallelised at the "step number" level, use
mcplot/mxplotsimulation plot tools: (@willend)- Better support for 'intermediate saves' done via
kill -USR2orProgress_bar, and plots should work on an unfinished simulation. - Plotting a completed simulation with 'intermediate saves' will give you latest plot version in the 2D case and multiple, overplotted curves in the 1D case
- The
mcplot-matlab/mxplot-matlabtool is back. You need to manually install either Matlab or Octave to make use of this
- Better support for 'intermediate saves' done via
mcdisplay/mxdisplayinstrument visualisation tools: (@willend)- On
conda-based installations, themcdisplay-cad/mxdisplay-cadtool includes thecadquerydependency. On completion of building the model, the OS is asked to handle the resulting CAD model. - The
mcdisplay-matlab/mxdisplay-matlabtool is back. You need to manually install either Matlab or Octave to make use of this - For better integration with McStasScript, the
mcdisplay-webgl-classic/mxdisplay-webgl-classicis used in such scenarios - The 'newer/fancy'
mcdisplay-webgl/mxdisplay-webglbased onTHREE.js,reactand other javascript requires a slightly time-consuming installation process on 1st launch. The user now gets an info box about this. - The McStas-specific
mcdisplay-mantidIDF generator tool received a bug fix for OFF geometry detectors.
- On
mcdoc/mxdocdocumentation tool: (@willend)- Higher quality / more complete comp/instr doc pages
mctest/mxtesttest tool: (@willend)- Easier to use locally for component/instrument developers
Components and instruments:
McXtrace:
- The
Fluorescencecomponents have a new flag to enhance statistics/signal from low concentration materials. Work by @farhi.
McStas:
- The
Unionsubsystem now handles 'surface physics' with the introduction of a system of refraction/reflection processes on geometry surfaces. Work by @mads-bertelsen. - The
Unionsubsystem now has a functional 3D-mesh system (Union_mesh) that supports CAD style geometries. (Ascii/binary STL files and OFF files are supported. - For now only those with triangular meshing.) Work by @Lomholy. - As part of the overall code-quality improvement process, various aspects of the
Unionsubsystem have been tested / improved / revised. Contributions by @tkittel and @willend in close collaboration with @mads-bertelsen. - New ISIS-related instrument files, components and data:
ISIS_LETby Ross Stewart and Rob Bewley, serves as test-instrument forCommodus_I3(ISIS source model - corresponds toViewModISISwith a different parameter interface)- Updated / larger set of input files for the ISIS moderator components
Multilayer_samplefrom Rob Dalgliesh was updated withnrepeatswhich allows to repeat an SLD material stack.ISIS_CRISPwas updated to include this feature.TOF_PSDmonitor_toQis a new component with built-in data reduction from Rob Dalgliesh. Uses ToF to calculate Q.Test_TOF_PSDmonitor_toQis a basic instrument to showcase the component.
- Several of the basic McStas sample components received a systematic validation against analytical methods, thanks to @Lomholy with help from KU/NBI students.
- As part of the overall code-quality improvement process, the whole component / instrument base got a BIG overhaul as such (@willend)
Platform support:
- The Windows/
condaplatform which uses theMSVCcompiler is now fully functional for all McStas code and a good part of the McXtrace code. As part of this process a new header-filemccode-complex-lib.hshould be used by all code requiring complex numbers. (Implements functions for e.g.+-*/operations across platforms - MSVC does not self implement these operations...) @willend
What's Changed - Details:
Common changes to McStas and McXtrace
-
Code quality improvements
- Remove compiler warnings by @willend in #2088
- Implement 'cppcheck' linting support on Unix, can be utilised via mcrun or mctest by @willend in #2090
- Big overhaul of many component docstings, retire obsoleted components and instruments, component fixes by @willend in #2117, #2118, #2116, #2120, #2119, #2115, #2122, #2125, #2144, #2153, #2154, #2156
- Linter-oritented fixes in various components by @willend in #2136, #2248
- Clean up various components / libs where linter output was a bit 'noisy' by @willend in #2218
- Suppres warning from MSVC by using %zi in place of %li by @willend in #2220
-
User gui / command line tools:
- mcrun:
- Run scan steps in parallel - one scan step pr. one cpu core by @Lomholy in #2081 (similar to now-deprecated, historical feature of mcrun.pl)
- Implement env vars to override mpirun setting by @willend in #2087 (
MCSTAS_MPIRUN_OVERRIDE/MCXTRACE_MPIRUN_OVERRIDE) - Implement 'cppcheck' linting support on Unix, use
mcrun -Cor mcrun--c-lint - Improved error-handling in mccode.py by @willend in #2139
- Fixes for parameter quoting issues by @tkittel in #2151
- mcgui:
- mcplot:
- Use multiple # Data entries in output files if -USR2 is used for intermediate saves by @willend in #2181
- mcplot plot only last # Data block in files with multiple entries by @willend in #2182
- Bring back mcplot-matlab/octave by @willend in #2256
- Correct visualisation artefacts in Matlab/multiline mcdisplay by @willend in #2257
- mcdisplay:
- Let mcdisplay-webgl and -classic honour -d directory by @willend in #2093
- mcdisplay-webgl 1st run notice (wait until node.js install is done) @willend in #2140
- Bring back mcdisplay-matlab/octave by @willend in #2256
- Correct visualisation artefacts in Matlab/multiline mcdisplay by @willend in #2257
- Minor tool improvements: mcdisplay-cad by @willend in #2258
- mcdoc:
- mcdoc is now more tolerant to e.g. missing asterisks in header by @willend in #2121
- mcdoc fills in "short description" if not found by parsing by @willend in #2123
- Improve clarity of mcdoc Generate buttion and clipboard by @willend in #2141
- Allow mcdoc to work with --dir . by @willend in #2147
- Bugfix to filtered search #2148
- Fix mcdoc for single-file search (e.g. BNL_H8.instr) by @willend in #2166
- Mcdoc patch, tolerate missing ^* in header description / parameters by @willend in #2179
- mctest:
- Implement 'cppcheck' linting support on Unix, use
mctest --lint - Update mctest with log of attained test value by @willend in #2161
- Add --local=DIR input to mctest, will test instruments from that folder instead of 'system' by @willend in #2221
- Add mctest feature to filter tested instruments by use of given COMP by @willend in #2236
- Implement 'cppcheck' linting support on Unix, use
- mcrun:
-
Code generator/Grammar/runtime libs:
-
Common work on McStas / McXtrace components
McXtrace specific:
McStas specific:
-
Sample components, validation-work / alignment with analytical expressions by @Lomholy in:
- Phonon_simple by @Lomholy in #2082 and #2094, @willend in #2195, @mads-bertelsen in #2215
- SANS_Spheres to align with analytical validations. by @Lomholy in #2083
- PowderN, add in order parameter to make it possibly to use no multiple scattering by @Lomholy in #2098
- Single_crystal, added MPI_MASTER to selected printf statements by @aaronfinke in #2169
- KU-SANS-samples, tweak expected values in Test_SANS by @willend in #2209
-
NCrystal
-
Tools/mcdisplay-mantid:
-
Optics components
-
Monitor components
-
Union components
- Union surface and fix of focus system by @mads-bertelsen in #2149, #2203
- Add new scattering_process_struct_init function for union processes by @tkittel in #2177
- Followup fix to #2177 with correct order of memset args by @tkittel in #2196
- Off file mesh msvc linter patches by @willend in #2229
- Off file mesh component by @Lomholy in #2219, #2249
- Support for binary STL also on Windows by @Lomholy in #2260
- Union cleanup before release by @mads-bertelsen in #2243
- Mesh surface compatibility by @mads-bertelsen in #2251
- Fix union lib surface stack by @willend in #2253
- Removing debug prints from Sphere and 3D logger in Union. by @mads-bertelsen in #2252
-
New comps and instruments
-
Developer tools / User contribution tools
Behind the scenes:
-
Deployment and CI
- The 'autobuild' workflows automatically build non-conda packages for McStas and McXtrace on any new release tag by @willend in #2079
- Automated testing of modified instrs/comps by @willend in #2100, #2101, #2102
- Nightly tests based on conda by @willend in #2106
- CI: Run "full test" in case 20 or more comps/instrs have been changed. by @willend in #2126
- Transition to conda-based basictests for Windows and macOS by @willend in #2191
- Handle case with single modified comp (and no matching instr) better by @willend in #2197
- Minor ci change: Avoid running duplicate version of same instr by @willend in #2223
- Deploy --comp=COMP filter to test instruments including changed components by @willend in #2238
-
Platform support
- Windows + Conda, update install-docs (#2245, thanks @LelandWH) by @willend in #2246
- Complex number support on Windows with MSVC (#2192 complex numbers) by @willend in #2205, #2207, SANSPDB/SAXSPDB only by @willend in #2208, #2210 and Update headers in complex-lib by @willend in #2216
- Fix for ppc64 Linux (conda-forge platform for IBM Power systems) by @willend in #2085
- Win32 "define-massage" to ensure proper execution with recent MinGW releases by @willend in #2135
- Remove duplicate rpaths on macOS by @willend in #2140
- Add grep in "monolithic" windows builds by @willend in #2152
- Qt message box for error message by @willend in #2164
- -DUSE_NEXUS defines were missing for Windows / NeXus by @willend in #2167
- Consolidate micromamba bulky installers by @willend in #2183
- Fixes for mctest windows nexus: Should now function with .h5 output by @willend in #2206
-
General maintenance
- Minor fixes, contributions from Daniel Lomholt by @willend in #2108
- Fix header typo by @willend in #2109
- GPU-related edits for V Transmission_V_polarisator.comp and Test_StatisticalChopper.instr by @willend in #2110
- If running under conda, add env prefix when saving/loading user mccode_config by @willend in #2142
- Temporarily, avoid deploying xraylib via brew on macOS 15 by @willend in #2145, #2146
- Fix SDKROOT assignment for macOS configuration by @willend in #2157
- Fix to autobuild scripts, remove v from tag... by @willend in #2170
- Drop xrl-based test on macOS (we should use conda instead) by @willend in #2180
- Remove mcplot-html dep python3-pyqt5.qtsvg to get python3-pyqt6.qtsvg by @willend in #2184
- Suppress superfluous debug string in mctest by @willend in #2185
- Temporarily disable test McXtrace randvec_target_rect by @willend in #2186
- Beef up statistics 20 fold on Test_RNG instruments by @willend in #2187
- Drop macOS 13 which will soon be deprecated by @willend in #2189
- Partial revert on macOS bundle injector by @willend in #2193
- Adjustment of %Example values that were off for the nightly test scenarios by @willend in #2194
- Use rglob in cleanfiles tool, rmtree in case of out.dsym by @willend in #2211
- Clean simdirs by @willend in #2212
- Update workflows to use same simdir cleanup strategy everywhere by @willend in #2213
- Various work on CI output and platforms by @willend in #2217
- GPU box update by @willend in #2233
- Recent linter patches require corrections for GPU/OpenACC... by @willend in #2235
- Deprecate unused features of 'mctest' by @willend in #2239
- Add timestamp to 'testroot' folder to avoid double-layer file structure by @willend in #2241
- Restore ability to "run version via config file" in mctest by @willend in #2244
- Preparations 3.6 by @willend in #2254
New Contributors
- @aaronfinke made their first contribution in #2169
Full Changelog: v3.5.32...v3.6.0