Universal Potential: M3GNet-UP-2022

Note: This example requires AMS2023 or later.

This example illustrates how set up an AMS calculation using the M3GNet 2022 Universal Potential from the MLPotential Engine.

Example usage: (Download M3GNet.py)

#!/usr/bin/env amspython
from scm.plams import *


def main():
    init()

    mol = from_smiles('O')  
    mol.lattice = [[3., 0., 0.,], [0., 3., 0.], [0., 0., 3.]]

    s = Settings()
    s.runscript.nproc = 1
    s.input.ams.task = 'GeometryOptimization'
    s.input.ams.GeometryOptimization.Convergence.Gradients = 0.01 # hartree/ang

    s.input.MLPotential.Model = 'M3GNet-UP-2022'
    #If you have trained a custom M3GNet model yourself, you can use:
    #s.input.MLPotential.Model = 'Custom'
    #s.input.MLPotential.Backend = 'm3gnet'
    #s.input.MLPotential.ParameterDir = '<path to directory containing the M3GNet model>'

    job = AMSJob(settings=s, molecule=mol, name='ams_with_m3gnet')
    job.run()

    energy = job.results.get_energy(unit='eV')
    print(f"M3GNet: final energy {energy:.3f} eV")

    finish()

if __name__ == '__main__':
    main()