ACEsuit / mace

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

What are the node energies? #416

Closed binxi0629 closed 1 month ago

binxi0629 commented 1 month ago

Hi,

Good job for MACE-OFF23. I am using the implemented MACE ASE Calculator, but I am wondering what are the "node_energy" and node_e0? Are the node energies simply per-atom energy (but seems the sum of all node energies is not equal to the "energy")? What are the difference between self.results['energy'] and self.results["node_energy"] ?

self.results["node_energy"] = (
                torch.mean(ret_tensors["node_energy"] - node_e0, dim=0).cpu().numpy()
            )
binxi0629 commented 1 month ago

BTW, if I modified it by adding ret_tensors["node_energy"] and node_e0, then the sum among all node energies (self.results["node_energy"]) is exactly the same as the total energy (self.results['energy']).

ilyes319 commented 1 month ago

Hey! MACE predicts energies on each atoms that we call site energy, and the total energy of the system is the sum of these site energies. The self.results["node_energy"] are just the site energies. The node_e0 corresponds to the isolated atoms energies, meaning what energy will MACE output for atoms that is alone in a vacuum.