McStas - A neutron ray-trace simulation package
McStas is a general tool for simulating neutron scattering instruments
and experiments. It is actively supported by
DTU Physics,
NBI KU,
ESS,
PSI and
ILL.
|
Simulated
scattering from a hollow-cylinder vanadium
sample.
| The plot shows the intensity of scattered neutrons (red is
highest intensity). The sample is at the center of the sphere with the
neutron beam coming from the left. Clearly seen is the shadowing effect
of the sample causing a lower intensity opposite the beam. Also seen is
the effect of the non-symmetric geometry of the sample, causing lower intensity
directly above and to the side of the sample.
|  |
Recent news
Migrating from McStas 2.x to 3.x? - Use the wiki-based guides
December 12th, 2025: McStas and McXtrace 3.6.1 released
McStas and McXtrace release 3.6.1 is now available.
McStas installation instructions are found
on GitHub .
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/mxrun simulation launch tool: (@willend)
- Scans can be parallelised at the "step number" level, use
--scan_split. Contribution from @Lomholy.
- If installed,
cppcheck can 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
NCrystal config strings. Contribution from @tkittel.
mcplot/mxplot simulation plot tools: (@willend)
- Better support for 'intermediate saves' done via
kill -USR2 or Progress_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-matlab tool is back. You need to manually install either Matlab or Octave to make use of this
mcdisplay/mxdisplay instrument visualisation tools: (@willend)
- On
conda-based installations, the mcdisplay-cad/mxdisplay-cad tool includes the cadquery dependency. On completion of building the model, the OS is asked to handle the resulting CAD model.
- The
mcdisplay-matlab/mxdisplay-matlab tool 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-classic is used in such scenarios
- The 'newer/fancy'
mcdisplay-webgl/mxdisplay-webgl based on THREE.js, react and 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-mantid IDF generator tool received a bug fix for OFF geometry detectors.
mcdoc/mxdoc documentation tool: (@willend)
- Higher quality / more complete comp/instr doc pages
mctest/mxtest test tool: (@willend)
- Easier to use locally for component/instrument developers
Components and instruments:
McXtrace:
- The
Fluorescence components have a new flag to enhance statistics/signal from low concentration materials. Work by @farhi.
McStas:
- The
Union subsystem now handles 'surface physics' with the introduction of a system of refraction/reflection processes on geometry surfaces. Work by @mads-bertelsen.
- The
Union subsystem 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
Union subsystem 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_LET by Ross Stewart and Rob Bewley, serves as test-instrument for Commodus_I3 (ISIS source model - corresponds to ViewModISIS with a different parameter interface)
- Updated / larger set of input files for the ISIS moderator components
Multilayer_sample from Rob Dalgliesh was updated with nrepeats which allows to repeat an SLD material stack. ISIS_CRISP was updated to include this feature.
TOF_PSDmonitor_toQ is a new component with built-in data reduction from Rob Dalgliesh. Uses ToF to calculate Q. Test_TOF_PSDmonitor_toQ is 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/
conda platform which uses the
MSVC compiler is now fully functional
for all McStas code and a good part of the McXtrace code. As part of
this process a new header-file mccode-complex-lib.h
should be used by all code requiring complex numbers. (Implements
functions for e.g. +-*/ operations across platforms -
MSVC does not self implement these operations...) @willend
For all release details, please refer to the github release page for version 3.6.1
Seasons greetings from all of McStas/McXtrace - and hope you will enjoy this new release!
Peter Willendrup
June 17th, 2025: McStas and McXtrace 3.5.32 released
McStas and McXtrace release 3.5.32 is now available.
McStas installation instructions are found
on GitHub .
What's Changed
Common changes to McStas and McXtrace
- Deployment, platforms and CI
- [CI] Let "autobuild" CI scripts create arm64 debs for mccode.org by @willend in #1981
Tools:
- [Feature] mcgui/mxgui: show current instrument name in dialogues by @farhi in #1989
- [Feature] VSCode McStas/McXtrace grammar extension
- Update vs code extension by @Lomholy in #1975
- Small updates to editor, as well as updated installation information by @Lomholy in #1977
- [Feature] LaTeX math (formulae etc) for mcdoc %Description headers by @willend in #2054
Code generator/Grammar:
- [Feature] Unified McStas/McXtrace, c and .py code generators defined from common set of files in mccode/src
- Unify grammar take2 by @willend in #2008
- Unify instr y c py: unify our code generators for C and Python by @farhi in #2009
- [Feature] NEW
INHERIT keyword in the component grammar: Allows to mix and match component sections from multiple components to achieve new functionality.
For an example use see
- [Feature] Add ADR (Architectural Design Record) for grammar changes
- Add doc folder for proposed, accepted, rejected, deprecated, superseded changes of McCode GRAMMAR by @willend in #2064
- Put in place folder for grammar documentation by @willend in #2070
- [Feature] The McStas/McXtrace code generators have a new commandline switch --version-num to print the version number only.
- [Feature] New CLI default for mcstas / mcxtrace: --trace is on (This allows any compiled instrument to run with --trace=0 by @willend in #2010 and #2023)
Libs and runtime (various minor changes)
- Add Open_File in header (used from e.g. PowderN) by @willend in #2014
- Wrap cabs in OpenACC settings by @willend in #2016
- Swap default trace behaviour to 'enabled' by @willend in #2023
- cif2hkl: update to solve F^2 for Xrays using latest CrysFML by @farhi in #2021
- Openacc minor rectifications by @willend in #2027
MCPL Components
- [Feature] Update MCPL components for MCPL 2.2.0 features (including stat:sum). by @tkittel in #2046
- [Feature] Sync MCPL components McStas <-> McXtrace for MCPL 2.2.0 support by @willend in #2019
- [Feature] Please consult the GitHub discussion on MCPL > 2.0 support in McStas / McXtrace
McStas specific:
- [Bugfix] Source_custom
- Fixed minor typo in docs by @pablogila in #1980
- Fixed pulse normalisation for all values of n by @pablogila in #2024
- Simplified redundant code for the peak integral calculation by @pablogila in #2025
- [Bugfix and feature] Resolution sample/monitor
- Reso: Updates by @tweber-ill in #1992
- Add infrastructure to save calculated resolution/covariance matrices by @willend in #1993
- Sync Res_monitor <-> TOFRes_monitor by @willend in #1995
- [Bugfix] Add mcresplot to debian metapackage by @willend in #2022
- [Bugfix] Monitor_nD pixel id and buffer fix by @mads-bertelsen in #2002
- [Bugfix] Add exit attenuation to Incoherent.comp for finite order scattering by @Lomholy in #2042
- [Bugfix] Updates to Monochromator_bent from @Lomholy by @willend in #2059 and #2058
McXtrace specific:
- [Features and bugfixes] McXtrace fluorescence:
- McXtrace: fix header doc in fluo sample (powder and SX) by @farhi in #1974
- McXtrace fluo fix pow 0 by @farhi in #1979
- McXtrace fluo fix 2 by @farhi in #1988
- McXtrace fluo fix : fix in powder select - use gaussian line shape by @farhi in #1994
- McXtrace: samples: fluo: add M-lines via XrayLib Kissel CSb calls by @farhi in #2004
- McXtrace: samples: fluo: fix again the Fluo share by @farhi in #2005
- McXtrace add fluo mcdisplay by @farhi in #2015
- McXtrace fluo add detector 0 by @farhi in #2029
- [Bugfix] Fix compilation of McXtrace Test_PowderN instr by @willend in #2000
- [Bugfixes] McXtrace various example instrument updates by @farhi in
- [Bugfix] cif2hkl: update to solve F^2 for Xrays using latest CrysFML by @farhi in #2021
- [Feature]McXtrace: add SWING BL at SOLEIL by @farhi in #2036
Full Changelog: https://github.com/mccode-dev/McCode/compare/v3.5.27...v3.5.32
April 29th, 2025: McStas and McXtrace 3.5.27 released
Dear all,
McStas and McXtrace release 3.5.27 is now available.
McStas installation instructions are found on GitHub .
What's Changed - common McStas/McXtrace highlights:
- [Feature] McStas and McXtrace are now fully on conda-forge also
for Windows, since MCPL 2.0 arrived.
This means that we now recommend to install via this mechanism on Windows. See the instructions
for details.
- [Feature]
mcrun/mxrun have a new -y
switch which runs a given instrument using its default parameters.
- [BUGFIX]
mcplot/mxplot should now deal better with
negative / very small numbers in 'log' mode plotting.
- [Feature]
mcgui/mxgui improved tooltips on the run dialogue.
- [Feature]
rootmccode works with newer versions of ROOT
- [BUGFIX] The KISS random number generator was earlier running
with systematically different random numbers (and a shorter period)
on Windows.
Identical instruments now run with identical
random numbers across platforms, when using identical seed.
- [CI, packaging, platform support] Lots of work behind the scenes
for portability, packaging, and improved CI of the code on
GitHub.
Better standard solutions and easier possibility of spotting when/if we make errors!
What's Changed - McStas specific highlights:
- [BUGFIX] As reported on mcstas-users,
reflective/transmissive polarisers/analysers could sometimes lead to
|P|>1.
This is now fixed by ellimination of
"non-up-down" polarisation components when measuring an "up-down"
polarisation.
- [Feature] Contributed component Source_custom by @pablogila,
useful features for simulatiung e.g. CANS and other pulsed
sources.
Comes with corresponding new test instrument.
What's Changed - McXtrace specific highlights:
- [Feature] New components for Fluorescence + Single_crystal and
Fluoresence + Powder.
Come with corresponding new test instruments.
For a full list of changes, please consult the
CHANGES
or
GitHub release notes
April 6th, 2025: Component doc pages back online
We are now in the air with new server hardware.
Among other things this means that component mcdoc pages are back online
- by popular demand!
April 5th, 2025: Ongoing webserver upgrade
We are in the process of upgrading the webserver for McStas,
McXtrace and other sites. Please bear with us if you experience
service interruptions. :-)
February 19th, 2025: McStas and McXtrace 3.5.24 released
Dear all,
McStas and McXtrace release 3.5.24 is now available - McStas installation
instructons on GitHub .
What's Changed
Important note
- McStas and McXtrace will soon change organisation-name on GitHub - from McStasMcXtrace -> mccode-dev
Components and instruments
Interfaces and interoperability with other codes
- Thanks to @g5t for ping-pong on this :)
- [Feature]
mccode-antlr is an alternative code-generator for McStas and McXtrace - a new development by @g5t and based on ANTLR instead of lex/yacc. The new tool is mainly written in python and thus has a lower barrier for changes in language syntax and code generation. The tool implementations mcstas-antlr and mcxtrace-antlr are thus a candidate implementations to potentially replace the classic mcstas and mcxtrace code generators in the future. Current status is that
- McStas:
mcstas-antlr is fully feature complete wrt. mcstas for CPU simulations and close to complete for GPU simulations
- McXtrace: Not all instruments will compile using
mcxtrace-antlr but basic functionality is in place
- To try:
- Install
mccode-antlr from conda-forge or via pip
- Adapt your configuration to use e.g.
mcstas-antlr by
- Setting the new
--cogen=mcstas-antlr option in mcrun
- Enable or edit the
MCCOGEN field of mccode_config.json using the new Save/Edit configuration in mcgui
- (The antlr tools default to download comps etc. to an internal cache: Add e.g.
-I${MCSTAS} to prefer ingredients fromyour local library)
- Use the
mcrun-antlr/mxrun-antlr tools provided directly by mccode-antlr
- Debian/Ubuntu
- Windows
- [Feature] NCrystal is now available with McStas on Windows
- [Info] Windows via cross-compiled
.exeinstaller from mccode.org:
Please place the MCPL-related .bat files from the extras folder in e.g. c:\mcstas-3.5.24\bin to enable MCPL
(May require giving your user 'full access' permissions to the bin folder)
- [Info] Windows via conda-forge: MCPL is not yet available but expected during the spring
Full Changelog: https://github.com/mccode-dev/McCode/compare/v3.5.16...v3.5.24
January 8th, 2025: Monte Carlo Satellite to ICNS2025
Dear all,
The ICNS2025 conference is
taking place in Copenhagen and Lund this summer, and the abstract
submission is closing January 15th - in one week.
Of special interest to McStas users:
A satellite event is being planned for July 11th, arranged by Mads Bertelsen, ESS and Peter Willendrup DTU/ESS.
We envision a one-day event with contributed talks on instrument simulation and its use, abstract submission will open soon:
Advanced computer simulations methods for neutron scattering instruments
Abstract:
Neutron scattering relies heavily on computer simulations of neutron scattering instrumentation to optimize their performance. These simulation tools are also evolving to be more relevant for a running facility, aiding in both preparation and analysis for individual experiments. It is even becoming possible to make better decisions during experiments by running simulations in parallel.
All the best and hope to see you this summer in Copenhagen,
Peter Willendrup
Previous news items: 2024,
2023, 2022, 2021,2020,2019, 2018, 2017, 2016,
2015, 2014, 2013,
2012, 2011, 2010, 2009,
2008, 2007, 2006,
2005, 2004, 2003, 2002, 2001, 2000, 1999,
1998.
Last Modified: Friday, 12-Dec-2025 12:15:02 CET