Formation energy calculation


I am trying to reproduce the formation energies of some oxides but I can’t seem to, any help as to a mistake I might be making would be greatly appreciated! For instance, for CoO2, I am taking mvc-14149 which is on the hull and has a corrected energy/atom of -80.9849/12 = -6.749 eV, and I am taking Co and O to be -7.108 and -4.948 eV/atom respectively.


-6.749 + 7.108/3 + 2*4.948/3 = -1.081 eV/atom, not -1.17, as it is listed.

I found the same problem for NiO2 and FeO2, in that case, this calculation led to discrepancies of -0.1 eV/atom, as opposed to +0.1 eV/atom, as in the Co case. I was able to reproduce the formation energies for CrO2/MnO2/VO2 if that helps.


Hi @michaelcraig,

Sorry for the late reply. I think that this is a problem with some of the derived properties on the legacy website that is fixed on the new site ( If you check out mp-1400906 you should see that it has a formation energy of -1.081 eV/atom – same as your calculation!

Note that this is a problem only with the formation energy box on the legacy site – not the calculation itself. If you download the entries through the Materials Project API or build the Co-O phase diagram (even on the legacy site), you should see the correct formation energy of -1.081 eV/atom.

Hope this helps!

Hello @mattmcdermott, thank you for the reply. How would you suggest getting formation energies from the API?
Since if I execute the following code:

from pymatgen.ext.matproj import MPRester

mpr = MPRester('$API_KEY')

form_ene = mpr.get_entry_by_material_id('mvc-14149', property_data=['formation_energy_per_atom']).data['formation_energy_per_atom']

The output is


Tested using pymatgen versions 2022.0.17 and 2022.4.19.

Then, using mp_api

from mp_api import MPRester
mpr = MPRester('$NEXTGEN_API_KEY')

doc = mpr.thermo.get_data_by_id("mp-1400906", )

Leads to printing None.