|
Molecular RMC++ with FNC |
|
|
This page
describes the implementation of RMC_POT++ with the molecular
move option.
|
Moving one molecule instead of one or more atom at each step |
In standard RMC, each step in the
random walk of the Metropolis algorithm consists in the move of one or more
randomly chosen atom.
This is suitable, if the molecules of the material one is trying to model are
flexible enough for such displacements to be physically acceptable.
However there are cases were the geometry of the molecules is known a priori,
furthermore, there are also cases were this geometry is not much flexible. As a
result,
The solution to get out of this situation is not to move just one atom
at a time, but the whole molecule, while keeping its geometry.
Thanks to the fixed-neighbour constraints (FNC) option, individual atoms can be
'linked' to define molecules within a configuration. Furthermore, RMC++ has
been implemented in a way that the simultaneous move of several atoms is
possible.
Note that it does not make
much sense to move randomly several individual atoms at the same time. The
result would not be different than making the several individual moves
sequentially. Multiple atoms moves only make sense if groups of atoms
are moved in some defined way.
It must be noted that in the whole algorithm,
the only step that is modified by this 'collective displacement' is the move.
Calculation of distances and checking of constraints are not affected.
As a result, the change from 'individual atomic move' to 'molecular' move
requires only the modification of a few routines in the whole RMC++ code.
It must be noted however, that these moves
are custom made, i.e for different molecules one might define
different moves, translations along preferred directions, rotations along
preferred axes, etc... Each custom move requires the implementation of the
corresponding Move function in the code (and hence a little bit of programming
that requires some knowledge of how RMC++ is implemented).
Some example of custom moves are shown below.
|
Examples |
C2Cl4

C2Cl4 is a rigid, flat
molecule for which individual atomic moves are prohibitively small if an
acceptable molecular geometry is to be kept. On the other hand, if the whole
molecule is to be moved one can define three preferential axes for rotations
and translations as shown below.

Note that the definition of
specific directions usually requires making a distinction between atoms even of
identical atomic species within the molecule. The geometry is defined in the
FNC file by setting as many as necessary FNC links between atoms of the same molecule.
The FNC settings for C2Cl4 are shown below. Note also that the numbering of
constraints defined in the FNC file are completely independent from the
atomic types that appear in the main RMC routine for computing the partials and
the weighting of the different structure factors.

In this particular case,
some FNC constarints are unnecessarily redundant, but the main point in the FNC
file is to define the sets of neighbours that make up a molecule. In this
particular case, it is essential that each atom has 5 neighbours. Note also
that the implementation of the molecular network in the *.cfg and in the
*.fnc files must be known in order to program the custom move.
CCl4

The shape of the CCl4
molecule can be well defined by a set of FNC constraints. Depending on the
level of flexibility that one gives to the molecule, individual atomic moves
can be acceptable or not. Note that RMCA-type individual atom moves can also be
implemented within the custom molecular move (molecules have a defined shape
with some flexibility).
In the case of CCl4, one can define many specific directions, or decide that
there is no a priori preferred direction for rotations and translations,
i.e. they can be performed along random axes.
H2O

The shape of the H2O
molecule is also well defined by FNC constraints alone. The figure below
indicates what kind of flexibility some FNC ranges imply.

Molecular move allows much
more rigidity for the molecule, while allowing the configuration to evolve.
Additionally, it is possible to define preferential axis of rotation and
translation for the molecular move, or, alternatively to choose randomly these
directions.
CS2

Finally, CS2 seems to be a
particularly good example for applying the molecular option of RMC++.
Indeed, this molecule has the structure of a 'rod': the three atoms are
aligned. Defining the alignment with FNC constraints alone would imply either
very small individual atomic move amplitudes, or alternatively, a very loose
alignment, as seen below.

Molecular move allows both molecular rigidity and large move amplitude so that the configuration evolves.
|
Limitations |
It is clear, that while moving whole molecules
rather than single atoms solves some problems, it also yields additional
difficulties. The first obvious problem is space, i.e. space to move
whole molecules. Indeed, at the densities of most materials for which RMC is of
some use, molecules will 'bump' into each other very easily, and that puts very
strong limitations to the move amplitudes. There is no immediate answer to this
problem. Getting closer to reality by e.g. moving several molecules at a
time, is just a change of scale...
|
Example routines |
Hereafter you can find a set of custom move
routines that have been designed for CCl4, C2Cl4 and H2O.
RMC_POT++ can handle both
atomic and molecular moves as well.
The download version on downloads page includes
the makemovecus.cpp source file which contains the custom routines for
the CCl4 molecular RMC++. See the manual for
details.
Additional *.cus
input parameter file
The free parameters that may be needed in the implementation of the custom move
are stored in a file with file name*.cus, which is read at the
start of the run. The content of this file depends on the custom move and the
reading procedure is part of the constructor that is implemented in the makemovecus
file.
Example files
to download
There are a set of custom files for molecular RMC++ available for download:
Last modified 30/06/2010 by Orsolya Gereben