Definition of terms listed by gmx-energy

GROMACS version: 2023.1
GROMACS modification: No
Hi,
where can I find the definition of terms listed by gmx-energy?
And where these quantities are calculated in the source code?

For example:
1 Bond 2 Angle 3 Proper-Dih. 4 Improper-Dih.
5 LJ-14 6 Coulomb-14 7 LJ-(SR) 8 Coulomb-(SR)
9 Coul.-recip. 10 Potential 11 Pressure 12 Vir-XX
13 Vir-XY 14 Vir-XZ 15 Vir-YX 16 Vir-YY
17 Vir-YZ 18 Vir-ZX 19 Vir-ZY 20 Vir-ZZ
21 Pres-XX 22 Pres-XY 23 Pres-XZ 24 Pres-YX
25 Pres-YY 26 Pres-YZ 27 Pres-ZX 28 Pres-ZY
29 Pres-ZZ 30 #Surf*SurfTen 31 T-rest

Best Regards.

1 Like

Misc. information regarding the energy terms

  • Units
  • Definition of the various potentials
  • Abbreviation:
    • LJ: Lennard Jones
    • 14 : Interaction between atom 1 and atom 4, by bonded connectivity (interaction 1-2 to 1-3 are typically excluded in MD). Note that exactly which of those interactions are excluded and what so-called fudge factor is applied to the 1-4 depends on the force field.
    • Vir: virial, not per-se an energy term, used for pressure computation
    • Pres: pressure
    • T-, Temp: temperature, broken out in temperature coupling groups if applicable
    • (SR): Short range = non-bonded interaction computed in direct space
    • recip: reciproqual (space) = long range = non-bonded interaction computed in reciprocal/Fourier space, that is PME for Coulomb
    • #Surf*SurfTen : see here
    • Potential: sum of potential terms
    • Dih Dihedral

Those quantities are computed in various places in the code: the high-level view being that bonded and bonded-like are found under listed_force, which are computed separately from short-range non-bonded and long-range non-bonded (hence the direct/recip/14 split of Coulomb, for instance)

Thank you.
If summing first 9 terms listed I do not get the value of potential(10) it’s because the first 9 terms are not the full potentials summation? ie there are other terms beside those 9 listed?

From what I can see in the code, all energy terms before the potential term, except for the orientation and distance restraint deviation, if present (Ori. R. RMSD and D.R.Viol. (nm)) are summed up into the potential energy terms. Terms that do not show up in the gmx energy listing are zero IIRC.

For reference, the full list of energy terms before potential is:

click to show

From src/gromacs/topology/ifunc.cpp:

    def_bond("BONDS", "Bond", 2, 2, 2),
    def_bond("G96BONDS", "G96Bond", 2, 2, 2),
    def_bond("MORSE", "Morse", 2, 3, 3),
    def_bond("CUBICBONDS", "Cubic Bonds", 2, 3, 0),
    def_bondnb("CONNBONDS", "Connect Bonds", 2, 0, 0),
    def_bonded("HARMONIC", "Harmonic Pot.", 2, 2, 2),
    def_bondnb("FENEBONDS", "FENE Bonds", 2, 2, 0),
    def_bondt("TABBONDS", "Tab. Bonds", 2, 2, 2),
    def_bondedtz("TABBONDSNC", "Tab. Bonds NC", 2, 2, 2),
    def_bonded("RESTRAINTPOT", "Restraint Pot.", 2, 4, 4),
    def_angle("ANGLES", "Angle", 3, 2, 2),
    def_angle("G96ANGLES", "G96Angle", 3, 2, 2),
    def_angle("RESTRANGLES", "Restr. Angles", 3, 2, 2),
    def_angle("LINEAR_ANGLES", "Lin. Angle", 3, 2, 2),
    def_bonded("CROSS_BOND_BOND", "Bond-Cross", 3, 3, 0),
    def_bonded("CROSS_BOND_ANGLE", "BA-Cross", 3, 4, 0),
    def_angle("UREY_BRADLEY", "U-B", 3, 4, 4),
    def_angle("QANGLES", "Quartic Angles", 3, 6, 0),
    def_bondedt("TABANGLES", "Tab. Angles", 3, 2, 2),
    def_dihedral("PDIHS", "Proper Dih.", 4, 3, 3),
    def_dihedral("RBDIHS", "Ryckaert-Bell.", 4, 6, 6),
    def_dihedral("RESTRDIHS", "Restr. Dih.", 4, 2, 2),
    def_dihedral("CBTDIHS", "CBT Dih.", 4, 6, 6),
    def_dihedral("FOURDIHS", "Fourier Dih.", 4, 4, 4),
    def_dihedral("IDIHS", "Improper Dih.", 4, 2, 2),
    def_dihedral("PIDIHS", "Per. Imp. Dih.", 4, 3, 3),
    def_dihedral_tabulated("TABDIHS", "Tab. Dih.", 4, 2, 2),
    def_dihedral("CMAP", "CMAP Dih.", 5, -1, -1),
    def_nofc("GB12", "GB 1-2 Pol. (unused)"),
    def_nofc("GB13", "GB 1-3 Pol. (unused)"),
    def_nofc("GB14", "GB 1-4 Pol. (unused)"),
    def_nofc("GBPOL", "GB Polarization (unused)"),
    def_nofc("NPSOLVATION", "Nonpolar Sol. (unused)"),
    def_pair("LJ14", "LJ-14", 2, 2, 2),
    def_nofc("COUL14", "Coulomb-14"),
    def_pair("LJC14_Q", "LJC-14 q", 2, 5, 0),
    def_pair("LJC_NB", "LJC Pairs NB", 2, 4, 0),
    def_nb("LJ_SR", "LJ (SR)", 2, 2),
    def_nb("BHAM", "Buck.ham (SR)", 2, 3),
    def_nofc("LJ_LR", "LJ (unused)"),
    def_nofc("BHAM_LR", "B.ham (unused)"),
    def_nofc("DISPCORR", "Disper. corr."),
    def_nofc("COUL_SR", "Coulomb (SR)"),
    def_nofc("COUL_LR", "Coul (unused)"),
    def_nofc("RF_EXCL", "RF excl."),
    def_nofc("COUL_RECIP", "Coul. recip."),
    def_nofc("LJ_RECIP", "LJ recip."),
    def_nofc("DPD", "DPD"),
    def_bondnb("POLARIZATION", "Polarization", 2, 1, 0),
    def_bonded("WATERPOL", "Water Pol.", 5, 6, 0),
    def_bonded("THOLE", "Thole Pol.", 4, 3, 0),
    def_bondnb("ANHARM_POL", "Anharm. Pol.", 2, 3, 0),
    def_bonded("POSRES", "Position Rest.", 1, 3, 3),
    def_bonded("FBPOSRES", "Flat-b. P-R.", 1, 3, 0),
    def_bonded("DISRES", "Dis. Rest.", 2, 6, 0),
    def_nofc("DISRESVIOL", "D.R.Viol. (nm)"),
    def_bonded("ORIRES", "Orient. Rest.", 2, 6, 0),
    def_nofc("ORDEV", "Ori. R. RMSD"),
    def_bonded("ANGRES", "Angle Rest.", 4, 3, 3),
    def_bonded("ANGRESZ", "Angle Rest. Z", 2, 3, 3),
    def_bonded("DIHRES", "Dih. Rest.", 4, 3, 3),
    def_nofc("DIHRESVIOL", "Dih. Rest. Viol."), /* obsolete */
    def_shkcb("CONSTR", "Constraint", 2, 1, 1),
    def_shk("CONSTRNC", "Constr. No Conn.", 2, 1, 1),
    def_shkcb("SETTLE", "Settle", 3, 2, 0),
    def_vsite("VSITE1", "Virtual site 1", 2, 0),
    def_vsite("VSITE2", "Virtual site 2", 3, 1),
    def_vsite("VSITE2FD", "Virtual site 2fd", 3, 1),
    def_vsite("VSITE3", "Virtual site 3", 4, 2),
    def_vsite("VSITE3FD", "Virtual site 3fd", 4, 2),
    def_vsite("VSITE3FAD", "Virtual site 3fad", 4, 2),
    def_vsite("VSITE3OUT", "Virtual site 3out", 4, 3),
    def_vsite("VSITE4FD", "Virtual site 4fd", 5, 3),
    def_vsite("VSITE4FDN", "Virtual site 4fdn", 5, 3),
    def_vsite("VSITEN", "Virtual site N", 2, 2),
    def_nofc("COM_PULL", "COM Pull En."),
    def_nofc("DENSITYFIT", "Dens. fitting"),
    def_nofc("EQM", "Quantum En."),

Yes, that is correct.