ACEsuit / mace

MACE - Fast and accurate machine learning interatomic potentials with higher order equivariant message passing.
Other
415 stars 157 forks source link

Setting `dispersion=True` in the MACE-MP-0 foundation model omits data from `calc.results` #315

Closed Andrew-S-Rosen closed 5 months ago

Andrew-S-Rosen commented 5 months ago

Describe the bug When dispersion=True is set in the mace_mp calculator, important properties in the calculator results dictionary are omitted when called via atoms.get_potential_energy().

To Reproduce

First, let's see what happens when dispersion=False (i.e. the default).

from mace.calculators.foundations_models import mace_mp

atoms = bulk("Cu")
atoms.calc = mace_mp()
atoms.get_potential_energy()
print(atoms.calc.results.keys())

This outputs:

dict_keys(['energy', 'free_energy', 'node_energy', 'forces', 'stress'])

Now let's see what happens when dispersion=True:

from mace.calculators.foundations_models import mace_mp

atoms = bulk("Cu")
atoms.calc = mace_mp(dispersion=True)
atoms.get_potential_energy()
print(atoms.calc.results.keys())

This outputs:

dict_keys(['energy_contributions', 'energy'])

Sadly, several properties are omitted, most crucially the forces but also other properties as well. Is there a reason for this inconsistent behavior? At the very least, I would expect the same behavior regardless of whether dispersion is set or not. I understand the user can do atoms.get_forces(), but that is a separate calculation and does not resolve the aforementioned inconsistency. Since the data is available, it should be reported with atoms.get_potential_energy() as well, as this is the canonical way to generically run a calculation right now.

Expected behavior The missing properties should be present when dispersion=True is set.

Screenshots If applicable, add screenshots to help explain your problem.

Andrew-S-Rosen commented 5 months ago

Eh, looks like this is due to how TorchDFTD3Calculator is handling things, which is different than the default behavior of the MACE calculator without D3. Arguably not a bug, so feel free to do what you like with the report.