Skip to content
Thomas Kittelmann edited this page Aug 31, 2017 · 36 revisions

NCrystal : a library for thermal neutron transport in crystals

NCrystal is a library and associated tools which enables calculations for Monte Carlo simulations of thermal neutrons in crystals, focusing initially on scattering in single-crystals or polycrystalline materials and powders, including both coherent elastic (Bragg) diffraction and various models for inelastic scattering on phonons. Written in C++, interfaces and infrastructure facilitate integration into existing simulation frameworks such as Geant4 or McStas, as well as allowing direct usage from C++, C or Python code or via command-line tools. While the C++ library is designed with a high degree of flexibility in mind for developers, typical end-user configuration is deliberately kept simple and uniform across various applications and APIs - this for instance allows tuning and validation of a particular crystal setup to be performed in one tool before it is then deployed in another.

NCrystal comes with a set of validated data files, including many crystals important at neutron scattering facilities. For more information, visit the data library.

Supporting compilation with all C++ standards, the code has no third-party dependencies and is available under a highly liberal open source license (Apache 2.0).1 It was developed in close collaboration by Xiao Xiao Cai (DTU, ESS) and Thomas Kittelmann (ESS) and was supported in part by the European Union’s Horizon 2020 research and innovation programme under grant agreement No 676548 (the BrightnESS project).

[1]: Some optional components, allowing support for .nxs, .laz and .lau files in addition to the native .ncmat files, are available under a different license due to included third party code.