Ehull mismatch

Hi! Thank you for your project. I have a question about ehull (energy above hull) data.

Some materials have abnormal ehull values.
For example, consider Ta₉NbO₂₅ (mp‑3308927) in the Ta‑Nb‑O system. The data (mp_api = 0.45.8) are as follows:

  • Nb₂O₅ (mp‑581967): eform = ‑3.034205 eV, ehull = 0
  • Ta₂O₅ (mp‑10390): eform = ‑3.346563 eV, ehull = 0
  • Ta₉NbO₂₅ (mp‑3308927): eform = ‑3.055145 eV, ehull = 0

If you calculate the ehull of Ta₉NbO₂₅ from the formation energies of the three compounds, you obtain roughly 0.26 eV/atom, whereas the database lists it as 0. When you draw the phase diagram on the website, Ta₉NbO₂₅ does not appear.
Is this a bug, or is there something I’m missing?

P.S. Similar compounds also exist in the Ti‑O system (e.g., Ti₁₁O₁₄; mp‑2739250).

I found a simpler and more intuitive example.

The data retrieved from the database and the ehull values I calculated are shown below.
As you can see, the calculated ehull values differ from those listed in the database.

id formula nsite energy eform ehull ehull (calculated)
mp‑1009594 Pr 2 –29.357016 0.046941 0.046941 0.038896
mp‑1059256 Pr 2 –29.358138 0.045818 0.045818 0.037773
mp‑1059528 Pr 2 –29.394255 0.009701 0.009701 0.001657
mp‑1179917 Pr 3 –29.368779 0.035177 0.035177 0.027133
mp‑38 Pr 4 –29.389391 0.014566 0.014566 0.006521
mp‑567630 Pr 6 –29.395673 0.008283 0.008283 0.000238
mp‑568938 Pr 1 –29.291525 0.112431 0.112431 0.104387
mp‑63 Pr 1 –29.277931 0.126025 0.126025 0.117981
mp‑97 Pr 6 –29.395912 0.008045 0.008045 0.000000
mp‑981544 Pr 3 –29.381166 0.022791 0.022791 0.014746

Can you take a look at the answers to this question and ensure that you’re looking at the formation energies after applying corrections?

mp-3308927 specifically is a compound from the GNoME dataset which has certain use restrictions. Because of these use restrictions, we haven’t yet released thermodynamic data for all of the GNoME materials.

If you want to build the phase diagrams for these, you can use the python API client:

from mp_api.client import MPRester
from pymatgen.entries.computed_entries import ComputedEntry
from pymatgen.analysis.phase_diagram import PhaseDiagram

with MPRester() as mpr:
    t = mpr.get_entries_in_chemsys("Ta-Nb-O",additional_criteria={"thermo_types": ["R2SCAN"]})
    gnome_doc = mpr.materials.summary.search(material_ids=["mp-3308927"])[0]

entries = t + [
    ComputedEntry(
        composition=gnome_doc.composition,
        energy=gnome_doc.uncorrected_energy_per_atom*gnome_doc.composition.num_atoms,
        entry_id=gnome_doc.material_id.string,
        parameters = {
            "run_type": "R2SCAN",
        },
        data = {
            "material_id": gnome_doc.material_id.string,
        }
    )
]
pd = PhaseDiagram(entries)
pd.get_plot()

If you want to use the full hull, then change “R2SCAN” to “GGA_GGA+U_R2SCAN”, and make sure you add these lines before creating the phase diagram:

from pymatgen.entries.mixing_scheme import MaterialsProjectDFTMixingScheme
MaterialsProjectDFTMixingScheme().process_entries(entries)
2 Likes

I really appreciate your help.

When I ran your code, the ehull for mp‑3308927 appeared correctly as 0. I calculated ehull from eform, for the 126 compounds in the Ta‑Nb‑O system, and only two compounds (mp‑3308927 and mp‑3323567) showed a discrepancy in ehull (0.26 eV/atom and 0.18 eV/atom, respectively). The remaining 124 compounds matched the ehull values listed in the data exactly, so I thought this was a bug.

I obtained eform (formation_energy_per_atom) from the mpr.materials.summary as follows,

with MPRester() as mpr:
    docs = mpr.materials.summary.search()

then converted it to a PDEntry not to a ComputedEntry. At that point, metadata such as the run type was missing, so I could not take the R2SCAN mixing scheme into account. I thought that all kinds of corrections (GGA / GGA+U / r2SCAN mixing) were included in the formation energy, but it seems that wasn’t the case.

Additional question:
In GGA(+U) calculations, empirical corrections (anion corrections, U referencing, etc.) are applied, and then the results are further corrected to R2SCAN. If the dataset consists solely of R2SCAN data, are those empirical corrections unnecessary? For example, if we were to construct an R2SCAN dataset for all materials in the Materials Project, would the current MP policy be to calculate formation energies and ehull without applying any additional corrections?

For example, if we were to construct an R2SCAN dataset for all materials in the Materials Project, would the current MP policy be to calculate formation energies and ehull without applying any additional corrections?

Correct, for the r2SCAN-only phase diagrams, no corrections are applied to MP’s data

If the dataset consists solely of R2SCAN data, are those empirical corrections unnecessary?

They may be needed, but that’s something we’re looking into!

1 Like

Thank you. It has been very helpful.