alexxy/gromacs.git
7 years agoMerge branch release-2016
Berk Hess [Fri, 16 Sep 2016 11:40:25 +0000 (13:40 +0200)]
Merge branch release-2016

Change-Id: I0c8c02d4fbd56042ad77e7b646323b2570d06c7c

7 years agoMade distance restraints work with threads and DD
Berk Hess [Wed, 10 Aug 2016 10:23:03 +0000 (12:23 +0200)]
Made distance restraints work with threads and DD

The NMR distance restraints use several buffers for summing distances
that were indexed based on the index of the thread+domain local ilist
force atoms. This gives incorrect results with OpenMP and/or domain
decomposition. Using the type index for the restraint and a domain-
local, but not thread-local index for the pair resolves these issues.
The are now only two limitations left:
* Time-averaged restraint don't work with DD.
* Multiple copies of molecules in the same system without ensemble
  averaging does not work with DD.

Fixes #1117.
Fixes #1989.
Fixes #2029.

Change-Id: Ic51230aa19a4640caca29a7d7ff471e30a3d9f09

7 years agoMove the PME Ewald coefficients to the PME structure
Aleksei Iupinov [Tue, 13 Sep 2016 12:50:11 +0000 (14:50 +0200)]
Move the PME Ewald coefficients to the PME structure

Ewald coefficients no longer get passed every step to gmx_pme_do().
Instead, they are passed to gmx_pme_(re)init,
as they only change together with the grid size, not every MD step.

Change-Id: Iea75063cf060317e3f0fcfd147431520b6c83a90

7 years agoMoved expanded ensemble history to pointer in t_state
Berk Hess [Thu, 8 Sep 2016 14:24:40 +0000 (16:24 +0200)]
Moved expanded ensemble history to pointer in t_state

Data of special modules such as expanded ensemble should be stored
in pointers in t_state. This is also needed for converting t_state
to C++ without converting all special modules at the same time.

Change-Id: I22e5a939638ac318eb8167fee5f1097c1f1981e0

7 years agoTidy: modernize-use-emplace
Roland Schulz [Thu, 1 Sep 2016 21:15:42 +0000 (14:15 -0700)]
Tidy: modernize-use-emplace

run-clang-tidy.py -checks=modernize-use-emplace -header-filter=.* -fix -j80

http://llvm.org/releases/3.9.0/tools/clang/tools/extra/docs/clang-tidy/checks/modernize-use-emplace.html

Change-Id: I57a17487837f7afacc915d1c3cbf13c802c2a83c

7 years agoChange ED and swapstate to pointers in t_state
Berk Hess [Thu, 8 Sep 2016 13:27:05 +0000 (15:27 +0200)]
Change ED and swapstate to pointers in t_state

Data of special modules such as ED and swapstate should be stored in
pointers in t_state.
This is also needed for converting t_state to C++ without converting
all special modules at the same time.

Change-Id: If8c7cb197f325ccf113aeebd807491ebd5a7b169

7 years agoPreliminary clean up of NVML code
Mark Abraham [Wed, 31 Aug 2016 21:42:34 +0000 (23:42 +0200)]
Preliminary clean up of NVML code

Restructured logic so that it's simpler - there's multiple reasons why
we might not be able to change clocks, so now we just return after any
check that fails. No functionality changes here.

nvml_initialized does not need to persist.

Reading driver and runtime version is not needed.

Fixed some spelling.

Noted TODOs for subsequent cleanup.

Change-Id: I5e4cf73a470e60f53f098f7d28742403111f7da0

7 years agoAdd const to thread-MPI functions
Berk Hess [Wed, 7 Sep 2016 07:58:57 +0000 (09:58 +0200)]
Add const to thread-MPI functions

Added const qualifiers to send buffer pointers for Several thread-MPI
functions. This is required by the MPI 2 standard and allows us to
use more const qualifiers in the GROMACS communication code.
Note that internally thread-MPI does not distinguish send and receive
buffers, so we need cast away the const.

Change-Id: I0fe03fd92325b9030c8584349c958deb20b30bfd

7 years agoDocument wallcycle counters and subcounters
Vedran Miletić [Wed, 31 Aug 2016 18:52:46 +0000 (20:52 +0200)]
Document wallcycle counters and subcounters

List the available counters and explain how they are used. For subcounters,
explain the difference to counters and mention how to enable them.

Change-Id: Id5ce0e99b37a899f84d10b799840abad27d15c9c

7 years agoFix various memory leaks
Teemu Murtola [Sun, 11 Sep 2016 06:04:03 +0000 (09:04 +0300)]
Fix various memory leaks

These leaks are reported when building and running the tests with
LeakSanitizer (ignoring regression tests and tests marked as integration
tests).

- Free memory on 'gmx help -export completion' paths, which also fixes
  all 'gmx help <module>' paths.
- Free all memory in genconf on exit to make the gmxpreprocess tests not
  leak memory.
- Add settle_free() to free memory properly in mdlib tests.
- Add missing sfree in done_state() (fixes leaks in read_tps_conf() for
  tpr files).
- Add missing virtual destructor in IOptionValueStore (various leaks
  from correct destructors not getting called).
- Free the final symbol in selection parser in case the parsing ends
  after the maximum number of selections has already been provided.
- Add missing frees in selection test helper for atom type strings.

Change-Id: I0d796033ce3b30cda0a18743a28f4d3133fd477f

7 years agoPrint OpenCL error string instead of error code
Vedran Miletić [Tue, 30 Aug 2016 18:18:13 +0000 (20:18 +0200)]
Print OpenCL error string instead of error code

Change-Id: I00871b7f295373d8497a13d0bc3cbd0c0ff99668

7 years agoRemove continuation from convert_tpr
Berk Hess [Wed, 7 Sep 2016 08:53:29 +0000 (10:53 +0200)]
Remove continuation from convert_tpr

Removed the obsolote option of convert_tpr to write a tpr file for
continuation using a trajectory and energy file. This is superseded
by checkpointing.

Change-Id: I46c49621a8cca247d5a9429961d85e6028fefb14

7 years agoFix PME data destructor not being called
Aleksei Iupinov [Fri, 15 Apr 2016 14:34:12 +0000 (16:34 +0200)]
Fix PME data destructor not being called

The existing function gmx_pme_destroy is now being called at MD run end.
Erroneous memory freeing has been fixed.
Added freeing of pme_atomcomm_t.

Change-Id: I8761d2dbc168ec9d4e0e042fec788e39fb3e3ae5

7 years agoMerge branch release-5-1 into release-2016
Mark Abraham [Thu, 8 Sep 2016 10:40:51 +0000 (12:40 +0200)]
Merge branch release-5-1 into release-2016

Trivial conflicts in minimize.cpp from bug fix in same region that now
has exceptions caught within an OpenMP region.

Change-Id: I8b3c269a2afd7d4967e0f7310c96af6022533ddd

7 years agoBumped patch number to prepare for future 5.1.5 release
Mark Abraham [Thu, 8 Sep 2016 08:07:13 +0000 (10:07 +0200)]
Bumped patch number to prepare for future 5.1.5 release

Change-Id: I37e3120ec8ab257f0aeb1cf137dff27391e0689f

7 years agoVersion 5.1.4
Mark Abraham [Wed, 7 Sep 2016 12:39:33 +0000 (14:39 +0200)]
Version 5.1.4

Bumped SOVERSION_MINOR and REGRESSIONTEST_HASH

Change-Id: Ib8404367c7ac15e0de567bf103f5ceb5d4dd5091

7 years agoRemoved HIS1 from oplsaa and charmm definitions
Mark Abraham [Mon, 5 Sep 2016 15:49:22 +0000 (17:49 +0200)]
Removed HIS1 from oplsaa and charmm definitions

HIS1 is intended for linking with heme, which oplsaa doesn't
define. charmm converts HIS1 to HSD in its .r2b.

This makes the recent fix for oplsaa HISD "consistent" with HIS1.

Fixes #2047
Refs #2049

Change-Id: Ibc0463c779e76689dc7ef65e48aedc716de9e032

7 years agoFix LYN charges in amber03
Mark Abraham [Mon, 5 Sep 2016 15:32:19 +0000 (17:32 +0200)]
Fix LYN charges in amber03

These charges now match those found in AMBER 14 and 16. The
validation of the AMBER ports was done with AMBER 8.0, and
this fix was made afterwards in
http://ambermd.org/bugfixes/8.0/bugfix.19 (and perhaps LYN wasn't
in the validation set).

Fixes #2046.

Change-Id: Ibcaab337b527a44e42d5a7c68f71ef4fde2acf66

7 years agoFix amber03 HIP charges
Mark Abraham [Tue, 6 Sep 2016 13:57:00 +0000 (15:57 +0200)]
Fix amber03 HIP charges

These were changed in Nov 2005, and now match AmberTools 16

Fixes #2050

Change-Id: I191b60c6acd2f521b3481578114ff48fca0979e5

7 years agoClean up CTest test management
Teemu Murtola [Mon, 30 May 2016 19:56:22 +0000 (22:56 +0300)]
Clean up CTest test management

- Add explicit timeouts to CTest tests. These should work better than
  the current Jenkins timeout: it should produce better JUnit test
  reports, and should catch also tests that end up in an infinite loop
  printing stuff.  The timeouts are still quite generous, since at least
  the coverage run can take a while.
- Use a more easily extensible and better encapsulated mechanism for
  producing the messages about missing tests with 'make check'.
- Abort if running a non-MPI test binary with MPI instead of trying to
  run it on the master rank, since it might deadlock.
- Clean up the macros used to register CTest tests and use a clearer set
  of test labels, and move more logic into src/testutils/CMakeLists.txt.
- Resolve various TODOs.

Change-Id: Ia1370d99eabd5839682832e8c3c60668a667cdde

7 years agoBump oldest cmake, compiler and CUDA versions required
Erik Lindahl [Fri, 5 Aug 2016 10:05:26 +0000 (12:05 +0200)]
Bump oldest cmake, compiler and CUDA versions required

For release 2017 we now require gcc-4.8.1, clang-3.3 and icc-15, so we
can rely on full C++11 support. We now also require CUDA-6.5 and
CMake-3.4.3. This in turn means we can remove some older cmake tests,
and since many users won't read the install guide there are now
version tests that produce fatal errors during CMake configuration for
compiler versions we know are too old.

Various hacks and workarounds in source and build system can
now be removed.

Fixed error in previous definition of GMX_ALIGNED

Updated C++11 compatibility tests in line with code we are now using.

Fixed that hwloc includes were not treated as system headers.

Treated including thread-MPI and TNG header files as system paths, to
be consistent with how we'd treat them if we were using external
versions of these.

Fixed icc 16 warnings in lapack routines.

Fixes #2012.

Change-Id: I36e02379a985b22c72f0f06481c65cae6e780c02

7 years agoWork around glibc 2.23 with CUDA
Mark Abraham [Mon, 27 Jun 2016 17:18:12 +0000 (19:18 +0200)]
Work around glibc 2.23 with CUDA

Note: Cherry-pick of e2cd2e2e from the 2016 branch.

Fixes #2022

Change-Id: Id9881efb3f26af341b9c89b4bd1f983a2149c9e4

7 years agoFix bug with conjugate-gradient and OpenMP
Berk Hess [Tue, 6 Sep 2016 13:14:17 +0000 (15:14 +0200)]
Fix bug with conjugate-gradient and OpenMP

The conjugate-gradient update routine re-used the pointer variable for
x for cg_p. This pointer was shared over threads and no barrier was
present before the pointer modification.

Fixes #1941.

Change-Id: I5f635fc3054147543820c4e5e74f3519637d541d

7 years agoConsolidate MD algorithm atom setup
Berk Hess [Mon, 5 Sep 2016 09:27:43 +0000 (11:27 +0200)]
Consolidate MD algorithm atom setup

The setup of atom data for several MD algorithms that was called in
do_md, init_em and dd_partition_system has been moved to a single
routine called mdAlgorithmsSetupAtomData.
We should also move algorithm initialization cals to a single routine.

Change-Id: I3c87394e793e92d66555dc60388a47cedf6eeac9

7 years agoMerge "Merge branch release-2016"
David van der Spoel [Mon, 5 Sep 2016 13:49:10 +0000 (15:49 +0200)]
Merge "Merge branch release-2016"

7 years agoRe-enable flexible constraints with DD
Berk Hess [Mon, 5 Sep 2016 08:58:45 +0000 (10:58 +0200)]
Re-enable flexible constraints with DD

Commit 409edb80 added a fatal error in init_shell_flexcon() with DD.
But flexible constraints without shells work correctly with DD.

Change-Id: Ic3c5028a7aa6d956cf85f779347df16329d817bb

7 years agoMerge branch release-2016
Berk Hess [Sun, 4 Sep 2016 16:29:34 +0000 (18:29 +0200)]
Merge branch release-2016

Change-Id: I11339f3f6ce583827af85fc8187c4f42ae5a8e52

7 years agoClean up PME flags variable use
Berk Hess [Fri, 2 Sep 2016 12:59:28 +0000 (14:59 +0200)]
Clean up PME flags variable use

PME flag bits for triggering Coulomb and/or LJ calculations were mixed
between different flags variables. These flag bits are now removed,
because they passed constant values based on inputrec.
Similarly, the free-energy calculation flags were never changed during
a run and have also been removed.
Note that these calculations probably could/can actually be run
selectively, but that should be tested.

Change-Id: Ib8e121fd08f2dd8776d29b0f896b3df2322ecf6d

7 years agoMerge branch release-5-1 into release-2016
Berk Hess [Fri, 2 Sep 2016 15:28:25 +0000 (17:28 +0200)]
Merge branch release-5-1 into release-2016

Change-Id: Ia1a7fad67f0ff11175ea24c46f813a445cd49ed6

7 years agoFix Parrinello-Rahman with nstpcouple>1
Berk Hess [Mon, 15 Aug 2016 19:03:13 +0000 (21:03 +0200)]
Fix Parrinello-Rahman with nstpcouple>1

Fixes #2031.

Change-Id: I37cf18c40c6cf5e301d7981c9f10bbf963d8cda8

7 years agoBasic support for transforming KeyValueTrees
Teemu Murtola [Tue, 26 Jul 2016 13:05:13 +0000 (16:05 +0300)]
Basic support for transforming KeyValueTrees

Add support for writing transforms from one KeyValueTree to another.
For now, only a small subset of simple transforms is supported, but this
should be mostly sufficient for a proof-of-concept for MDP processing on
the electric field code, and new cases can be relatively easily added.

These transforms can support two use cases: specifying how a legacy MDP
file maps to a more structured format, and for supporting changes from
version to version in the structured format.  However, versioning for
the structured format (in particular, if/when it will be necessary to
recognize the version from input) likely still needs some work.

There is not much in terms of consistency checks, error handling, or
documentation, but that is better to add once using code exists.

Change-Id: Ie2570eee8a62c2d64b79e00925bbf1e40b62b261

7 years agoMake virial reproducible
Berk Hess [Wed, 17 Aug 2016 13:27:49 +0000 (15:27 +0200)]
Make virial reproducible

OpenMP reduction was used to reduce virial contributions over threads,
which does not have a defined order. This leads to different rounding,
which makes runs non-reproducible (but still fully correct).
Now thread local buffers are used.
Also removed OpenMP parallezation for small count (e.g. shift forces).

Change-Id: I8d80def602337cc12ab601916bf40d7f66bf9bbc

7 years agoMake ASAN/TSAN/MSAN build types easier to discover
Szilárd Páll [Wed, 24 Aug 2016 15:49:14 +0000 (17:49 +0200)]
Make ASAN/TSAN/MSAN build types easier to discover

While these build types are indeed aimed at developers, realistically
not many will be interested in changing the build type from the default
"Release" except in rare cases. Therefore, along Debug or RelWithAssert,
it makes sense to list the other developer-oriented build types
ASAN, TSAN, and MSAN if nothing else for the benefit having docs in the
ccmake gui.

Change-Id: Ie54fc57a06aee3be996c9a8ff62e54a3ac284065

7 years agoStop using gmx_fatal in grompp
Mark Abraham [Tue, 23 Aug 2016 22:40:04 +0000 (00:40 +0200)]
Stop using gmx_fatal in grompp

Added warning_error_and_exit to issue an error that describes the
location in the input file, and then halt processing (because data
structures would not be safe to use) while also describing where in
the code that occured. Either set of metadata can be useful to users
or developers diagnosing issues.

Refactored implementation of check_warning_error() so that
warning_error_and_exit() can have the gmx_noreturn qualifier, so that
analyzers understand the behaviour of the calling code, and compilers
can understand the implementation of warning_error_and_exit().

This permits more effective diagnostics in various places, and
eliminates some existing hacks.

Bumped all declarations of errbuf to have size STRLEN, since some of
the new uses might be safer that way.

Also made a minor fix to output to avoid redundant output from
done_warning when an error has occured.

Change-Id: I29f8afeb70d0da3598c6443c15090bca9bf5c639

7 years agoSupport KeyValueTree objects in refdata
Teemu Murtola [Fri, 29 Jul 2016 04:45:33 +0000 (07:45 +0300)]
Support KeyValueTree objects in refdata

Make it possible to check KeyValueTreeObject-rooted trees through
TestReferenceData.  This is the simplest way to actually verify the
contents of such a data structure.  For now, the contents can be
inspected through the XML output.

Change-Id: Ic6fc87c4934166acad4e9b5068c6d39c02866a73

7 years agoReduce rounding errors in SETTLE
Berk Hess [Wed, 24 Aug 2016 09:00:19 +0000 (11:00 +0200)]
Reduce rounding errors in SETTLE

The parameters for SETTLE are now computed in double precision.
This lowers the systematic error in settle.

Change-Id: I537a618830ab149d5f33251d9edca3aa9c43404c

7 years agoFix build with GMX_USE_TNG=off
Roland Schulz [Wed, 24 Aug 2016 20:57:28 +0000 (13:57 -0700)]
Fix build with GMX_USE_TNG=off

Change-Id: I305edfafbe87f0ad1e8ff410f419e5d32b23e1a7

7 years agoFixed bug in gmx insert-molecules.
Jochen Hub [Wed, 24 Aug 2016 15:50:08 +0000 (17:50 +0200)]
Fixed bug in gmx insert-molecules.

With option -ip, and if all trials were unsuccessful, a molecule was
eventually incorrectly placed at 0/0/0 due to a memory error
when referencing to rpos[XX][mol].

Change-Id: I367727210b893652af39217925906cc2dc703465

7 years agoRemove unnecessary ICC warning suppression
Roland Schulz [Fri, 5 Jun 2015 09:23:46 +0000 (05:23 -0400)]
Remove unnecessary ICC warning suppression

Change-Id: Icdb24d0fed40608a11a884fe5181778180bcc5e2

7 years agoFix Ewald surface+3DC corrections
Berk Hess [Wed, 24 Aug 2016 11:00:14 +0000 (13:00 +0200)]
Fix Ewald surface+3DC corrections

Ewald surface and 3DC correction forces were only applied up to,
but not including, the last atom with exclusions. With water at
the end of the system only the last H would not be corrected.
With ions at the end all ions would be missing.
In addition, with the Verlet scheme and domain decomposition
no force correction was applied at all.

Fixes #2040.

Change-Id: I064bf01fab561dca40451763b75283b6f59e0fbd

7 years agoRemove hacks for outdated BlueGene support
Mark Abraham [Tue, 16 Aug 2016 09:42:00 +0000 (11:42 +0200)]
Remove hacks for outdated BlueGene support

GMX_BLUEGENE hasn't been a thing for a while now.

XL compiler is no longer supported on BG/Q (no C++11 support will ever
exist), so a bunch of accommodations for it can go away. bgclang
is still supported however.

Some BG/L workarounds can also go away.

Change-Id: I5b76c02b4fc421889d7ca60f41574c491af05f2f

7 years agoAdded documentation for shell potentials.
David van der Spoel [Wed, 17 Aug 2016 07:05:15 +0000 (09:05 +0200)]
Added documentation for shell potentials.

Added documentation for simple and anharmonic shell potentials.
Added two references.

Change-Id: Ica2b694b9b57bcf52bfe8434cfb3f8fe4dc7b9a2

7 years agoMerge branch release-5-1 into release-2016
Berk Hess [Wed, 24 Aug 2016 11:12:21 +0000 (13:12 +0200)]
Merge branch release-5-1 into release-2016

Also applied the merged fix to nbnxn_cuda_kernel_fermi.cuh.

Change-Id: I79d0cb59214290097d6f356e35dd13c4eadaed75

7 years agoRemove variable precision gro writing
Berk Hess [Tue, 23 Aug 2016 10:13:35 +0000 (12:13 +0200)]
Remove variable precision gro writing

The gro precision is now fixed to 3, 4 and 5 decimal places for
x, v and box respectively to ensure compatibility with other software.
Variable precision reading is still supported.

Fixes #2037.

Change-Id: I0e593622ee0380c3934a7b7b6826ae29aed00a59

7 years agoCheck for unused refdata values
Teemu Murtola [Mon, 1 Aug 2016 05:16:12 +0000 (08:16 +0300)]
Check for unused refdata values

Make a test using refdata fail if it does not produce some reference
values at all.  Use this instead of checkPresent() for some cases where
the new functionality is a clearer fit for the purpose.  It is possible
to trigger the check explicitly for a subtree, but if not done
otherwise, it is always done for all values at the end of the test.

Change-Id: I722abd978f0c8fa9dc279264ff90cdad02e02b9d

7 years agoGeneric structured key-value tree for options
Teemu Murtola [Sat, 23 Jul 2016 18:23:25 +0000 (21:23 +0300)]
Generic structured key-value tree for options

Add classes KeyValueTree* for representing a JSON-like data structure
that allows mapping a hierarchical set of string keys to values with
dynamic types.  Make it possible to assign options from such a
structure.

The tree objects only provide read-only accessors that are currently
used.  To construct such trees, a separate set of builders is used.

Better error handling will be added once this is actually used somewhere
and the best way to construct the messages can be determined.

Change-Id: I08c2536f4b2eb4678c11a179e31f6a85693fc4ec

7 years agoSupport for non-string option value assignment
Teemu Murtola [Fri, 8 Jul 2016 15:10:12 +0000 (18:10 +0300)]
Support for non-string option value assignment

Make it possible to assign non-string values to options through
OptionsAssigner.  For now, the only thing that actually works is
assigning std::string values, and assigning the exact type stored for
the option.  Also, the list of supported conversions is initialized
separately for every instance of each option, but in practice that might
not matter that much.

This adds the infrastructure that allows assigning option values from
something like a JSON structure that already does data type conversions
during parsing.  The same infrastructure can also support #653.

Change-Id: I8f81d57da1b6eeac06a6ac9a8ab68bfa8ed0c148

7 years agoBasic support for array-of-structs in options
Teemu Murtola [Tue, 5 Jul 2016 18:24:27 +0000 (21:24 +0300)]
Basic support for array-of-structs in options

This makes it possible to parse structured data that has
arrays-of-struct type of constructs (as long as the structure for the
array elements is reasonably uniform).  Iteration over the sections does
not work reasonably for these types of sections yet, and there are other
things that might not work.  For complicated nested data structures,
there is also some unnecessary copying.  But the tests show that basic
stuff does work.

Change-Id: Ib485248a5adabecc3ed126dfa3736a5e71577bfd

7 years agoGeneralize and simplify option value storage
Teemu Murtola [Mon, 4 Jul 2016 18:52:02 +0000 (21:52 +0300)]
Generalize and simplify option value storage

Move responsibility of managing the final storage of parsed option
values out of OptionStorageTemplate to a separate OptionValueStore
interface.  Reduce complexity by removing support for some unused cases
(like storing the values in more than one place), which allows complete
removal of refreshValues().

This turned out to be not strictly necessary for supporting repeating
sections in options, but it is a useful simplification nonetheless.
It also provides some reusable elements that are also used in later
changes.

Change-Id: Ib367ae987cd265a08777c2fe054b43fdd5310762

7 years agoGeneralize option section internals
Teemu Murtola [Sat, 2 Jul 2016 18:14:13 +0000 (21:14 +0300)]
Generalize option section internals

Use a similar mechanism as for options to allow multiple different
section types to be handled through addSection().  Prerequisite for
adding support for repeating sections.  Support for iterating over
option sections is not of particular focus at this point; the initial
focus is to get the API for declaring sections and options working.

Also change the approach in IOptionsContainer to remove the need for
using directives in classes implementing it, and make the build system
list the source files explicitly.

Change-Id: I3f70f6937cb6b594c5bff120d5f2f87e42841ac4

7 years agoReimplement subsections in Options
Teemu Murtola [Fri, 10 Jun 2016 19:54:56 +0000 (22:54 +0300)]
Reimplement subsections in Options

Now the support for sections in Options provides an API similar to
other option types.  The main thing missing (both in the old and the new
implementation) is support for an "array of structs"-kind of options,
where multiple instances of the same section could create multiple
instances of some object in the code.  That should also be possible to
add following a similar public API, but the internals need quite a bit
of generalization to make that possible.  That will be done in
subsequent changes to keep the changes smaller.

Remove now-unused name and title for an Options object.

Change-Id: Ie76e31aae2de0816b4d294ff6869606d4a2bef49

7 years agoFixed opening of wall table files
Berk Hess [Wed, 17 Aug 2016 13:35:05 +0000 (15:35 +0200)]
Fixed opening of wall table files

Fixes #2033.

Change-Id: Ie5092476f021d0578bbcbd84c7e4f895959fd06e

7 years agoMerge branch release-2016
Mark Abraham [Mon, 15 Aug 2016 19:09:04 +0000 (21:09 +0200)]
Merge branch release-2016

Change-Id: I39dd5524c70707d1784f2814876930c3905a52ba

7 years agoFixes for BG/Q platform files and install guide
Mark Abraham [Fri, 12 Aug 2016 08:19:34 +0000 (10:19 +0200)]
Fixes for BG/Q platform files and install guide

Renamed the platform file to reflect normal practice
and the install guide.

Change-Id: Icffde855789f561faa0249d095838fea9f97ce1d

7 years agoReduce FE pair-list memory usage
Berk Hess [Mon, 8 Aug 2016 13:24:14 +0000 (15:24 +0200)]
Reduce FE pair-list memory usage

Refs #2014.

Change-Id: Ia8bbc55eed7e3590e6944127ab94dd41f475e6a7

7 years agoBump number to prepare for first patch release
Mark Abraham [Fri, 12 Aug 2016 08:11:49 +0000 (10:11 +0200)]
Bump number to prepare for first patch release

Change-Id: I1cdfd715d2681677460945ed6670adb2a35f9839

7 years agoFix deadlock with thread-MPI
Berk Hess [Tue, 9 Aug 2016 20:26:04 +0000 (22:26 +0200)]
Fix deadlock with thread-MPI

With thread-MPI mdrun could deadlock while pinning threads.

Fixes #2025.

Change-Id: Ib42e9625134531b1e2f910b11339aa0f78b80624

7 years agoFix twin-cutoff for GPU LJ pot-switch
Berk Hess [Tue, 9 Aug 2016 11:24:49 +0000 (13:24 +0200)]
Fix twin-cutoff for GPU LJ pot-switch

With rcoulomb>rvdw, as used with PME tuning, the GPU kernels performed
the LJ cut-off check before applying the potential-switch to the LJ
forces and energies.

Fixes #2007.

Change-Id: Ie2f6fdfec10bdb8800123e6fa299839a31bc0f93

7 years agoFix proper relative tolerance checking in testutils
Erik Lindahl [Sun, 31 Jul 2016 16:34:36 +0000 (18:34 +0200)]
Fix proper relative tolerance checking in testutils

The previous relative tolerances were convereted to ULP
checks, but since the relative difference for 1 ULP
depends on whether the exponent changes there is no strict
1-to-1 correspondence between ULP and relative differences.
Fixed by storing the original magnitude of the numbers
in FloatingPointDifference and using a traditional relative
tolerance check for the case when a relative tolerance is
set from floating point values; other checks still use ULP.

Change-Id: I95331b46da00cd0b4e369f087991c553cd05f18f

7 years agoVersion 2016
Mark Abraham [Wed, 3 Aug 2016 13:13:10 +0000 (15:13 +0200)]
Version 2016

Removed "-rc1" per policy. Bumped regressiontests hash.

Change-Id: If94c03e280fce13143d238fa3e7f2df3b8b659cf

7 years agoFix/improve doc links in template/README
Teemu Murtola [Thu, 4 Aug 2016 04:23:46 +0000 (07:23 +0300)]
Fix/improve doc links in template/README

For installations from a tarball, put a link to an appropriate version
at manual.gromacs.org instead of Jenkins-generated documentation which
might be for a newer version.  For builds from the repository, the links
still point to the nightly Jenkins job.

The first link was also pointing to an obsolete Jenkins job.

Change-Id: Ib56c62cd572879c8dadde6881507e54f6d22a784

7 years agoThree new quotes.
David van der Spoel [Tue, 2 Aug 2016 21:23:55 +0000 (23:23 +0200)]
Three new quotes.

Change-Id: I9a7ed8343a0133a68bf7790e85bff9d331dd6294

7 years agoUse only legal characters in OpenCL cache filename
Vedran Miletić [Tue, 12 Jul 2016 17:07:30 +0000 (19:07 +0200)]
Use only legal characters in OpenCL cache filename

The device name from the vendor could contain anything, and we need to
avoid dot and slash when we try to make a filename from it. To help
keep it valid for all possible users, we permit only alphanumeric
characters from the current locale.

Change-Id: Ie55959a9a2161d0cfc7effa6ab57fffc8160f4e2

7 years agoFunction to split delimited strings
Teemu Murtola [Fri, 29 Jul 2016 04:15:43 +0000 (07:15 +0300)]
Function to split delimited strings

Add a function to split a string at given non-whitespace delimiters, and
tests for it.  Will be used for subsequent work on KeyValueTree.

Change-Id: I28f2658e7c9b32565c02b16600b2e09b444415f4

7 years agoAvoid blank line in writing index file
James Graham [Tue, 26 Jul 2016 11:11:47 +0000 (12:11 +0100)]
Avoid blank line in writing index file

Removes extra newline added in index file when an index group
contains a multiple of 15 atoms.  This broke some analysis scripts
that were not expecting blank lines e.g. MARTINI fluxer.py.  Also
removed from duplicate index file.

Change-Id: I6058799fbfb71096e47db02c4dc7a5ebd060425a

7 years agoMerge "Merge branch release-5-1 into release-2016" into release-2016
David van der Spoel [Sun, 31 Jul 2016 07:18:27 +0000 (09:18 +0200)]
Merge "Merge branch release-5-1 into release-2016" into release-2016

7 years agoUpdate GCC version for reference build
Roland Schulz [Mon, 18 Jul 2016 19:17:15 +0000 (12:17 -0700)]
Update GCC version for reference build

4.7 isn't available anymore with recent Linux distributions.

Change-Id: I27b9d1af386b4891f648a033872b876230247b67

7 years agoDocument gmx_cgsort_t and gmx_domdec_sort_t structs
Vedran Miletić [Wed, 27 Jul 2016 15:01:25 +0000 (17:01 +0200)]
Document gmx_cgsort_t and gmx_domdec_sort_t structs

Add descriptions to fields of gmx_cgsort_t and gmx_domdec_sort_t
structs used in domain decomposition code.

Change-Id: Ie64664ed46413e51ba22504270ab11350c39b84a

7 years agoImprove handling of gmock and gcc6
Mark Abraham [Fri, 29 Jul 2016 11:56:19 +0000 (13:56 +0200)]
Improve handling of gmock and gcc6

This patch reverts commit d6e35c96 that used gcc
-fno-delete-null-pointer-checks to work around implementation errors
in gmock 1.7. There's been no new release of gmock for several years,
but a patch is now available to address this issue.

This commit applies that patch, found at
https://github.com/google/googletest/issues/705#issuecomment-235067917. Updated
our README describing modifications GROMACS has found it necessary to
make.

Fixes #1911

Change-Id: I0d5abe9bf8172f6749bcad97a13765edaa3d4c80

7 years agoMerge branch release-5-1 into release-2016
Mark Abraham [Fri, 29 Jul 2016 12:32:44 +0000 (14:32 +0200)]
Merge branch release-5-1 into release-2016

Change-Id: Id782b78da4b2080fec208d29b9b4afc363f1418c

7 years agoFixes incorrect charges in OPLS/AA-L for HISD and HISE
David van der Spoel [Fri, 22 Jul 2016 07:43:02 +0000 (09:43 +0200)]
Fixes incorrect charges in OPLS/AA-L for HISD and HISE

With the present charges results from Michael Shirts et al.
J. Chem. Phys. 119 (2003) 5740 can be reproduced.

Fixes #2013

Change-Id: Ifb037961499633210d26ff32ec6bf3bebc505461

7 years agoAdd toolchain flags for SSE2 compilation
Mark Abraham [Thu, 28 Jul 2016 17:53:50 +0000 (19:53 +0200)]
Add toolchain flags for SSE2 compilation

This is how the code should be, though my testing didn't need it.

Also fixed function documentation.

Fixes #2008

Change-Id: Ic1e1c16d22e054e9f741d91c667305de7398cd30

7 years agoMerge release-2016 into master
Roland Schulz [Sat, 23 Jul 2016 00:06:56 +0000 (17:06 -0700)]
Merge release-2016 into master

Conflicts:
src/programs/mdrun/resource-division.cpp
src/programs/mdrun/resource-division.h
src/programs/mdrun/runner.cpp

Change-Id: I02a0af8295df0fa271e6e236daf035ea442cb73a

7 years agoBumped patch number to prepare for future 5.1.4 release
Mark Abraham [Thu, 21 Jul 2016 18:40:39 +0000 (20:40 +0200)]
Bumped patch number to prepare for future 5.1.4 release

Change-Id: I813e0d8c976d0afca316f5cfe095c5647b8fd66c

7 years agoFix non-parallel build
Roland Schulz [Fri, 15 Jul 2016 22:21:29 +0000 (15:21 -0700)]
Fix non-parallel build

Change-Id: Iba9bd4b51172df5157359fc79a5b50f3954784ce

7 years agoFix issues with using int for number of steps
Mark Abraham [Thu, 14 Jul 2016 15:31:49 +0000 (17:31 +0200)]
Fix issues with using int for number of steps

Mostly we use a 64-bit integer, but we messed up a few
things.

During mdrun -rerun, edr writing complained about the negative step
number, implied it might be working around it, and threatened to
crash, which it can't do. Silenced the complaint during writing,
and reduced the scope of the message when reading.

Fixed TNG wrapper routines to pass a 64-bit integer like they should.

Made various infrastructure use gmx_int64_t for consistency, and noted
where in a few places the practical range of the value stored in such
a type is likely to be smaller. We can't extend the definition of XTC
or TRR, so we're stuck. TNG is already good, though.

Fixes #2006

Change-Id: If485d9d92cb4b99a3bbe25e8e9fa082fc3fccd5f

7 years agoUse newer gcc for coverage
Teemu Murtola [Thu, 14 Jul 2016 13:49:56 +0000 (16:49 +0300)]
Use newer gcc for coverage

The coverage build no longer works with gcc-4.6 on bs_mac because of too
old stdlib.  With changes in releng and on bs_mac, it is now possible to
update the compiler and gcov used for the build.

Change-Id: Ib6cb6589c53d0a56a7d04a32367d84fcf91cfecf

7 years agoVersion 5.1.3
Mark Abraham [Wed, 13 Jul 2016 10:27:17 +0000 (12:27 +0200)]
Version 5.1.3

Bumped minor soversion and regressiontest hash

Change-Id: I55f1cc4f1154f053512c8cc3509fd0be8e3c347b

7 years agoMerge branch release-2016
Mark Abraham [Mon, 11 Jul 2016 15:36:33 +0000 (17:36 +0200)]
Merge branch release-2016

Many conflicts from modified warnings and the introduction of
the new logging module, but straightforward to resolve by
using the new infrastructure to deliver the old message.

Change-Id: I15bdee3aa6dd19d55ff46b737e0abd3f76153494

7 years agoFix trr magic number reading
Mark Abraham [Tue, 12 Jul 2016 13:55:46 +0000 (15:55 +0200)]
Fix trr magic number reading

The trr header-reading routine returned an "OK" value if the magic
number was wrong, which might lead to chaotic results everywhere,
because checking of return values tends not to happen (even when
they're right). Other GROMACS magic-number reading routines tend to
give a fatal error if the the number is wrong, e.g. by reading a file
written in wrong endianness. (This should never be a thing for XDR
files, which are defined to be big endian, but such code has existed.)

This change adds/restores that behaviour to trr reading, along
with separating the behaviour of failing to read a magic integer
from reading one that doesn't match.

Fixes #1926

Change-Id: I3cdd8ae9172e3b95fc232d8fa31a442d239233db

7 years agoFix gmx mdrun -membed -ntmpi -1
Mark Abraham [Mon, 11 Jul 2016 14:43:44 +0000 (16:43 +0200)]
Fix gmx mdrun -membed -ntmpi -1

This used to give a fatal error if we'd chosen more than one rank, but
instead we should choose to use a single rank. Now that we have
several kinds of things that want to trigger such handling, build some
infrastructure to handle it. This allows us to separate the trigger
logic from how we report back to the user.

Change-Id: If01177b590c1a817113c642c30fd30d6d4bc3eab

7 years agoFix membed with partial revert of 29943f
Erik Lindahl [Sat, 9 Jul 2016 21:32:58 +0000 (23:32 +0200)]
Fix membed with partial revert of 29943f

The membrane embedding algorithm must be initialized before
we call init_forcerec(), so it cannot trivially be moved into
do_md(). This has to be cleaned up anyway for release-2017
since we will remove the group scheme be then, but for now
this fix will allow us have the method working in release-2016.

Fixes #1998.

Change-Id: I8e16a67b8df16999793649d79eebca051b8b474f

7 years agoFix for incorrectly setting expanded ensemble when fep_state = 0
Michael Shirts [Mon, 27 Jun 2016 04:19:26 +0000 (22:19 -0600)]
Fix for incorrectly setting expanded ensemble when fep_state = 0

Expanded ensemble lambda values were not being copied over when the
proposed fep_state was 0.  This commit fixes that by removing a
a conditonal that was incorrectly added.

Fixes #1995

Change-Id: I3d49b0936d973fb70a9a79799743f5069ba4fff4

7 years agoFix regressiontest download md5sum
Mark Abraham [Mon, 11 Jul 2016 12:24:52 +0000 (14:24 +0200)]
Fix regressiontest download md5sum

I forgot that the md5sum changes with the decision to
name it rc1 rather than beta3, because the directory
name within the tarball changes.

Change-Id: I5b5f5b9de43ee5771fbdfb53842609f1635f3f38

7 years agoFirst 2016 release candidate
Mark Abraham [Thu, 23 Jun 2016 14:12:06 +0000 (16:12 +0200)]
First 2016 release candidate

Change-Id: I54a3e3c33015eb42ba5c18994ef76ce1bb2888c5

7 years agoHardware detection clean-up and pre/post-processing
Erik Lindahl [Thu, 7 Jul 2016 14:01:13 +0000 (16:01 +0200)]
Hardware detection clean-up and pre/post-processing

This change cleans up the various tests and hacks we have
had in different places to remove a number of false warnings
and errors. It also unifies all this processing to two
small routines that are called just before/after the
hardware is detected, so the user can choose whether it
should be done or not in other places.

- Rather than trying to guess when we should or shouldn't
  override the number of cores online, the preprocessing
  uses a piece of code that allows sleeping cores to come
  online automatically by running a small C++11 thread loop before
  doing the hardware topology detection. This way we can
  remove all ARM-specific paths. To avoid wasting a second
  on systems where SMT is disabled, we avoid calling it on x86.
- All SMT warnings are handled in the post-processing call,
  but only as notes in the log file to avoid writing
  warnings on stderr.
- The check for OpenMP thread mismatch has been removed
  since it caused incorrect warnings by comparing the number
  or threads configured for each OpenMP process with the
  total number of cores in the entire system. We will have
  to rewrite this later as a test in the MPI/OpenMP
  parallelization setup instead.

By sticking with the hwloc/sysconf-online detection, we should
now also handle all special cases where cores have been taken
offline manually in a correct way without using hardware-specific
paths.

Change-Id: I37edb3eada3f4c8c0906c641c7041cc0270985e8

7 years agoPrevent fragile use cases of checkpoint appending
Erik Lindahl [Tue, 24 May 2016 23:04:50 +0000 (01:04 +0200)]
Prevent fragile use cases of checkpoint appending

There are way too many ways we allow runs to be continued
and extended. We still allow the checkpoint file to be
missing (so -cpi can be used for all command lines), but
we warn if it is not found. To avoid mistakes with file
appending when restarting from checkpoints, we now require
that all previous output files must be present
(unless -noappend is used), and that the file names must
match the ones used in the previous run.

Fixes #1777.

Change-Id: Id9e89773a4a9214be6dbb76676c526e98e12bd37

7 years agoUpdate affinity checking for Intel compiler
Erik Lindahl [Thu, 7 Jul 2016 18:29:33 +0000 (20:29 +0200)]
Update affinity checking for Intel compiler

Since release 2013, the Intel compiler no longer sets
OpenMP affinity by default according to intel docs. This
means the code that tried to disable it by setting
environment variables no longer had any effect (and we
likely have not checked it the last few years). In
addition, it is not ideal behaviour in a library either to
assume that no other code has executed OpenMP prior to a call
or to set environment variables that influence other code
execution too. However, we will still disable Gromacs' own
thread affinity if it has been set by the user or calling code.

Change-Id: I57a952766e87a35483f1960b349f7c30d5b85f24

7 years agoPrint working dir before command line
Vedran Miletić [Wed, 6 Jul 2016 14:49:31 +0000 (16:49 +0200)]
Print working dir before command line

When running GROMACS via a batch script, it is useful to know which
working dir is being used for relative paths (file names) in the
command line.

Change-Id: Iab6701e09ad3b0386b59c2bdda2c4f908fdc2d0a

7 years agoMerge "Merge branch release-5-1 into release-2016" into release-2016
David van der Spoel [Fri, 8 Jul 2016 14:24:25 +0000 (16:24 +0200)]
Merge "Merge branch release-5-1 into release-2016" into release-2016

7 years agoUpdated g_wham for the new pull setup
Jochen Hub [Thu, 11 Dec 2014 11:19:58 +0000 (12:19 +0100)]
Updated g_wham for the new pull setup

This bring g_wham up to date with the new pull setup where the pull
type and geometry can now be set per coordinate and the pull
coordinate has changed and is more configurable.

Change-Id: I629fee9dfea9715e2bd54685cd1c203c66d05089

7 years agoMerge branch release-5-1 into release-2016
Mark Abraham [Fri, 8 Jul 2016 13:41:00 +0000 (15:41 +0200)]
Merge branch release-5-1 into release-2016

Change-Id: I976ad584d1c8757c6464aae482cb5a4c245beacb

7 years agoIntroduce fatal error for too few frames in gmx dos.
David van der Spoel [Fri, 8 Jul 2016 12:12:27 +0000 (14:12 +0200)]
Introduce fatal error for too few frames in gmx dos.

To prevent gmx dos from crashing with an incomprehensible error
message when there are too few frames, test for this.

Part of #1813

Change-Id: Ie2f23d68cb3d4570944c4ade5ced49873dc98a29

7 years agoSimplify SIMD compiler flag construction
Mark Abraham [Wed, 25 May 2016 13:56:33 +0000 (15:56 +0200)]
Simplify SIMD compiler flag construction

Lots of code duplication for handling both C and C++ is removed. Some
new helper functions handle the language-specific aspects separately
from the main logic. Introduced the notion of preparing the toolchain.
Removed one lot of status messages now that the try_compile status
message is more descriptive that it is checking for flags for SIMD
support.

Moved checking code that caters for ancient clang for AVX_128_FMA to a
common point, eliminating some variables. Moved that point to before
the AVX_128_FMA compiler flag tests, which seems more likely to work
in this case. This unlikely combination is of little significance,
however.

Change-Id: I5377a7951f5414ee52c4960fe63c999f55ff5109

7 years agoAdd detection for ARMv7 cycle counter support
Erik Lindahl [Thu, 7 Jul 2016 11:45:47 +0000 (13:45 +0200)]
Add detection for ARMv7 cycle counter support

ARMv7 requires special kernel settings to allow cycle
counters to be read. This change adds a cmake setting
to enable/disable counters. On all architectures but ARMv7
it is enabled by default, and on ARMv7 we run a small test
program to see if the can be executed successfully. When
cross-compiling to ARMv7 counters will be disabled, but
either choice can be overridden by setting a value for
GMX_CYCLECOUNTERS in cmake.

Fixes #1933.

Change-Id: I1e217d7a09f84a6bcf4eb5bf4a656d430465c915

7 years agoWork around compiler issue with random test
Erik Lindahl [Thu, 7 Jul 2016 23:05:17 +0000 (01:05 +0200)]
Work around compiler issue with random test

gcc-4.8.4 running on 32-bit Linux fails a few
tests for random distributions. This seems
to be caused by the compiler doing something
strange (that can lead to differences in the lsb)
when we do not use the result as floating-point
values, but rather do exact binary comparisions.
This is valid C++, and bad behaviour of the
compiler (IMHO), but technically it is not required
to produce bitwise identical results at high
optimization. However, by using floating-point
tests with zero ULP tolerance the problem
appears to go away.

Fixes #1986.

Change-Id: I252f37b46605424c02435af0fbf7a4f81b493eb8

7 years agoAdd PDF metadata to the manual
Szilárd Páll [Fri, 1 Apr 2016 21:46:46 +0000 (23:46 +0200)]
Add PDF metadata to the manual

Not only nice, but should also help search engines.
Also make sure that the PDF is UTF8 (and is tagged as unicode too).

Replaced in the bib a Unicode minus sign (U+2212) that was causing
trouble with the standard hyphen-minus.

Change-Id: I4708084282cad24b62369101e6155d99dc236981

7 years agoUser guide clarifications
Szilárd Páll [Tue, 5 Jul 2016 18:10:13 +0000 (20:10 +0200)]
User guide clarifications

Clarified OpenCL and CUDA as well as pinning in the glossary.

Change-Id: Ib3b74805812e8c02545819873e077f9d7ec9bab4

7 years agoReduce hwloc & cpuid test requirements
Erik Lindahl [Mon, 4 Jul 2016 22:45:45 +0000 (00:45 +0200)]
Reduce hwloc & cpuid test requirements

On some non-x86 linux platforms hwloc does not report
caches, which means it will fail our strict test
requirements of full topology support. There is no
problem whatsoever with this, so we reduce the
test to only require basic support from hwloc - this
is still better than anything we can get ourselves.
Similarly for CPUID, it is not an error for an
architecture to not provide any of the specific flags
we have defined, so avoid marking it as such.

Fixes #1987.

Change-Id: I0a065296bc647b7f7f5d3cb178e88df80fac81a7

7 years agoMove consistency check for number of threads
Mark Abraham [Mon, 4 Jul 2016 13:42:40 +0000 (15:42 +0200)]
Move consistency check for number of threads

Recent refactoring meant that the count of threads known to OpenMP was
only used to provide a consistency check in the fallback case of
sysconf detection.

Note that no version of the HardwareTopology code ever used
information from OpenMP as an input.

Parameters for implementing warnings currently remain in
HardwareTopology::detect(), so that the sysconf case can continue to
handle cases where we think we know how to advise the user. This
will go away in master branch with the new logging module.

Change-Id: Iaf383abc420d2f04b6514e8856c9f1414cbba55c