alexxy/gromacs.git
8 years agoFix a table generation bug for pme-shift
Erik Lindahl [Wed, 8 Jul 2015 20:43:17 +0000 (22:43 +0200)]
Fix a table generation bug for pme-shift

The shift correction was not applied correctly to PME and PME-user
tables, but a value of 0 was used instead. This will not have
influenced any normal runs since the shift correction is applied
directly (analytically) in the current kernels. In theory it
might have resulted in 10^-5 relative errors at the cutoff that
are only likely to be visible in double precision if you were
(1) using PME-user electrostatics with custom tables, and
(2) applying shift modifiers (switch is fine). This is not a
setup we are testing anyway, and the PME-user options are likely
to go soon.

Change-Id: Ibd4d2388713879a6613938929edc2cba142b7c9b

8 years agoUpdate naming standards to avoid hungarian notation in C++
Erik Lindahl [Sat, 25 Jul 2015 06:58:35 +0000 (08:58 +0200)]
Update naming standards to avoid hungarian notation in C++

Our coding standards still contained lines specifying hungarian
notation for boolean and enumerated types, which is mostly a remnant
from our (really) old C practice. While apps hungarian might provide
some safety (i.e., using one prefix for rows and another for columns),
there is little or no value in systems hungarian where the prefix
is just based on type - in particular when we frequently assign
variables between those types. This recommends us to use long
descriptive names instead, including a verb for boolean variables.
When we eventually get C++11 support we should switch to class enums
to have the compiler to more checking, but that is not yet possible.

Change-Id: I5da9d528a8ef4f23ef67eae3fb72655ea92a9c6a

8 years agoMoved second half of gmxana tools to C++
Erik Lindahl [Sat, 11 Jul 2015 16:56:01 +0000 (18:56 +0200)]
Moved second half of gmxana tools to C++

Code that the static analyzer found to be
unused or irrelevant have been removed.

Change-Id: I9acb45f953d6fd8fde04c9bed29272772f93ad58

8 years agoMoved first batch of analysis tool source to C++
Erik Lindahl [Fri, 10 Jul 2015 20:43:55 +0000 (22:43 +0200)]
Moved first batch of analysis tool source to C++

Mostly trivial C to C++ changes. Some code paths that
were unused or simply not implemented have been
removed for now.

Change-Id: I1204777dc90db95e0d4a7b92191c299fe0982f0b

8 years agoConverted 2xnn kernel to C++
Roland Schulz [Thu, 9 Oct 2014 23:40:54 +0000 (19:40 -0400)]
Converted 2xnn kernel to C++

Change-Id: I91ee2fbc73cba487a9c5ba6d6f7a96ce35958e30

8 years agoConvert support files in gmxana to C++
Erik Lindahl [Thu, 9 Jul 2015 23:27:57 +0000 (01:27 +0200)]
Convert support files in gmxana to C++

Renamed symbols using reserved C++ names, and removed geminate
and ballistic code paths that just resulted in GROMACS errors
messages about missing code when they were called. Unused parts
of gmx_hbond have been cleaned up according to comments from
Erik Marklund.

Change-Id: I925b1b5ca4a8420e0c8a38ca99f56361359d713b

8 years agoMoved timing source to C++
Erik Lindahl [Thu, 16 Jul 2015 17:06:15 +0000 (19:06 +0200)]
Moved timing source to C++

Change-Id: I175cf79b68330767b90e0780829f67aa9ca50af5

8 years agoMoved additional gmxlib sources to C++
Erik Lindahl [Fri, 17 Jul 2015 19:40:41 +0000 (21:40 +0200)]
Moved additional gmxlib sources to C++

Moved functions into std:: namespace and changed try->attempt
to avoid using reserved names. gmx_cpuid.c has been left
as C for now, both because __cpuid() and __cpuidex() does
not appear to be present in C++ source, and because it will
anyway be replaced with a proper C++ module that can also
interface to hwloc.

Change-Id: I6f10b19a499209b375ee154540a3386f882457bd

8 years agoConvert some mdrun utility code to C++
Mark Abraham [Tue, 7 Jul 2015 10:03:30 +0000 (12:03 +0200)]
Convert some mdrun utility code to C++

Eliminated unused variables, used std::min/max, renamed "try" variable
to "attempt" to avoid reserved word, moved declaration of MPI-specific
variables, added space between string literals intended for
concatenation, moved some variable declarations inside matching
preprocessor regions.

Change-Id: Id16fea81d90f15de9a8e8e6eadeb364df954fff7

8 years agoMerge branch release-5-1
Erik Lindahl [Sun, 26 Jul 2015 17:32:49 +0000 (19:32 +0200)]
Merge branch release-5-1

No conflicts.

Change-Id: Ia0b6529e06e5f2a9c3c1bb49dd31870df7d4cea0

8 years agoMerge branch release-5-0 into release-5-1
Mark Abraham [Sun, 26 Jul 2015 11:51:46 +0000 (13:51 +0200)]
Merge branch release-5-0 into release-5-1

Conflicts:
CMakeLists.txt
Version numbering management code has moved to new home, nothing
needs to change here from the bumps to numbering in release-5-0
branch.

Change-Id: I8e45709c83d5c181900cca50b2ccba489630bbe7

8 years agoStop mdrun printing potentially undefined value
Mark Abraham [Tue, 7 Jul 2015 12:45:06 +0000 (14:45 +0200)]
Stop mdrun printing potentially undefined value

Variable pv is only defined with conditions that need not be identical
with the presence of pressure coupling. Definitely compilers aren't
sure about it.

Change-Id: I80670e12b799c7f476caa565ef7ce9c3e38b0686

8 years agoVersion bumps after new release
Mark Abraham [Sun, 26 Jul 2015 09:31:00 +0000 (11:31 +0200)]
Version bumps after new release

Change-Id: Icfa27c2f62f4eb83cc57102e8b9239e1d8891e38

8 years agoRemove Options::isSet()
Teemu Murtola [Sun, 19 Jul 2015 14:38:43 +0000 (17:38 +0300)]
Remove Options::isSet()

Replace uses with alternative means.  Add storeIsSet() to all options to
make it convenient to just check whether an option is set.
Remove Options parameters from methods where its only purpose was to
provide access to isSet(), reducing exposure of the concrete class and
making the interface cleaner.

Change-Id: If1207c8cf3af86e306c52748f8878480e35e2fc0

8 years agoAdd basic grouping to Options
Teemu Murtola [Sun, 19 Jul 2015 06:44:06 +0000 (09:44 +0300)]
Add basic grouping to Options

- Add simple Options::addGroup() to create groups within an option,
  allowing out-of-order creation of options.  In the future, this can
  also be used for improved help output.
- Replace multiple Options objects in trajectory analysis runner with a
  single Options and groups within that container.  This is a
  significant step to make also this code use ICommandLineOptionsModule
  instead of a custom implementation.
- Remove complicated code with some dubious corner-case behavior from
  the command-line parsing code, now that all command-line options are
  in a single Options object.

addSubSection() in Options is now unused, and its general design does
not match that of the other Options code.  Will refactor and/or remove
it separately.

Change-Id: Ifaa28a210b46edc0a2b25e7e5c335f0708f532f8

8 years agoExtract IOptionsContainer from Options
Teemu Murtola [Fri, 17 Jul 2015 10:29:06 +0000 (13:29 +0300)]
Extract IOptionsContainer from Options

- Create a separate interface that declares addOption(), and make
  Options implement it.
- Change methods that took an Options just to call addOption() to take
  an instance of the new interface instead of a full Options object.
- Adjust documentation.

This isolates callers that only provide options from other details of
the options implementation, and allows further refactoring (that will
provide more implementations for this same interface).

Change-Id: I26d3f03602a8edd130d05231b3b0ee14b598ec8e

8 years agoMerge branch release-5-1
Mark Abraham [Fri, 24 Jul 2015 14:40:41 +0000 (16:40 +0200)]
Merge branch release-5-1

Conflicts:
src/gromacs/commandline/shellcompletions.cpp
Removed line no longer appropriate, now that zsh completion
is supported. Master had changed the previous line, which
git flags as a merge conflict.

Change-Id: Id9d37615b2bd121b1206ca0e6e8eac62fcf38f01

8 years agoConverted correlationfuntcions to C++.
Rossen Apostolov [Wed, 3 Jun 2015 10:13:01 +0000 (12:13 +0200)]
Converted correlationfuntcions to C++.

Change-Id: If5a478eb05fc295670cfa982525838c5e1e255b7

8 years agoVersion 5.0.6
Mark Abraham [Fri, 24 Jul 2015 13:57:42 +0000 (15:57 +0200)]
Version 5.0.6

Removed -dev tags from versions. Bumped regressiontest hash.

Change-Id: Ie86dd0d7a375c3fc86d59f59494c03bf350fde38

8 years agoRename trnio routines
Teemu Murtola [Mon, 20 Jul 2015 09:35:31 +0000 (12:35 +0300)]
Rename trnio routines

- Rename all routines from trnio.h to gmx_trr_*, and replace trn with
  trr also in the implementation.  Use more comprehensible names than
  read_htrn().
- Fix one missing gmx_trr_close() in eigio.c.
- Get rid of contrib/anaf.c, which was some cut-down version of gmx dump.

Change-Id: Id4ea14e83ce14089bbdf0e672f15531cf0f22e61

8 years agoRename trnio.* to trrio.*
Teemu Murtola [Mon, 20 Jul 2015 07:00:01 +0000 (10:00 +0300)]
Rename trnio.* to trrio.*

These routines write .trr files, and the old name was really confusing,
as there is also an efTRN, which means something different...
The routines will be renamed in a separate commit.

Removed unnecessary includes of trnio.h.

Change-Id: If02f561ad51c73eb2080195587795d0c8ae1b082

8 years agoSplit espresso I/O routines from confio.cpp
Teemu Murtola [Thu, 23 Jul 2015 03:28:30 +0000 (06:28 +0300)]
Split espresso I/O routines from confio.cpp

Move routines to read/write Espresso files to a separate espio.* files
from confio.cpp.  Now confio.cpp provides the wrappers that allow
writing different formats with a unified API, and each individual format
is handled by a separate file (which is named after the format
extension), making the code easier to find and understand.  Further
refactoring to follow beyond just code motion.

Change-Id: I8e1df41f59d65e8a69d6d4a9d30b2f36bc489584

8 years agoSplit gro I/O routines from confio.cpp
Teemu Murtola [Wed, 22 Jul 2015 18:08:39 +0000 (21:08 +0300)]
Split gro I/O routines from confio.cpp

Move routines to do gro-format I/O to a separate file.  As with g96io.h,
this would ideally be internal to the fileio module, but unfortunately a
few tools peek into the details of some specific format.

The naming of the routines will be changed separately.

Change-Id: Ia0b190a95f4fb2cd223a6581531aaf45e99d3440

8 years agoSplit g96 I/O routines from confio.cpp
Teemu Murtola [Wed, 22 Jul 2015 17:45:41 +0000 (20:45 +0300)]
Split g96 I/O routines from confio.cpp

Move routines to read/write g96 files to g96io.*.
Ideally, these would be internal to the fileio/ module, but trjconv
has some ugliness.

Silence a pedantic clang warning that makes it impossible to minimize
header dependencies for mixed C/C++ code, and where problems would
anyways trigger as compilation failures in C code.

Change-Id: I20a88234bec8527f8fd41a614fb37e3144eb7532

8 years agoMove read_tps_conf() to confio.h
Teemu Murtola [Wed, 22 Jul 2015 04:38:45 +0000 (07:38 +0300)]
Move read_tps_conf() to confio.h

This function is nearly identical to read_stx_conf(), and they even
share some helper functions, so they are better in the same file.  Now
tpxio.h is all about reading/writing tpr files, and code to handle
multiple formats is elsewhere.

Change-Id: I348a5bae5fe8aae2ad68ec29fe54068fccd97501

8 years agoAdd basic tests for reading/writing structure files
Teemu Murtola [Wed, 22 Jul 2015 04:14:14 +0000 (07:14 +0300)]
Add basic tests for reading/writing structure files

For each of the supported format (except for tpr), make a simple
roundtrip test, starting from a dummy topology, and doing a
write-read-write cycle, checking that the output files remain the same.
Additional tests for preservation of various properties of the topology
could also be added later.

Test both read_tps_conf() and read_stx_conf() separately for now.

Added to support refactoring of the code.

Change-Id: Idbdfb4fc39b124d9236a54896ef4613ebfe80ceb

8 years agoMerge release-5-0 into release-5-1
Teemu Murtola [Mon, 20 Jul 2015 04:15:46 +0000 (07:15 +0300)]
Merge release-5-0 into release-5-1

Conflicts:
    src/gromacs/gmxpreprocess/grompp.c (adjacent changes, took both)

Additionally, added a declaration for a variable in sasa.cpp that had
been removed from enclosing scopes.

Change-Id: I15c10ef00416aa1f791a58b97d79669efab9a1c5

8 years agoUpdate advice about grompp -t
Mark Abraham [Mon, 13 Jul 2015 12:16:42 +0000 (14:16 +0200)]
Update advice about grompp -t

grompp -t state.cpt does not copy coupling-algorithm state from a .cpt
into the new .tpr, even though it can still do so from grompp -e.

Refs #1775

Change-Id: I8c4d68fc8d3750b79f30c0f77115c80e1f3cf9b3

8 years agoMove Options::setDescription() elsewhere
Teemu Murtola [Fri, 17 Jul 2015 04:05:53 +0000 (07:05 +0300)]
Move Options::setDescription() elsewhere

Pass the help text for programs using other means, clarifying
responsibilities in the code.  Now Options is closer to being just a
container of options.  Further refactoring to follow.

Change-Id: I398ebef7884d88111ab1bddcd9397882835b39b4

8 years agoChange naming convention for C++ interfaces
Teemu Murtola [Wed, 15 Jul 2015 05:46:23 +0000 (08:46 +0300)]
Change naming convention for C++ interfaces

- Describe the new convention in naming.rst, together with some
  rationale.  The new I prefix is a very common convention, and makes
  the code generally more readable than a long Interface suffix that
  does not add much information.
- Do a bulk rename from \w*Interface to I\1, skipping
  ::testing::WithParamInterface.
- Rename helptopicinterface.h to ihelptopic.h to keep the naming
  consistent.
- Run uncrustify on the result.

Change-Id: I4b27ae0164ad89e45693d35055730caab0832bed

8 years agoFixed gmx sasa output residue numbering
Carlo Camilloni [Thu, 16 Jul 2015 14:16:47 +0000 (16:16 +0200)]
Fixed gmx sasa output residue numbering

gmx sasa with -or was writing the wrong residue numbers

Change-Id: I52b13f1eeec2ee028e5ec580139c0290df7b69c9

8 years agoMoved statistics source to C++
Erik Lindahl [Thu, 16 Jul 2015 16:28:06 +0000 (18:28 +0200)]
Moved statistics source to C++

The unused statistics_test.c was removed; it was not so much
any tests as routines to print data - we will have to add
proper tests later.

Change-Id: I08ffd8c774bd2600d743a6504d72776b92ff6fe6

8 years agoFixed static analyzer warnings
Erik Lindahl [Sat, 11 Jul 2015 18:54:44 +0000 (20:54 +0200)]
Fixed static analyzer warnings

Removed code that had no effect since ct_estimate was reassigned
in expfit.cpp. Initialize variables that are set/used in different
semi-complex switch statements in angle.cpp, and clarify a
switch statement.

Change-Id: I15bb2942e268eb053644d1f457f136d60bc63cfb

8 years agoFix incorrect warning about only using single core
Erik Lindahl [Mon, 13 Jul 2015 10:10:29 +0000 (12:10 +0200)]
Fix incorrect warning about only using single core

check_resource_division_efficiency() warned that only
a single core could be used, even when one of
thread-MPI or OpenMP support was present, but not both.

Fixes #1776.

Change-Id: I6ac98954c2ef74ed860750627f7a1b9f0710561e

8 years agoFix build failure in view/filter.cpp
Alexey Shvetsov [Wed, 15 Jul 2015 23:37:44 +0000 (02:37 +0300)]
Fix build failure in view/filter.cpp

This only happen if you have GMX_X11=ON

Change-Id: I6d8d82985c88d2fb03bfaafc0afa32f0c3483803
Signed-off-by: Alexey Shvetsov <alexxy@omrb.pnpi.spb.ru>
8 years agoRemoved information about obsolete .edo file format
Carsten Kutzner [Wed, 15 Jul 2015 13:31:59 +0000 (15:31 +0200)]
Removed information about obsolete .edo file format

Essential dynamics output is written to edsam.xvg file since version 4.6

Change-Id: I0daca58fab1ebc953e8799de7e1667c4956b460e

8 years agoImplement zsh shell completions.
James W. Barnett [Tue, 14 Jul 2015 23:24:40 +0000 (18:24 -0500)]
Implement zsh shell completions.

zsh completions when gmx prefix was used were not implemented. Use zsh builtin
bashcompinit to use the bash completions. Remove 'shopt -s extglob'
from gmx-completion.bash and place it in GMXRC.bash, since it is incompatible
with zsh. gmx-completion.bash and gmx-completion-gmx.bash can now be used for
completions in both bash and zsh.

Change-Id: Ib8f3cf0535d39e91a6b31933f41aa7548755b351

8 years agoUpdate example old mdp file in user guide.
James W. Barnett [Mon, 13 Jul 2015 02:29:39 +0000 (21:29 -0500)]
Update example old mdp file in user guide.

Update mdp file in user guide. Remove obsolete parameters, and choose parameters
that will not give error and warning by default. Also remove the contents of
mdout.mdp, since the user can easily retrieve that with the given command, and
the file is now much larger. Add note on parameters being dependent on force
fields. Fixes #1774.

Change-Id: I2d5f1cfcf933275f95352c25891ee0792944212c

8 years agoMove fileio sources to C++
Erik Lindahl [Sat, 11 Jul 2015 20:51:14 +0000 (22:51 +0200)]
Move fileio sources to C++

String functions have been moved into std namespace,
unused variables removed. The internal XDR implementation has
been modified to work in C++, and while doing so it has been
renamed to gmx_internal_xdr.cpp to avoid confusion with the
external system implementations.

Change-Id: Iadaf812da88ba24530b637b8e3259fd3cac417e0

8 years agoConverted gmxpreprocess to compile as C++
Mark Abraham [Fri, 10 Jul 2015 11:31:10 +0000 (13:31 +0200)]
Converted gmxpreprocess to compile as C++

Used std:: math function and header, eliminated unused code, vars and
params, used some size_t variables when handling strings.

Added assertions for sqrt operations intended to work on integers that
are perfect squares.

Converted existing assert calls to GMX_ASSERT

Removed include guards from headers

Refactored some ter_db code to be clearer about how generic vs
specific termini are handled.

Made string parameter to _mod into const char *.

Noted TODOs for clean up required for pdb2gmx -merge

Change-Id: Ibe8b8c4b208a39325e6fe450a41d8521daa5d8f0

8 years agoMove remaining C files in utility to C++
Erik Lindahl [Wed, 8 Jul 2015 14:59:06 +0000 (16:59 +0200)]
Move remaining C files in utility to C++

Added spaces between strings and literals. The string handling
code should eventually be replaced with proper C++ versions using
std::string, so for this reason I have not bothered improving them.

Change-Id: I78b871113f4a3891139a412c7831a1e5209bfaec

8 years agoFix spelling errors in user guide.
James W. Barnett [Mon, 13 Jul 2015 15:18:37 +0000 (10:18 -0500)]
Fix spelling errors in user guide.

Fix spelling errors in user guide. Also update spelling to American
English, only because that is what is used in the manual and in other
documentation (e.g.,  neighbour -> neighbor).

Change-Id: Ib11d5be727bef88750a8aa45f2592d10aabb929e

8 years agoUpdate kernel templates to match kernels
Roland Schulz [Sat, 11 Jul 2015 02:23:47 +0000 (22:23 -0400)]
Update kernel templates to match kernels

Change-Id: I20f41dc9b3e9da670e0c940697fa35d2473ab33b

8 years agoUse cmakedefine01 for more trivial defines
Erik Lindahl [Tue, 7 Jul 2015 09:45:31 +0000 (11:45 +0200)]
Use cmakedefine01 for more trivial defines

This patch does the move for GMX_CXX11, HAVE_EXTRAE,
GMX_NO_RENAME, all the QMMM defines, GMX_X11, HAVE_POSIX_REGEX,
HAVE_CXX11_REGEX, HAVE_SIGUSR1, GMX_COOL_QUOTES, HAVE_PIPES,
HAVE_FEENABLEEXCEPT and HAVE_ZLIB.

Change-Id: I2c915c608d9fd16d584b605373c1151dcf3cc010

8 years agoMoved tools files to C++
Erik Lindahl [Wed, 8 Jul 2015 23:47:28 +0000 (01:47 +0200)]
Moved tools files to C++

Added extern-c declarations to gmxcpp.h for calling
from the new C++ source.

Change-Id: I7b21398808a1d58849bff44690ece4d1f4e9db04

8 years agoMore gmxfio simplification
Teemu Murtola [Thu, 9 Jul 2015 16:52:54 +0000 (19:52 +0300)]
More gmxfio simplification

- Remove gmx_fio_setdebug() and all implementation related to it;
  getting the source code location printed to stderr is not really
  useful for errors that typically originate from the file system.
- Move gmx_fio_setprecision() to gmxfio-xdr, since it logically belongs
  there.
- Remove bOpen, as the only case where any code could observe
  bOpen==FALSE requires a use-after-free, and possibly also an ugly
  race condition on top of that.
- Reduce use of iFTP member within gmxfio, where the purpose is to check
  whether the fio->xdr member is not NULL.
- Remove checks from gmx_fio_open() that overlapped with those in
  gmx_ffopen().  There are some corner cases that now work differently:
  gmxfio no longer bypasses the check for .Z/.gz files for xdr files,
  but lets things through to gmx_ffopen(), and with GMX_FAHCORE there is
  no longer any kind of existence check for xdr files (it is
  questionable whether the previous behavior was intentionally different
  for xdr and non-xdr files, anyways).
- Remove dead code: fio->fp is always non-NULL if fio->xdr is.

Change-Id: Icd1588bfbb510543a55f57fb86e0e1e2a1fce236

8 years agoFix -deffnm -multi[dir]
Teemu Murtola [Thu, 9 Jul 2015 14:21:15 +0000 (17:21 +0300)]
Fix -deffnm -multi[dir]

Make -deffnm work even when all other functionality in
FileNameOptionManager is disabled (which happens with -multi and
-multidir).  Add a test for the broken case.

Fixes #1769.

Change-Id: I0f729eaa1ab6e9a4a25d1d121cbfe5b5b2673e4b

8 years agoMerge "Merge release-5-1 into master"
Erik Lindahl [Thu, 9 Jul 2015 10:56:19 +0000 (12:56 +0200)]
Merge "Merge release-5-1 into master"

8 years agoNew quotes
Roland Schulz [Thu, 9 Jul 2015 02:55:44 +0000 (22:55 -0400)]
New quotes

Change-Id: I57deba0f9f4b4cc5a2f5dc58e3d2c4fe4284691b

8 years agoMerge release-5-1 into master
Roland Schulz [Wed, 8 Jul 2015 17:34:31 +0000 (13:34 -0400)]
Merge release-5-1 into master

Conflicts:
cmake/gmxVersionInfo.cmake

Change-Id: Iab02dc56743ef0c79e0a0c3f9e7cee7dc18442aa

8 years agoMerge release-5-0 into release-5-1
Roland Schulz [Wed, 8 Jul 2015 07:35:13 +0000 (03:35 -0400)]
Merge release-5-0 into release-5-1

Conflicts:
src/gromacs/gmxana/gmx_dos.c

Change-Id: I06208bcafb880b9bac3f45050d709fae5eab9a9d

8 years agoMove generalized born to C++
Erik Lindahl [Wed, 8 Jul 2015 10:57:35 +0000 (12:57 +0200)]
Move generalized born to C++

Change-Id: Ie4498eed9923b7c4df8589cc1abc75d92155abdb

8 years agoMove FFT defines to use cmakedefine01
Erik Lindahl [Mon, 6 Jul 2015 12:56:23 +0000 (14:56 +0200)]
Move FFT defines to use cmakedefine01

Change-Id: Ie9fface5ea2ec365aa740cfe60243d195e1039ba

8 years agoGive bTypePerturbed a valid initial value
Mark Abraham [Tue, 7 Jul 2015 13:08:54 +0000 (15:08 +0200)]
Give bTypePerturbed a valid initial value

Commit a6ae71b202 didn't do this correctly, so FEP with LJPME has had
broken PME load estimates (only).

Change-Id: I88235c34b499e6dfca650138d66cdc17bd40afb4

8 years agoSeparated bonded and Ewald correction threading
Berk Hess [Fri, 27 Feb 2015 09:19:31 +0000 (10:19 +0100)]
Separated bonded and Ewald correction threading

The bonded and Ewald correction threading code used the same data
structures. These have now been separated and the bonded threading
data is opaque and defined in listed-internal.h.
This change is only code refactoring, except for the removal of
the thread local ewald correction force array and reduction, which
were never needed.

Change-Id: I162255107aa9e153a4c8ff41d786867d6fbed444

8 years agoMove endian, float format and XDR settings to cmakedefine01
Erik Lindahl [Mon, 6 Jul 2015 13:19:40 +0000 (15:19 +0200)]
Move endian, float format and XDR settings to cmakedefine01

Also modify gmxtree.py to understand the new protocol

Change-Id: I68f1bfff9528d71d4a683082aaa4d637f8b10a64

8 years agoFix grompp .edr IO estimate for free-energy calcs
Mark Abraham [Tue, 7 Jul 2015 12:30:51 +0000 (14:30 +0200)]
Fix grompp .edr IO estimate for free-energy calcs

This has been wrong since it was introduced in c7a82654f. It doesn't
really matter, except that the variable is unused and converting to
C++ complains about it.

Change-Id: I8e13a07e2680cfe5b69fac170d500b235a5ba113

8 years agoCleanup and remove unused SSE2 generalized born code
Erik Lindahl [Tue, 7 Jul 2015 15:02:36 +0000 (17:02 +0200)]
Cleanup and remove unused SSE2 generalized born code

This code has been disabled for quite a while due to
a bug. Since we should anyway move to verlet-style
kernels there is no point in keeping these files around.

Change-Id: Idfd65ac2d0d9f304d548c97e4dbabbaf72df7a7b

8 years agoMerge release-4-6 into release-5-0
Roland Schulz [Wed, 8 Jul 2015 07:28:27 +0000 (03:28 -0400)]
Merge release-4-6 into release-5-0

Change-Id: I25fea1226adfaa332c5c7b0630e99031266178f4

8 years agoMove old neighborsearch code to C++
Erik Lindahl [Tue, 7 Jul 2015 20:02:24 +0000 (22:02 +0200)]
Move old neighborsearch code to C++

This will eventually be removed in favor of the new
verlet code, but for now it will make life simpler to
have everything moved to C++.

Change-Id: I3242e5f345769a42ffb99d1953bc1bef39324ff5

8 years agoMove QMMM source to C++
Erik Lindahl [Tue, 7 Jul 2015 20:50:41 +0000 (22:50 +0200)]
Move QMMM source to C++

Tested by enabling the four different QM/MM interfaces,
but not linking to the actual programs since those calls
are still unaltered.

Change-Id: I86163a0db56003687e6226a78169141af98940b7

8 years agoWrap uses of thread_mpi/mutex.h
Teemu Murtola [Sun, 5 Jul 2015 04:12:43 +0000 (07:12 +0300)]
Wrap uses of thread_mpi/mutex.h

Introduce gmx::Mutex and gmx::lock_guard to hide the actual C++ mutex
implementation used, and make all code that was using tMPI::Mutex use
these.

For now, the implementation is just directly imported from thread-MPI,
but this allows changing the implementation (e.g., to C++11 std::mutex
or to a TBB mutex) when thread-MPI is no longer appropriate, with mainly
changing this single header.  Also, this makes it clearer to introduce
new C++ wrappers for things like tMPI_Lock_t, as they can now be written
in this wrapper layer, instead of in thread-MPI where they will
introduce additional such dependencies.

Change-Id: Ie4c91d4e74c5dbc5e4d2b5d7fb5a76b73ef5616b

8 years agoFirst 5.1 release candidate
Mark Abraham [Mon, 29 Jun 2015 22:49:57 +0000 (00:49 +0200)]
First 5.1 release candidate

Change-Id: I89776d6dd4d170d4f259fa8ee761cf4f6878cbe0

8 years agoFix too small GPU pair count estimates
Berk Hess [Wed, 1 Jul 2015 13:46:40 +0000 (15:46 +0200)]
Fix too small GPU pair count estimates

For triclinic unit-cells with DD the non-local cluster pair count
estimate was too high, especially for thin local domains, due to an
incorrect estimate of the cluster size. Since the pair count estimate
for the local pair-list was determined as a total minus a non-local
estimate, the local estimate could get negative and cause exceptions.
Fixed the cluster size estimate and added a lower limit for the local
size estimate.

Fixes #1762.

Change-Id: I3489550968f66bc03ba4e6056017a58eba37f7cc

8 years agoFix bug in GPU list balancing
Berk Hess [Sat, 4 Jul 2015 08:18:05 +0000 (10:18 +0200)]
Fix bug in GPU list balancing

The function split_sci_entry could produce empty lists. This seems
not to have caused incorrect results, only slight extra processing
of empty workunits in the CUDA kernel. Incorrect Coulomb energies
could appear for empty lists with shift=CENTRAL, but that does not
seem to happen.

Refs #1767.

Change-Id: I0b0ff0a450734d4863f1e9636ff5741d4f1a68da

8 years agoImprove gmx help -export Sphinx rebuild behavior
Teemu Murtola [Mon, 29 Jun 2015 10:43:11 +0000 (13:43 +0300)]
Improve gmx help -export Sphinx rebuild behavior

Make 'gmx help -export rst' only touch those files whose contents have
actually changed.  This means that rerunning Sphinx is much faster when,
e.g., checking the help text for a single tool after fixes.

Use the file output redirection mechanism to capture all output into
intermediate buffers, and only write it to a file if that file is
missing or has incorrect contents.

Update the reference data to avoid future confusion, as the files are
now written out in a different order (but the tests pass irrespective of
the order of the stuff in the reference data).

Change-Id: I41d764e16aa68a5aaa7da879f4b600e268ca70f2

8 years agoFix DD DLB state issue
Berk Hess [Thu, 2 Jul 2015 14:03:34 +0000 (16:03 +0200)]
Fix DD DLB state issue

The introduction of DLB locking for PME load balancing added another
DLB state, which was stored in a third variable. These variables
were not always all properly checked. Simplified the code by merging
these three state variables into one. In added there was a fourth
variable (bGridJump) is gmx_domdec_t, this is replaced by calls to
a functions returning is DLB is on.

Refs #1760.

Change-Id: I80d499149e4e5bfd689e76208384a8ba61e2842a

8 years agoFix bug in GPU list balancing
Berk Hess [Fri, 3 Jul 2015 20:28:52 +0000 (22:28 +0200)]
Fix bug in GPU list balancing

The function split_sci_entry could produce empty lists, which can
cause illegal memory access or incorrect energies. Before commit
6106367b this bug was never triggered, since nsp_max was never smaller
than a full cj4 entry. But 6106367b introduced a but that could
produce negative nsp_max.

Fixes #1767.

Change-Id: I2007cf6851f94f4f2ca62f609a0628725014dbe7

8 years agoFix error wrapping in interactive selection input
Teemu Murtola [Mon, 29 Jun 2015 10:02:11 +0000 (13:02 +0300)]
Fix error wrapping in interactive selection input

Resolve a TODO that was introduced when making the selection prompting
use text streams about wrapping error messages like they used to be
wrapped.

The use of console width within the generic error formatting code is a
bit ugly, but that needs to be resolved separately (and the old code
also had the console width hardcoded in a similar level).

Change-Id: Ia832a4884eef9bded50431fb5008d8191f52c246

8 years agoTests for interactive selection input
Teemu Murtola [Sat, 27 Jun 2015 17:39:33 +0000 (20:39 +0300)]
Tests for interactive selection input

Add InteractiveTestHelper to test interactive sessions that use streams
from textstream.h.  Use this to test the behavior of interactive
selection input.  Errors in the input or the help is not tested (yet),
and some corner cases may be missing, but most of the code is now
covered.  Separate set of tests is needed for SelectionOptionManager
prompts (will be added separately).

Remove obsolete special case handling from the interactive parser
(verified to not change any of the now tested behavior).

Change-Id: I448d470bcc240659a380ffa2d3b492949420c64b

8 years agoFix copy-paste bug in gmx distance
Teemu Murtola [Sat, 4 Jul 2015 17:45:11 +0000 (20:45 +0300)]
Fix copy-paste bug in gmx distance

The -oxyz option did not behave properly (the computed values should be
fine, but the behavior of where the output goes can be unpredictable).

Change-Id: Idcd389c3809189f85a630094b9aaea6d61a5f954

8 years agoRefactor for testing interactive selection input
Teemu Murtola [Mon, 29 Jun 2015 04:58:04 +0000 (07:58 +0300)]
Refactor for testing interactive selection input

Introduce a parseInteractive() method that works otherwise as
parseFromStdin(), except that the caller can provide alternative
streams for input and status output.  Make all input and output use
these streams instead of stdin or stderr directly.  Unit tests using
this will be added separately.

There is slight regression in the formatting of errors during
interactive selection input (noted in TODO in exceptions.cpp), but that
will be resolved separately to keep the commits smaller.

Change-Id: I0b6b885621c81a5e526b5f93b40d32b9248626f1

8 years agoRemove gmx::File (except for File::exists())
Teemu Murtola [Fri, 26 Jun 2015 04:16:48 +0000 (07:16 +0300)]
Remove gmx::File (except for File::exists())

Move remaining static methods to either path.h, or to the file stream
classes.

Change-Id: I53e910051b9ef57e501adad4cec1a4b5295d24a7

8 years agoReplace direct uses of gmx::File with streams
Teemu Murtola [Fri, 26 Jun 2015 03:52:03 +0000 (06:52 +0300)]
Replace direct uses of gmx::File with streams

Replace all cases that used gmx::File with a stream-based
implementation.  Only static methods in gmx::File are called from
outside file.cpp (will be removed separately).

This is only direct replacement to remove uses of gmx::File; some
additional refactoring is necessary to support alternative streams for
unit testing.

Change-Id: I5e5905f9f8956909f3396359b18e9660f100bcaa

8 years agoBump various version numbers
Teemu Murtola [Sat, 4 Jul 2015 03:48:44 +0000 (06:48 +0300)]
Bump various version numbers

It is unclear what will the next version be numbered, but bumped the
version numbers nonetheless to make the distinction between master and
release-5-1 clear.

Change-Id: I1cfe9f2a2523056f20cc825025425fc9429c89b6

8 years agoMake some unit tests use mock file output
Teemu Murtola [Sun, 28 Jun 2015 19:21:52 +0000 (22:21 +0300)]
Make some unit tests use mock file output

Introduce TextOutputStream interface that can be used instead of direct
file output.  Make unit tests for help output use an in-memory stream
instead of a real file using this mechanism.

TextWriter wraps the raw stream and provides more convenient
line-oriented writing capabilities (and provides a natural place to
implement more of the same, making them immediately available
independent of the stream used).

Most of the touched files only contain mechanical
  File -> TextWriter/TextOutputStream
and related documentation replacements.  The main non-trivial changes
are introduction of the streams and TextWriter in utility/, and
reorganization of the way the tests use TestOutputRedirector.

Further work follows to allow full removal of the old File class and to
extend the use of the streams.

Change-Id: I7700d0d8af5f44b304b940797a4834993e4738fb

8 years agoObey OpenMP thread count limit with tMPI
Berk Hess [Thu, 2 Jul 2015 08:09:43 +0000 (10:09 +0200)]
Obey OpenMP thread count limit with tMPI

With thread-MPI mdrun would choose the number of OpenMP threads so
that the maximal number of hardware threads was used. When the number
of ranks was limited by the system size, this led to too high OpenMP
thread counts which lowered the efficiency. Now a limit is imposed.
Also updated some comments and renamed constants and bNTOptSet.

Change-Id: I830b5a3f2fd28f87acfbcf982103b62fc3e45758

8 years agoFix two PME DLB trigger issues
Berk Hess [Wed, 1 Jul 2015 13:04:13 +0000 (15:04 +0200)]
Fix two PME DLB trigger issues

Dynamic load balancing got triggered while locked by PME load
balancing, because a check was placed incorrectly.
PME load balancing would never trigger with separate PME ranks
because a comparison was inverted.

Fixes #1760.
Fixes #1763.

Change-Id: I75eeb32423b864f84bfd45ecb61d169b473ed74a

8 years agoFix ThreadMPI GPU assumptions
Mark Abraham [Thu, 2 Jul 2015 14:57:10 +0000 (16:57 +0200)]
Fix ThreadMPI GPU assumptions

The OpenCL implementation introduces the constraint of one GPU per
node, but thread-MPI still assumed any compatible GPU was available
for use and thus should have a rank.

Consolidated the configure-time constants behind some API functions so
that we can use the same behaviour in the various setup code.

Added a warning message that the OpenCL implementation has to waste a
GPU, stopped showing another warning message related to wasting
GPUs when the OpenCL implemenation forces this, and improved
another message to clarify why gmx mdrun -ntmpi 2 won't work
with OpenCL.

Also fixed a few references to thread-MPI threads that are better
called thread-MPI ranks.

Change-Id: I4664c49786ebd26a53cbf5e1c26df79649ba4f5f

8 years agoCorrect grompp pull warning message
Berk Hess [Thu, 2 Jul 2015 12:05:26 +0000 (14:05 +0200)]
Correct grompp pull warning message

A warning full pull-coord?-groups referred to pull-coord?-geometry
instead. This is fixed by changing the order of proceses the pull
options, which better reflects the dependencies. Also reordered
the options in the mdp manual.

Change-Id: I6309d021282156cd3409af35bcfa38dc2cab1c67

8 years agoConvert gmxfio to C++
Teemu Murtola [Thu, 2 Jul 2015 18:22:33 +0000 (21:22 +0300)]
Convert gmxfio to C++

- Remove unused variables.
- Add missing extern "C" in thread-MPI.

Change-Id: I595f60ee27ab851e8c7c304b1f02a8f4aa15932f

8 years agoFix OpenCL compilation errors.
Szilard Pall [Wed, 1 Jul 2015 14:49:09 +0000 (16:49 +0200)]
Fix OpenCL compilation errors.

Fixes a typo in a structure. Also fixes an incorrect
variable name only visible on OS X.

Fixes #1765

Change-Id: I0ee0f61da1f036163aa85f719ef9ceb0dab06868

8 years agoRemove status messages about Sphinx detection
Teemu Murtola [Wed, 1 Jul 2015 03:21:41 +0000 (06:21 +0300)]
Remove status messages about Sphinx detection

Make FindSphinx.cmake and FindPythonModule.cmake respect the QUIET
option, and pass that to find_package() to not print out information on
every CMake run.  Most people will not care whether these are found or
not, and being silent in all cases is the same approach as is used for
Doxygen.

In master, it could be useful to change at least some of the documentation
build rules such that they require GMX_DEVELOPER_BUILD to be set, and
that could also enable messages about not finding the components needed
for the documentation build, but that is outside the scope of this
change.

Fixes part of #1761 and #1764.

Change-Id: I196f5e66c94fe4247ae28bd230a469acbaad939a

8 years agoClean up gmxfio includes
Teemu Murtola [Thu, 2 Jul 2015 04:15:41 +0000 (07:15 +0300)]
Clean up gmxfio includes

- Move xdr writing routines to gmxfio-xdr.h, to make it match the source
  file that implements them.  Include the new header where necessary.
- Remove gmx_fio_checktype() and replace with asserts in the xdr
  routines.
- Remove unnecessary gmxfio.h includes.  In particular, remove it from
  headers to not get it transitively to unrelated source files.
- Fix compilation that was broken by relying on transitively included
  headers (mostly cstringutil.h and futil.h) that no longer come through
  the transitive gmxfio.h.
- Some minor cleanup elsewhere, in particular hiding functions from
  headers and fixing a few uses of mismatching file open/close
  functions.

Change-Id: Ic5366a23a421cfec82a518caee772e2bb53e8303

8 years agoReorder code within gmxfio
Teemu Murtola [Tue, 30 Jun 2015 10:51:10 +0000 (13:51 +0300)]
Reorder code within gmxfio

Move all XDR writing code, including helper functions only used by it,
into gmxfio_xdr.c and rename it into gmxfio-xdr.c.  Remove these from
gmxfio-impl.h and make them static.  No changes to the actual code,
except for some handling of the itmp variables in gmx_bool functions to
satisfy gcc maybe-uninitialized warnings.

Change-Id: If2190f9429585ac0e2ee86b24dd41969f4ae8d49

8 years agoFurther gmxfio cleanup related to xdr handling
Teemu Murtola [Tue, 30 Jun 2015 10:39:40 +0000 (13:39 +0300)]
Further gmxfio cleanup related to xdr handling

- Remove unnecessary iotype redirection, since only XDR is used for
  this.  This removes a lot of repetitive code.
- Do not duplicate the list of XDR file types from filenm.c.
- Do not use string comparison for figuring out whether a file should be
  opened as text or binary.

Change-Id: I4522ce36b828283f02c56bb7920292019ae154fa

8 years agoMinor include sorting changes
Teemu Murtola [Wed, 1 Jul 2015 03:36:49 +0000 (06:36 +0300)]
Minor include sorting changes

Make the include sorter sort files based on the basename of the file,
i.e., not including the extension into the string sort.  This fixes an
unintuitive behavior that causes changes in the include order if a
'-' <-> '_' replacement is done for a file name (because '-' and '_' are
on different sides of '.' in ASCII).

Change-Id: Icd4bf58b0d60178e33f6840f24adb1e4108fb92a

8 years agoClean up unused code from gmxfio
Teemu Murtola [Tue, 30 Jun 2015 04:09:58 +0000 (07:09 +0300)]
Clean up unused code from gmxfio

- gmx_fio_do_*() are only used for writing xdr-based formats, so remove
  other implementations (has been unused since support for .tpa and .tpb
  formats was removed).  Further decoupling should be possible, but
  left for later to keep this change smaller.
- gmx_fio_read/write_*() were not used with the exception of
  gmx_fio_write_string(), so removed.  gmx_fio_do_*() should be
  sufficient.
- Remove USE_XDR, as it is not feasible to turn off xdr support from
  these few files alone.  There are several file formats (most notably,
  run input files and checkpoints) that can only be written in xdr, and
  functionality is severely limited without those.
- Remove unused (and mistyped) HAVE_XML #ifdefs.  It's not feasible to
  inject XML support at this level...
- Move confusingly placed check for not opening .tng files with gmxfio.
- Removed unnecessary checks for debug files (debug files are no longer
  opened with gmx_fio_fopen()).
- Remove a few other fields, enum members, and methods that had no effect.
- Rename gmxfio_int.h to gmxfio-impl.h to make its role clearer and to
  make it follow the current naming conventions.
- Remove unnecessary #includes.

Change-Id: Ida39a076969da116c9a5f68d7bfd0355c2d2363b

8 years agoFix inconsistent OpenMP automation
Berk Hess [Tue, 30 Jun 2015 19:22:01 +0000 (21:22 +0200)]
Fix inconsistent OpenMP automation

The thread MPI single rank max thread count for non-Intel was 6,
this was smaller than the max allowed MPI+OpenMP thread count of 8,
which caused setups to be generated that did not pass the check.
Increased 6 to 8 and added an assertion.

Change-Id: I13787616d7c667cba3245da4f5b5c3a1a6a1206d

8 years agoDocument how to add and use NVML support
Mark Abraham [Mon, 20 Apr 2015 22:13:17 +0000 (00:13 +0200)]
Document how to add and use NVML support

Change-Id: I8ca7c5d1b163a78559a048ca6cc5b099f34c6cd6

8 years agoAvoid GPU data race also with OpenCL
Mark Abraham [Mon, 29 Jun 2015 22:32:52 +0000 (00:32 +0200)]
Avoid GPU data race also with OpenCL

Implements the same change to non-local stream synchronization as now
used for CUDA.

Fixes #1756

Change-Id: I720edc0951f97dcff0bd477084fff45a149f01d9

8 years agoenabled 1 PP + 1 PME node
Berk Hess [Tue, 5 Aug 2014 10:07:36 +0000 (12:07 +0200)]
enabled 1 PP + 1 PME node

Change-Id: I18a4c2bac71f1b5b81d9d374b212bfb9edc7a1e8

8 years agoAdd checks for inefficient resource usage
Berk Hess [Fri, 24 Apr 2015 13:27:27 +0000 (15:27 +0200)]
Add checks for inefficient resource usage

Checks have been added for using too many OpenMP threads and when
using GPUs for using single OpenMP thread. A fatal error is generated
in case where we are quite sure performance is very sub-optimal. This
is nasty, but a fatal error is the only way to ensure that users don't
ignore this warning. The fatal error can be circumvented by explicitly
setting -ntomp, in that case a note is printed to log and stderr.

Now also avoids ranks counts with thread-MPI that don't fit with the
total number of threads requested.

With a GPU without DD thread count limit is now doubled.

Disabled GPU sharing with OpenCL.

Change-Id: Ib2d892dbac3d5716246fbfdb2e8f246cdc169787

8 years agoAdd support for flushing WDDM queue
Mark Abraham [Wed, 25 Mar 2015 13:41:40 +0000 (14:41 +0100)]
Add support for flushing WDDM queue

Relevant only with CUDA on Windows (and profiling?)

On Windows the WDDM driver (default for non-Tesla) can prevent
immediate submission of CUDA tasks to the GPU in an attempt
to try to amortize driver overheads. However, as we need
tasks to start immediately for optimal concurrent execution,
this "feature" will result in large overheads. A well-
documented workaround is implemented by this change.

Change-Id: I69a6bb59dc8cae18fba539de49c977c0ee814d07

8 years agoMerge "Merge branch release-5-0"
Mark Abraham [Mon, 29 Jun 2015 20:25:11 +0000 (22:25 +0200)]
Merge "Merge branch release-5-0"

8 years agoFix OS X openCL builds
Erik Lindahl [Sat, 27 Jun 2015 12:16:53 +0000 (14:16 +0200)]
Fix OS X openCL builds

OS X does not like the quotes previously used to handle
OpenCL include paths with spaces - escape them instead.
With this change, OpenCL works at least on Yosemite
(OS X 10.10) using a GeForce  GT 750M card, and passes
all Gromacs regression tests.

Change-Id: I2acd30256e2ff11ca1fde10361cc0cc55ee7fc05

8 years agoFix bugs in gmx dos
Erik Lindahl [Thu, 25 Jun 2015 15:46:05 +0000 (11:46 -0400)]
Fix bugs in gmx dos

- Velocity autocorrelations were not normalized
  by default, so they did not agree with gmx velacc.
- The normalize option had no effect on the VACs.
- The index group option was available, but no
  index groups were processed.
- Since the DoS is calculated from the mass-weighted
  VAC and by default only from the real part, it was
  not clear why these results would differ from data
  obtained with gmx velacc. There is at least a note
  about this now, and more docs will be added in the
  future.
- The hidden option to dump some plots has been
  removed since it was not documented what these
  contained (beyond a paper reference), and the
  contents was not based on any data from the
  trajectory, but rather plotting a custom function.

Fixes #1608.

Change-Id: Icfca060f94efb34bd7871bd90245ab0ddbbe91c1

8 years agoReplace functions deprecated in OpenCL 1.2
Erik Lindahl [Thu, 25 Jun 2015 19:01:26 +0000 (15:01 -0400)]
Replace functions deprecated in OpenCL 1.2

Check for CL_VERSION_1_2 in the source, and
use newer versions in that case to avoid
warnings about deprecated functions.

Change-Id: I6f70e0178fa06c59be57168d94aae0fd7df148f5

8 years agoOnly accept exact matches for selection keywords
Teemu Murtola [Mon, 29 Jun 2015 17:48:33 +0000 (20:48 +0300)]
Only accept exact matches for selection keywords

The selection parser tried to be nice to the user and also accept
unambiguous prefixes of keywords, but this also has a lot of side
effects that can be confusing (e.g., it was impossible to create
variables that had names that were prefixes to keywords or to other
variable names).  Additionally, this was the only case where user input
could cause an exception during tokenization of the input string, and
that wasn't handled very well during interactive input, either (it
caused the whole program to stop, instead of just reporting the error
like is done for other parsing errors).

Remove the logic, and only make the parser accept exact matches.
Add a few synonyms for keywords where there is a natural abbreviation.

Change-Id: I6041baa2f5a3b7dab87c3d5991e883d2d74ace66

8 years agoMerge branch release-5-0
Mark Abraham [Mon, 29 Jun 2015 18:52:12 +0000 (20:52 +0200)]
Merge branch release-5-0

Conflicts:

src/gromacs/gmxpreprocess/hackblock.c
  Used new name for header file for gmx_warning.

src/gromacs/mdlib/nbnxn_cuda/nbnxn_cuda.cu
  Moved code to the other side of the sync point as
  in release-5-0. Renamed cu_nb to nb.

src/gromacs/mdlib/nbnxn_cuda/nbnxn_cuda_data_mgmt.cu
  Changed name of event to destroy. Renamed cu_nb to nb.

Change-Id: Iee9e2ea372ee704057a4a51ad9e4ab9a22ab7fe6