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():

    mol = from_smiles("O")
    mol.lattice = [
        [
            3.0,
            0.0,
            0.0,
        ],
        [0.0, 3.0, 0.0],
        [0.0, 0.0, 3.0],
    ]

    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")


if __name__ == "__main__":
    main()