Experimental Reference for ion formation energy

Where can I find the experimental reference paper from where the ion formation energy was picked from, when constructing the pourbaix diagram ? Generally, How can I access metadata for ions ?

You can obtain all metadata for ions, including reference sources, via the API. The major sources are:

  • D. D. Wagman et al., Selected values of chemical thermodynamic properties, NBS Technical note 270, Washington; 1968-1971
  • H. E. Barner and R. V. Scheuerman, Handbook of thermochemical data for compounds and aqueous species, Wiley, New York (1978)
  • M. Pourbaix, Atlas of electrochemical equilibria in aqueous solutions, NACE International, Cebelcor (1974)

This paper introduces the formalism used and explains how reference data was obtained.

This notebook on plotting pourbaix diagrams goes into more detail on obtaining and using the data.

1 Like

Thank you for the help. I was trying to search for the command like mpr._make_request, didnt realize this was already discussed in a previous thread.

1 Like


I want to add a new ion entry, I was adding it as a pourbaix entry and I realized you cant add reference solid. Further, I found that the command mpr.get_pourbaix_entries() changes the reference from what was mentioned in the metadata for the ions. This makes sense to ensure consistency. The reference is the solid with lowest e_above_hull.

I have two questions :

  1. If you directly add a porbaix entry, should it be referenced to the solid with lowest e_above_hull ?
  2. Is there any further correction applied to the ion formation energy or the DFT energy of solid based on the ion formation energy (to represent exp dissolution energy) ?

Generally, is there a previous thread or tutorial on how to add pourbaix entries, especially ions. I am using the following code, Let me know if there is a better way to do this.

from pymatgen.core.ion import Ion, Composition
from pymatgen.analysis.pourbaix_diagram import PourbaixEntry, IonEntry
entry = IonEntry(ion = ion, energy = {energy})
pbentry = PourbaixEntry(entry, ‘ion’.format(n))

Thank you

Great question! Below is a way to add an ion entry.

from pymatgen.analysis.pourbaix_diagram import PourbaixEntry
from pymatgen.analysis.pourbaix_diagram import Ion
from pymatgen.analysis.pourbaix_diagram import IonEntry
entries = mpr.get_pourbaix_entries([“Cu”])
ion_ent = IonEntry(Ion.from_formula(“formula”), energy)
pb_ion_entry = PourbaixEntry(ion_ent, concentration=1e-06)

The energy (in eV/ion) that you input for your ion_ent should be the Gibbs free energy of the ion, which can be obtained from the DFT energy as is described in the Pourbaix Diagram Formalism in these papers https://journals.aps.org/prb/abstract/10.1103/PhysRevB.85.235438 and https://www.nature.com/articles/ncomms15852. The chemical potential of water at T=298 K is -2.46 eV/H2O. The chemical potential of the certain metal ions has already been referenced to a reference solid. Therefore, you obtain the chemical potential of your required metal ion with entries[0].as_dict(). (The original ions are listed first in entries.)

Thank you for the help. Just to confirm, was my assessment of reference right ?. That is, the new ion entry should always be referenced to the solid with lowest e_above_hull, because I am not sure how the algorithm handles references. The class PourbaixEntry or IonEntry doesnt have a reference property.