vibrav.zpvc.zpvc module

class vibrav.zpvc.zpvc.ZPVC(config_file, *args, **kwargs)[source]

Bases: object

Class to calculate the Zero-point vibrational corrections of a certain property.

Required inputs in configuration file.

Attribute

Description

Data Type

number_of_modes

Number of normal modes in the molecule.

int

number_of_nuclei

Number of nuclei in the molecule.

int

property_file

Path to the CSV formatted file with the property information. Must have a header with the columns ‘file’, ‘atom’ and the selected property column. In addition, it must have an index column.

str

gradient_file

Path to the CSV formatted file with the gradient information. Must have a header with the columns [‘file’, ‘atom’, ‘fx’, ‘fy’, ‘fz’]. In addition, it must have an index column.

str

property_atoms

Atomic index of the atom/s of interest. Can be given as multiple space separated integers.

int

property_column

Column name with the data of interest in the property file.

str

temperature

Temperature/s in Kelvin. Can be given as a space separated list of floats.

float

Default inputs in the configuration file.

Attribute

Description

Default Value

smatrix_file

Filepath containing all of the information of the normal mode displacements.

smatrix.dat

eqcoord_file

Filepath containing the coordinates of the equilibrium structure.

eqcoord.dat

atom_order_file

Filepath containing the atomic symbols and ordering of the nuclei.

atom_order.dat

We implement the equations as outlined in the paper J. Phys. Chem. A 2005, 109, 8617-8623 (doi:10.1021/jp051685y). Where we can compute the Zero-Point Vibrational corrections with

\[\text{ZPVC} = -\frac{1}{4}\sum_{i=1}^m\frac{1}{\omega_i^2\sqrt{\mu_i}} \left(\frac{\partial P}{\partial Q_i}\right) \sum_{j=1}^m\frac{k_{ijj}}{\omega_j\mu_j\sqrt{\mu_i}} +\frac{1}{4}\sum_{i=1}^m\frac{1}{\omega_i\mu_i} \left(\frac{\partial^2 P}{\partial Q_i^2}\right)\]

Where, \(m\) represents the total number of normal modes, \(\omega_i\) is the frequency of the \(i`th normal mode, and :math:\)mu_i` is the reduced mass, in atomic units. The derivatives of the property (\(P\)) are taken with respect to the normal coordinates, \(Q_i\), for a given normal mode \(i\). The anharmonic cubic constant, \(k_{ijj}\), is defined as the mixed third-energy derivative, and calculated as,

\[k_{ijj} = \frac{\partial^3 E}{\partial Q_i \partial Q_j^2}\]

The calculated energy gradients in terms of the normal modes can be obtained from the Cartesian gradients by,

\[\frac{\partial E_{+/0/-}}{\partial Q_i} = \sum_{\alpha=1}^{3n} \frac{\partial E_{+/0/-}}{\partial x_{\alpha}} S_{\alpha j}\]
zpvc(geometry=True, print_results=False, write_out_files=True, debug=False, deriv_method='two-point')[source]

Method to compute the Zero-Point Vibrational Corrections.

Parameters:
  • geometry (bool, optional) – Bool value that tells the program to also calculate the effective geometry. Defaults to True.

  • print_results (bool, optional) – Bool value to print the results from the zpvc calcualtion to stdout. Defaults to False.

  • write_out_files (bool, optional) – Bool value to write files with the final results to a CSV formatted and txt file. Defaults to True.

  • debug (bool, optional) – Bool value to write extra matrices with debug information to a file including the gradients expressed in terms of the normal modes, and the first and second derivatives of the property.