alexxy/gromacs.git
5 years agoMerge branch release-2018 into release-2019
Paul Bauer [Wed, 21 Nov 2018 09:46:29 +0000 (10:46 +0100)]
Merge branch release-2018 into release-2019

Several changes addressing known issues have not
been brought forward, either because they are
inappropriate or the bug is already fixed in
release-2019 branch.

Resolved Conflicts:
admin/builds/gromacs.py
admin/builds/post-submit-matrix.txt
cmake/gmxVersionInfo.cmake
docs/CMakeLists.txt
src/gromacs/mdlib/minimize.cpp
src/gromacs/mdlib/shellfc.cpp
src/gromacs/topology/mtop_util.cpp
src/programs/mdrun/md.cpp
src/programs/mdrun/mdrun.cpp
src/programs/mdrun/runner.cpp
src/testutils/testinit.cpp

Change-Id: Ia18b43854925fb2c6e1bf4256b99bd8f42359f68

5 years agoPartial revert of "Fix inefficient shell minimization"
Mark Abraham [Tue, 20 Nov 2018 11:51:43 +0000 (12:51 +0100)]
Partial revert of "Fix inefficient shell minimization"

This reverts the minimize.cpp part of commit
5749eb1c9934c3597f140b793c7b374610a56335. That would likely affect
large systems instead, and those are likely more common targets for
normal mode analysis.

Change-Id: Ia586beb7b47480499907352a96175bd1dda29684

5 years agofix unused variable warning from gmxapi compilation
Joe Jordan [Mon, 19 Nov 2018 08:46:30 +0000 (09:46 +0100)]
fix unused variable warning from gmxapi compilation

Fixes #2768

Change-Id: I8c77dd19f15df6f365122e25680e9d0a553cb36c

5 years agoFix inefficient shell minimization
Mark Abraham [Fri, 9 Nov 2018 07:12:26 +0000 (08:12 +0100)]
Fix inefficient shell minimization

In 5268b73d6cd, a bug was introduced when a shallow copy was used
instead of the former deep copy. However, in the original code some
pointers were used as "short-cuts", which is not neccessary. Those
pointers have been removed, and now the shell-code position vectors
are fully initialized at allocation time.

In order to get reproducible normal modes the delta x used for
computing derivatives was reduced.

Fixes #2705

Change-Id: Iad8a0b0793304e2c10d9abf3a180cfe9bdc85c4c

5 years agoAdded citation for new analysis functionality.
David van der Spoel [Sun, 18 Nov 2018 13:55:16 +0000 (14:55 +0100)]
Added citation for new analysis functionality.

Change-Id: I91e90c5b00db740cfc072cd65ada2c5f9c70941c

5 years agoExpand gmxapi testing to include thread-MPI.
M. Eric Irrgang [Fri, 16 Nov 2018 13:40:31 +0000 (16:40 +0300)]
Expand gmxapi testing to include thread-MPI.

Some tests were disabled when GMX_THREAD_MPI was set because they were
not able to handle the GROMACS testing framework. These exclusions are
no longer necessary because the tests have been ported to use the mdrun
test fixtures.

Change-Id: I2a91d992031605ab4144eed774a2af55367565d8

5 years agoRemove extraneous CMake config.
M. Eric Irrgang [Fri, 16 Nov 2018 13:27:14 +0000 (16:27 +0300)]
Remove extraneous CMake config.

The generated gmxapi-config.cmake package config file had an unused
variable definition due to an extraneous option to
`configure_package_config_file()`

Change-Id: I67a70fa21cea92fa0de6ed7ebb49877aaf11cc89

5 years agogrompp now checks tau-p>=2*tau-t with NH+PR
Berk Hess [Fri, 16 Nov 2018 09:47:37 +0000 (10:47 +0100)]
grompp now checks tau-p>=2*tau-t with NH+PR

Added check to avoid resonances when combining Nose-Hoover and
Parrinello-Rahman coupling algorithms.

Fixes #2749

Change-Id: I061d5021ba5f9c3a68336d623c06843be9addbde

5 years agoRefine FindSphinx
Paul Bauer [Thu, 15 Nov 2018 13:29:44 +0000 (14:29 +0100)]
Refine FindSphinx

The FindSphinx function would not work on older versions of sphinx,
because the output from the program changed between versions. Modified
the detection logic to cover both cases.

Fixes #2751

Change-Id: I84525c5b9237d369fd78ac59b763e063456571e2

5 years agoNote GMX_ENABLE_CCACHE in build system docs.
M. Eric Irrgang [Tue, 13 Nov 2018 12:43:32 +0000 (15:43 +0300)]
Note GMX_ENABLE_CCACHE in build system docs.

Added to the list in "Variables affecting compilation/linking".

Fixes #2743

Change-Id: I1a3184fbda1d879db60fea2333bc4f7db95b0277

5 years agoFix checkpoint restart of tpr with infinite step count
Mark Abraham [Thu, 15 Nov 2018 16:37:21 +0000 (10:37 -0600)]
Fix checkpoint restart of tpr with infinite step count

The recent fix of #2717 did not account for the way a user's .tpr file
can require an infinite number of steps by using the special value
-1. Such special values are difficult to remember when maintaining the
code, so we should tend to avoid introducing them.

Fixes #2757

Change-Id: I6570c4f4e7d63b2375dbb595a514c9e709f18856

5 years agoRework GMXAPI tests
Paul Bauer [Thu, 4 Oct 2018 09:52:48 +0000 (11:52 +0200)]
Rework GMXAPI tests

Changed the tests to use a test fixture and only generate the tpr files
during the actual tests.

Fixes #2664

Change-Id: Ic8a0c1c5eed2189abb9006cb45097d1acd41d175

5 years agoRelax arbitrary tolerance on rerun test
Mark Abraham [Thu, 15 Nov 2018 05:17:30 +0000 (23:17 -0600)]
Relax arbitrary tolerance on rerun test

Fixes #2759

Change-Id: Iaff0893d495d198b55f0d3fb27484005cb2a9b6b

5 years agoFix OpenCL mdrun from installed path
Mark Abraham [Mon, 5 Nov 2018 22:28:44 +0000 (23:28 +0100)]
Fix OpenCL mdrun from installed path

Previously we could dump all the headers and source files in the
share/gromacs/opencl directory, because they all came from the NB
module. Now that we have code in the gpu_utils module used by both
Ewald and NB modules, that is not an option. So we may as well use the
same approach for the pbcutil and high-level NBNXN headers also.

Change-Id: I894e6a8032547077bb5198cc6c40f65916d1b17f

5 years agoAdded Alan and Jon to List of Contributers
Alan Gray [Wed, 14 Nov 2018 15:19:36 +0000 (07:19 -0800)]
Added Alan and Jon to List of Contributers

Change-Id: I7609963e4d124056beab69546f1402bf60e967cd

5 years agoMore warning suppressions for QMMM code
Mark Abraham [Fri, 9 Nov 2018 04:06:12 +0000 (05:06 +0100)]
More warning suppressions for QMMM code

These are typically not configured, and the resulting dead code and
possible noreturn attributes are more trouble than they are worth,
particularly when other compilers then get confused.

Change-Id: I2b374aa66feef55b518517d1c752f2b65b7a9d2b

5 years agoNote GMXAPI CMake variables and build targets.
M. Eric Irrgang [Tue, 13 Nov 2018 13:07:00 +0000 (16:07 +0300)]
Note GMXAPI CMake variables and build targets.

`build-system.rst` is a good place to note CMake variables and targets,
but the `GMXAPI` option, and the `Gromacs::gmxapi`, `gmxapi-cppdocs`,
and `gmxapi-cppdocs-dev` CMake targets, were not mentioned there.

Also, changes the names of the targets to use hyphens instead of
underscores for word separators.

Fixes #2744

Change-Id: I19db4a4124b125a4a0678c90b946d5fe3bc2e21c

5 years agoUpdate to prepare for 2018.5 point release
Paul Bauer [Wed, 7 Nov 2018 09:23:16 +0000 (10:23 +0100)]
Update to prepare for 2018.5 point release

Change-Id: If5d058821024fe3e0110b7501b154e508a12149c

5 years agoAdd coolquotes
Joe Jordan [Mon, 12 Nov 2018 15:48:27 +0000 (16:48 +0100)]
Add coolquotes

Change-Id: Ifcbbb45f531612454bd080f91b247817530f78e0

5 years agoVersion 2018.4
Paul Bauer [Wed, 7 Nov 2018 09:16:41 +0000 (10:16 +0100)]
Version 2018.4

Add release notes for change that was missing them.

Change-Id: I56d76f87d967221d037869ca5b93400b67fcd42d

5 years agoFixing segfault in parallel MiMiC QM/MM runs
Viacheslav Bolnykh [Fri, 9 Nov 2018 16:33:45 +0000 (17:33 +0100)]
Fixing segfault in parallel MiMiC QM/MM runs

Removed unnecessary copy of coordinate array from global state to
the local one that was causing memory corruption.

Fixes #2753

Change-Id: I6d0bc6edfabc1444d7d24eb2d5401b6ff174a57d

5 years agoFix entropy calculation in gmx anaeig
David van der Spoel [Sat, 10 Nov 2018 06:00:24 +0000 (07:00 +0100)]
Fix entropy calculation in gmx anaeig

gmx anaeig reads eigenvectors produced by gmx covar and
can compute entropy according to Schlitter's formula or
based on the quasiharmonic method. If the number of
eigenvectors is not consistent with the number of atoms
the entropy calculation could use uninitialized variables.
Added a warning when this happens.

Fixes #2668

Change-Id: I4f265212ce0a7bf82e25e1aa6f9cbb544c45db3f

5 years agoDisabled FPE checking for non-release builds
Mark Abraham [Thu, 8 Nov 2018 16:13:25 +0000 (17:13 +0100)]
Disabled FPE checking for non-release builds

This means that Jenkins will no longer give any reports, false or
true, from floating-point exceptions. Test binaries can still have FPE
checking enabled manually, however.

The content of this change should not be merged into the release-2019
branch.

Fixes #2750

Change-Id: I12c5e1a08e43e48cb7012edb6d5e8aea08baddc8

5 years agoChange get_atom_index to allow multiple molecules.
David van der Spoel [Wed, 31 Oct 2018 12:06:06 +0000 (13:06 +0100)]
Change get_atom_index to allow multiple molecules.

Make gromacs take into account atoms in all molecules.
This allows Hessian matrix creation to work over all
molecules in a simulation. An update to the regression
tests has been submitted as well.

During fixing of the problem, another problem surfaced in
the normal mode calculations to do with ordering of atoms
which is fixed here as well.

Fixes #2720

Change-Id: I9fc2dd05cb1c67d46b6d4c3d9139e6b3bed72f17

5 years agoGive error when rerun with identical file names
Paul Bauer [Thu, 8 Nov 2018 15:18:25 +0000 (16:18 +0100)]
Give error when rerun with identical file names

Fixes #2634

Change-Id: If3985274b3e74910c9ddefbddcfb52d1b01a3fba

5 years agoIssue fatal error if checkpoint does not suit the .tpr
Paul Bauer [Mon, 29 Oct 2018 11:24:06 +0000 (12:24 +0100)]
Issue fatal error if checkpoint does not suit the .tpr

If the step number in the checkpoint is out of range for that
described in the .tpr, then the user has provided mismatching
inputs. We do not intend then to be able to address this with the
mdrun -nsteps option.

Fixes #2717

Change-Id: I827bdc1b92ee69bf6287e2fd552ace7583b62028

5 years agoActually fix gmx helix segmentation fault
Paul Bauer [Wed, 31 Oct 2018 15:32:00 +0000 (16:32 +0100)]
Actually fix gmx helix segmentation fault

The residue indexing in hxprops was wrong because the residue indices
used for residue name lookup were wrong.

Added some documentation to clarify what this code does.

Fixes #2701

Change-Id: Ie6c002be6ff2139f6af27c7b891a180338ae5b20

5 years agoFix bug with DD for dims without PBC
Berk Hess [Tue, 6 Nov 2018 14:03:32 +0000 (15:03 +0100)]
Fix bug with DD for dims without PBC

When using DD along dimensions without PBC, many pair forces could
be missing. This would not cause silent errors, except when only
running a few steps.

Fixes #2736

Change-Id: Ia256b907e25eef811e1c8f348dc0a78aaddb5610

5 years agoPragma warning suppressins for icc+windows
Mark Abraham [Thu, 8 Nov 2018 09:45:14 +0000 (10:45 +0100)]
Pragma warning suppressins for icc+windows

Recent use of a pragma didn't cover this case relevant to post-submit
testing.

Change-Id: I3740548c22590688a5872474941151df8e536021

5 years agoRe-enable the armclang post-submit build
Szilárd Páll [Mon, 5 Nov 2018 18:28:32 +0000 (19:28 +0100)]
Re-enable the armclang post-submit build

bs_overdrive_1000 has been fixed and upgraded to ARM HPC toolkit 18.4.
The gcc build stays disabled as it still emits a warning.

Change-Id: I384a8ca083b5252988c1a48a63111f27f681c753

5 years agoSuppress clang warnings about QMMM code
Mark Abraham [Wed, 7 Nov 2018 12:37:14 +0000 (13:37 +0100)]
Suppress clang warnings about QMMM code

These are typically not configured, and the resulting dead code and
possible noreturn attributes are more trouble than they are worth,
particularly when other compilers then get confused.

Change-Id: Idf51ee7c0a8c34d71d204db405f18704002acb58

5 years agoMark new cmake variables advanced
Paul Bauer [Tue, 6 Nov 2018 12:28:10 +0000 (13:28 +0100)]
Mark new cmake variables advanced

Fixes #2738

Change-Id: I481a2e8f06055e8b1b69ab60e75bbbeaabad8355

5 years agoEliminate macro that expands to variable in PME GPU
Szilárd Páll [Thu, 1 Nov 2018 15:59:30 +0000 (16:59 +0100)]
Eliminate macro that expands to variable in PME GPU

The PME_SPREADGATHER_THREADS_PER_ATOM expanded to a statement containing
variables that needed to be declared. This has been eliminated and the
order constant is used through a constexpr.
Added consistency checks to make sure that the PME order stored in the
data structures matches the constant in question.

Also converted a few more macros to constexpr.

Change-Id: I73efea25c2da7cbde40df961f8bfae7e364bd74d

5 years agoEnsure minimum exec width of the PME OpenCL kernels
Szilárd Páll [Wed, 31 Oct 2018 20:04:02 +0000 (21:04 +0100)]
Ensure minimum exec width of the PME OpenCL kernels

This change adds checks to make sure that we don't execute incorrect
kernels in the case of the rare event if the Intel OpenCL compiler
decides to generate spread or gather kernels for 8-wide execution.

Refs #2516 #2520

Change-Id: I7ab33accebe908a56eb194e8245dfcfa6f817324

5 years agoAdd global directory for simulation test inputs
Paul Bauer [Tue, 6 Nov 2018 16:06:24 +0000 (17:06 +0100)]
Add global directory for simulation test inputs

Adds the ability to testfilemanager to use input files from a global
defined directory that is set at CMake time and contains the input files
for tpr file generation in the tests.

When a file is not found in the current directory, the code searches
the global archive for it and finally falls back to the current
directory if no file extension was given.

Example case is given for the tool test that needs a pdb and a top file.

Change-Id: Ic94f4a4d0d451024b435bf2900360aa60cd01b11

5 years agoFix wrong branch for regressiontests
Paul Bauer [Tue, 6 Nov 2018 15:49:55 +0000 (16:49 +0100)]
Fix wrong branch for regressiontests

Change-Id: Ibcc447ceafa9e861c4db264d2a49cb2b5a659da0

5 years agoPrepare for beta3
Paul Bauer [Tue, 6 Nov 2018 11:28:26 +0000 (12:28 +0100)]
Prepare for beta3

Change-Id: I8d9b574f2a513154decd294a3c8ffd011ef1ab16

5 years agoGROMACS 2019 second beta release
Paul Bauer [Thu, 1 Nov 2018 08:56:11 +0000 (09:56 +0100)]
GROMACS 2019 second beta release

Updated regressiontest hash to build release tarballs.

Change-Id: I0e2f2aadd0490e4481ffbf07691e4962b93647e1

5 years agoMake PME OpenCL enabled only for AMD devices
Mark Abraham [Mon, 5 Nov 2018 17:53:03 +0000 (18:53 +0100)]
Make PME OpenCL enabled only for AMD devices

Other vendor devices have known issues, but fixes
are not yet complete.

Refs #2702, #2719

Change-Id: I0d443229ffe4cee3bb4029f57502f9c7fba2574d

5 years agoRemove source file with no content
Mark Abraham [Mon, 5 Nov 2018 13:41:32 +0000 (14:41 +0100)]
Remove source file with no content

Visual Studio + icc warns that nothing can link to anything in this
source file.

Also updated the CMake for this module to use our newer idioms.

Fixes #2732

Change-Id: I5cfe81aabc6ee80a6c0044cc219b1a121293aded

5 years agoFix non ascii characters in manual references
Paul Bauer [Mon, 5 Nov 2018 13:18:36 +0000 (14:18 +0100)]
Fix non ascii characters in manual references

Change-Id: I1c50b58df39a1ffca4b4782482da6642ad129556

5 years agoMake QM/MM code always compile
Paul Bauer [Wed, 24 Oct 2018 07:20:15 +0000 (09:20 +0200)]
Make QM/MM code always compile

Brought all the old interfaces back to a state where they can always
compile regardless of the build configuration, and give fatal errors
if used from a configuration that didn't support the method.

When configured, this should work as before, but we have no ability to
test that in Jenkins.

Added some necessary const correctness.

Did QM/MM preparation all in the same place, to simplify runner.cpp

Added deprecation status to release notes.

Refs #2706, #2569

Change-Id: I4a6566c60bfbf27a7b1916be1874b36987fb7da5

5 years agoDisable -Wno-missing-prototypes
Alexey Shvetsov [Mon, 22 Oct 2018 19:22:30 +0000 (22:22 +0300)]
Disable -Wno-missing-prototypes

The warning is valid for C++

The -Wno-missing-prototypes flag is valid for C++ files with clang,
but not with other compilers.

Change-Id: I85aecc92129b6db482ccff3ef5f6af5a8551ace7
Signed-off-by: Alexey Shvetsov <alexxy@omrb.pnpi.spb.ru>
5 years agoGive more info when trying to build manual
Paul Bauer [Tue, 23 Oct 2018 15:12:37 +0000 (17:12 +0200)]
Give more info when trying to build manual

The manual build would fail with cryptic reasons when Sphinx was not
available because the include was not properly set.

Also set up Sphinx detection to be verbose so that users will have it
easier to see whether they can build the docs or not.

Building the docs will not work now when using Python3.

Add test script to check if ImageMagick convert actually works or not.

Refs #2709

Change-Id: I1c49d683d971a5bf0b0ce217f7e9ecd60603e6e6

5 years agoFix formatting issue
Paul Bauer [Mon, 5 Nov 2018 12:25:04 +0000 (13:25 +0100)]
Fix formatting issue

Clang static analyser complained about extra semi-colons that are fixed
here.

Change-Id: I1e39a0db64aaba88293cb26c87d8d55293797694

5 years agoQuiet unused variable warnings
Mark Abraham [Thu, 1 Nov 2018 14:06:53 +0000 (15:06 +0100)]
Quiet unused variable warnings

gcc 4.8 in debug mode warns about unused manager variables

Change-Id: I84b9729036c929a14550357d82321f7122462e04

5 years agoFix broken update groups
Berk Hess [Sat, 27 Oct 2018 21:19:17 +0000 (23:19 +0200)]
Fix broken update groups

With 2D/3D domain decomposition, atoms in an update group could end
up in different DD cells due to different rounding.
Also added an assertion on atoms in constraint being in the same
cell when atoms are in the reverse top, as that was violated with
this bug.

Fixes #2712

Change-Id: Ic9ea10d6a20c46b89d1fa9e0aacfcc5037903428

5 years agoStop using hwloc on old ARM slave
Mark Abraham [Wed, 31 Oct 2018 17:17:14 +0000 (18:17 +0100)]
Stop using hwloc on old ARM slave

We're not sure what the problem is, but it will never be
a priority to fix it.

Fixes #2284

Change-Id: I20d7662004baeba36c4b89294457da4c36128c50

5 years agoFully define symbols in restraintpotential.h
M. Eric Irrgang [Thu, 1 Nov 2018 10:40:41 +0000 (13:40 +0300)]
Fully define symbols in restraintpotential.h

External client code (i.e. an MD plugin) is expected to link against
libgmxapi, but not against libgromacs directly. This change allows
client code to implement gmx::IRestraintPotential using only GROMACS
installed headers, without relying on libgromacs to define methods in
gmx::PotentialPointData or gmx::IRestraintPotential.

Fixes #2725

Change-Id: I530c8b74d490645de25c722036be5387a4fc0a61

5 years agoAdd missing blame for restraint module files.
M. Eric Irrgang [Thu, 1 Nov 2018 10:14:18 +0000 (13:14 +0300)]
Add missing blame for restraint module files.

Several files in gromacs/restraint were missing the suggested doxygen
`\author` tag.

Change-Id: I4ad1d86a5a31082fde3346bcb89cd0bbc5bc2e4f

5 years agoDisable ccache by default
Mark Abraham [Sat, 27 Oct 2018 13:10:01 +0000 (15:10 +0200)]
Disable ccache by default

There are too many use cases where build trees might be used on
different nodes where ccache might not be available, or with compilers
that it cannot support to continue to enable it by default. If the
user opts in, then the build system searches for ccache and gives a
fatal error if it is not found, or if the compiler is not supported.

The wrappers used by clang-tidy and clang-analyzer do not work
with ccache, so those configurations issue a fatal error if
ccache is enabled.

Made various minor aspects conform to style for naming cache
variables, use of endif(), etc.

Refs #2688

Change-Id: I55c8d4a8a07ada704c49d4f99c1557a7ab97f353

5 years agoProperly define Bromine in amber forcefields
Paul Bauer [Wed, 31 Oct 2018 08:54:43 +0000 (09:54 +0100)]
Properly define Bromine in amber forcefields

Added the proper values for Bromine to the amber forcefield definitions
in share/top/amber*/ffnonbonded.itp from the corresponding parm99.dat
file in amber itself.

Also removed the Iron parameters as they were not fully defined
and also not available in amber itself.

Fixes #2711

Change-Id: I8adb5dc1124ba39ab4a30568bd679a204dc83fc8

5 years agoLimit auto assignment of bondeds to GPUs
Berk Hess [Fri, 19 Oct 2018 19:20:40 +0000 (21:20 +0200)]
Limit auto assignment of bondeds to GPUs

When the CPU has no forces to calculatie, we should not assign
bondeds to the GPU. Here we only assign bondeds to the GPU when
the CPU does PME for electrostatics and/or LJ.

Change-Id: I82f3047311bde45c026c78e44adc4985eb07b0e7

5 years agoPin important buffers in CUDA bondeds
Berk Hess [Tue, 16 Oct 2018 08:50:20 +0000 (10:50 +0200)]
Pin important buffers in CUDA bondeds

This allows for asynchronous transfers.

Change-Id: I0f251c17bdd44856bf773641633e8fa78e6be894

5 years agoAdd CUDA bonded kernels
Jonathan Vincent [Mon, 1 Oct 2018 09:59:40 +0000 (02:59 -0700)]
Add CUDA bonded kernels

CUDA bonded kernels are added for the most common bonded and LJ-14
interactions.
The default auto settings of mdrun offloads these interactions
to the GPU when possible.
Currently these interactions are computed in the local or non-local
nbnxn non-bonded streams. We should consider using a separate stream.
This change uses synchronous transfers. A child change will change
these to asynchronous.

Updated release notes and performance guide.

Fixes #2678
Refs #2675

Change-Id: Ifc6d97854cc7afa8526602942ec3b1712ba45bac

5 years agoWork around expanded ensemble issues
Berk Hess [Tue, 30 Oct 2018 08:46:53 +0000 (09:46 +0100)]
Work around expanded ensemble issues

Two bugs could cause expanded ensemble sampling to use
outdated or zero energies. In these cases mdrun now modifies
nstcalcenergy to 1 to avoid these bugs.

Note: This change should not be merged upstream, since there
is a proper fix for release-2019.

Refs #2714
Refs #2718

Change-Id: I79be9c5da55eaebb857bac6a98e6671720532e0e

5 years agoFix FP exception in energy reduction
Berk Hess [Sat, 27 Oct 2018 21:23:54 +0000 (23:23 +0200)]
Fix FP exception in energy reduction

Energies are now only reduced over ranks when energy are requested.
This avoid FP exceptions due to uninitialized energy buffers.

Change-Id: Ib4130074c5890064446c9f38c10d5caf5622ee70

5 years agoCorrect VV integrator nstcalcenergy use
Berk Hess [Mon, 29 Oct 2018 16:12:46 +0000 (17:12 +0100)]
Correct VV integrator nstcalcenergy use

With velocity Verlet integrators, mdrun would compute energies
which contribute to averages in the energy output and might be
used for expanded ensemble calculcations one step too late.

Fixes #2718
Refs #2714

Change-Id: I67e4d00f7151ec9eb5dab6ca4e87b81ca12236e2

5 years agoCorrect grompp nstexpanded/nstcalcenergy check
Berk Hess [Sun, 28 Oct 2018 19:38:21 +0000 (20:38 +0100)]
Correct grompp nstexpanded/nstcalcenergy check

With expanded ensemble, but without free-energy perturbation, grompp
would not check if nstexpanded was a multiple of nstcalcenergy.
If the latter was not the case, results might have been incorrect.
Also added a check in mdrun to catch old, incorrect tpr files.

Fixes #2714

Change-Id: I554351e2c9873a71efbc6e803134eb744e229f1d

5 years agoAdd equation numbers in reference manual
Paul Bauer [Sat, 27 Oct 2018 14:25:32 +0000 (16:25 +0200)]
Add equation numbers in reference manual

Went through the reference manual and added equation numbers to all
equations, as Sphinx only numbers those with a label.

Also performed some formatting fixes.

Change-Id: If37b3a0a9b9def9b7428bdbd01c13b0b685933a1

5 years agoImprove ccache implementation
Mark Abraham [Sat, 27 Oct 2018 13:24:24 +0000 (15:24 +0200)]
Improve ccache implementation

Renamed the launch-c* scripts to make clear that they are supporting
infrastructure for ccache, so maintainers know what the script is for
without having to read it.

Moved them into the admin directory, which contains other
development-time resources. This also means that these scripts are no
longer in the top-level directory of the unpacked tarball, where they
might confuse users. ccache will still work for builds from the
tarball, however.

Eliminated temporary helper variables that didn't add value to
how we use configure_file().

Renamed GMX_CACHE_.*_COMPILER variables to use CCACHE rather
than CACHE, for consistency.

This change would have broken build trees that used to work with
ccache, because the wrapper scripts may not be regenerated
because the old GMX_CACHE_* variables are defined. But
changing to GMX_CCACHE_* has the side effect of fixing this
because the new variables will be undefined in such build trees.

Change-Id: I3b449251ee06adc8023ac1a58cb98a7b0be9bba5

5 years agoChange Table of contents depth
Paul Bauer [Mon, 29 Oct 2018 10:57:43 +0000 (11:57 +0100)]
Change Table of contents depth

Changes the table of contents depth on the main
GROMACS documentation to only show the headers by default, to reduce
clutter on the main page.

This also addresses the issue in #2716, but I'll keep this up for
discussion as it is a major change to what kind of information is
available at the main documentation page.

Fixes #2716

Change-Id: I699de47c09a9c2ef52de2b29a04c6c7f57759820

5 years agoRename to GMX_OPENCL_NB_CLUSTER_SIZE
Mark Abraham [Sat, 27 Oct 2018 08:26:17 +0000 (10:26 +0200)]
Rename to GMX_OPENCL_NB_CLUSTER_SIZE

The Intel iGPU OpenCL support for NB kernels needs a different cluster
size from the support for AMD and NVIDIA devices. We do use GMX_OCL as
a prefix for various developer-facing aspects of the OpenCL support,
but we shouldn't expose the use of OCL as an abbreviation to users,
given that we use GMX_USE_OPENCL fully written out to control the use
of the OpenCL build configuration.

Change-Id: I9d9b43e2888d77575fc0a781e6c9577c73551b8a

5 years agoUpdates to docs for OpenCL support
Mark Abraham [Thu, 11 Oct 2018 05:20:20 +0000 (07:20 +0200)]
Updates to docs for OpenCL support

Improved recognition of support for Intel devices, and some
organization.

Change-Id: Ia788e3c96fd495c47f7900001a1cac5d9405881e

5 years agoMerge "Merge branch release-2018 into release-2019" into release-2019
Mark Abraham [Fri, 26 Oct 2018 18:47:22 +0000 (20:47 +0200)]
Merge "Merge branch release-2018 into release-2019" into release-2019

5 years agoMerge branch release-2018 into release-2019
Mark Abraham [Fri, 26 Oct 2018 13:47:06 +0000 (15:47 +0200)]
Merge branch release-2018 into release-2019

Restored some text about gmx_enerdata_t fields that got list when
master branch moved some content from forcerec.h into the new
enerdata.h.

Change-Id: I45b956e02d6713190fca456ad0a5948db5001737

5 years agoFix link formatting in developer manual
Paul Bauer [Fri, 26 Oct 2018 12:01:38 +0000 (14:01 +0200)]
Fix link formatting in developer manual

Example used during code development and contribution session.

Change-Id: I636f5947ae6bb149b6510cff23dbc346c7f19775

5 years agoAdd missing mass term to deltaH
Berk Hess [Wed, 24 Oct 2018 06:37:35 +0000 (08:37 +0200)]
Add missing mass term to deltaH

The mass contribution was missing from foreign Hamiltonian difference
output from mdrun used for BAR.

Refs #2703

Change-Id: I415c835e9e1a8473243041be004013af7141a1cc

5 years agoUpdate user documentation overview
Paul Bauer [Fri, 26 Oct 2018 07:17:47 +0000 (09:17 +0200)]
Update user documentation overview

Change-Id: I433c28907d92b9c722772a0e0cb6f227bcfcc9f3

5 years agoIntroduce ArrayRefWithPadding
Mark Abraham [Thu, 18 Oct 2018 08:33:16 +0000 (10:33 +0200)]
Introduce ArrayRefWithPadding

Modules need to access views of memory with and without padding. This
class can be constructed from a PaddedVector, and provides the
capacity to hide the underlying padded container (and allocator),
while being able to obtain ArrayRef with and without padding.

Also updated wording of docs for ArrayRef, and attribution

Fixed issue with shell code using the same pointer for trial and
minimum configuration.

Fixes #2642
Fixes #2705

Change-Id: I45197215342ae011298abc310b877c34f8fab88b

5 years agoChange doc build without image conversion
Paul Bauer [Fri, 19 Oct 2018 08:25:13 +0000 (10:25 +0200)]
Change doc build without image conversion

Changed logic to use selective inclusion so that the manual gets build
without pages with images when images cannot be converted.

Cherry picked from master.

Refs #2692

Change-Id: Id112b2b8f20eb5de3b704bc2b27ab7ce55f035ff

5 years agoUpdate QM gaussian interface
Paul Bauer [Tue, 23 Oct 2018 10:20:00 +0000 (12:20 +0200)]
Update QM gaussian interface

The files had not been touched due to being hidden beneath
the QMMM flag and have thus started to rot.

Updated files and changed functions to reflect current status of the
rest of the code.

Fixes #2706

Change-Id: I2ecd24f3f85f36f704bbd5ba5df3c5faa6a7d6e5

5 years agoFix MPI w/o MPI_IN_PLACE
Paul Bauer [Tue, 23 Oct 2018 13:47:30 +0000 (15:47 +0200)]
Fix MPI w/o MPI_IN_PLACE

Fixes #2708

Change-Id: Ib251797c11cb5aa344bbc2d7083eee18487c4062

5 years agoAdd missing constraint term to deltaH
Berk Hess [Tue, 23 Oct 2018 15:13:58 +0000 (17:13 +0200)]
Add missing constraint term to deltaH

The constraint contribution was missing from foreign Hamiltonian
difference output from mdrun used for BAR.

Refs #2703

Change-Id: I00fb88bed76f9ff03faed7543e90adf163b99f08

5 years agoProperly attribute work and use correct dates for binaryinformation
Joe Jordan [Mon, 22 Oct 2018 16:21:31 +0000 (18:21 +0200)]
Properly attribute work and use correct dates for binaryinformation

Several people contributed over the past year and it seems
their work should be attributed.

Is there anyone else we are forgetting?

Change-Id: I0837815bf0375827822f58291c1a97e332dbea4e

5 years agoPrepare for beta 2
Paul Bauer [Mon, 22 Oct 2018 15:27:24 +0000 (17:27 +0200)]
Prepare for beta 2

Change-Id: I4aa103b3bee382fd9cc0d46f3afbcd21c29020c0

5 years agoGROMACS 2019 first beta release
Paul Bauer [Wed, 10 Oct 2018 09:20:18 +0000 (11:20 +0200)]
GROMACS 2019 first beta release

Change-Id: I50c584c4cc36f0f73ccffdc30ed299b81393a591

5 years agoFix mdrun start/end time print
Berk Hess [Fri, 19 Oct 2018 19:50:33 +0000 (21:50 +0200)]
Fix mdrun start/end time print

Fixes #2704

Change-Id: I2dc4f19edceee718e581369f0b93a81522c1de34

5 years agoDocumentation bug in gmxapi/context.h
M. Eric Irrgang [Fri, 19 Oct 2018 07:05:14 +0000 (09:05 +0200)]
Documentation bug in gmxapi/context.h

Documentation for launch() refers to old behavior. Removed mentioned of
a persistent Status object.

Change-Id: I40ba7bd5fc7fb4896de9be4ce3dd817b1a0467d4

5 years agoRemove unused files in docs/manual
Paul Bauer [Thu, 18 Oct 2018 12:59:40 +0000 (14:59 +0200)]
Remove unused files in docs/manual

Refs #2692

Change-Id: Ib9f0a7079397cb638bc2d7f67b9d450c004a612e

5 years agoFix segmentation fault in gmx helix
Paul Bauer [Wed, 17 Oct 2018 12:47:33 +0000 (14:47 +0200)]
Fix segmentation fault in gmx helix

Changed the logic in tpxio to only try to access the mtop
datastructure if it is actually present.

Fixes #2701

Change-Id: I268af10dc125a57758f5f3e79e4b14a25050b3b3

5 years agoAdd env.var. to disable update groups
Berk Hess [Wed, 17 Oct 2018 20:37:58 +0000 (22:37 +0200)]
Add env.var. to disable update groups

Change-Id: Iba4d9636f2da01fa1bc9e003446621c743fb9114

5 years agoEliminated t_ifunc from t_interaction_function
Mark Abraham [Mon, 15 Oct 2018 16:27:12 +0000 (18:27 +0200)]
Eliminated t_ifunc from t_interaction_function

Declared an equivalent function type within the listed-forces module,
because it is local there.

This eliminates the inappropriate dependency on listed-forces by the
topology module, and also the recently discovered inappropriate
transitive dependency on gmxlib by topology.

Change-Id: I0f818767711cdf3fac88c06e01fac7564e9ccc65

5 years agoMove gmx_ffparams_t to forcefieldparameters
Magnus Lundborg [Mon, 15 Oct 2018 12:55:59 +0000 (14:55 +0200)]
Move gmx_ffparams_t to forcefieldparameters

Change-Id: I4639211f419724bcf3282140c8291e0b1272abe5

5 years agoTask assignment for bonded interactions on CUDA GPUs
Mark Abraham [Thu, 11 Oct 2018 19:53:38 +0000 (21:53 +0200)]
Task assignment for bonded interactions on CUDA GPUs

Made a query function to find whether any interactions of supported
times exist in the global topology, so that we can make efficient
high-level decisions.

Added free for gpuBondedLists pointer.

Minor cleanup in manage-threading.h

Fixes #2679

Change-Id: I0ebbbd33c2cba5808561111b0ec6160bfd2f840d

5 years agoFix compiler issues
Mark Abraham [Tue, 16 Oct 2018 07:08:34 +0000 (09:08 +0200)]
Fix compiler issues

We recently added some extern template declarations to a function
whose argument list was then modified, but gerrit didn't flag the
change as requiring a rebase.

Also fixed mdrun-only build

Change-Id: Ib7aa0d685e881faa2abce628f06aef3d666d260c

5 years agoRemoved support for NVIDIA CC 2.x devices (codename Fermi)
Mark Abraham [Sun, 14 Oct 2018 09:16:39 +0000 (11:16 +0200)]
Removed support for NVIDIA CC 2.x devices (codename Fermi)

These are no longer tested or supported, but it is possible that the
OpenCL version of GROMACS will still run on such old devices.

Various code for configuration, the use of texture objects, the use
of shared memory, and the kernel dispatch is now simpler.

Fixes #2408
Fixes #2410
Fixes #2665

Change-Id: Ia7a00e5d6a97f93cd2768beb7ad56b2cce628a6f

5 years agoImprove robustness of end-to-end testing
Mark Abraham [Tue, 9 Oct 2018 23:20:36 +0000 (01:20 +0200)]
Improve robustness of end-to-end testing

Previously one could choose the number of ranks to run the test binary
with, but e.g. DD errors could exit the binary if an unsuitable number
could be chosen.

Fixes #2680

Change-Id: I5ca165c6a80763083f2db9beec61ad3b4bfbe00d

5 years agoRelease notes for restraint module and gmxapi.
M. Eric Irrgang [Sun, 14 Oct 2018 17:51:16 +0000 (20:51 +0300)]
Release notes for restraint module and gmxapi.

Describe new features supporting gmxapi client code and runtime binding
of restraint code. Add "gmxapi external API" section to install guide.

Refs #2585

Change-Id: I3da0d130b07862abc90387ade781d111ccbcd740

5 years agoCreate ExclusionBlocks
Mark Abraham [Mon, 15 Oct 2018 07:49:00 +0000 (09:49 +0200)]
Create ExclusionBlocks

Moves exclusion modification functionality to the topology module, as
it is not functionality unique to preproceessing.

Renamed t_block2 to ExclusionBlocks, since that is the only use we
currently have for it, and any new use should be using std::vectors
anyway.

Used an assertion for an error that can only triggered by coding bug.

This fixes the broken mdrun-only configuration, found in post-submit
Jenkins testing.

Fixes #2690

Change-Id: I2d0916bc3be1c20d44e1c4e07b53488f2b6971a3

5 years agoDe-duplicating mdrun setup
Mark Abraham [Mon, 8 Oct 2018 23:47:59 +0000 (01:47 +0200)]
De-duplicating mdrun setup

Made the API context setup use LegacyMdrunOptions to keep the two
client setup procedures in step and avoid duplicating code.

Refs #2585

Change-Id: I9909e26a41fd2015667c2f86335c09b6f9708e99

5 years agoEnable output of average pull force and positions.
Magnus Lundborg [Thu, 17 Nov 2016 15:48:57 +0000 (16:48 +0100)]
Enable output of average pull force and positions.

Write pull data to checkpoints to keep a proper average.
Add option whether to write instantaneous or average pull
coordinates and forces, respectively.

Fixes #2626

Change-Id: Id0268e00486028f497463dc13ae8d65a6c5df325

5 years agoIgnore pyenv config file.
M. Eric Irrgang [Mon, 15 Oct 2018 07:57:11 +0000 (10:57 +0300)]
Ignore pyenv config file.

Among other possibilities, [pyenv](https://github.com/pyenv/pyenv)
allows directory-scoped Python installation choices, which can be handy
when developing on the same system for projects with different Python
version requirements. For this, it uses a "hidden" `.python-version`.

Such files should not clutter up `git status` messages or be easily
accidentally included in a commit. This change adds `.python-version`
files to `.gitignore`

Change-Id: I88bbe813966282755097da674cb53d1f88a8e031

5 years agoPreparation for de-duplicating mdrun setup
M. Eric Irrgang [Sun, 14 Oct 2018 12:33:48 +0000 (15:33 +0300)]
Preparation for de-duplicating mdrun setup

Recent work introducing the API extracted MdFilenames and then
essentially duplicated everything else. This commit expands
MdFilenames into LegacyMdrunOptions, and clarified the plan that all
such code needs to become either module-based option handling, or
aspects of SimulationContext suitable for both CLI and API.

This commit introduces the Legacy MdrunOptions struct, so that a
future commit can make it available to the API setup for an mdrun
session. The layout of the changes is intended to minimize the textual
diff for the CLI. Code motion for clarity and also use by the API will
follow.

Removed MdFilenames, made its data a std::vector in
LegacyMdrunOptions, and used it via an ArrayRef. This clarifies that
it is read-only input data supplied by the client.

Change-Id: I3438cfe1ab52eeb2fffbd16f4bd5254b2a74f03f

5 years agoAdd some "to do"s for MDModules and Impl.
M. Eric Irrgang [Mon, 8 Oct 2018 13:46:19 +0000 (16:46 +0300)]
Add some "to do"s for MDModules and Impl.

The intention for the modules_ member in MDModules::Impl was not very
clear. Made some notes about forward directions, given the inconsistent
way we handle the electric field library MDModule and externally
provided modules.

Also, improve readability/formatting of data member declaration.

Change-Id: If3a83209c128dc52bab90cbc322565bc81416871

5 years agoFix compiler warnings
Mark Abraham [Sun, 14 Oct 2018 08:10:46 +0000 (10:10 +0200)]
Fix compiler warnings

clang 6 warned about these.

Change-Id: I4692d1c0e76e8cbe984e22028980956e1bd628d5

5 years agoResolve some linter warnings.
M. Eric Irrgang [Sun, 14 Oct 2018 13:41:42 +0000 (16:41 +0300)]
Resolve some linter warnings.

Local linting (not Jenkins builds) discovered some warnings that are
easily resolved.

* Remove unused variable from gmxapi session resources factory.
* Provide stronger hinting that a pointer is not null

Change-Id: I56f6758884b7f77d5091d273a93ac6bd1495a973

5 years agoFix more clang-6 warnings in CUDA code
Szilárd Páll [Mon, 8 Oct 2018 22:49:16 +0000 (00:49 +0200)]
Fix more clang-6 warnings in CUDA code

Fixes #2681

Change-Id: Ic1e096328687e53ca814034c4c3eb8db40db46df

5 years agoTest signaling facility through session resources.
M. Eric Irrgang [Sat, 13 Oct 2018 11:44:21 +0000 (14:44 +0300)]
Test signaling facility through session resources.

Build a simple MD extension that can optionally issue MD stop signals
when called in the MD loop. Use gmxapi session resources to access the
session signal manager. If initialized to do so, issues the signal when
called to evaluate restraint forces. Tracks the steps on which it is
called.

A toy simulation expects the restraint to be called `nsteps` times if
default constructed or `nstlist` times if initialized to issue signals.

Change-Id: I885cfeb207fd587b7ddd946203bd16ea4713dbf2

5 years agoModernize OpenCL memory allocation flags
Szilárd Páll [Tue, 9 Oct 2018 19:00:12 +0000 (21:00 +0200)]
Modernize OpenCL memory allocation flags

This change correct the memory allocation flags in the nonbonded module
so that these reflect the R/W use on both host- and device-side; the
former is made possible by requiring OpenCL 1.2.

Also improve some lacking error handling.

Refs #2193

Change-Id: Icef4890aa412b811bf189b78ff42ee8ca8c50113