Internal Units for Optimization & Dynamics

At the moment, there aren’t many energy plugins (i.e., only things I’ve created) but after reading through some of the docs for GROMACS and similar molecular dynamics, I’m going to suggest:

  • Energy (internally) in kJ/mol (with an option somewhere to show kcal/mol, eV or Hartree if desired)
  • Length / distance - Angstrom (Gromacs and other packages use nm for good reasons but it’s already firmly established across the codebase and file formats)
  • Time - picoseconds (common across MD)

This means forces will be in energy / length ⇒ kJ / (mol • Å)

Is there any advantage to have an option to show length / distance in other units like pm, nm, or Bohr?

1 Like

Would it maybe make more sense to use hartree internally? Given its prevalence in comp chem, I feel like that would result in fewer conversion steps.

Given how chemistry-specific the angstrom is, I would have guessed that maybe having the option for other units would be nice for biologists and physicists. But being a chemist myself, that’s just a guess.

The problem with using the Hartree internally is with any sort of force field or molecular dynamics.

I’ll quote from the OpenMM manual:

These units have the important feature that they form an internally consistent set. For example, a force always has the same units (kJ/mol/nm) whether it is calculated as the gradient of an energy or as the product of a mass and an acceleration. This is not true in some other widely used unit systems

Now of course the downside is that “total energy” from quantum chemical packages, many ML, etc. is in Hartree and converting to kJ/mol or other unit gives weird numbers (e.g. for the AutoOpt tool).

I can certainly add a feature request for different distance units, but that might take a bunch of work to identify all the places they show up in the UI. (Help here would be appreciated.)

1 Like