Potential energy scan with PSI4

  23 Mar 2021

By Wen Xu

physics quantum chemistry potential energy surface

Intra-molecular rotation

Polyatomic molecules often composed of two entities that are connected through a single bond. These two entities can rotate around the single bond, creating various conformations. Due to quantum mechanical interactions between these two entities, the conformations would have different energies.

This tutorial will show how to scan the dihedral angle in C2H6

In order to simplify the dihedral, we need to represent the geometry in Z-Matrix format. Each line in the Z-Matrix start with an atom. Followed by a connecting atom and the bond, then a third atom and angle, and a fourth atom and dihedral, etc.

Z-Matrix input

Below is an example for Z-Matrix The first line would only contain an atom A (since not atom to connect at this point yet) The second line would contain another atom B and the distance_AB. No angle yet, since there are only two atoms upto this point The third line would contain another atom C and the distance_AC and angle_CAB No diheral yet. The fourth line would contains another atom D and distance_AD, angle_DAC, and dihedral_DABC The fifth line would contain another atom E, distance, angle, dihedral

So the totoal degree of freedom is 3N - 6, which is the total degree of freedom 3N minus the translation degree of freedom 3 and rotational degree of freedom 3. This just corresponds to the vibrational degree of freedom of the molecule.

A
B      1      dist_21
C      1      dist_31         2             angle_213
D      1      dist_41         2             angle_214               3                dihedral_3214
....

Psi4 calculation

alt c2h6 z-matrix

Below is the input to Psi4.

molecule c2h6 {
  C 
  C 1 R1
  H 1 R2 2 A1
  H 1 R2 2 A1 3 A2
  H 1 R2 2 A1 4 A2
  H 2 R2 1 A1 5 A
  H 2 R2 1 A1 6 A2
  H 2 R2 1 A1 7 A2
}

Avals=range(0,360,2)

table=Table(rows=["A"], cols=["E(SCF)","E(SCS)","E(DFMP2)"])

set basis cc-pvdz

c2h6.R1 = 1.54
c2h6.R2 = 1.0
c2h6.A1 = 109.5
c2h6.A2 = 120.0

for A in Avals:
    c2h6.A = A
    energy('mp2')
    escf = get_variable('SCF TOTAL ENERGY')
    edfmp2 = get_variable('MP2 TOTAL ENERGY')
    escsmp2 = get_variable('SCS-MP2 TOTAL ENERGY')
    table[A] = [escf, escsmp2, edfmp2]

print(table)
relative=table.copy()
relative.absolute_to_relative()
print(relative)

Results

If we plot the escf energy as a function of the dihedral A, we obtain the following PES (plot generated using gnuplot).

alt c2h6 pes

comments powered by Disqus