MP Compatibility and energy corrections


I have a few questions/clarifications regarding the compatibility scheme in MP and pymatgen. If I understand correctly, when we use the MPCompatibility to process computed entries, for oxides, the scheme developed in this paper ( is used. Here, two corrections are being done : The DFT overbinding problem of O2 molecule is treated the same way as the previous paper ( and this correction is applied to oxide entries per oxygen atom on all of the oxides. Then, for transition metals with Hubbard U values, the mixing scheme correction of GGA / GGA+U is applied and this correction is per metal atom.

Is it correct that the GasCorrection scheme (of shifting the O2 molecule energy to fit the experimental value) is not done for oxides and AnionCorrection is used instead? On the other hand, nitrides, halides and hydrides use this GasCorrection to shift the DFT-calculated gaseous entry energies, and do not use the shifting of solid energies per O-atom as done in oxides?

If I understood correctly that in oxides instead of just shifting the O2 energy, we shift all of the oxide energies per O-atom, then for the O2 molecule energy, the raw DFT value would be used in generating the phase diagrams without any corrections?

Also, I guess this shifting energy has been determined separately for oxides, peroxides, superoxide and ozonides (as listed in MPCompatibility.yaml file), and this is named AnionCorrection? I just want to make sure, since both of the papers linked above didn’t do fitting for peroxides, superoxide. Is there a reference for this fitting?

Are the values The Advanced - U Corrections in MPCompatibility.yaml - exclusively for oxides?

Lastly, when generating MP entries to make phase diagrams, can we safely think of the most stable O2 entry (mp-12957) as the O2 molecule energy? The reason for this question is because this entry is tagged as “Oxygen - eta phase High pressure experimental phase”, a solid phase. Perhaps it’s because the entry that seems like O2 molecule (mp-1009490) is only 2 meV/atom above the hull (mp-12957), so either way is fine?

Thank you.

Hi @KyuJung_Jun, those are all great questions. Your understanding is correct. Specifically:

  • For oxides / peroxides / superoxides, we shift the compound energy rather than the gas energy. This is done so that we can have different shifts depending on the type of oxygen bond that arises in the compound, and it is called an AnionCorrection
  • For other gaseous elements, we apply the energy shift to the element rather than the compound
  • You can think of mp-12957 as the ground state. For thermodynamic consistency when constructing phase diagrams, we always use the lowest energy polymorph from DFT.
  • the U corrections are only applied to transition metal oxides and fluorides

An important note to all of the above is that we have recently updated the correction scheme (see MaterialsProject2020Compatibility in pymatgen). This will become the default in pymatgen shortly after the next database release (so within the next month or so). This scheme will be documented in detail in a forthcoming manuscript (which will address almost all of the questions / clarifications you raised). The values have been refitted against more recent / more rigorously curated calculations as well. Note that in the MP2020 scheme, we no longer apply gas corrections to the elements. Instead, all energy corrections are applied to the compounds (for example, an H correction goes on LiH and not on the H2 molecule).

I highly recommend that you transition your work to the new scheme as soon as possible. Bear in mind, however, that the MP2020 correction values may change by up to a few meV/atom before the scheme becomes the default.

We realize this is all a bit confusing, which is why we sought to update our corrections and write a new manuscript documenting them. Thanks for your patience as we transition to the new scheme, and feel free to send other questions!

Thank you Ryan for your nice explanations! These all make good sense. I guess regardless of using either the GasCorrection or AnionCorrection, the relative chemical potentials between different phases in phase diagram would still be mostly consistent.