The transformation can be a block-diagonalisation, a transformation to the adiabatic representation or a coordinate transformation. For a definition of the block-diagonalisation procedure used, see here.
As the transformed potential will no longer be in product form, an expansion of the transformed potential in terms of Cut-HDMR component functions (for later use with potfit) is possible. Note that it is always possible to represent exactly a VCHAM potential as a finite Cut-HDMR expansion. A definition of the Cut-HDMR component functions calculated can be found here
The transformed potential is calculated on the primitive grid to be used in a subsequent MCTDH calculation and written to a binary file that can be used directly with the potfit program.
To run the program typeor
vcsrfXX input
where XX is the version number, e.g. vcsrf100 for package version 10.0, and where input (or input.inp) denotes the input file. The input format uses, like all the MCTDH package input files, keywords that are for the most part free format and case insensitive. See MCTDH input file structure
vcsrfXX input.inp
for further information on the general use of keywords, noting that there are no sections in the VCHAM input files. The input file ends with the keyword end-input
System Definition | ||
---|---|---|
Keyword | Description | |
vcham_file = S | The model potential to be transformed is given in the .vcham file S | |
dvr_file = S | S is the path to the dvr file. If this is not specified, ./dvr is taken as the default | |
file_file = S | S is the path the the dvr file | |
nmodes = N | Specifies the number of modes, N | |
nstates = N | Specifies the number of states, N | |
scut = i,j | The element Wij of the transformed potential is to be calculated on the primitive grid |
(i) Mode specifcation for the calculation of the full potential
The subspace of modes is specified using the syntax
cut = qα, qβ, ..., qγ
For example, if the potential was to be calculated in the space spanned by the two degrees of freedom q1 and q2 then the mode specification would read
cut = 1,2
or
cut = 2,1
(ii) Mode specifcation for the calculation of a Cut-HDMR component function
The subspace of modes is specified using the syntax
cut = {qκ1, qκ2, ..., qκnκ}, {qν1, qν2, ..., qνnν},..., {qμ1, qμ2, ..., qμnμ}
By way of example, the second-order Cut-HDMR component function defined with respect to the combined modes Q1 = (q1, q2, q3) and Q2 = (q4) would be specified as either
cut = {1,2,3},{4}
or
cut = {4},{1,2,3}
System Definition | ||
---|---|---|
Keyword | Description | |
block_diag = n1, n2, ..., nm | Flags that a block-diagonalisation is to be performed and specifies the desired block structure. For m blocks, the first block is n1-dimensional, the second-block is n2-dimensional, and so on | |
hdmr | Flags that a Cut-HDMR component function is to be calculated | |
adproj = s | Specifies that an element of the projector onto the sth adiabatic state is to be calculated | |
adiabatic | Flags that the adiabatic potential is to be calculated |
coord_trans = 'name'
where 'name' is the name of a user-implemented coordinate transformation.
Each coordinate transformation must be hard-coded into the vcsrf.F90 file. To do so, the following subroutines must be altered:
(i) vcsinp
This subroutine reads the input file, and the name of the user-defined
coordinate transformation must be added.
(ii) qv2qg
Performs the transformation from the VCHAM coordinates to the
new coordinates.
(iii) qg2qv
Performs the transformation from the new coordinates to the
VCHAM coordinates.
Output Options | |||||
---|---|---|---|---|---|
out = S |
form of the output:
|
||||
units = S | Units to be used. Can be one of au, ev or cm-1 | ||||
test | No output is written. Useful for debugging when a large output file would otherwise be written |
.vcham
file the
coordinates R and φ correspond, respectively, to the modes numbers 4 and
5. The grid information is read from the file 'dvr' that was produced using
the MCTDH program. Note that the numbering of the nuclear degrees of
freedom in the dvr and .vcham
file must match.
To demonstrate the utility of the VCSRF program, we consider the block diagonalisation of the model potential using the input file nh3_block_diag_s2_s2.inp.
The block-diagonalisation is specified via the line reading
block_diag = 2,6
which corresponds to a transformed potential with two blocks on the diagonal, the first being a 2x2 block and the second a 6x6 block. The line
cut = 4,5
specifies that the transformed potential is to be calculated in the space spanned by the modes 4 (corresponding to R) and 5 (corresponding to φ). Note that as a Cut-HDMR component function is not being calculated here it suffices to specify the physical degrees of freedom instead of the combined modes.
The line reading
scut = 2,2
specifes that the element indexed by 2,2 of the transformed potential is to be calculated.
Running
vcsrf101 nh3_block_diag_s2_s2.inp
results in the creation of the output file nh3_block_diag_s2_s2.dat.
To aid visualisation of this file, the lines reading out = plot
and units = ev
in the input file result, respectively, in the
output file being written in ascii in an xyz format, and in the value of the
transformed potential being written in units of eV. Checking the log
file nh3_block_diag_s2_s2.log
produced, we see a line reading Number of regularised inversions:
0
. In the construction of the block-diagonalisation transformation a
matrix has to be inverted, and this line tells us the number of geometries
at which this matrix had to be regularised (zero in this case). For a number
of regularisations greater than zero, the transformed potential should be
checked to see if any discontinuities have resulted.
For reference, the file nh3_diabatic_s2_s2.inp can be used to calculate the untransformed diabatic potential in the space spanned by R and φ.