MP Phase Diagram App -- finite T only works for "R2SCAN only"


Using the phase diagram app and turning finite temperature estimation on removes many compounds unless the functional is “R2SCAN only”. For instance, in the Mn-O phase diagram, there are the usual suspects at 0 K no matter which functional is chosen – MnO, MnO2, Mn2O3, etc.

Turning finite T estimation on (even at 300 K) displays only Mn and O (no compounds present) unless “R2SCAN only” is chosen as the functional. When this is chosen, the display seems correct – MnO, MnO2, etc appear and with slightly more positive formation energies than the 0 K formation enthalpies.

This model for G(T) is more-or-less agnostic to how the formation enthalpy is determined so it should be applicable to all the available approaches in MP.


I can confirm Chris’s observations and this looks like a bug in how the formation energy data is currently being sourced for the app.

Tagging @tschaume – can you please add this to the MP to-dos?

Thanks @cbartel and @mattmcdermott for reporting this! I’m looking into this. Will update soon

1 Like

It was indeed a small bug which just got fixed. You should be able to see the update sometime next week when we deploy. Thank you again for reporting this bug! @cbartel

1 Like

Thanks for working on this @ruoxiyang! It seems to be working now.

I actually have a possible feature request related to this App. Posting here, but feel free to move to its own topic if you feel that would be better (my explanation is rather involved).

This G(T) model is really not sufficient to (reliably) capture polymorphic phase transitions. It was fit to experimental data for ground-state (298 K) structures only up to temperatures preceding phase transitions (either polymorphic ones or melting). As such, the model is really most well-suited to capture the finite temperature influence on thermodynamic competition between materials having different compositions (e.g., stability with respect to decomposition on the convex hull or with respect to elemental phases).

In fact, when the composition is fixed between two entries, the only thing that influences the model-predicted G(T) difference between these entries is the atomic volume (essentially the packing density), and polymorphs having lower density will be stabilized relative to polymorphs having higher density as T increases (essentially, the model suggests that the vibrational entropy of less densely packed crystals is higher). This is generally fine, but can occasionally manifest in some strange temperature-dependent polymorphic phase transitions toward very loosely packed crystals (eg porous materials or layered materials) if the model is allowed to predict them.

For example, at 0 K, the Materials Project ground-state structure of MnO2 is mp-19395 with formation energy = -1.807 eV/atom and is on the hull (using GGA/GGA+U). At 1500 K, this structure is (correctly) predicted by the model to destabilize under these very reducing conditions. Its formation energy increases to -0.927 eV/atom and it is 78 meV/atom above the hull. This seems appropriate. However, there is still an MnO2 polymorph on the convex hull at 1500 K – mp-1272141 with formation energy = -1.005 eV/atom. At 0 K, this polymorph is 14 meV/atom above the hull with formation energy = -1.793 eV/atom. So, from 0 K to 1500 K the polymorph energy difference between mp-19395 and mp-1272141 changed by 92 meV/atom. While this is not impossible, it seems anomalous to me. When checking these structures, the one that is stabilized at high T is especially loose – it is a quasi-2D form of MnO2 (probably made by deintercalating Li from layered LiMnO2).

In practice, when I am using this G(T) model, I generally don’t expect it to be good at capturing polymorphic phase transitions. So, one approach I commonly use is to start with the 0 K ground-state polymorphs for each composition in a given phase diagram, then apply the G(T) model only to these ground-state polymorphs in order to probe the influence of temperature on their thermodynamic stability (with respect to phase separation).

Would it be possible to give the user an option for doing this in the Phase Diagram App? For instance, this could be a toggle switch that appears below the “Temperature (300 → 1800)” bar that says “consider only 0 K ground-state polymorphs (on/off)” or something similar. Toggling this to on would mean only one dot would appear at each composition in the phase diagram for any selected temperature (i.e., only the 0 K ground-state polymorph at each composition).

Does this make sense and seem useful/doable?

Tagging @mattmcdermott as well since you may be interested or have thoughts.


Thanks for the nice write-up @cbartel. I also tend to do what you describe when making phase diagrams, but I usually do my pre-filtering at 300 K (I’m also including some experimental data though).

Do you think filtering at 300 K is reasonable?

Yep, 300 K is definitely reasonable. At this temperature, the model should not be significantly influencing polymorph energy orderings.

thanks @cbartel That’s a nice feature request. I agree with the fact that the polymorph phase transition cannot be sufficiently captured here.
I would vote for using the 0K ground state structure though, as it makes more sense for me conceptually because we are taking 0K DFT structures to begin with. The whole point is that the model may not be good enough for the energy ordering of polymorphs at finite temperature, therefore using 300K filter, albeit a practical solution, feels a little fuzzy.
But I am open to changing my opinion if there’s evidence supporting 300k

I agree that for the purposes of this app, using the 0 K structures makes the most sense.