The Embedded Atom Method: Theory and Application