You are the  visitor.

A C++ implementation of the Reverse Monte Carlo algorithm for Small Angle Neutron scattering data


This is a C++ implementation of the Reverse Monte Carlo algorithm for deriving structures of disordered materials from Small Angle Neutron Scattering (SANS) data, which can be aided by coordination constraints.

What is the difference between RMC and RMCSANS?

Ø      Small angle neutron scattering data can give information about the structure of materials in the size domain nanometre to micrometre. Here composite particles (replacing whole groups of atoms) are the particles in our simulation box.

Ø      Normal RMC simulation models atomic structures based on mainly neutron and/or X-ray diffraction data, and the simulation box contains atoms.

This seems to be only a question of particle size, but due to the contribution of the inner structure of the composite particle to the scattering the theory and so forth the calculation a bit different, so it is important to choose the simulation method appropriately.

What is RMCSANS good for?

If you have small angle neutron scattering data, and you are interested in their structure, then you can build 3-D structural models with RMCSANS hopefully in good agreement with the experimental data. To learn more about conventional RMC, visit the References page of the RMC website.

See the flowchart of the RMCSANS programme and some results here.

History of RMCSANS++

The idea of RMCSANS came from Robert McGreevy in 2007.

The RMCSANS code is based on RMC_multi++, and was written in C++ by by Orsolya Gereben in 2007
 with the help of László Pusztai (Research Institute for Solid State Physics and Optics of the Hungarian Academy of Sciences, Budapest)
with the financial support of
the ISIS.

The initial results of RMCSANS were presented at the RMC-4 conference in 2009.

If you use RMCSANS++, please cite:

O Gereben, L Pusztai and R L McGreevy: RMCSANS—modelling the inter-particle term of small angle scattering data via the reverse Monte Carlo method

J. Phys.: Condens. Matter 22 (2010) 404216


How to use RMCSANS++

A short manual is describing the functionalities and usage of the RMCSANS programme.


Visualization with AtomEye3.1

If Atomeye option is selected, then RMCSANS can produce AtomEye format configurations files (see the manual about the details), and the configurations can be visualized by Atomeye3.1 during or after the simulation. AtomEye is originally written by J. Li and modified to create AtomEye3 by S. Futoshi, and it is an atomistic configuration viewer with lots of capabilities. As this software can only handle atoms, it had to be modified to display our composite particles with custom size, to be able to display sequences of configurations, waiting for a new configuration, while it is available, and several other modifications. The modifications were made by Orsolya Gereben in 2007, and the new version is called AtomEye3.1. This is still a separate program, only working under Linux. You can see some images produced by AtomEye for systems used to test RMCSANS on the AtomEye page of the website, and download AtomEye3.1.


Download RMCSANS++

The source and the executables of RMCSANS tested for Windows and Linux operating systems are available under the GNU Public License. You are free to download, use and modify the programme

The code was tested on computers using WINDOWS and LINUX operation system. There is a slight difference in the code as some necessary commands were not the part of the standard C++, so the platform has to be chosen by a compilation option switch. There are other option switches in the alter.h file, choosing or not choosing them before compilation regulates some of the functionality the executable will poses. Compiling for multi-threaded execution also regulated only by compiler option. See the details of the available options in the RMCSANS manual.

There will be a package for both of the supported platforms, the content of which will only differ in that the WINDOWS packages will contain the POSIX interface files. There will be two executables in each package one compiled for consecutive, the other for multi-threaded execution, both in normal simulation mode with all the other available compiler options switched off the WINDOWS package on a 32-bit, but the LINUX package on a 64-bit processor.



Windows package


Download RMCSANS Windows package (1.604 kB)




LINUX package


Download RMCSANS Linux package (1.305 kB)

Top of page

Page created by Orsolya Gereben

Last modified 23/09/2010 by Orsolya Gereben