# 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”)