New Force Field Framework 🎉

I will shortly be merging in the new force field framework.

  • You will be able to create and install Python scripts for optimizing molecules & unit cells
    • e.g. ML potentials like ANI-1ccx and ANI-2x
    • calculators for materials like ASE, OpenKIM, etc.
    • xtb-python like GFN-FF
  • Each script can declare what it supports:
    • unit cells or only molecules
    • charged species
    • radicals
    • specific elements (e.g., only HCON or Ag / Au alloys, or C nanomaterials, etc.)
    • analytical gradients
  • Scripts get a copy of the current molecule in a range of file formats (e.g., a temporary file)
  • Scripts return energies and/or gradients

Avogadro handles frozen atoms / constraints by modifying the forces / gradients back from the script. Right now, there’s just freeze / unfreeze selected atoms.

Still to come:

  • Auto-optimize tool interface with “live” optimization. Real Soon Now™
  • Full replacement for Open Babel optimization (e.g., right now, this is an extra option - 1.99 / 2.0 will merge them)
  • Distance / angle / torsion constraints (e.g., debugging this took a bunch of time, so I haven’t had time to code these up)
1 Like

Fancy new demo:


1 Like

Great work. Been waiting for this for a while, can’t wait to try it out!

Please let us know how it goes - it’s obviously really new so I’m sure there will be bugs.

Would you give a bit more info about how to interface with this framework? Trying to figure out how to play with something a little more powerful than LJ when testing.


If you conda install -c conda-forge openbabel you’ll get the MMFF94 and UFF force fields. If you conda install -c xtb-python you should get GFN-FF.

I was working on an Open Babel interface that doesn’t require the Python bindings, but had a bunch of hard to debug issues. I’m making progress on that and will likely implement UFF internally as well.

Thanks i’ll give it a shot!

Ok - Installed the conda packages. How do I get avogadro to ‘read’ them? I’m not seeing any options other than LJ. Do I need to develop my own script following something like:


No, a bunch of scripts should be installed with 1.98.

What OS are you using? Have you restarted Avo2 after installing the conda packages?

If you launch from the command-line prompt, you should currently see messages about registering the force fields.

Hmm. Ok, I think I see whats going on. I think it isn’t finding my python interpreter, ubuntu jammy Jellyfish.

Ok, I set my python path and it found the force fields. Thanks!

Yes, we need some better tools for finding Python and selecting Python environments.