I want to calculate the thermodynamic parameters for a single molecule at a certain temperature. How may I do it with PySCF?

  • $\begingroup$ +1 and welcome to our community! Thanks for contributing your question here and we hope to see much more of you in the future !!! Just please keep in mind that we try to enforce high standards in our questions, so in the original version of your question before I edited it, the first letter of the title should have had a capital letter, and the word "i" is meant be capitalized whenever you're writing anything (not just on this site). Your question also had pySCF in the title but PySCF in the body. We want posts to look good. $\endgroup$ Feb 9, 2023 at 20:04

1 Answer 1


An example in which the Gibbs free energy was calculated at 298.15 K was given here by the lead author of PySCF:

#!/usr/bin/env python
# Author: Qiming Sun <[email protected]>

Thermochemistry analysis based on nuclear Hessian.

from pyscf import gto
from pyscf.hessian import thermo

# First compute nuclear Hessian.
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()
hessian = mf.Hessian().kernel()

# Frequency analysis
freq_info = thermo.harmonic_analysis(mf.mol, hessian)
# Thermochemistry analysis at 298.15 K and 1 atmospheric pressure
thermo_info = thermo.thermo(mf, freq_info['freq_au'], 298.15, 101325)

print('Rotation constant')

print('Zero-point energy')
print(thermo_info['ZPE'   ])

print('Internal energy at 0 K')
print(thermo_info['E_0K'  ])

print('Internal energy at 298.15 K')
print(thermo_info['E_tot' ])

print('Enthalpy energy at 298.15 K')
print(thermo_info['H_tot' ])

print('Gibbs free energy at 298.15 K')
print(thermo_info['G_tot' ])

print('Heat capacity at 298.15 K')

I found that by searching "free energy PySCF" in Google.


You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .