Machine Learning forcefields / interatomic potentials¶
atomate2 includes an interface to a few common machine learning interatomic potentials (MLIPs), also known variously as machine learning forcefields (MLFFs), or foundation potentials (FPs) for universal variants.
Most of Maker classes using the forcefields inherit from atomate2.forcefields.utils.ForceFieldMixin to specify which forcefield to use.
The ForceFieldMixin mixin provides the following configurable parameters:
force_field_name: Name of the forcefield to use.calculator_kwargs: Keyword arguments to pass to the corresponding ASE calculator.
These parameters are passed to atomate2.forcefields.utils.ase_calculator() to instantiate the appropriate ASE calculator.
The force_field_name should be either one of predefined atomate2.forcefields.utils.MLFF (or its string equivalent) or a dictionary decodable as a class or function for ASE calculator as follows.
Using predefined forcefields supported via atomate2.forcefields.utils.MLFF¶
Support is provided for the following models, which can be selected using atomate2.forcefields.utils.MLFF, as shown in the table below.
You need only install packages for the forcefields you wish to use.
Forcefield Name |
|
Reference |
Description |
|---|---|---|---|
CHGNet |
|
Available via the |
|
DeepMD |
|
The Deep Potential model used for this test is |
|
Gaussian Approximation Potential (GAP) |
|
Relies on |
|
M3GNet |
|
Relies on |
|
MACE-MP-0 |
|
Relies on |
|
MACE-MP-0b3 |
|
Relies on |
|
MACE-MPA-0 |
|
Relies on |
|
MatPES-PBE |
|
Relies on |
|
MatPES-r2SCAN |
|
Relies on |
|
Neuroevolution Potential (NEP) |
|
Relies on |
|
Neural Equivariant Interatomic Potentials (Nequip) |
|
Relies on the |
|
SevenNet |
|
Relies on the |
Using custom forcefields by dictionary¶
force_field_name also accepts a MSONable dictionary for specifying a custom ASE calculator class or function [1].
For example, a Job created with the following code snippet instantiates chgnet.model.dynamics.CHGNetCalculator as the ASE calculator:
job = ForceFieldStaticMaker(
force_field_name={
"@module": "chgnet.model.dynamics",
"@callable": "CHGNetCalculator",
}
).make(structure)