alexxy/gromacs.git
5 years agoMinor nbnxm cleanup
Berk Hess [Wed, 20 Feb 2019 08:42:00 +0000 (09:42 +0100)]
Minor nbnxm cleanup

Removed typedef nbnxn_search_t and unused alloc/free functions.

Change-Id: I07436fd909867d2db9ff41b741b4ebc218623858

5 years agoRefactor t_molinfo to MoleculeInformation class
Paul Bauer [Wed, 13 Feb 2019 17:46:15 +0000 (18:46 +0100)]
Refactor t_molinfo to MoleculeInformation class

Refs #2833

Change-Id: I66a6afc8ade636fb3002492e6c4e1d30ae51019a

5 years agoClean up nbnxm enums
Berk Hess [Thu, 17 Jan 2019 13:25:50 +0000 (14:25 +0100)]
Clean up nbnxm enums

Converted the nbnxm kernel and ewald excl enums to enum classes.
Added resource, kernel setup and pairlist type enums.
Also made pairlistSets_ private.

Change-Id: Ic8ff8c59cf8a72d3462b8a0f7382cd1636136c40

5 years agoTest for LINCS and SHAKE constraints.
Artem Zhmurov [Tue, 15 Jan 2019 15:04:49 +0000 (16:04 +0100)]
Test for LINCS and SHAKE constraints.

This version updates the tests making the selection of the
constraining algorithm more abstract. Makes it possible
to use the same test routines for new implementations (e.g.
CPU- or GPU-based) or (and) algorithms (e.g. LINCS or SHAKE).
Partly this is preparation for the GPU-based version of
the constraints (Refs #2816).

Change-Id: Ice7dfdcc6d86c04656b0a1dd4e328c5afdb8a263

5 years agoSimplify make_pairlist() call signature
Berk Hess [Fri, 11 Jan 2019 15:34:13 +0000 (16:34 +0100)]
Simplify make_pairlist() call signature

The nonbonded_verlet_group_t struct is no longer needed now the local
and non-local interactions always use the same kernel types.
This simplifies the make_pairlist() and put_on_grid() call signature.
Removed direct access to kernel and ewald exclusion types from outside
the nbnxn module.
Merged the pruning setup and the transfer of the pairlist to the GPU
into nbnxn_make_pairlist().
Also removed the ePBC argument from nbnxn_put_on_grid().

Change-Id: Id96d7e5aa6ce846e9d38614f7edcdced89687799

5 years agoAdd havePPDomainDecomposition()
Berk Hess [Tue, 22 Jan 2019 13:29:15 +0000 (14:29 +0100)]
Add havePPDomainDecomposition()

When using 1 PP and 1 PME rank, non-local code paths were called
for with GPUs. Now the DOMAINDECOMP(cr) conditional for the paths
has been replaced by havePPDomainDecomposition().

Change-Id: I1b7036b0759a316c68d5c00bd5814b067c9fd9cd

5 years agoMerge "Merge branch 'release-2019' into master"
Paul Bauer [Wed, 20 Feb 2019 18:09:31 +0000 (19:09 +0100)]
Merge "Merge branch 'release-2019' into master"

5 years agoRefactor DLB region handling
Berk Hess [Fri, 25 Jan 2019 09:58:28 +0000 (10:58 +0100)]
Refactor DLB region handling

The DLB region was controlled with two clunky enums and several
separate functions. These are now replaced by a single class that
handles the conditionals and has the open/close functions as methods.

This change also disabled the DLB regions with 1 PP and 1 PME rank,
since DLB is not applicable in this case.

Change-Id: I8a375a46b855ec1f1fcdf6573f44a3bf553410b9

5 years agoMerge branch 'release-2019' into master
Paul Bauer [Wed, 20 Feb 2019 12:50:49 +0000 (13:50 +0100)]
Merge branch 'release-2019' into master

Kept the way topologyinformation was removed from solvate and
insert_molecules in 2019.

Resolved Conflicts:
cmake/gmxVersionInfo.cmake
docs/CMakeLists.txt
docs/user-guide/mdp-options.rst
src/gromacs/gmxpreprocess/insert-molecules.cpp
src/gromacs/gmxpreprocess/solvate.cpp
src/gromacs/mdlib/nbnxn_cuda/nbnxn_cuda_kernel_utils.cuh
src/gromacs/mdlib/nbnxn_ocl/nbnxn_ocl_kernel_utils.clh
src/gromacs/mdlib/sim_util.cpp
src/gromacs/trajectoryanalysis/topologyinformation.cpp

Change-Id: I2576133c4bc7a3c55cedb29e9832bb5afa8fe76f

5 years agoFix release notes formatting
Paul Bauer [Fri, 15 Feb 2019 14:00:29 +0000 (15:00 +0100)]
Fix release notes formatting

Change-Id: Icea8712088068c14dbfcb20e403dd68f9aa11227

5 years agoPrepare for 2019.2
Paul Bauer [Wed, 13 Feb 2019 12:54:24 +0000 (13:54 +0100)]
Prepare for 2019.2

Reset doi strings.

Change-Id: I497ce4e5afe3a0f776dfba107e45d74bc51d4cc8

5 years agoPBC setup for GPU is moved into pbcutils.
Artem Zhmurov [Tue, 15 Jan 2019 16:11:14 +0000 (17:11 +0100)]
PBC setup for GPU is moved into pbcutils.

The CUDA device function setPbcAiuc is moved from listed-forces
to pbcutils so that other parts of the code can use it.

Change-Id: I8bbbadc95a6bc72f9abeba481981b66b192a2804

5 years agoAdd GMX_OCL_SHOW_DIAGNOSTICS env option
Roland Schulz [Sat, 28 Apr 2018 01:20:33 +0000 (18:20 -0700)]
Add GMX_OCL_SHOW_DIAGNOSTICS env option

Change-Id: Ie886544d40ff78fccd301b87d610ae8c42483b14

5 years agoImprove libstd++ handling
Roland Schulz [Mon, 28 Jan 2019 04:49:02 +0000 (20:49 -0800)]
Improve libstd++ handling

clang and icc use libstdc++ under Linux by default.

Previously such dependencies were handled differently than other
dependencies, in that we relied on the compiler autodetection, and
required the user to use the compiler flags to specify a proper
version.

Now we discover libstdc++ using cmake by finding g++, unless the user
or the toolchain they chose have already managed which gcc toolchain
to use. Then the found version is provided to the compiler with the
proper flags.

This has the advantages:
- Makes it easy for us to check the required version is used.
  Version check for libstdc++ 5 for C++14 is added.
- Makes it easy for the user to provide the correct version
  because standard cmake variables work.
- Makes build reproducible because the instance of libstdc++ used
  is constant (e.g. cached via GMX_GPLUSPLUS_PATH, or controlled
  by the toolchain, but not if the user chose non-reproducibility
  by setting CXXFLAGS environment variables). Previously, the
  auto-detection depended on the PATH environment variable at
  the time of build (not the time of the cmake run). Thus
  rebuilding with the same cache file was not guranteed to
  give the same result. It could cause cause confusing link
  errors if parts were rebuilt differently.

Also managed libc++ for clang-analyzer builds a bit better.

Fixes #2842

Change-Id: I855e16a6d4bd670cfb7acd6ea5c740f3a1b226bf

5 years agoPrecision fix for rescbt code.
David van der Spoel [Wed, 13 Feb 2019 19:13:58 +0000 (20:13 +0100)]
Precision fix for rescbt code.

The compute_restangles function was not sufficiently
precise. In fact it return completely different
results in single and double precision. By making part
of the function work in double the issue is fixed.

New tests added.

Part of #2795
Fixes #2862

Change-Id: Iad7f2bc45be996ba3e16358aab838c5427b157b8

5 years agoImprove GPU target compatibility error message
Szilárd Páll [Fri, 15 Feb 2019 15:10:38 +0000 (16:10 +0100)]
Improve GPU target compatibility error message

Change-Id: I53bff22da766c2e8bc083ca6c0e5a08d7ed3b408

5 years agoUse enum class for nbnxm locality
Berk Hess [Tue, 15 Jan 2019 08:35:04 +0000 (09:35 +0100)]
Use enum class for nbnxm locality

Converted the interaction and atom locality enum to enum class.
This exposed and fixed a few mixings of the two enums.
Move some files into the Nbnxm namespace.
Add local/non-local organization to the GPU timers.

Note that the use of the Nbnxm namespace outside the nbnxm module
is only temporary. This should all be replaced by methods.

Change-Id: I3c891b3b2b3e14d8175b63f4191f365a5cd64b18

5 years agoExtract nbnxm grid.h and pairlistwork.h
Berk Hess [Tue, 8 Jan 2019 15:09:10 +0000 (16:09 +0100)]
Extract nbnxm grid.h and pairlistwork.h

Change-Id: Ia0da75a21e56d7e473f868cc3758f415ac9e4eb9

5 years agoFix compiler warnings
Berk Hess [Sat, 16 Feb 2019 17:24:13 +0000 (18:24 +0100)]
Fix compiler warnings

Change-Id: I179eb5a53b14d2bcdc340468d2215a44fcd6a3a4

5 years agoMove nbnxm details from sim_util.cpp to module
Berk Hess [Thu, 10 Jan 2019 09:34:44 +0000 (10:34 +0100)]
Move nbnxm details from sim_util.cpp to module

The removes most nbnxm implementation details from sim_util.cpp.
The rest will be done when making nbnxn a class.

Change-Id: Iba411ce87b431a3b9aad656a22dd9114d5854546

5 years agoMove nbnxn files to nbnxm directory
Berk Hess [Fri, 4 Jan 2019 10:54:27 +0000 (11:54 +0100)]
Move nbnxn files to nbnxm directory

This change moves all files related to the nbnxn code to an new
nbnxm subdirectory. This change is only code motion and file renaming.
This is also the start of a renaming from nbnxn to nbnxm, which is
a more correct name, since the i- and j-cluster size can be different.
All nbnxn setup code in forcerec.cpp is moved to nbnxm_setup.cpp.
Removed nbnxn_ and _simd... pre- and postfixes from most files.
Renamed nbnxn_search.cpp to pairlist.cpp and nbnxn_search.h to
nbnxm_pairlistset.h. Although this is currently somewhat inconsistent,
future refactoring will make the contents consistent.
Renamed nbnxn_utility.h/cpp to nbnxm_geometry.h/cpp.

Change-Id: I39c17769c566f78b84211510c5ac17793fd131fa

5 years agoTests of restrained listed potentials.
David van der Spoel [Mon, 11 Feb 2019 19:25:50 +0000 (20:25 +0100)]
Tests of restrained listed potentials.

TODO:
- Tests of tabulated potentials.
- Tests of NMR related potentials.
- Tests of restrained angles.

Part of #2795

Change-Id: I27ebc7a5a8805cc92a8e00deb83e36ca3cd87a78

5 years agoFix memory leaks in editconf
Paul Bauer [Thu, 14 Feb 2019 16:07:59 +0000 (17:07 +0100)]
Fix memory leaks in editconf

Fixed all leaks found by valgrind.

Change-Id: I87c02051e3be772c9706c0995fc0e94bcebd7add

5 years agoExtend GpuEventSynchronizer to allow on-device sync
Szilárd Páll [Sat, 10 Nov 2018 20:16:57 +0000 (21:16 +0100)]
Extend GpuEventSynchronizer to allow on-device sync

Added a method that allows inserting a dependency on the synchronizer's
even into a stream passed.

Change-Id: I982ad99b594aab6a6042749260479debb12042a5

5 years agoFixed misleading wording for membed option.
Semen Yesylevskyy [Fri, 15 Feb 2019 11:15:26 +0000 (13:15 +0200)]
Fixed misleading wording for membed option.

It is currently wrritten "This approach is unsuitable" but it is only
unsuitable from the code organization point of view, not for conceptual
reasons.

Change-Id: I504bb2a78bdb85cc41aa67b492e2a0fac828d8e4

5 years agoAdd new suggested external trajectory analysis tool
Semen Yesylevskyy [Fri, 15 Feb 2019 11:00:18 +0000 (13:00 +0200)]
Add new suggested external trajectory analysis tool

Also reorder the  list alphabetically, to avoid appearance
of suggesting a preference.

Change-Id: I474d6064e8b119429e7a91e7a804bbe386339e05

5 years agoFix memory issues in preprocess
Paul Bauer [Tue, 12 Feb 2019 09:12:22 +0000 (10:12 +0100)]
Fix memory issues in preprocess

Refs #2833

Change-Id: Ic4118958d98446d3a164fca10c5618ad0da9bed6

5 years agoRefactor vsite topology
Paul Bauer [Wed, 13 Feb 2019 07:49:20 +0000 (08:49 +0100)]
Refactor vsite topology

Refs #2833

Change-Id: Ibde09f829a72cc5e6467e15cf8ee7e3c183a30ad

5 years agoVersion 2019.1
Paul Bauer [Wed, 13 Feb 2019 12:49:51 +0000 (13:49 +0100)]
Version 2019.1

Updated regression test hash.
Set DOI strings.

Change-Id: If56a4e81c853af49ebe6a908bb9cc8883d24a7bc

5 years agoImproved diagnostics when PME cannot run on GPUs
Mark Abraham [Thu, 14 Feb 2019 16:01:25 +0000 (17:01 +0100)]
Improved diagnostics when PME cannot run on GPUs

Fixes #2789, #2823

Change-Id: Iff7609a3774c11329d36bd8557b741a4d29f7c5a

5 years agoFix tune_pme
Paul Bauer [Thu, 14 Feb 2019 15:38:09 +0000 (16:38 +0100)]
Fix tune_pme

There was an issue with the file option for the tpr file being empty
that caused a segmentation fault.

Fixes #2827

Change-Id: I2702898d071d6e9325fa2e7ebb223b9043b7109e

5 years agoFix mass Delta H double counting
Berk Hess [Wed, 13 Feb 2019 08:55:35 +0000 (09:55 +0100)]
Fix mass Delta H double counting

With separate mass lambda parameters, the perturbed mass contribution
to Delta H (not dH/dlambda) was double counted. This was due to an
incorrect fix for issue #2703 for missing Delta H contribution.

Refs #2703
Fixes #2849

Change-Id: I1349260e1e90a17a6b7dbe0d239d9474dcfa928c

5 years agoExtend performance considerations on bonded offload
Szilárd Páll [Fri, 15 Feb 2019 01:09:39 +0000 (02:09 +0100)]
Extend performance considerations on bonded offload

Refs #2793

Change-Id: I4a8ae8554cf2aad540eb4eb485898f8cabeb3966

5 years agoFix use of selections referring to index groups
Mark Abraham [Tue, 29 Jan 2019 11:56:31 +0000 (12:56 +0100)]
Fix use of selections referring to index groups

Selections that refer only to groups in an index file do not require a
topology file. This (and other behaviours) was inadvertently broken
by the wrong implementation of the default constructor, because that
constructor is used in setting up the analysis environment.

The default constructor of TopologyInformation should establish the
intended invariant, namely that until a topology is loaded, topology
getters should return nullptr.

Fixed that constructor, and fixed the unit test that verifies that
behaviour. Since that test was added at the same time as a change to
the implementation of TopologyInformation in commit 264458c9, the
broken invariant wasn't noticed.

Added a test also to gmx rdf that verifies that the selection
behaviour is fixed.

Fixes #2847

Change-Id: I2149616e0248c6d5cdd5657a8292d2c3346614b9

5 years agoRevert changes to implementation of insert-molecules and solvate
Mark Abraham [Wed, 13 Feb 2019 14:24:04 +0000 (15:24 +0100)]
Revert changes to implementation of insert-molecules and solvate

This is a partial reversion of 5181f8d1, which made an inappropriate
dependency from preparation tools to TopologyInformation, which is
intended for analysis tools. This is needed in order to fix some
actual analysis tools that were broken by related changes to
TopologyInformation.

Unfortunately in 5181f8d1 readConformation was replaced with
TopologyInformation, and the former is no longer available. Instead,
readConfAndTopology is used in the same way that it was originally
used to implement readConformation. So the behaviour is reverted
even though the code looks different.

Refs #2847, #1862

Change-Id: I6e4900eea38b5c2e1b85b0d48427dabe26b09f9d

5 years agoImproved electric-field docs
Mark Abraham [Wed, 13 Feb 2019 17:44:26 +0000 (18:44 +0100)]
Improved electric-field docs

Change-Id: Ib1c6aa260f54a3933b1d80e375dc6ee007317473

5 years agoDisable instruction fusion on Power8
Szilárd Páll [Thu, 7 Feb 2019 13:12:17 +0000 (14:12 +0100)]
Disable instruction fusion on Power8

The -mpower8-fusion flag seems to be the source of incorrect code; not
confirmed, but likely a codegen issue that also affects Power9 with the
similar flag used.

Fixes #2747 #2746 #2734

Change-Id: I56f50e54db47f4fe30c42488f4c4f79ac474518a

5 years agoMinor refactoring in mdrunnner
Szilárd Páll [Sat, 10 Nov 2018 20:43:49 +0000 (21:43 +0100)]
Minor refactoring in mdrunnner

Simplified some runner.cpp code to reduce clutter and moved a few
variable declarations away from the beginning of the function.

Change-Id: I818196e3b775077f648415ed6fbbd6d2eb91521a

5 years agoRefactor rtp renaming
Paul Bauer [Tue, 12 Feb 2019 10:42:13 +0000 (11:42 +0100)]
Refactor rtp renaming

Refs #2833

Change-Id: I2407045adadb3b84810fb6bfd83d5b8e9daba6f5

5 years agoMake EnergyOutput wrapper class
Mark Abraham [Wed, 6 Feb 2019 09:35:55 +0000 (10:35 +0100)]
Make EnergyOutput wrapper class

Eventually we want a proper class for the energy accumulation and
output behaviours. In the meantime, this hides much about t_mdebin and
t_ebin from integrators, so that we can refactor with minimal
disruption to other work.

Made t_mdebin private to the new EnergyOutput implementation file.
Used bool rather than gmx_bool in the interface of EnergyOutput.
Noted several TODOs for improvements to code structure.

Removed dependency on ebin.h and enxio.h from the new header, so
various other places had to declare their own dependencies.

Change-Id: If09b2c82dd8c139c76cb5fc453d556c26a5eee89

5 years agoIgnore Visual Studio Code metadata.
Artem Zhmurov [Wed, 13 Feb 2019 10:14:47 +0000 (11:14 +0100)]
Ignore Visual Studio Code metadata.

Change-Id: Ic03e22eb3246d7d29c4063601cc86cd6a721e81d

5 years agoReduce coupling to paddedvector.h
Mark Abraham [Tue, 12 Feb 2019 14:57:08 +0000 (15:57 +0100)]
Reduce coupling to paddedvector.h

As we've improved this infrastructure, we no longer use PaddedVector
in so many places.

Change-Id: I996433f4e0f82b00ab579e158f3d71dac9daae0f

5 years agoMove simulated tempering default setting
Paul Bauer [Tue, 5 Feb 2019 14:55:55 +0000 (15:55 +0100)]
Move simulated tempering default setting

Setting the default value for the simulated tempering when nstexpanded
was not specified in the mdp file was done before the values for the
temperature coupling are known. Moved this to a new location where the
value is known instead.

Added message to user in this case.

Refs #2754

Change-Id: I194829d5a817019da6d63a075e0dd7f4af8a4735

5 years agoMinor refactor of gpuid / task mapping parsing
Szilárd Páll [Sat, 10 Nov 2018 20:43:49 +0000 (21:43 +0100)]
Minor refactor of gpuid / task mapping parsing

Added two separate functions that implement the user-provided GPU ID
string and task mapping parsing, respectively. The separation allows the
two to reflect the slight difrerence in requirements on the input (and
allow these to change in the future). Unit tests were updated as well as
change to explicitly reflect this difference between the -gpuid and
-gputasks strings.

Change-Id: I71144a810e38d2f45e965731e245c868d1d35332

5 years agoQuiet clang warning
Mark Abraham [Tue, 12 Feb 2019 16:35:29 +0000 (17:35 +0100)]
Quiet clang warning

Change-Id: I48358616bd1c3adf0a8d5c53451ec877a8067ed8

5 years agoRefactor special bonds
Paul Bauer [Tue, 12 Feb 2019 10:05:07 +0000 (11:05 +0100)]
Refactor special bonds

Refs #2833

Change-Id: I2e093d7fb5fa429f969a78eef7da639af3f7cd1e

5 years agoRefactor t_rbonded and t_rbondeds
Paul Bauer [Mon, 4 Feb 2019 11:47:11 +0000 (12:47 +0100)]
Refactor t_rbonded and t_rbondeds

Again, replaced raw allocations with std::container and changed function
signatures and loops to use new behaviour.

Refs #2833

Change-Id: I620866b823d9839cafafe357352e3e7a49033a69

5 years agoRefactor t_restp
Paul Bauer [Mon, 4 Feb 2019 09:29:17 +0000 (10:29 +0100)]
Refactor t_restp

Replaced raw allocations with std::containers.

Refs #2833

Change-Id: Ie74708fdf04082f37e69e000aef8f5bd7f577dba

5 years ago3x3 matrices
Christian Blau [Tue, 15 Jan 2019 12:33:37 +0000 (13:33 +0100)]
3x3 matrices

Matrices with contiguous, aliged memory as C-style "matrix" replacement

Matrix elements are accessed efficiently with bracket notation m(x,y)
or, for compability reasons, with m[x][y] (though deprecated)

Matrices manage their own memory, but provide an implicit conversion to
views and const views on their data which should be used instead of a
copy.

Arithmetic operations will follow in a later patch.

refs #2834

Change-Id: Ia96037384d2e1d774559fbcac97f420c58106625

5 years agoRemove gmx::Regex
Mark Abraham [Sun, 10 Feb 2019 23:01:17 +0000 (00:01 +0100)]
Remove gmx::Regex

We now always use std::regex. The wrapper type added the value of
standardizing regex flags, which was useful while we had to use only
the subset that was usable on all platforms. But the wrapper type made
it harder to use than needed, because e.g. they could not be stored in
a container. Removing gmx::Regex will create new opportunities.

Refs #2881

Change-Id: I97974527052b52c17bb26304b214e8b152dafb4b

5 years agoRemove buggy debug output.
David van der Spoel [Mon, 11 Feb 2019 21:16:48 +0000 (22:16 +0100)]
Remove buggy debug output.

Code leftover from testing the SW model with model specifics
hardcoded.

Part of #2774

Change-Id: Ida59dbe1b23672d377e834f199c567d4a51aa0b9

5 years agoTests for polarization functions.
David van der Spoel [Sun, 3 Feb 2019 07:49:19 +0000 (08:49 +0100)]
Tests for polarization functions.

Part of #2795

Change-Id: I30d0c67bac3e16412ca2afaa12ea7e28e8c01f6e

5 years agoview on MultiDimArray
Christian Blau [Tue, 5 Feb 2019 18:12:14 +0000 (19:12 +0100)]
view on MultiDimArray

Access the view and a const view on a MultiDimArray.

refs #2834

Change-Id: Ia82983ac9e3bc8edebc53a1c9f3335101ad4c704

5 years agoRefactor t_hack to MoleculePatches
Paul Bauer [Fri, 1 Feb 2019 13:48:52 +0000 (14:48 +0100)]
Refactor t_hack to MoleculePatches

Replaced raw allocations with std::containers. Changed loops and
dependent functions to use new format.
Used hopefully better names for types and variables.

Part of preprocessing clean up.

Refs #2833

Change-Id: I518f5b0d5a7f20cbf8bf3636e88084c1daaab5d9

5 years agoRemove EmptyArrayRef
Roland Schulz [Fri, 8 Feb 2019 21:45:15 +0000 (13:45 -0800)]
Remove EmptyArrayRef

Make it more aligned with std::span.
Almost everywhere it wasn't needed anyhow.
Only exception: ternary conditional operator. But there the type
was already explict in all but one case and that one case
(src/gromacs/domdec/distribute.cpp) was confusing because of
multiple implicit conversions.

Related #2859

Change-Id: I0b61abdc2e60285a7ca17e3bdc7e53cb72c5cf6a

5 years agoFix bug in residue type reading
Paul Bauer [Wed, 6 Feb 2019 12:47:19 +0000 (13:47 +0100)]
Fix bug in residue type reading

I used the wrong comparison in a recent change, fixed by properly
checking iterators against each other.

Change-Id: Ia077899e84c7af779b873d183d49236d92296dd3

5 years agoUse more vector in selection index groups structs
Kevin Boyd [Tue, 5 Feb 2019 04:20:15 +0000 (23:20 -0500)]
Use more vector in selection index groups structs

Removed unused functions

Change-Id: If8a90ef705c3a9c9ab641ddbb64d17607d7a610f

5 years agoDisallow rerun with perturbed masses or constraints
Berk Hess [Fri, 8 Feb 2019 09:57:48 +0000 (10:57 +0100)]
Disallow rerun with perturbed masses or constraints

Since rerun no longer integrates, free-energy contributions due to
changing masses and constraints are no longer computed. Now rerun
exits with a fatal error when such a system is provided.

Fixes #2849

Change-Id: Ic1550fce22f68c573b52d6895e1e61398b671e51

5 years agoChange nightly matrix label to not use hwloc
Paul Bauer [Fri, 8 Feb 2019 15:13:46 +0000 (16:13 +0100)]
Change nightly matrix label to not use hwloc

Done because the 1310 agent has issues with the installation.

Change-Id: I3bbe1b15bf4e1c53a12a4fdac2b759726172965a

5 years agoFurther increase of tolerance for angles.
David van der Spoel [Fri, 8 Feb 2019 22:08:22 +0000 (23:08 +0100)]
Further increase of tolerance for angles.

Part of #2795

Change-Id: I0d698b6c079cfd008a5419ac2bb7de54ea6887a4

5 years agoIncreased tolerance for angle functions.
David van der Spoel [Fri, 8 Feb 2019 16:04:47 +0000 (17:04 +0100)]
Increased tolerance for angle functions.

Increased the tolerance for urey-bradley and
quartic angles some more.

Part of #2795.

Change-Id: I929957f1a8de7ad78d174cc613c544234f1450d0

5 years agoFix Intel compiler warning
Mark Abraham [Fri, 8 Feb 2019 14:54:20 +0000 (15:54 +0100)]
Fix Intel compiler warning

Post-submit warning hopefully goes away now.

Change-Id: Iddbefff5ea884bccc5e3a9a9959cd7bd216f55f4

5 years agoIncrease tolerance in Angle test.
David van der Spoel [Fri, 8 Feb 2019 09:00:35 +0000 (10:00 +0100)]
Increase tolerance in Angle test.

One of the new listed-forces tests failed due to
precision in post-submit. Increasing the tolerance
should fix it.

Part of #2795

Change-Id: I1586a92642b4fc257ad65d94337e7caf99385f53

5 years agoseparated .rst documentation of dihedral PCA and hydrogen-bonds
Thomas Ullmann [Thu, 7 Feb 2019 17:14:38 +0000 (18:14 +0100)]
separated .rst documentation of dihedral PCA and hydrogen-bonds

The section of the reference manual on hydrogen-bonds was included
in dihedral-pca.rst. This hindered insertion of a section on an
analysis method related to PCA right after the dihedral PCA section.

Change-Id: I4d7c88624a12fc516cb63465098060fc871cc987

5 years agoRemove copy_energy from energy-writing steps
Mark Abraham [Thu, 17 Jan 2019 20:01:02 +0000 (21:01 +0100)]
Remove copy_energy from energy-writing steps

Used range-based for to avoid yet another copy of energy data between
intermediate buffers before being written to the .edr file.

Renamed some variable from index to entryIndex for clarity.

This change is covered by the tests on t_mdebin functionality.

Change-Id: Iecaf28c8af48a74abaf2805feb353c99ab613b10

5 years agoReform energy output tests
Mark Abraham [Thu, 7 Feb 2019 09:51:41 +0000 (10:51 +0100)]
Reform energy output tests

Separated tests of t_mdebin from tests of t_ebin to prepare for making
t_mdebin a proper class. Improved coverage of t_mdebin (and indirectly
t_ebin). Made done_ebin deallocate ebin, which means scoped_cptr is
now more usable.

Made some operations on t_mdebin more safe, by checking for nullptr or
reordering logic. Technically there are now two more branches when
writing energy output.

Change-Id: I4b056f660d16ce7af225e229030d6729a34acefe

5 years agoFix sign warning
Roland Schulz [Thu, 7 Feb 2019 22:58:05 +0000 (14:58 -0800)]
Fix sign warning

Caused by rebase of 55c76c88c4d (as part of merge) onto
43da62f5e3.

Change-Id: If2d4f2cc19df18297b689d91b7ce865e5b382773

5 years agoTests for listed force potentials.
David van der Spoel [Sat, 2 Feb 2019 17:35:19 +0000 (18:35 +0100)]
Tests for listed force potentials.

Make-over of previous bondedtests and update of code
to test everything.

TODO:
- Tests for restraints and polarization.

Part of #2795

Change-Id: I15e4e5053fb0d1dd5968614bd06f899f0d28dc3a

5 years agoRequire a 64-bit platform for OpenCL
Szilárd Páll [Sun, 6 Jan 2019 10:51:26 +0000 (11:51 +0100)]
Require a 64-bit platform for OpenCL

GROMACS requires a 64-bit OpenCL implementation as the PME code assumes
8-byte size cl_mem. Therefore, we require a 64-bit platform,
where pointers and therefore cl_mem will be of the assumed size.

Fixes #2821

Change-Id: I5fa60419a948e2cfdb344e7611b197550f866262

5 years agomdspan - add bracket operator slicing
Christian Blau [Mon, 4 Feb 2019 14:43:30 +0000 (15:43 +0100)]
mdspan - add bracket operator slicing

Add bracket operator that creates from a basic_mdspan using a bracket operator [].

Change-Id: I2727a7af42b169782b6d1542b6248f2fd23032ac

5 years agoRevert size to be unsigned for ArrayRef
Roland Schulz [Wed, 6 Feb 2019 00:08:49 +0000 (16:08 -0800)]
Revert size to be unsigned for ArrayRef

Given the decision for std::span to be signed this became
inconsistent with future C++ while already being inconsistent
with std::vector. The goal of the original change, to have
signed variables for all arithmetic including loop indices,
can be achieve by using ssize everwhere arithmethic is used.
ssize is both available as free function (also for std::vector)
and member function.

Related #2826

Change-Id: Icc5d0f9561c610cbce34c575d268171e9890ca9c

5 years agoAdd ssize and remove static_casts
Roland Schulz [Tue, 5 Feb 2019 23:51:26 +0000 (15:51 -0800)]
Add ssize and remove static_casts

Fixes #2826

Change-Id: I8cb3b64764798b164b355e71fb10874b49060a0a

5 years agoadded a unit test for make_ndx to check generation of default protein index groups
Thomas Ullmann [Wed, 6 Feb 2019 21:59:02 +0000 (22:59 +0100)]
added a unit test for make_ndx to check generation of default protein index groups

Change-Id: I56b26a7eefeb818ec038696b8bb9e3a47e9ac536

5 years agoRefactor t_hackblock
Paul Bauer [Fri, 1 Feb 2019 08:01:16 +0000 (09:01 +0100)]
Refactor t_hackblock

Changed raw allocations to std::container, reworked functions that
depend on them to adapt to new format.

Part of work to change preprocessing to use enw topology datastructures.

Change-Id: Ifd2bf4b18affe7e41db6178a0a713376e7c87f12

5 years agoFix segfault with EM, DD and group scheme
Berk Hess [Wed, 6 Feb 2019 12:39:55 +0000 (13:39 +0100)]
Fix segfault with EM, DD and group scheme

Resetting to an old DD state during EM would leave the cg sorting array
used with the group scheme in an invalid state. This could cause
out of bounds vector access one DD step after rejecting an EM step.

When merging this into master branch, prefer to change to use ssize
rather than the static_cast.

Fixes #2813

Change-Id: I7f13b46d7ff5352ce41838b813c46f2e90c93b1c

5 years agoFix bug in generating default protein index groups
Thomas Ullmann [Tue, 5 Feb 2019 18:51:59 +0000 (19:51 +0100)]
Fix bug in generating default protein index groups

The bug was introduced in 3c3dd54f00. When recording
atom indices for an index group in a temporary
vector, the indices of the previously processed index
group were not cleared resulting in index groups that
contained the indices of all previously processed
index groups besides the intended ones. This bug also
caused a crash of trajectory analyis tools with
selection options if the selection used such a
predefined index group.

Change-Id: I68fe19f0dfbca07618b882cf8509e33f570a8348

5 years agoRemove SIMD support from group scheme
Mark Abraham [Mon, 28 Jan 2019 14:32:05 +0000 (15:32 +0100)]
Remove SIMD support from group scheme

It might take a bit longer to craft the patches that remove the rest
of the group scheme, but we may as well speed up our compilation times
first.

Refs #1852

Change-Id: I082e40e04678c744d9da8119333210878294a021

5 years agoFix segmentation fault in minimize
Paul Bauer [Mon, 4 Feb 2019 15:17:22 +0000 (16:17 +0100)]
Fix segmentation fault in minimize

Fixes #2858

Change-Id: I9cf391be031979607d09087fa851eb644fb7e56e

5 years agoRename all source files from - to _ for consistency.
Roland Schulz [Sat, 2 Feb 2019 18:05:23 +0000 (10:05 -0800)]
Rename all source files from - to _ for consistency.

Refs #2839

Change-Id: I3a1af667b2b266b1fd65586445b5e7a8a1b6b618

5 years agoFix cmake policy warning
Roland Schulz [Fri, 1 Feb 2019 01:43:05 +0000 (17:43 -0800)]
Fix cmake policy warning

Change-Id: I9cb247606b08cdace7880fd42b987f129c8f8dc6

5 years agoReplace compat::make_unique with std::make_unique
Roland Schulz [Sat, 2 Feb 2019 19:34:02 +0000 (11:34 -0800)]
Replace compat::make_unique with std::make_unique

Change-Id: I6b0db007b8a7b9e1d72374dcee15f66587375f75

5 years agomdspan - free begin and end functions
Christian Blau [Thu, 24 Jan 2019 22:01:08 +0000 (23:01 +0100)]
mdspan - free begin and end functions

Add functions to address contiguous mdspan data via begin and end function.

Allows range based looping over view elements.

Change-Id: I75dbf9be53d37fc80a023eaa1e8cda59254c0ebd

5 years agomultidimensional array - bugfix swap
Christian Blau [Fri, 1 Feb 2019 12:48:47 +0000 (13:48 +0100)]
multidimensional array - bugfix swap

The swap operation for the multidimensional array was wrongly
implemented, because the views were only swapped without resetting them
onto the new data. The tests have been updated to better capture the
swapping behaviour.

Change-Id: Ic800a3ec0e059c8fcdfb4e5528747ca0c70afb82

5 years agoFix Intel compiler on Windows build
Roland Schulz [Sat, 2 Feb 2019 17:41:02 +0000 (09:41 -0800)]
Fix Intel compiler on Windows build

Change-Id: I8a89a08c945bb088e4b896b1bc4fedef2320cd01

5 years agoRenamed listed-forces to listed_forces
Roland Schulz [Tue, 22 Jan 2019 19:45:01 +0000 (11:45 -0800)]
Renamed listed-forces to listed_forces

There should be consistency in naming. _ is used in almost
all cases (2744 to 122 in src/gromacs not counting files
changed here). Follow up changes will change the remaining
files.

Change-Id: Iea57accfd94d7ede180b9becd7d607425a8df7f6

5 years agoRemove reliance on inconsistent cmake feature testing
Roland Schulz [Sat, 2 Feb 2019 00:21:13 +0000 (16:21 -0800)]
Remove reliance on inconsistent cmake feature testing

Change-Id: I700b581d8e138328524c04cf9de9458e399d45d9

5 years agoAdd recommendation of how to compile with MPI
Roland Schulz [Sat, 2 Feb 2019 05:01:03 +0000 (21:01 -0800)]
Add recommendation of how to compile with MPI

Reason for recommendation: reproducible build.

Change-Id: Ib61e71c006cb0d6c852029667cf16696912a712f

5 years agoFix incorrect LJ repulsion force switching on GPUs
Berk Hess [Thu, 31 Jan 2019 21:47:53 +0000 (22:47 +0100)]
Fix incorrect LJ repulsion force switching on GPUs

When using a CUDA or OpenCL GPU, the coefficient for the second order
term for the LJ repulsion in the force (not energy) switching function,
called 'A' in the manual, had the wrong sign in both the force-only
kernels and the force+energy kernels.
Note that the dispersion force switching was correct.

Fixes #2845

Change-Id: Ib5c250a1f370d4c0a4fd652bf6efa03e70e18748

5 years agoFix clfft build
Roland Schulz [Thu, 31 Jan 2019 17:00:24 +0000 (09:00 -0800)]
Fix clfft build

Change-Id: I9df2470aa02644aa4058ccce986b543374f10664

5 years agoMerge remote branch release-2018 into release-2019
Mark Abraham [Wed, 30 Jan 2019 12:30:19 +0000 (13:30 +0100)]
Merge remote branch release-2018 into release-2019

Change-Id: Ie5a4add2fe010bc94c00418a728f01d3aac6cb9d

5 years agoFix double-increment of GPU NB launch subcounter
Szilárd Páll [Tue, 29 Jan 2019 14:49:18 +0000 (15:49 +0100)]
Fix double-increment of GPU NB launch subcounter

Only increment once per nonbonded task per step.

Fixes #2837

Change-Id: Ic68bf1af184f895f2fb769b026855fd3d48fa849

5 years agoFix release notes issue links
Mark Abraham [Wed, 30 Jan 2019 08:23:04 +0000 (09:23 +0100)]
Fix release notes issue links

The space means sphinx can't recognize the construct

Change-Id: I8c25114a1f45a7744345e2e8bc6862fdd4568f5f

5 years agoFix release notes issue links
Mark Abraham [Wed, 30 Jan 2019 08:20:31 +0000 (09:20 +0100)]
Fix release notes issue links

The space means sphinx can't recognize the construct

Change-Id: Ia0b96e8a1ecd24e2bac97d7bc9f176abbe30abc9

5 years agoChange all C to C++ outside of TNG
Roland Schulz [Wed, 30 Jan 2019 07:15:34 +0000 (23:15 -0800)]
Change all C to C++ outside of TNG

Change-Id: I43464b366cfdc1b816088cf8af117b17843f9359

5 years agoAdd cmake C++14 feature check
Roland Schulz [Fri, 25 Jan 2019 21:29:15 +0000 (13:29 -0800)]
Add cmake C++14 feature check

Change-Id: Ia4e2185aca2a8e1ff1b07cc9b49cfee33a6de705

5 years agoAvoid warnings with Apple Clang
Teemu Murtola [Tue, 29 Jan 2019 07:05:44 +0000 (08:05 +0100)]
Avoid warnings with Apple Clang

The logic for -Wno-missing-prototypes for group kernels left the
warning enabled for Apple Clang, making it impossible to compile
the code with -Werror.

Change-Id: Ib9a0e23bd47f8cc1dd8f656aae49ba27bbf9b28b

5 years agoResolve C++14 TODOs
Roland Schulz [Fri, 25 Jan 2019 04:23:15 +0000 (20:23 -0800)]
Resolve C++14 TODOs

Also simplify constructor from fixed sized container.

Change-Id: I4983020939b1569949c39f7bf715fe2dbe69ab0d

5 years agoStop trying to check nvcc on Windows
Mark Abraham [Thu, 10 Jan 2019 09:14:40 +0000 (10:14 +0100)]
Stop trying to check nvcc on Windows

The execute_process() call used in this check is not constructed to
work on Windows, so we should not run it there.

Refs #1616

Change-Id: I2103b78203f71d3f68b54898dd03c8fe0eb0fa4c

5 years agoBump CUDA requirement to 9.0
Mark Abraham [Fri, 25 Jan 2019 15:00:51 +0000 (16:00 +0100)]
Bump CUDA requirement to 9.0

Also bump requirement for clang CUDA build to clang 6.0

Adjusted test matrices to run the tests in an equivalent and
reasonably balanced way.

Updated developer guide

Change-Id: I577af6267dcf31572e1af73eb46162938ec63feb

5 years agoFixed some typos in comments.
David van der Spoel [Sat, 26 Jan 2019 16:50:00 +0000 (17:50 +0100)]
Fixed some typos in comments.

Change-Id: Id738f01c1eb21036cb7d6db680d597f289939fc1