The VCSRF program can be used to perform transformations of a given VCHAM potential.

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 type
vcsrfXX input
or
vcsrfXX input.inp
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

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


Defining the System

The potential to be transformed is read from a .vcham file created using VCHFIT. Additionally, the path to a dvr file generated using MCTDH must be given. The dvr file is used to define the primitive grid on which the transformed potential is to be calculated. A single element of the potential will be calculated on the primitive grid, and this element needs to be specified in the 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


Defining the Subspace of Nuclear Degrees of Freedom

The subspace of modes in which the potential is calculated needs to be specified. The method of specification differs depending on whether the actual potential or a Cut-HMDR component function is to be calculated. For the calculation of the actual, full potential, the physical coordinates qα are to be specified. For the calculation of a Cut-HMDR component function, the logical coordinates Qκ (the combined modes of the MCTDH calculation) are to be specified.

(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}


Defining the Potential Function to be Calculated

By default the untransformed diabatic potential will be calculated. The potential may be block-diagonalised and/or Cut-HMDR component functions calculated. Additionally, elements of the projectors onto the adiabatic states may be calculated. These calculations are controlled using the following keywords.

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


Coordinate Transformations

Coordinate transformations may be used in conjunction with any transformation of the potential or calculation of projectors onto the adiabatic states. This is achieved using the syntax

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

By default, the value of the transformed potential or projector is written to a binary file in atomic units. For an input file named 'file.inp' the calculated potential or projector is written to the file 'file.dat' and a log file named 'file.log' is also written. The output may be controlled using the following keywords.

Output Options
out = S form of the output:
ascii Formatted output is written
plot the potential/projector is written in xyz format for plotting
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


Examples

To illustrate the use of the VCSRF program, we consider here a simple two-mode model of ammonia. The coordinates used correspond to the N-H dissociation coordinate, R, and the out-of-plane bending mode φ, and the reference geometry used is the D3h S1 state minumum. The model potential is contained in the file rphi_fit.vcham, which was created using the VCHFIT program. A total of eight electronic states enter into the model potential. Note that in this .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 φ.