Skip to content
This repository has been archived by the owner on Sep 29, 2022. It is now read-only.

Automatically differentiable atomistic potentials for molecular simulations

License

Notifications You must be signed in to change notification settings

google/differentiable-atomistic-potentials

Differentiable atomistic potentials

This is not an official Google product.

Summary

An atomistic potential is a function that takes atomic coordinates, atom types and a unit cell and calculates the potential energy of that atomic configuration. These potentials are used in molecular simulations such as molecular dynamics and Monte Carlo Simulations. Historically, the forces and stress were derived by analytical or numerical derivatives of the potential energy function, then implemented in a program. In this project, we use automatic differentiation to compute forces and stresses from the potential energy program. This project focuses on materials that are described by periodic boundary conditions.

The first demonstration of this approach is for the Lennard Jones potential, which is fully implemented in TensorFlow to compute energies, forces and stress of periodic atomic systems containing one kind of chemical element. The potential is trainable from a database of reference data, e.g. density functional theory calculations. An example is illustrated in ./docs/dap.tf.lennardjones.org.

Installation

If you have root access, and you want to install the bleeding edge version system-wide, it should be sufficient to run:

pip install git+git://github.com/google/differentiable-atomistic-potentials

If you want an editable, developer installation you might prefer this:

git clone https://github.com/google/differentiable-atomistic-potentials.git
cd differentiable-atomistic-potentials
pip install --user -e .

Related projects

The earliest code we are aware of is Runner, but it is only available by request from the authors.

  • Amp cite:khorshidi-2016-amp is an open-source Python/Fortran package for machine learned neural network potentials.
  • PROPhet cite:kolb-2017-discov-charg is an open-source package for machine learned neural network potentials.
  • aenet cite:artrith-2016 is an open source Fortran package for machine learned neural network potentials.

This project is complementary to those projects. We share a common goal of open-source machine learned neural network potentials. Our approach differs primarily in the use of automatic differentiation to enable efficient training as well as automatic forces and stresses. We also aim to make it possible to generate hybrid potentials comprised of a classical potential and a neural network potential.

Automatic differentiation toolkits

Here are a few of the AD toolkits that are currently around.

autograd
A Numpy/Python framework
Tensorflow
An open-source machine learning framework for everyone
tangent
Source-to-Source Debuggable Derivatives in Pure Python

I have not tried these

algopy
a tool for Algorithmic Differentiation (AD) and Taylor polynomial approximations.
pytorch
Another machine learning framework in Python
Chainer
Another machine learning framework in Python

Roadmap

These projects are planned in the future.

  • [X] Vectorized neighborlists for periodic boundary conditions autograd and TensorFlow.
  • [X] Vectorized one-way neighborlists for periodic boundary conditions autograd and Tensorflow
  • [X] Lennard Jones potential in autograd and Tensorflow.
  • [ ] Effective medium theory for multicomponent alloys in autograd and Tensorflow
  • [ ] Behler-Parinello Neural Network for multicomponent systems

Requirements

This project is written for Python 3.6.

See ./requirements.txt for a list of required Python packages.

About

Automatically differentiable atomistic potentials for molecular simulations

Resources

License

Code of conduct

Security policy

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published