RMC++ in short


The spatial distribution of atoms and molecules in a disordered material is described by the so-called partial pair correlation functions ( Fig. 1 ).

Fig 1: Def. of partial pair correlation functions

The structure can be probed by the diffraction (elastic scattering) of waves (neutrons or X-ray) of adequate wavelength . The structure factors are obtained by sine-Fourier transform from the partial pair correlation functions:

and the diffracted intensity is a linear combination of the structure factors, weighted by the concentrations c and scattering lengths b:

Direct inversion of this inverse problem needs several measurements with isotopic substitution to disentangle the different partials. Furthermore, it is plagued with the usual problems of instability, over- and under-determination, and the Fourier ripples due to truncated Q-range (Fig 2).

Fig 2: forward and inverse problems

One alternative solution to direct inversion, is to explore the parameter space and solve the direct problem as often as required (Fig.3 ).

Fig 3: repeated computation of the forward problem

In MCGR [Monte Carlomodelling of G(r)], the parameter space consists in the discretised pair correlation functions. This technique allows to model partials while avoiding some of the usual pitfalls of direct inversion (still, it does not guarantee that the partials are physically sound).
Reverse Monte Carlo (RMC) goes one step further and considers the positions of a set of N atoms (the configuration) as the parameter space, i.e. it will derive a set of coordinates of the N atoms of the configuration that is in agreement with the data ( Fig 4).

Fig 4: MCGR vs. RMC

Systematic or exhaustive exploration of the parameter space is ruled out by its mere dimension, and therefore a more efficient way of sampling is needed in order to converge towards one solution.
Both MCGR and RMC are based on the Metropolis algorithm , i.e. the parameter space is explored by a `guided' random-walk. In short, the acceptance of generated random moves in the parameter space is defined by the agreement of the corresponding calculated data with the experimental data ( Fig 5).

Fig 5: Flowchart of the metropolis algorithm

In `standard' RMC++ (as in the existing RMCA) the random move in the parameter space consists in the displacement of one atom of the configuration. The atom moved, as well as the amplitude and the direction of the move are defined randomly (within some predefined range).
One essential additional component in RMC is the introduction of constraints. The Metropolis algorithm indeed produces solutions with the largest amount of disorder, for a given set of constraints (including the Chi Squared). Constraints can be introduced at 2 stages in the algorithm:

Individual molecules can also be mimicked by imposing a distance range between defined atoms in the configuration (the so-called fixed neighbour constraints - FNC -).
The flowchart of the `standard' RMC algorithm appears in Fig 6.

Fig 6: Flowchart of the RMC algorithm

For more details, look at the references.

  RMC implementations


RMC++ should look very familiar to RMCA users, since it uses the same input and similar output format.

Look at the examples to see what can be done with RMC++, and for the performance comparison with RMCA.
Look at the manual for details concerning input and output.

Top of page

Last modified 21/06/2010) by Orsolya Gereben
(comments welcome!)