10.15. hessian — Analytical nuclear Hessian

The hessian module implements the analytical nuclear Hessian for mean-field methods. This module also provides functions for thermo-chemical corrections (entropic corrections) using the harmonic model obtained from the Hessian frequencies,

For example:

from pyscf import gto
mol = gto.M(
    atom = [
        ['O' , 0. , 0.     , 0],
        ['H' , 0. , -0.757 , 0.587],
        ['H' , 0. ,  0.757 , 0.587]],
    basis = '631g')

mf = mol.RHF().run()
h = mf.Hessian().kernel()

The resulting structure of the Hessian is ::h[Atom_1, Atom_2, Atom_1_XYZ, Atom_1_XYZ]:: in this case ::(3,3,3,3)::.

10.15.1. Examples

Relevant examples examples/hessian/01-scf_hessian.py examples/hessian/10-thermochemistry.py

10.15.2. Program reference

10.15.2.1. Spin-restricted Hartree-Fock

Non-relativistic RHF analytical Hessian

class pyscf.hessian.rhf.Hessian(scf_method)[source]

Non-relativistic restricted Hartree-Fock hessian

hess(mo_energy=None, mo_coeff=None, mo_occ=None, atmlst=None)

Kernel function is the main driver of a method. Every method should define the kernel function as the entry of the calculation. Note the return value of kernel function is not strictly defined. It can be anything related to the method (such as the energy, the wave-function, the DFT mesh grids etc.).

kernel(mo_energy=None, mo_coeff=None, mo_occ=None, atmlst=None)[source]

Kernel function is the main driver of a method. Every method should define the kernel function as the entry of the calculation. Note the return value of kernel function is not strictly defined. It can be anything related to the method (such as the energy, the wave-function, the DFT mesh grids etc.).

partial_hess_elec(mo_energy=None, mo_coeff=None, mo_occ=None, atmlst=None, max_memory=4000, verbose=None)

Partial derivative

pyscf.hessian.rhf.get_hcore(mol)[source]

Part of the second derivatives of core Hamiltonian

pyscf.hessian.rhf.partial_hess_elec(hessobj, mo_energy=None, mo_coeff=None, mo_occ=None, atmlst=None, max_memory=4000, verbose=None)[source]

Partial derivative

pyscf.hessian.rhf.solve_mo1(mf, mo_energy, mo_coeff, mo_occ, h1ao_or_chkfile, fx=None, atmlst=None, max_memory=4000, verbose=None)[source]

Solve the first order equation

Kwargs:
fxfunction(dm_mo) => v1_mo

A function to generate the induced potential. See also the function gen_vind.

10.15.2.2. Spin-unrestricted Hartree-Fock

Non-relativistic UHF analytical Hessian

class pyscf.hessian.uhf.Hessian(scf_method)[source]

Non-relativistic UHF hessian

10.15.2.3. Spin-restricted DFT

Non-relativistic RKS analytical Hessian

class pyscf.hessian.rks.Hessian(mf)[source]

Non-relativistic RKS hessian

10.15.2.4. Spin-unrestricted DFT

Non-relativistic UKS analytical Hessian

class pyscf.hessian.uks.Hessian(mf)[source]

Non-relativistic UKS hessian

10.15.2.5. Thermo-chemistry analysis

Thermochemistry analysis.

Ref:

psi4/psi4/driver/qcdb/vib.py http://gaussian.com/vib/

pyscf.hessian.thermo.harmonic_analysis(mol, hess, exclude_trans=True, exclude_rot=True, imaginary_freq=True)[source]

Each column is one mode

imaginary_freq (boolean): save imaginary_freq as complex number (if True) or negative real number (if False)

pyscf.hessian.thermo.rotation_const(mass, atom_coords, unit='GHz')[source]

Rotational constants to characterize rotational spectra

Kwargs:

unit (string) : One of GHz, wavenumber

pyscf.hessian.thermo.rotational_symmetry_number(mol)[source]

Number of unique orientations of the rigid molecule that only interchange identical atoms.

Source http://cccbdb.nist.gov/thermo.asp (search “symmetry number”)