Fix grompp unbound atom check
authorBerk Hess <hess@kth.se>
Mon, 2 Mar 2020 16:42:03 +0000 (17:42 +0100)
committerPaul Bauer <paul.bauer.q@gmail.com>
Mon, 2 Mar 2020 18:16:43 +0000 (19:16 +0100)
The check in grompp for unbound atoms would check for any
potential (and constraints) instead of only potentials involving
two atoms. This enabled false negatives.

Change-Id: I677b86a4e4bbe8cd0c6a8a0bf43983be622edfa6

src/gromacs/gmxpreprocess/grompp.cpp

index 3922eeb01c1e046fad881d005632817aa2e477c6..0e68f1bd94b6ffca06ccb7b44a0c1761085f9dc8 100644 (file)
@@ -3,7 +3,8 @@
  *
  * Copyright (c) 1991-2000, University of Groningen, The Netherlands.
  * Copyright (c) 2001-2004, The GROMACS development team.
- * Copyright (c) 2013,2014,2015,2016,2017,2018,2019, by the GROMACS development team, led by
+ * Copyright (c) 2013,2014,2015,2016,2017 by the GROMACS development team.
+ * Copyright (c) 2018,2019,2020, by the GROMACS development team, led by
  * Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl,
  * and including many others, as listed in the AUTHORS file in the
  * top-level source directory and at http://www.gromacs.org.
@@ -1353,7 +1354,7 @@ static void checkForUnboundAtoms(const gmx_moltype_t* molt, gmx_bool bVerbose, w
 
     for (int ftype = 0; ftype < F_NRE; ftype++)
     {
-        if (((interaction_function[ftype].flags & IF_BOND) && ftype != F_CONNBONDS)
+        if (((interaction_function[ftype].flags & IF_BOND) && NRAL(ftype) == 2 && ftype != F_CONNBONDS)
             || (interaction_function[ftype].flags & IF_CONSTRAINT) || ftype == F_SETTLE)
         {
             const InteractionList& il   = molt->ilist[ftype];