Merge branch release-2016
authorMark Abraham <mark.j.abraham@gmail.com>
Sat, 14 Jan 2017 20:58:57 +0000 (21:58 +0100)
committerMark Abraham <mark.j.abraham@gmail.com>
Sat, 14 Jan 2017 21:21:56 +0000 (22:21 +0100)
Retained master branch version of fixes for ICC on windows.

Preserved the fix for 2efc195a97f92 despite refactoring of init_em.

Change-Id: Iae54ac040cb2d72d38b0bf3a0a762a9384e4c02d

12 files changed:
1  2 
CMakeLists.txt
cmake/FindFFTW.cmake
cmake/gmxCFlags.cmake
cmake/gmxManagePluginSupport.cmake
cmake/gmxTestCXX11.cmake
src/gromacs/domdec/domdec_topology.cpp
src/gromacs/gmxana/gmx_anaeig.cpp
src/gromacs/gmxana/gmx_covar.cpp
src/gromacs/gmxana/gmx_editconf.cpp
src/gromacs/gmxana/gmx_nmeig.cpp
src/gromacs/gmxana/gmx_tune_pme.cpp
src/gromacs/mdlib/minimize.cpp

diff --cc CMakeLists.txt
index 4f0181e0827cab82ae009e815038340e338a36ed,9864bd500cf85dfeadeb64652ce0f2917b5005cf..8aa1f796a1351daa8bc819ecb0e30ebabde3e712
@@@ -1,7 -1,7 +1,7 @@@
  #
  # This file is part of the GROMACS molecular simulation package.
  #
--# Copyright (c) 2009,2010,2011,2012,2013,2014,2015,2016, by the GROMACS development team, led by
++# Copyright (c) 2009,2010,2011,2012,2013,2014,2015,2016,2017, 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.
index c6058a7561ed227640e4962717fc7e14bc74a4ec,6781ad0e8c22504a9fa669256de8f0a3ff51fce1..9e4620f35616c1602ed6c664b74292c739c21ffd
@@@ -1,7 -1,7 +1,7 @@@
  #
  # This file is part of the GROMACS molecular simulation package.
  #
- # Copyright (c) 2012,2013,2014,2015, by the GROMACS development team, led by
 -# Copyright (c) 2012,2013,2014,2015,2016, by the GROMACS development team, led by
++# Copyright (c) 2012,2013,2014,2015,2016,2017, 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.
index 6210a2e04fe4828e6eb950ed11b7c60325d2a64c,2a86ced5fcca1755042b6a22046d339674c90376..924db05e03183a19ad7a8b1e8e0136498607e605
@@@ -213,12 -229,19 +213,12 @@@ GMX_TEST_CFLAG(CFLAGS_WARN "/W3 /wd177 
              GMX_TEST_CXXFLAG(CXXFLAGS_DEBUG "-O0" GMXC_CXXFLAGS_DEBUG)
              GMX_TEST_CXXFLAG(CXXFLAGS_FP_RELASSERT "-fp-model except -fp-model precise" GMXC_CXXFLAGS_RELWITHASSERT)
          else()
- #809: exception specification for virtual function X is incompatible with that of overridden function
              if(NOT GMX_OPENMP)
 -                if(CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 13.99.99)
 -                    GMX_TEST_CXXFLAG(CXXFLAGS_PRAGMA "/wd3180" GMXC_CFLAGS)
 -                else()
 -                    GMX_TEST_CXXFLAG(CXXFLAGS_PRAGMA "/wd161" GMXC_CXXFLAGS)
 -                endif()
 +                GMX_TEST_CXXFLAG(CXXFLAGS_PRAGMA "/wd3180" GMXC_CFLAGS)
              endif()
              if (GMX_COMPILER_WARNINGS)
- GMX_TEST_CXXFLAG(CXXFLAGS_WARN "/W3 /wd177 /wd383 /wd411 /wd444 /wd809 /wd981 /wd1418 /wd1572 /wd1599 /wd2259 /wd3280 /wd11074 /wd11076 /wd2282" GMXC_CXXFLAGS)
 -                if(CMAKE_CXX_COMPILER_VERSION VERSION_LESS 15.00.00)
 -                    GMX_TEST_CXXFLAG(CXXFLAGS_WARN_OLD /wd193 GMXC_CXXFLAGS)
 -                endif()
+ #809: exception specification for virtual function X is incompatible with that of overridden function
 -                GMX_TEST_CXXFLAG(CXXFLAGS_WARN "/W3 /wd177 /wd271 /wd304 /wd383 /wd424 /wd444 /wd522 /wd593 /wd809 /wd869 /wd981 /wd1418 /wd1419 /wd1572 /wd1599 /wd2259 /wd2415 /wd2547 /wd2557 /wd3280 /wd3346 /wd1782 /wd2282" GMXC_CXXFLAGS)
++                GMX_TEST_CXXFLAG(CXXFLAGS_WARN "/W3 /wd177 /wd383 /wd411 /wd444 /wd809 /wd981 /wd1418 /wd1572 /wd1599 /wd2259 /wd3280 /wd11074 /wd11076 /wd2282" GMXC_CXXFLAGS)
              endif()
              GMX_TEST_CXXFLAG(CXXFLAGS_OPT "/Qip" GMXC_CXXFLAGS_RELEASE)
          endif()
index 0000000000000000000000000000000000000000,69c1e4c55ab34eb919be17c629beb6b8d7184d74..e3af82761e3cf698127305f0023b1c501f350ede
mode 000000,100644..100644
--- /dev/null
@@@ -1,0 -1,98 +1,98 @@@
 -# Copyright (c) 2016, by the GROMACS development team, led by
+ #
+ # This file is part of the GROMACS molecular simulation package.
+ #
++# Copyright (c) 2016,2017, 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.
+ #
+ # GROMACS is free software; you can redistribute it and/or
+ # modify it under the terms of the GNU Lesser General Public License
+ # as published by the Free Software Foundation; either version 2.1
+ # of the License, or (at your option) any later version.
+ #
+ # GROMACS is distributed in the hope that it will be useful,
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ # Lesser General Public License for more details.
+ #
+ # You should have received a copy of the GNU Lesser General Public
+ # License along with GROMACS; if not, see
+ # http://www.gnu.org/licenses, or write to the Free Software Foundation,
+ # Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA.
+ #
+ # If you want to redistribute modifications to GROMACS, please
+ # consider that scientific software is very special. Version
+ # control is crucial - bugs must be traceable. We will be happy to
+ # consider code for inclusion in the official distribution, but
+ # derived work must not be called official GROMACS. Details are found
+ # in the README & COPYING files - if they are missing, get the
+ # official version at http://www.gromacs.org.
+ #
+ # To help us fund GROMACS development, we humbly ask that you cite
+ # the research papers on the package. Check out http://www.gromacs.org.
+ include(gmxOptionUtilities)
+ # Sets GMX_USE_PLUGINS=ON in the parent scope if the toolchain and
+ # user selections permit the build to support plugin loading.
+ function(gmx_manage_plugin_support)
+     gmx_option_trivalue(GMX_LOAD_PLUGINS "Compile with plugin support, needed to read VMD supported file formats" AUTO)
+     mark_as_advanced(GMX_LOAD_PLUGINS)
+     # Find out if non-Windows builds can support plugins. Native Windows
+     # neither needs nor has library support.
+     if (NOT WIN32)
+         # TODO Make a proper find_package for dlopen to find
+         # dlfcn.h. The CMake variable CMAKE_DL_LIBS works magically
+         # for the library, however.
+         include(gmxTestdlopen)
+         gmx_test_dlopen(HAVE_DLOPEN)
+     endif()
+     # Keep the status line quiet unless something relevant has
+     # changed.
+     gmx_check_if_changed(EMIT_STATUS_MESSAGES GMX_LOAD_PLUGINS BUILD_SHARED_LIBS HAVE_DLOPEN)
+     # Whether GROMACS will really try to compile support for VMD
+     # plugins.
+     set(GMX_USE_PLUGINS OFF)
+     # Plugins are supported natively on Windows
+     if (WIN32 OR (BUILD_SHARED_LIBS AND HAVE_DLOPEN))
+         set(GMX_USE_PLUGINS ${GMX_LOAD_PLUGINS})
+     elseif(GMX_LOAD_PLUGINS)
+         # Can't support plugins for some reason. If the user required
+         # plugins, emit fatal errors. Otherwise, emit status messages
+         # for AUTO and be silent for OFF.
+         set(message "")
+         if (NOT HAVE_DLOPEN)
+             set(message "${message}dlopen() support for using dynamic plugins for VMD-supported file formats is missing. ")
+         endif()
+         if(NOT BUILD_SHARED_LIBS)
+             set(message "${message}GROMACS only supports plugins in a build that uses shared libraries, which can be disabled for various reasons. BUILD_SHARED_LIBS=on and a toolchain that supports dynamic linking is required. (Hint: GMX_PREFER_STATIC_LIBS and GMX_BUILD_MDRUN_ONLY can influence the default BUILD_SHARED_LIBS, so if you need plugins, reconsider those choices.) ")
+         endif()
+         if (GMX_LOAD_PLUGINS_FORCE)
+             message(FATAL_ERROR "${message}Cannot build with GMX_LOAD_PLUGINS=${GMX_LOAD_PLUGINS}.")
+         endif()
+         if (GMX_LOAD_PLUGINS_AUTO AND EMIT_STATUS_MESSAGES)
+             message(STATUS "${message}")
+         endif()
+     endif()
+     if(EMIT_STATUS_MESSAGES)
+         if(GMX_USE_PLUGINS)
+             MESSAGE(STATUS "Using dynamic plugins (e.g VMD-supported file formats)")
+         else()
+             MESSAGE(STATUS "Not using dynamic plugins (e.g VMD-supported file formats)")
+         endif()
+     endif()
+     set(GMX_USE_PLUGINS ${GMX_USE_PLUGINS} PARENT_SCOPE)
+ endfunction()
+ gmx_manage_plugin_support()
+ if(GMX_USE_PLUGINS)
+     list(APPEND GMX_EXTRA_LIBRARIES ${CMAKE_DL_LIBS}) # magic cross-platform pre-set variable for dlopen library
+     set(PKG_DL_LIBS "-l${CMAKE_DL_LIBS}")
+ endif()
Simple merge
Simple merge
index 1234232ef53b8773e5410858b37ec14537af1aaf,34a5e03c3119ed662aa41752d7416979b1f0cd00..3c0a8499156b048c9e84dd2c8323e840c1620cdd
@@@ -3,7 -3,7 +3,7 @@@
   *
   * Copyright (c) 1991-2000, University of Groningen, The Netherlands.
   * Copyright (c) 2001-2004, The GROMACS development team.
-  * Copyright (c) 2013,2014,2015,2017, by the GROMACS development team, led by
 - * Copyright (c) 2013,2014,2015,2016, by the GROMACS development team, led by
++ * Copyright (c) 2013,2014,2015,2016,2017, 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.
Simple merge
Simple merge
index 251d81a5eae0180b72e5834f42e692b3cae3b1f0,90dc653b1ab0a2c9083537e4cb021997e6d9aa0c..ca8eae0e00e50f2c38f769230384b36d455814a3
@@@ -2202,15 -2201,15 +2202,15 @@@ int gmx_tune_pme(int argc, char *argv[]
      real            rcoulomb       = -1.0;            /* Coulomb radius as set in .tpr file */
      gmx_bool        bScaleRvdw     = TRUE;
      gmx_int64_t     bench_nsteps   = BENCHSTEPS;
-     gmx_int64_t     new_sim_nsteps = -1;  /* -1 indicates: not set by the user */
-     gmx_int64_t     cpt_steps      = 0;   /* Step counter in .cpt input file   */
-     int             presteps       = 100; /* Do a full cycle reset after presteps steps */
+     gmx_int64_t     new_sim_nsteps = -1;   /* -1 indicates: not set by the user */
+     gmx_int64_t     cpt_steps      = 0;    /* Step counter in .cpt input file   */
+     int             presteps       = 1500; /* Do a full cycle reset after presteps steps */
      gmx_bool        bOverwrite     = FALSE, bKeepTPR;
      gmx_bool        bLaunch        = FALSE;
 -    char           *ExtraArgs      = NULL;
 -    char          **tpr_names      = NULL;
 -    const char     *simulation_tpr = NULL;
 -    char           *deffnm         = NULL;
 +    char           *ExtraArgs      = nullptr;
 +    char          **tpr_names      = nullptr;
 +    const char     *simulation_tpr = nullptr;
 +    char           *deffnm         = nullptr;
      int             best_npme, best_tpr;
      int             sim_part = 1; /* For benchmarks with checkpoint files */
      char            bbuf[STRLEN];
index b3529be7ca456cbb6aebbc94146c952b06df4ea5,dd00b95f1beee1b82c5140610a0a21e017c4cabd..d959351aef40b5ae2fcc2d14a6409efc95147dcf
@@@ -397,16 -390,30 +397,14 @@@ void init_em(FILE *fplog, const char *t
          /* We need to allocate one element extra, since we might use
           * (unaligned) 4-wide SIMD loads to access rvec entries.
           */
 -        snew(ems->s.x, ems->s.nalloc + 1);
 -        snew(ems->f, ems->s.nalloc+1);
 -        snew(ems->s.v, ems->s.nalloc+1);
 -        for (i = 0; i < state_global->natoms; i++)
 -        {
 -            copy_rvec(state_global->x[i], ems->s.x[i]);
 -        }
 -        copy_mat(state_global->box, ems->s.box);
 +        ems->s.x.resize(ems->s.natoms + 1);
 +        ems->f.resize(ems->s.natoms + 1);
  
 -        *top      = gmx_mtop_generate_local_top(top_global, ir->efep != efepNO);
 -
 -        setup_bonded_threading(fr, &(*top)->idef);
 -
 -        if (ir->ePBC != epbcNONE && !fr->bMolPBC)
 -        {
 -            *graph = mk_graph(fplog, &((*top)->idef), 0, top_global->natoms, FALSE, FALSE);
 -        }
 -        else
 -        {
 -            *graph = NULL;
 -        }
 -
 -        atoms2md(top_global, ir, 0, NULL, top_global->natoms, mdatoms);
 +        snew(*top, 1);
 +        mdAlgorithmsSetupAtomData(cr, ir, top_global, *top, fr,
 +                                  graph, mdatoms,
 +                                  vsite, shellfc ? *shellfc : nullptr);
  
-         update_mdatoms(mdatoms, state_global->lambda[efptFEP]);
          if (vsite)
          {
              set_vsite_top(vsite, *top, mdatoms, cr);