# pyscf: Why should the choice of pseudopotential determine the total energy, and not the physics?

I have limited experience with DFT, but as an exercise I have written a DFT program of an atom (from scratch using nothing more than python built in functions and numpy) by following Richard Martin's book on Electronic Structure calculations from 2004. Now I am trying to learn to use pyscf, but it has limited documentation.

• In the chapter of Richard Marin on pseudopotentials I read that --core states remain almost unchanged when a pseudopotential is introduced. So I do not anticipate that the total energy would change by a factor of 2 or 20 when starting with a pseudopotential.

However here is a script for bulk diamond (8 atoms per unit cell) after the atoms have been perturbed by a small amount and with lattice constant 3.57 using the Goedecker-Teter-Hutter (GTH) pseudopotential

import pyscf.pbc.dft as pbcdft
from pyscf.pbc import gto

cell = gto.Cell()
cell.a = '''
3.57  0       0
0       3.57  0
0       0       3.57'''
cell.atom =  '''C       -0.0059      -0.0384      -0.0080
C        0.8996       0.8834       0.8834
C        1.7947       1.7855       0.0279
C        2.6933       2.6673       0.8611
C        1.7998       0.0367       1.7496
C        2.7021       0.8854       2.6549
C       -0.0023       1.7795       1.8028
C        0.8828       2.6990       2.6548'''
cell.basis = 'gth-szv'
cell.pseudo = 'gth-lda'
cell.verbose = 4
cell.build()
mf=pbcdft.RKS(cell)
mf.kernel()


and using this script I calculate DFT energy (per unit cell) = -44.871672302677794. I assume that is -152.6275508125 eV per atom. But my reference says I should expect close to 9 eV at 5.687 Ångstrøm$$^3$$/atom. Can you see if it is it my reasoning that the pseudopotential shouldn't change the total energy by a factor of 17 that is wrong, or is it a problem with the PYSCF examples?

EDIT: I am assuming the input units of pyscf are in Ångstrøm, and the output is given in Hartree (because no units are quoted)

• If you want to calculate the energy per atom, you should divide the output energy by the number of atoms in your simulation (here, 8).
– user8097
Jan 17 at 20:42
• Energies in DFT don't carry meaning on their own, but differences do, assuming what you're comparing was calculated with the same theory.
– user8097
Jan 17 at 20:45
• Thanks. If there are 8 atoms, I divide by 8. But I also convert from hartree to eV. Jan 17 at 21:26
• I cant to get the total energy. That's the trace of the product of the density matrix with the hamiltonian Jan 17 at 21:26