Fix gmx_rmpbc_init with InteractionDefinitions
authorBerk Hess <hess@kth.se>
Wed, 10 Feb 2021 10:38:47 +0000 (11:38 +0100)
committerBerk Hess <hess@kth.se>
Wed, 10 Feb 2021 10:41:38 +0000 (11:41 +0100)
Molecules were not made whole when gmx_rmpbc_init with
InteractionDefinitions. This caused all trajectoryanalysis tools
not to make molecules whole.

Fixes #3900

docs/release-notes/2021/2021.1.rst
src/gromacs/pbcutil/rmpbc.cpp

index 93e19dba489ea9035ef9af3c04d01e7168e813fb..9eb10dae2c77d6be894e25fd730cd5919173cec5 100644 (file)
@@ -19,6 +19,15 @@ Fixes where mdrun could behave incorrectly
 Fixes for ``gmx`` tools
 ^^^^^^^^^^^^^^^^^^^^^^^
 
+Fix periodic boundary conditions in analysis framework tools
+""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
+
+There was a bug in the trajectory analysis framework which caused
+molecules that were broken over PBC not to be made whole. This would
+usually lead to obviously incorrect outliers in analysis output.
+
+:issue:`3900`
+
 Fix range checking bug in gmx covar
 """""""""""""""""""""""""""""""""""
 
index a355d6df668d49cfff726f8d87f1d87529d80770..0a01be35a5dd7cb2b4b64fd4a7e19f88ee114ac6 100644 (file)
@@ -4,7 +4,7 @@
  * Copyright (c) 1991-2000, University of Groningen, The Netherlands.
  * Copyright (c) 2001-2004, The GROMACS development team.
  * Copyright (c) 2013,2014,2015,2016,2017 by the GROMACS development team.
- * Copyright (c) 2018,2019,2020, by the GROMACS development team, led by
+ * Copyright (c) 2018,2019,2020,2021, 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.
@@ -76,7 +76,8 @@ static t_graph* gmx_rmpbc_get_graph(gmx_rmpbc_t gpbc, PbcType pbcType, int natom
     int            i;
     rmpbc_graph_t* gr;
 
-    if (pbcType == PbcType::No || nullptr == gpbc || nullptr == gpbc->idef || gpbc->idef->ntypes <= 0)
+    if (pbcType == PbcType::No || nullptr == gpbc
+        || (nullptr == gpbc->interactionDefinitions && (nullptr == gpbc->idef || gpbc->idef->ntypes <= 0)))
     {
         return nullptr;
     }