Curiosity about API cohesive energy

Hello, everyone.
Previously, I asked about ways to extract cohesive energy from the API,
and thankfully, several developers in this group added such functionality.
Previous question, cohesive energy

However, through various attempts, I discovered that the cohesive values obtained through the API differ from the cohesive values calculated directly and those known from experimental data.

Could this difference be due to the R2SCAN result, possibly an error caused by the difference in calculation methods?
I’m more confused because I’m not sure whether the value obtained through the code is the PBE calculation result or the R2SCAN calculation result.

Firstly, the code I used to obtain the cohesive values is as follows below.

                # Get Cohesive energy
                cohesive_energy = mpr.get_cohesive_energy(
                    material_ids=[material_id], normalization="atom"            # normalize with number of atom
                )[material_id]  # results are returned into dictionary
Alloy Total E Iso E # Cohesive [Ry/atm] Cohesive [eV/atm] API API. vs Cal. Exp. vs Cal. Exp.
Ac4_mp-862690 -3750.991527 -937.465441 4 -0.282440802 -3.84280595 -3.551579413 -0.291226537 0.40719405 4.25
Ag4_mp-8566 -1421.20241 -355.1146236 4 -0.185978743 -2.530371716 -2.877377145 0.347005429 0.419628284 2.95
Al1_mp-134 -39.50252869 -39.24457782 1 -0.25795087 -3.509603178 -3.59590833 0.086305152 -0.119603178 3.39
Ar1_mp-23155 -95.08174323 1 #N/A #N/A #N/A #N/A 0.08
As4_mp-158 -703.9567663 -175.7727037 4 -0.216487845 -2.945469533 -2.871830988 -0.073638546 0.014530467 2.96
Au1_mp-81 -775.1387284 -774.9162859 1 -0.22244248 -3.026486535 -3.40956015 0.383073615 0.783513465 3.81
Ba1_mp-122 -436.1810481 -436.0425076 1 -0.13854048 -1.88494076 -1.98923344 0.10429268 0.01505924 1.9
Be2_mp-87 -13.63807385 -6.37132664 2 -0.447710285 -6.091413605 -3.781196417 -2.310217187 -2.771413605 3.32
Bi2_mp-23152 -1812.73081 -906.1800103 2 -0.18539483 -2.522427176 -2.302373745 -0.220053431 -0.342427176 2.18

Of course, there are many cases where the values I calculated differ from the experimental ones, but I’m not sure why such differences occur. I suspect that it might be influenced by whether optimization is involved or not.

Thank you.
Sincerely.

Hey @Minju it’s impossible to say what the differences are without knowing how you calculated the cohesive energies. If you use different input settings than MP, or use a structure that differs from the one used by the API to calculate cohesive energy, the results will surely differ.

Take a look at the get_cohesive_energy function in the API to get a sense of where the structures are coming from, and which functional was used for the total energy. The MP structures are all geometrically optimized.

For the experimental cohesive energies, it looks like an issue of sign convention. The cohesive energy is typically defined as the binding energy of a solid so that negative values indicate stability wrt its atomic constituents.

1 Like