cesmix-mit / InteratomicPotentials.jl

Contains methods and types for a variety interatomic potentials.
MIT License
27 stars 6 forks source link

Working #10

Closed dallasfoster closed 2 years ago

dallasfoster commented 2 years ago

The main contents of this pull request center on (1) the creation of the type BasisPotential (and elimination of 'FittedPotential', which doesn't make sense), and (2) the addition of EmpiricalPotentials.

  1. The creation of the BasisPotential type is important because it will become the main type of potential that will be used in applications at CESMIX. BasisPotentials are characterized by the use of a set of basis functions that are used to approximate an unknown interatomic potential between atoms. SNAP uses a particular type of basis set, ACE.jl implements more general forms of potentials and part of this refactoring is to eventually allow for the use of these potentials through InteratomicPotentials.jl.

BasisPotentials should have two fields: 1) the coefficients of the basis elements and 2) parameters needed in order to create the basis descriptors. The basis element coefficients are typically unknown in advanced and must be learned from data. The basis parameters are used to construct the basis descriptors through the use of the evaluate_basis (constructs the descriptors from which the potential energy can be calculated by taking the inner product with the coefficients), evaluate_basis_d (constructs the derivative of the descriptors with respect to the distance between atoms, from which the force can be evaluated by taking the inner product with the coefficients), or evaluate_basis_v (from which the viral can be evaluated by taking the inner product with the coefficients). evaluate_basisfull constructs all three of these and returns the group. All evaluate* functions take inputs of the form (A::AbstractSystem, params::BasisParameters)

  1. Re-added the BornMayer and Coulomb empirical potentials. Added the ZBL potential which further work (in order to add the switching function that LAMMPS uses in their implementation) and testing.