RMC++ examples 

This
page shows some examples of RMC++ studies.
These simulations were made
by the original RMC++ code, but the conclusions are valid for the later
versions as well.
Liquid CCl4 
Liquid CCl4 provides a nice
example of the use of RMC++:
The data
The data used were obtained by neutron diffraction at the Budapest PSD neutron
diffractometer.
The data Qrange is 0.55 to 9.15 Å¯¹, in 100 points (irregularly sampled).
Configuration size
The density of our sample is 0.0319 atoms per cubic Å. A configuration with
1000 atoms (200 molecules) would fit in a cubic box of dimension 31.53 Å (which
is adequate if there is no long range order beyond 31.53 / 2=15.76 Å).
However, for the sake of statistical accuracy, a greater number of molecules is
necessary, and we choose to build a configuration with 2048 molecules, i.e.
10240 atoms.
This yields a cubic box of size 68.4704 Å, i.e. a histogram range of
34.23522 Å (in the standard version, i.e. without the RMC++ extension).
This size complies with the requirement imposed by the Qrange of the data: the
greatest distance binned in the histograms must be at least 2 π / 0.55= 11.4 Å
(one full rperiod for the lowest Q value).
(n.b.
the reason for using 4 or 5 decimals accuracy does obviously not derive from
physics, but from numerical requirements)
Histograms bin width
The highest Q value imposes that the bin width dr is at most 2 π / (5 x
9.15)= 0.137 Å.
With a configuration of 2048 molecules, one can attempt a bin width of 0.1 Å.
The validity of this choice can be checked a posteriori by looking at
the histograms.
If there are not enough distances to secure the information on wants to derive
from the run, then the size of the configuration or the size of the histogram
bins can be increased.
Distances of closest approach
(cutoffs)
The distances of closest approach between atoms are defined from external a
priori information: previous runs, other experiments, known structure,
guesses... In the worst case it can be imposed by the density. But in practice,
they have to be adjusted due to the necessity to allow individual atoms to
move.
(n.b.:
if the cutoffs have to be made smaller than a value known to be true in order
to allow the configuration to evolve, then the resulting configuration is not
realistic)
In the CCl4 case, we chose the cutoffs as follows:
These were
partly imposed by the molecular geometry, although with RMC++, individual
molecules are defined by the fixed neighbours constraints (FNC), which
overrides the cutoffs (i.e. within one molecule, the cutoffs can be not
satisfied if this is imposed by the FNC).
Fixed neighbours constraints
We take advantage of the FNC to mimic the individual CCl4 molecules, i.e.
we define links and allowed distance ranges between given atoms so that the
geometry of the CCl4 molecules is reproduced.
The FNC's are defined by the molecule geometry. For CCl4 there are just two
constraints:
In defining
these distances, it is important to keep in mind that the configuration evolves
by moving atoms individually. Therefore, the constraints must leave a
certain freedom of movement to the atoms, in order to allow the configuration
to evolve. If the geometry of the molecule imposes very strict FNC's (e.g.
flat or rigid molecules) then the individual moves of atoms is ruled out if one
wants to obtain a realistic configuration. In this case, the molecules have to
be moved as a whole, this is possible with RMCmol (under
development).
Move amplitudes
The amplitude of the individual atomic moves is defined in the .dat file of run
parameters. It has to be adjusted to allow the configuration to evolve. Small
moves will be more likely to be accepted, but with a small effect, yielding a
slow evolution. On the contrary, large moves will make big steps, but with a
larger probability of being rejected (see the discussion in the RMCA manual).
Therefore, in practice, these amplitudes are often adjusted after a few test
runs.
Note that the move amplitudes are defined by the maximum range in each
direction (and therefore the effective range is greater by a factor 1.732).
For CCl4, we used maximum moves of 0.1 Å.
Making the starting configuration
There are programmes to create starting configurations (see the download page).
If there is enough space for molecules to move, a simple recipe is to
At this
stage, one should have a `good starting configuration'.
The RMC run
From a `good starting configuration', the run parameters can be finetuned.
Experience shows that the RMC result does not depend on the starting configuration.
The duration of the run is very variable, depending on the problem.
For CCl4, starting from a good configuration, we made a 20 hours run (on a 2
Pentium III processor 500 Mhz PC).
The convergence of the algorithm is shown below, for the three different codes:
RMCA (fortran) and RMC++ (2 different compilers).
The
evolution of the χ² is typical of a RMC run.
Incidentally, the figure above shows that RMC++ is 2~3 times as fast as RMCA.
The results
The run results consist in the configuration, and the partials in the .out
file, which allow direct visualisation of the fit to the data:
It can be
seen that the starting configuration was rather good, and that the RMC fits are
excellent.
Individual partial structure factors appear below:
and the
partial pair correlation functions are shown below:
The first intramolecular
peaks CCl and ClCl dominate the graph.
Long range order appears via the CC partial (up to 20 Å¯¹), and is due to the
arrangement of neighbouring molecules. As required by the calculation of the
sineFourier transform, the g(r)'s are equal to 0 at the largest calculated
distances.
This `local arrangement' gives the intermolecular contribution to the
CCl and ClCl partials.
A detailed view of the g(r) partials appear below:
Note the
statistical oscillations that appear on the detailed level. The significance,
or an estimate of the uncertainty about the g(r) values derived from the RMC
run can be guessed by looking directly at the histograms. They appear below:
The number
of distances grows as r¯². But one is usually interested in the short range
deviation from perfect homogeneity, which appears as small peaks, as seen in
the detail below.
The
configuration does much more than just allow to calculate the g(r) partials
without the usual problems of direct sineFourier transformation. It is
possible to calculate cosine distributions, etc...
Developing tools for exploiting RMC results actually appears as important as
implementing the RMC algorithm itself.
Run Reports 
Here are some RMC run reports on a variety of materials (files in pdf
format). The simulations were performed by the original RMC++ code by Guillaume
Evrard.
The following runs were
dedicated to the investigation of the effect of algorithmic constraints
rather than the study of the materials themselves.
Last modified 19/09/2012 by
Orsolya Gereben