Programs for generating a cluster expansion
Cluster-expansion of a potential energy surface
For many systems with more then a few degrees of freedom the potential
is not given in a form suitable for MCTDH calculations. In this case
one can expand the exact potential in terms of n-particle interaction
terms called the clusters. The
expansion can be developed around several so-called reference points
Qref,i.
The approximated potential is then given as a (weighted) sum over all
reference points.
There are several flavors of cluster-expansions, for
instance, expansion around a single reference point or a reference
coordinate (with the other coordinates fixed to possibly different values).
The implementation of
the programs documented here does not strictly distinguish between
those two, instead the user is free to mix them. A cluster or
n-particle interaction term is identified only by the coordinates or
combined modes it spans. The clusters form a hierarchical tree of
n-particle interaction terms with several layers. The position, i.e,
layer, in the tree is determined by the number of (combined) modes the
cluster spans. This is independent from whether or not a
combined mode is included completely or just partly. The hierarchy
of clusters must have one single root term, i.e., a single cluster which
is of the lowest order - usually this is a cluster containing a single
point or mode. Here, mode can refer to a single degree of freedom
('coordinate') or a combined mode (' logical coordinate')
Generation of clusters
The clusters are generated in hierarchical order, starting from the
lowest order cluster, the root of the hierarchy. This cluster is given as
the cut through the potential energy surface (PES), i.e.,
the potential energy at the reference point or reference mode with all
other coordinates fixes to the reference values. In case of a reference
mode the cut is coordinate dependent. In a next step, for
all clusters being one layer up the hierarchy, also PES cuts are
obtained, where the coordinate dependence is now extended to at least
one further mode. From those PES cuts now the lowest order cluster is
subtracted. This procedure is repeated for all layers in the
hierarchy. In general, the algorithm works as follows: 1. Calculate PES
cuts for all clusters in a layer. 2. Obtain clusters for this layer by
subtracting all lower layer clusters from the PES cut. 3. Repeat
in the next higher level.
Programs
This package defines a number of tools to find a particular
cluster-expansion and relevant terms of the expansion and - when found
- to sample those clusters on a DVR grid. To find a suitable cluster
expansion the tools for statistical analysis can be used. Here a trial
expansion can be tested for convergence. If a suitable expansion is
found, the clusters of interest can be sampled on a DVR grid and be
potfitted. Finally the complete approximated potential sampled and
potfitted within MCTDH can be checked against the exact potential.
All programs are written in Python and rely on the
NumPy and
SciPy packages which are
open-source and freely available for download. Both packages are included in many Linux
distributions but usually not installed by default. Note: for Apple computers the
Numpy/SciPy developers strongly recommend using the official Python distribution
and not the version shipped with Mac OS X.
Statistical analysis - data generation.
With the Python script clusterstat.py
a Monte Carlo algorithm is used to explore the potential energy surface
in the most relevant regions. Alternatively an already given trajectory
of coordinate values can be used. The main purpose of this script is
the calculation of the contribution of the clusters along the trajectory.
This data can then be further analyzed by the script clusterana.py.
Statistical analysis - data analysis
The data produced by clusterstat.py can be further analyzed with the
Python script clusterana.py.
This allows detailed statistics for single clusters, a particular expansion etc.
Sampling of clusters on a DVR grid
Generating the relevant clusters on a DVR grid is performed with the python script
clusterbuild.py.
The script can also create (initial) potfits of the clusters.
Checking a PES file
To check an already processed PES by MCTDH, the script
chkpes.py
may be used. Here again a Monte Carlo sampling is used to test the
potential energy surface against the exact potential. Alternatively an
already given trajectory of DVR indices can be used.