Potential energy functions¶
TROVE provides a larger number of potential energy functions (PEFs) for different molecules already implemented. Most of these PEFs are in modules pot_*
contained in file pot_*.f90
.
pot_xy2.f90
pot_xy3.f90
pot_zxy2.f90
pot_abcd.f90
pot_xy4.f90
pot_zxy3.f90
These are a part of the standard TROVE compilation set. Alternatively, a user-defined PEF can be included into the TROVE compilation as a generic ‘user-defined’ module pot_user
, see details below.
Potential Block¶
The Potential
(Poten
) block used to specify a PEF, has the following generic structure (using XY2 as an example)
POTEN
NPARAM 102
POT_TYPE POTEN_XY2_MORSE_COS
COEFF list (powers or list)
RE13 1 0.15144017558000E+01
ALPHAE 1 0.92005073880000E+02
AA 1 0.12705074620000E+01
B1 1 0.50000000000000E+06
B2 1 0.50000000000000E+05
G1 1 0.15000000000000E+02
G2 1 0.10000000000000E+02
V0 0 0.00000000000000E+00
F_0_0_1 1 -0.11243403302598E+02
F_1_0_0 1 -0.94842865087918E+01
F_0_0_2 1 0.17366522840412E+05
F_1_0_1 1 -0.25278354456474E+04
F_1_1_0 1 0.20295521820240E+03
F_2_0_0 1 0.38448640879698E+05
F_0_0_3 1 0.27058767090918E+04
F_1_0_2 0 -0.47718397149800E+04
...
end
For an example, see SiH2_XY2_MORSE_COS_step1.inp where this PES is used.
Here NPARAM
is used to specify the number of parameters used to define the PES. POT_TYPE
is the name of the potential energy surface being used which is defined in the pot_*.f90 file
. The keywords COEFF
indicates if the potential contains a list of parameter values (LIST
) or values with the corresponding expansion powers (POWERS
), e.g. (for H2CO):
POTEN
NPARAM 114
POT_TYPE poten_zxy2_mep_r_alpha_rho_powers
COEFF powers
f_0_0 0 0 0 0 0 0 1 0.00000000000000E+00
f_0_1 1 0 0 0 0 0 1 0.00000000000000E+00
f_0_1 0 1 0 0 0 0 1 0.00000000000000E+00
f_0_2 0 0 0 1 0 0 1 0.00000000000000E+00
f_1_1 0 0 0 0 0 1 1 0.13239727881219E+05
f_2_1 0 0 0 0 0 2 1 0.46279621687684E+04
f_3_1 0 0 0 0 0 3 1 0.14394787420943E+04
f_4_1 0 0 0 0 0 4 1 0.10067584554678E+04
f_5_1 0 0 0 2 0 0 1 0.31402651686299E+05
.....
end
which is from the variational calculations of H2CO, see the TROVE input 1H2-12C-16O__AYTY__TROVE.inp.
The potential parameters are listed after the keyword COEFF
and terminated with the keyword END
with exactly NPARAM
. For the COEFF list
option, the meaning of the columns is as follows:
Label
Index
Value
b1
0
0.80000000000000E+06
b2
0
0.80000000000000E+05
g1
0
0.13000000000000E+02
g2
0
0.55000000000000E+01
f000
0
0.00000000000000E+00
f001
1
0.25298724728304E+01
f100
1
0.76001446034650E+01
Here ‘Labels’ are the parameter names, used only for printing purposes and not in any calculations. The ‘Index’ field can be used to as a switch to indicate if the corresponding parameter was fitted or can be fitted. Otherwise it has no impact on any evaluations of the PEF values. ‘Values’ are the actual potential parameters, listed in the order implemented in the corresponding PEF POT_TYPE
, for example
where
For the COEFF Powers
option, the meaning of the columns is as follows:
Label
n1
n2
n3
n4
n5
n6
Index
Value
f000000
0
0
0
0
0
0
1
0.00000000000000E+00
f100000
1
0
0
0
0
0
1
0.00000000000000E+00
f010000
0
1
0
0
0
0
1
0.00000000000000E+00
f000100
0
0
0
1
0
0
1
0.00000000000000E+00
f000001
0
0
0
0
0
1
1
0.13239727881219E+05
f000002
0
0
0
0
0
2
1
0.46279621687684E+04
f000003
0
0
0
0
0
3
1
0.14394787420943E+04
where
‘Labels’ are the parameter name, for printing purposes only;
‘n1’, ‘n2’, ‘n3’, … are the ‘powers’ of an expansion term, e.g.
‘Index’ is a switch to indicate if the corresponding parameter was fitted or can be fitted, with no impact on any evaluations of the PEF values.
‘Values’ are the actual potential parameters. Their order is not important for this implementation as long as the corresponding powers are defined.
In case the definition of PEF requires also structural parameters, such as equilibrium bond lengths , equilibrium inter-bond angles , Morse exponents etc., in the COEFF Powers
form these parameters should be listed exactly in the order expected by the implemented of the PEF (similar to the COEFF LIST
form), but with dummy “powers” columns so that their ‘values’ appear in the right column. For example:
POTEN
NPARAM 58
POT_TYPE poten_C3_R_theta
COEFF powers (powers or list)
RE12 0 0 0 0 1.29397
theta0 0 0 0 0 0.000000000000E+00
f200 2 0 0 0 0.33240693
f300 3 0 0 0 -0.35060064
f400 4 0 0 0 0.22690209
f500 5 0 0 0 -0.11822982
.....
Here, RE12
and theta0
are two the equilibrium values and the three columns with 0 0 0
are given in order to parse their values using column 6.
Implemented PEFs¶
XY2 type¶
There are several PEFs available for this molecule type.
POTEN_XY2_MORBID
¶
This form is given by
where
For an example, see SO2_morbid_step1.inp where this PES is used.
POTEN_XY2_MORSE_COS
¶
For description and example see ‘Potential Block’ above with the input file example for SiH2 SiH2_XY2_MORSE_COS_step1.inp. This PES was used in [21ClYu}_ .
POTEN_XY2_TYUTEREV
¶
POTEN_XY2_TYUTEREV
is the essentially the same PES as POTEN_XY2_MORSE_COS
, with the difference that the POTEN
input part does not contain the structural parameters:
POTENTIAL
NPARAM 99
POT_TYPE poten_xy2_tyuterev
COEFF list
b1 0 0.80000000000000E+06
b2 0 0.80000000000000E+05
g1 0 0.13000000000000E+02
g2 0 0.55000000000000E+01
f000 0 0.00000000000000E+00
f001 1 0.25298724728304E+01
f100 1 0.76001446034650E+01
...
end
Using the structural parameters in the POTEN
section is important for PES refinements, see the corresponding section for details.
The input file example is h2s_step1.inp .
poten_co2_ames1
¶
An empirical PES of CO2 is from [17HuScFr]. The input file example is CO2_bisect_xyz_step1.inp where this PES is used.
It is programmed using the powers
format as follows:
POTEN
NPARAM 234
POT_TYPE poten_co2_ames1
COEFF powers (powers or list)
r12ref 0 0 0 1 1.16139973893
alpha2 0 0 0 1 1.0000000000
De1 0 0 0 1 155000.0000
De2 0 0 0 1 40000.0000
Ae1 0 0 0 1 40000.0000
Ae2 0 0 0 1 20000.0000
edamp2 0 0 0 1 -2.0000
edamp4 0 0 0 1 -4.0000
edamp5 0 0 0 1 -0.2500
edamp6 0 0 0 1 -0.5000
Emin 0 0 0 1 -0.000872131085d0
Rmin 0 0 0 1 0.1161287540428520D+01
rminbohr 0 0 0 1 0.2194515245360671D+01
alpha 0 0 0 1 1.00000000000000000000
rref 0 0 0 1 1.1613997389
f000 0 0 0 0 0.3219238090183E+01
f001 0 0 1 0 -0.2181831901567E+02
f002 0 0 2 0 0.7355163655139E+02
f003 0 0 3 0 -0.1531231748456E+03
f004 0 0 4 0 0.2090079612238E+03
f005 0 0 5 0 -0.1883325770080E+03
......
end
The first part contains some structural parameters with ‘powers’ indexes filled with dummy zeros to maintain the powers
format.
Examples and References
XYZ type¶
POTEN_XYZ_KOPUT
¶
The PEF is given by (see [22OwMiYu])
The vibrational coordinates are
where and are the internal stretching coordinates and is the interbond angle, and the equilibrium parameters are , and . Note that the exponent associated with the bending coordinate assumes only even values because of the symmetry of the XYZ molecule.
The input file example is CaOH_Koput_step1.inp where this PES is used.
ZXY2 type¶
poten_zxy2_morse_cos
¶
The PEF is expressed analytically as (see [15AlOvPo], [23MeOwTe])
The vibrational coordinates are
where are the expansion parameters. Here, , and are the bond lengths, and are the bond angles, is the dihedral angle between two bond planes, and is a Morse-oscillator parameter.
The expansion has a symmetry adapted form, which is invariant upon interchanging the two equivalent atoms Y1 and Y2`, i.e. for simultaneously with .
The TROVE function for this PEF is MLpoten_zxy2_morse_cos
, which can be found in the module mol_zxy2.f09
.
poten_zxy2_morse_cos
uses the powers
form for the potential parameters. An input file example for H2CS is H2CS_zxy2_morse_cos_step1.inp where this PES is used.
XY3 type (pyramidal)¶
POTEN_XY3_MORBID_10
¶
This PEF is for ammonia (non-rigid) molecules with an umbrella coordinate representing the 1D inversion motion and other 5 are displacements from their equilibrium values, but it can be equally used for rigid molecules like phosphine as well. As all PEFs in TROVE, POTEN_XY3_MORBID_10
is a symmetry adapted to be fully symmetric for all operations (permutations) of the D:sub: 3h(M) (and also C3v(M)) molecular group symmetry. It uses the following coordinates
where () are three bond lengths, () are three bond angles with opposite to and is an umbrella coordinate defined as an ‘average’ angle between three bonds and an average symmetry axis as follows:
and
The corresponding Fortran function is MLpoten_xy3_morbid_10
, which can found in mol_xy3.f90
. It uses the Coeffs LIST
form. A TROVE input example for NH3 is NH3_BYTe_step1.inp , see [09YuBaYa] where this empirical PES was used to compute the BYTe line list for ammonia.
POTEN_XY3_MORBID_11
¶
This is a similar PES to POTEN_XY3_MORBID_10
, but with the structural parameters (, and (Morse parameter)) included into the POTENTIAL block:
POTEN
NPARAM 307
POT_TYPE poten_xy3_morbid_11
COEFF list
re 0 0.97580369000000E+00
alphae 0 0.11195131680000E+03
beta 0 0.21500000000000E+01
VE 0 0.00000000000000E+00
FA1 1 0.19897404278336E+02
FA2 1 0.34574086467373E+06
FA3 1 -0.45576605893993E+06
FA4 1 0.21457903182324E+07
.....
end
The Fortran function is MLpoten_xy3_morbid_11
, which can found in mol_xy3.f90
. A TROVE input example for H3O+ is 1H3-16O_p__eXeL__model-TROVE.inp from [20YuTeMi] , where it was used to compute an ExoMol line list for this molecule.
A chain molecule of HOOH type¶
POTEN_H2O2_KOPUT_UNIQUE
¶
The HOOH PES is given by the expansion
in terms of the following coordinates:
where are three bond lengths, () are two bond angles with and is a dihedral angle.
This a powers
type:
POTEN
NPARAM 166
POT_TYPE POTEN_H2O2_KOPUT_UNIQUE
COEFF powers (powers or list) (oo oh1 oh2 h1oo h2oo rho)
f000000 0 0 0 0 0 0 1 0.14557772800000E+01
f000000 0 0 0 0 0 0 1 0.96253006000000E+00
f000000 0 0 0 0 0 0 1 0.10108194717000E+03
f000000 0 0 0 0 0 0 1 0.11246000000000E+03
f000000 0 0 0 0 0 0 1 0.39611300000000E-02
f000001 0 0 0 0 0 1 1 0.48279121261621E-02
f000002 0 0 0 0 0 2 1 0.31552076592194E-02
f000003 0 0 0 0 0 3 1 0.27380895575892E-03
f000004 0 0 0 0 0 4 1 0.53200000000000E-04
The Fortran function is MLpoten_h2o2_koput_unique
, which can found in mol_abcd.f90
. A TROVE input example for HOOH is HOOH_step1.inp from [15AlOvYu] , where it was used to compute an ExoMol line list for this molecule.