It should be noted that the Monte-Carlo integration error manifests mainly in an integral over the residue potential (the part not represented by an optimal natpot once the SPP are determined). In Particular this means: if the potential can be completely expressed in the SPP basis obtained by MC-Potfit in the first step, then also the obtained natpot file will be numerically exact. If this is not the case, that is, if the SPP cannot represent the exact potential, one needs to keep in mind that the role of the SPP is actually to interpolate the potential between the Monte-Carlo ponts which were used to calculate the coefficients. This can lead to a paradox situation that the total error of the fit can increase if more SPP are used and the number of Monte-Carlo points is not increased appropriately.
A great advantage of using Monte-Carlo techniques is that correlated weights are implemented straight forwardly by means of the sampling density, i.e., the distribution of the sampling points. At present, generating a uniform distribution and a Boltzmann distribution using a Metropolis algorithm are implemented. Furthermore, external samplings can be read in and used for generating natpot files.
MC-Potfit does not yet support all features of the original Potfit.
Implemented features are outlined below. Another difference is that the
internal structure of the resulting natpot file is somewhat different from the
original Potfit. A contracted mode is not mandatory. When creating the natpot
file, however, there will be an retrospectively contracted mode for compatibility
reasons.
a help text is printed:
mcpotfit84 -h
Purpose: creates a natural potential fit.
Usage: mcpotfit<vers><d> [-h|-?] [-ver -rd -w -D name] inpf
vers: program version (e.g. 84 for version 8.4)
d: indicates debug version
inpf: input file (with or without extension ".inp")
optn: -h : print this help-text.
-? : print this help-text.
-ver : Version information.
-rd : Reading of the dvr-file is enforced.
-w : overwrite enabled.
-D name: 'name' denotes the directory where files are
written to, (name in ~.inp file ignored).
The order of the options does not matter, but "inpf"
must be the last argument.
xyz-section and ends with
end-xyz-section. At present, the MC-Potfit
input may contain three or four
sections, as listed below. Those with a STATUS of
C are compulsory, O marks optional sections.
| XYZ | Status | Description |
|---|---|---|
| RUN |
|
Defines general parameters, most importantly the Monte-Carlo samplings. |
| OPERATOR |
|
Which surface to be used, energy cut-offs. |
| PRIMITIVE-BASIS |
|
Definition of primitive basis. Optional if an external DVR file is specified in the RUN-SECTION. |
| NATPOT-BASIS |
|
Size of natural potential basis, optional contracted mode, etc. |
Below, tables of keywords are given for the input sections.
The following tables describe the keywords. The number and type of
arguments is specified. The type is S for a character string, R
for a real number, and I for an integer. For instance,
'keyword = I,R[,S]' indicates that the keyword
takes two or optionally
three arguments where the optional argument is indicated
by square brackets. Here, the first argument is an integer,
the second a real number, and the optional third one
a character string. The
status column indicates whether the keyword is compulsory, C, or
optional, O.
| Keyword | Status | Description |
|---|---|---|
| name = S |
|
The output files will be written to the directory S.
Note: If the -D name option is used (see
To Run the
Program), the name-string given in the input file is
ignored. |
| title = S |
|
The string S is taken as the title of the run and printed to the log and output files. Note: everything that follows the equal sign '=' till the end of the line is taken as title! |
| readdvr (= S) |
|
The DVR information will be taken from the DVR file in directory S. Note that the primitive-basis-section of the input file is completely ignored if this keyword is given. A DVR file residing in directory S will NEVER be overwritten or deleted, even if the keywords deldvr and/or gendvr have been specified. If S is not given, name-directory/dvr is assumed. |
| gendvr |
|
The DVR file will be generated unconditionally. (This is the default) |
| deldvr |
|
The DVR file will be deleted at the end of the calculation. |
| overwrite |
|
Any files already in name directory may be overwritten. (It is safer not to use overwrite but the option -w). |
| output = S |
|
The output will be written to the file
name/output. The string S may take the values
short or long. When long is specified,
additional information on grids and weights are printed.
short is default, i.e. output is equivalent
to output=short .Note: output is default. |
| dvronly |
|
The program generates the dvr file and then stops. |
| timing |
|
Program timing information will be written to the file
name/timing (default). |
| no-timing |
|
The timing file is not opened. |
| no-OMPpotential |
|
If openMP parallelization is used with this flag no calls to the PES routine are performed in parallel. This is useful if the PES routine is not thread safe. |
| no-omega |
|
Do not allocate the SPP-configuration-sampling matrix Ω which is needed to calculate the coefficients, but calculate it on the fly as needed. This saves considerable amounts of memory but also takes considerably longer, especially for large sampling sets. Dimensions of Ω: (Nsample-coeff × Nconfig) where Nconfig is the product of the number of SPP given in the NATPOT-BASIS-SECTION. Default: not set. | no-omega-t |
|
Do not allocate the transpose of the SPP-configuration-sampling matrix ΩT. ΩT is in this case calculated on the fly as needed. This saves considerable amounts of memory but also takes considerably longer, especially for large sampling sets. Note: ΩT is only allocated and used when invert-method = conjgrad is set, see below. Default: not set. | no-omega-spp |
|
Do not allocate the grid-sampling matrix ΩSPP for calculating the reduced density matricies of the potential. This saves considerable amounts of memory if the (combined) modes hava large grids, but it also takes considerably longer, especially for large sampling sets. Default: not set. |
| density = S | If the reduced densities of the modes are calculated (and not read-in, see below) the densities are stored in a file such that they can be re-used in a later run if for instance more coefficients are needed. The density keyword describes the format of the file. S can be either ASCII or binary, where binary is default. The ASCII format is usefull if a visualization of the densiy, for instance with gnuplot is desired. The density keyword is ignored if the reduced densities are read-in. In this case the format is determined from the files directly. | |
| invert-method = S | Method used to invert the overlap matrix. S can be one of direct or conjgrad. When direct is selected, the overlap matrix (ΩTΩ) es explicitely calculated and inverted using the LAPACK DPOSV routine. If conjgrad. is selected, a conjugate gradients method is used that avoids explicit calculation of the overlaps. Default is direct. | |
| cg-tolerance = R | When invert-method = conjgrad is used, cg-tolerane is the value of the error-estimate. Default 1.E-12 | |
| cg-maxiter = I | When invert-method = conjgrad is used, then at most I iterations are used to achieve the requestes error-estimate. Default 1000. | |
| sampling[-S1] = S2, I1 [,I2, I3, R [,S3]] |
|
The sampling method and the number of sampling points to use. See remark below . | sampling-only |
|
Do not create a natpot file but only calculate the sampling points and exit. |
| same-sets |
|
Use the same set of sampling points for all tasks. remark below . |
| iseed = I |
|
Calculates the initial random seed from I. If not set, the random seed is calculated from the system time. . |
| substract-pes = S |
|
Substract a potential stored in a PES file (created with the -pes option of MCTDH)
from the potential that is defined in the OPERATOR-SECTION.
S is the full path to a PES file. This option is useful if one already has an approximate description of the potential (for instance a cluster-expansion) and only wants to produce a natpot of the difference to the exact potential. If substract-pes is given, then the OPERATOR-SECTION itself may not use the "pes-file" option but only "usersurf" or built-in surfaces from the MCTDH operator library. |
Monte-Carlo samplings are used for tree different purposes in MC-Potfit:
If the run is a re-run of a previous calculation one can also skip the SPP sampling. In this case the SPP are calculated from previously stored density matrices. If sampling-spp is anyhow specified, the density matrices are re-calculated. Note, that if the densities are read in, at present only the grid dimensions are checked. It is not checked weather the density represents a valid representation of the given mode. That is, interchanging modes in the NATPOT-BASIS-SECTION will not lead to an error if the combined grids of the modes have the same sizes.
The first argument of the sampling[-S1] keyword is the sampling method, followed by a set of parameters. Possible sampling methods - with parameters - are:
The following examples demonstrate the use of the sampling[-S1] keyword.
Example 1
sampling-spp = uniform, 10000
sampling-coeff = metropolis, 10000, 1000, 10, 400.0, cm-1
sampling-test = readidx{/path/to/indexfile}, 15000
Example 2
Uniform sampling with 10000 points for generating the SPP, the coefficients and also for testing the natpot. The sampling points will be different for the three individual tasks, only the method of their generation is the same.
sampling = uniform, 10000
Example 3
Uniform sampling with 10000 points for generating the SPP, the coefficients and also for testing the natpot. The sampling points will be the same for all three individual tasks.
sampling = uniform, 10000
same-sets
| Keyword | Status | Description |
|---|---|---|
| pes = S {pesopts} |
|
S can be either the keyword "usersurf" in which the program assumes
that the potential energy routine has been implemented in the file
$MCTDH_DIR/source/potfit/userpot.f90
or it can be the name of a potential energy surface which has
been encoded in the mctdh package. A third option is pes = pes-file{path/to/pes} in which case an existing operator file is re-fitted. The first option has been provided to allow easy implementation of user provided routines using a Fortran 90 interface. Note, that options from the input file are not supported in this case, i.e, there must not be any {pesopts}. In case that a potential energy from the MCTDH library the name is interpreted in a case sensitive manner. If a surface depends on additional parameters, one can change the encoded default values by adding those parameters via the string '{pesopts}'. Parameter names specified within the braces '{}' are processed in a case sensitive manner. The selected surface determines which parameter names are possible. For a description of the available surfaces see Hamiltonian Documentation -- Available Surfaces. Note that fitting 'vpot' files is not supported at present. Example:
2D:
r1=rd-tfac*rv
r2=rv
3D:
r1=sqrt(rd**2+(tfac*rv)**2
-2d0*tfac*rd*rv*ctheta)
r2=rv
r3=sqrt(rd**2+((1d0-tfac)*rv)**2
+2d0*(1d0-tfac)*rd*rv*cos(theta))
For a homonuclear diatomic molecule tfac=0.5d0, in general tfac=m1/(m1+m2). rv denotes the distance between the two atoms of the diatom, rd the distance between the third atom and the center of mass of the diatom, and theta the angle between rd and rv. Note: tfac is not used if binding coordinates are selected for a calculation. |
| vcut < R |
|
Energy cut-off for exact potential energy surface. All potential energy values greater than R are set to R. |
| vcut > R |
|
Energy cut-off for exact potential energy surface. All potential energy values less than R are set to R. |
BKMP2 PES : 3D model in Jacobian Coordinates Dissociative Coordinate : rd Vibrational Coordinate : rv Angular Coordinate : thetaA line like Dissociative Coordinate : theta would hint to a wrong ordering of the degrees of freedom in the Primitive-Basis-Section.