alexxy/gromacs.git
8 years agoMerge branch 'origin/release-5-1'
Mark Abraham [Thu, 10 Dec 2015 01:36:16 +0000 (12:36 +1100)]
Merge branch 'origin/release-5-1'

Change-Id: Ib28050b54b93ee5eabb12414a92424987b769693

8 years agoSplit txtdump.*, part 1
Teemu Murtola [Thu, 3 Dec 2015 19:22:37 +0000 (21:22 +0200)]
Split txtdump.*, part 1

- Move routines to print various data structures to the file that
  declares the data structure, mostly to topology/.
- Rename pr_header() to pr_tpxheader() to clarify its use.
- Remove unused pr_commrec() and some commented-out code.
- Remove unnecessary uses of txtdump.h.

This helps avoiding dependency cycles coming from this (because in its
old form, any code that wanted to use these routines for, e.g., debug
output, would need to be above all the data structures for which this
printing was supported).  Also, it makes it easier to find the code that
needs changing because of a data structure change easier when it is
close to the declaration of the data structure.

Follow-up commit will move txtdump.* out of fileio to resolve existing
cyclic dependencies, but split that into a separate commit to keep the
size manageable.

Change-Id: I2665f6d25cd095f4c7d11d32bcaec38601ff8d8b

8 years agoImplement parse_digits_from_csv_string
Robert McGibbon [Wed, 14 Oct 2015 08:36:46 +0000 (01:36 -0700)]
Implement parse_digits_from_csv_string

Allow -gpu_id and GMX_GPU_ID to use a comma separated list of digits,
to support specification of >10 GPUs per node.

Change-Id: I62e6b54476efadd24aef00ed63d29c98e4d15c38

8 years agoUpdate use of preprocessor in managing GPU support
Mark Abraham [Fri, 20 Nov 2015 16:10:02 +0000 (17:10 +0100)]
Update use of preprocessor in managing GPU support

Once CMake has done detection of GPU library support, within CMake we
now use GMX_USE_CUDA and GMX_USE_OPENCL to handle details such as
which source code files should be compiled. This makes code in
CMakeLists.txt files slightly more clear.

To configure the GROMACS build via config.h, CMake sets GMX_GPU_TYPE
to match the name of one of three hard-coded defines in
config.h.cmake.in, and configures GMX_GPU with the value represented
by that name. This ensures GMX_GPU always has a value in source code,
so various kinds of mis-use will found by the compiler. It also means
we can use GMX_GPU and the values of those defines to simplify the
parts of high-level code that are different according to which GPU
configuration is in use - mostly in reporting to the user what is
going on. This reduces the number of complex preprocessor conditionals
that might want documenting or indenting, and makes it harder to write
a syntax error that can only be found with a particular build
configuration.

Minor change to the start-of-run reporting. Rather than show that GPU
is disabled/enabled, and OpenCL likewise, show disabled or which of
CUDA or OpenCL is enabled for GPU acceleration. The OpenCL library
name will make clear whether AMD or NVIDIA libraries is providing the
OpenCL runtime.

No changes to user interface of CMake. Removed redundant declaration
of option(GMX_GPU) from main CMakeLists.txt, since gmxManageGpu()
already did that.

No changes required to current or future compute code, since CMake
still handles whether such code is compiled at all.

Refs #1855

Change-Id: I3448fe284ac526eb2b185e915b95fcc84f3d469a

8 years agoRemove old MSVC references
Roland Schulz [Sun, 29 Nov 2015 15:47:55 +0000 (10:47 -0500)]
Remove old MSVC references

Change-Id: I32100e53a0a6dc76febaedeb47dd7e9efa25ba4d

8 years agoMerge branch 'release-5-0' into release-5-1
Mark Abraham [Tue, 8 Dec 2015 07:45:22 +0000 (18:45 +1100)]
Merge branch 'release-5-0' into release-5-1

 Conflicts:
src/gromacs/mdlib/coupling.cpp

Trivial conflict from removing unused variables in release-5-1, but
adding one in release-5-0, resolved by combining both logical changes.

Change-Id: Ib3e762bec8699465d47cbc364fecb424b23aec11

8 years agoFix Trotter integration
Mark Abraham [Tue, 1 Dec 2015 03:11:04 +0000 (04:11 +0100)]
Fix Trotter integration

Re-using the iteration variable in an inner scope could have produced
any manner of nonsense. Luckily it was only broken for md-vv with NPT
and more than one temperature-coupling group.

Fixes #1872

Change-Id: If22849e40a0253ba1fa4bbc1dba78b80d17cf4d1

8 years agoMoved pull params to mdtypes/pull-params.h
Berk Hess [Thu, 26 Nov 2015 20:55:41 +0000 (21:55 +0100)]
Moved pull params to mdtypes/pull-params.h

Change-Id: Ib49f78d4e2b8e25cdbca727c36abca74a3c11611

8 years agoWrite forces and velocities to compressed TNG.
Magnus Lundborg [Thu, 26 Nov 2015 10:50:59 +0000 (11:50 +0100)]
Write forces and velocities to compressed TNG.

If there is no uncompressed coordinate output write forces
and velocities to the TNG file with compressed coordinate
output. If there is uncompressed coordinate output to a
TNG file forces and velocities will be written to it.

Use a greatest common divisor to set the frequency of some TNG
data output to ensure lambdas and box shape are written at least
as often as anything else.

This commit closes #1863.

Change-Id: I61bb5513f5080847f9098ff4fd7f01c8d1415a8f

8 years agoRemove mdrun -compact
Mark Abraham [Thu, 26 Nov 2015 18:31:22 +0000 (19:31 +0100)]
Remove mdrun -compact

This defaulted to true, and was otherwise always hard-coded to true in
print_ebin() when in eprNORMAL mode, and always hard-coded to false in
eprAVER mode. The data printed looks like it should always be in the
energy file, which is how we should approach analysis tasks that might
make use of the non-compact data if it was written in eprNORMAL mode.

Change-Id: I1b7912cc6e87712cf71854bcd18b00e9ad25a9be

8 years agoMove strdb.* to utility/
Teemu Murtola [Wed, 2 Dec 2015 04:35:40 +0000 (06:35 +0200)]
Move strdb.* to utility/

These are more similar to the low-level I/O routines already present in
utility (most uses would be easy to replace with TextReader alone, after
some minor extensions), rather than to the other fileio/ stuff.
This, in part, helps breaking the fileio <-> topology cyclic dependency.

Remove unused or duplicate functions or make them private to the source
file.

Convert existing comments to rudimentary Doxygen to avoid warnings.

Change-Id: I3f5262112fabe2bffa16c14c20d987e2e63dcb4f

8 years agoMove filenm.* to commandline
Teemu Murtola [Tue, 1 Dec 2015 20:16:49 +0000 (22:16 +0200)]
Move filenm.* to commandline

These are really related to command-line parsing instead of file I/O, so
they belong here.  Move opt2fn_master() to network.* to avoid an
commandline -> mdtypes dependency.

Convert existing comments to rudimentary Doxygen documentation to avoid
warnings.

Change-Id: Idd1a088a70f4687f1929075f14b5ac63564a1f9b

8 years agoSplit filenm.*
Teemu Murtola [Tue, 1 Dec 2015 20:08:36 +0000 (22:08 +0200)]
Split filenm.*

- Split the declaration of recognized file types into a separate file
  (filetypes.*) from filenm.*.  The latter now only contains the
  t_filenm structure and functions related to it.  This can later move
  to the command-line module.
- Do not include filenm.h from other headers, except for pargs.h, where
  all users will anyways require it.
- Include filenm.h from source files that need it.
- Replace uses of filenm.h with filetypes.h where only the latter is
  needed.

Change-Id: Ic125e4fe209fba9dbb238daa4ae8ee72451a64c9

8 years agoIncrease pdb chain ids to 62 in output
Berk Hess [Wed, 2 Dec 2015 11:50:29 +0000 (12:50 +0100)]
Increase pdb chain ids to 62 in output

We used to only use uppercase chain identifiers for chain ids in
output to pdb. Now we can use all 62 alphanumeric characters.

Change-Id: Ic56ef95354d247cb0129606d24c5df8644722573

8 years agoRefactored set_pbc_dd
Berk Hess [Tue, 1 Dec 2015 10:45:12 +0000 (11:45 +0100)]
Refactored set_pbc_dd

Made set_pbc_dd more understandable and updates its documentation.
Made all input pointers to the pbc code const, this also required
all pointer arguments in txtdump to be const.

Change-Id: I40db5532502e647e821c0bf083614fbc586df44e

8 years agoMade t_inputrec const in PME load balancing
Berk Hess [Fri, 20 Nov 2015 09:16:45 +0000 (10:16 +0100)]
Made t_inputrec const in PME load balancing

Now that the twin-range scheme is gone, inputrec is no longer
modified during PME load balancing. Added a const qualifier to make
this clear and enforce this during future changes.
Also added const for all const arguments in domdec_box.cpp.

Change-Id: Ie063fe3d5846e1f9565634c4561c09f3cc9b5bae

8 years agoRemove twin-range scheme
Mark Abraham [Mon, 16 Nov 2015 23:53:35 +0000 (00:53 +0100)]
Remove twin-range scheme

Only the group scheme supports this, and the Verlet scheme will not
support it in the foreseeable future.

Removed many uses of rlistlong, but replaced some appropriate uses
with rlist. We now have the explicit requirement that rlist >=
max(rcoulomb,rvdw).

Didn't rename variables that contain "shortrange" or "SR" since
they'll mostly disappear with the group scheme

Retained energy components that need to be retained for .edr
compatibility.

gmx compare and dump ignore the old fields

Change-Id: I6ab2ea93bfcea8510969b43e7f06f55d5f350840

8 years agoPull group count for coords stored in tpr
Berk Hess [Fri, 17 Apr 2015 18:10:08 +0000 (20:10 +0200)]
Pull group count for coords stored in tpr

Added a parameter ngroup to the pull coord parameters. This is now
also stored in the tpr file. This simplifies code in several places,
since we now only need to determine ngroup is one place. This change
also makes the pull geometry forward compatible, which is useful
since it avoid bumping tpx_version with every new geometry and
we expect that users want to experiment with new geometries.

Change-Id: I7fc0032e439a5ac329f3260d5a6c775295a61bfc

8 years agoFixed null-dereferencing bug in vsites
Erik Lindahl [Tue, 1 Dec 2015 00:27:08 +0000 (01:27 +0100)]
Fixed null-dereferencing bug in vsites

set_pbc_dd() would be called with the argument
cr->dd->nc even when cr->dd was NULL. Fixed to
use a NULL pointer argument instead.

Change-Id: I19c3cb5be2a48d063323c7daf9f1b203d988279b

8 years agoRemove topology -> mdtypes dependency
Teemu Murtola [Mon, 30 Nov 2015 15:19:52 +0000 (17:19 +0200)]
Remove topology -> mdtypes dependency

This only existed because of a single use of t_inputrec in mtop_util.
Replaced the access to t_inputrec.efep with an equivalent check in the
callers.  Not ideal, but can possibly be improved futher by moving code
around once the desired structure is clearer.

Change-Id: Ieb777f6fd11b15c4fecaf391b22293439097f2fa

8 years agoRemove obsolete references to legacyheaders/
Teemu Murtola [Mon, 30 Nov 2015 10:57:59 +0000 (12:57 +0200)]
Remove obsolete references to legacyheaders/

Change-Id: I076f0809314d894b9322d369c675e37ad321d02a

8 years agoMerge remaining legacyheaders/types/ to mdtypes/
Teemu Murtola [Mon, 30 Nov 2015 10:52:22 +0000 (12:52 +0200)]
Merge remaining legacyheaders/types/ to mdtypes/

One cyclic dependency suppressed for now.
legacyheaders/ is no more.

Closes #1415 (but this just moves us to the next phase of the clean-up)

Change-Id: Ie80d24d347acb61216002a309cb4118f8dc99b6b

8 years agoMove ifunc.h to gmxlib
Teemu Murtola [Mon, 30 Nov 2015 10:39:49 +0000 (12:39 +0200)]
Move ifunc.h to gmxlib

This is where the source file currently resides.  There are some cyclic
dependencies introduced by this, but these already existed.  Should be
sorted out separately.

Change-Id: I4353da8820b37a10508147ffdf1cbe731b8e3361

8 years agoMove force_flags.h to mdlib/
Teemu Murtola [Mon, 30 Nov 2015 10:31:43 +0000 (12:31 +0200)]
Move force_flags.h to mdlib/

One more header out of legacyheaders, only a few remaining.

Change-Id: I02397a5e5664179174e73646ffb11f4b186bdf41

8 years agolibgromacs CMake source file management cleanup
Teemu Murtola [Mon, 30 Nov 2015 10:23:03 +0000 (12:23 +0200)]
libgromacs CMake source file management cleanup

- Remove obsolete globbing for *.c files.
- Do not install anything remaining in legacyheaders/, which makes it
  possible to remove the whole CMakeLists.txt files from there.
- Add gmx_add_libgromacs_sources() as an alternative to globbing, and
  use it in places where we were only using the globbing to get full
  paths (so that they work where we want).

Change-Id: I654b84b6f48b7991faa3d7a349d5118be932493d

8 years agoMove hardware info structs to hardware/
Teemu Murtola [Mon, 30 Nov 2015 10:04:23 +0000 (12:04 +0200)]
Move hardware info structs to hardware/

Move hw_info.h and gpu_hw_info.h to hardware/, removing more code from
legacyheaders/types/.

Change-Id: Id324f8b517beb9cfd4e9d517f9e704efc55a4096

8 years agoRefactor hardware information management
Mark Abraham [Sun, 25 Oct 2015 16:24:03 +0000 (17:24 +0100)]
Refactor hardware information management

Made gmx_hw_info_t and gmx_gpu_info_t opaque so that forcerec.h does
not have to depend on hw_info.h.

Split gpu_hw_info.h off from hw_info.h, so that GPU code is not yet
exposed to C++11 constructs used for host code information management.

Change-Id: I283b3257ac9e2d341d673c0c4be7eb5c2c5ae40d

8 years agoFixed typos in output.
Magnus Lundborg [Thu, 26 Nov 2015 15:29:06 +0000 (16:29 +0100)]
Fixed typos in output.

Change-Id: I706c489f186c0d0367fca2cf4581186a0a97a291

8 years agoC++ classes for cpuid and hardware topology
Erik Lindahl [Thu, 8 Oct 2015 16:28:49 +0000 (18:28 +0200)]
C++ classes for cpuid and hardware topology

Refactored old cpuid into classes for cpuid and hardware
topology detection, and moved SIMD architecture selection
routines to the SIMD module. This will make it possible
to introduce hwloc transparently to get more advanced
topology information from the hardware topology class.
Since forcerec.h is still included by a few C files, the
previous cpuid datatype has been turned into pointers
to forward-declared non-existing structs, which causes
snew/sfree to choke on them. Internally they are instead
properly new:d/delete:d in the C++ code.

Change-Id: I378ec5dc6c32883c5d89f1cfeecea93a3b8b0e6b

8 years agoClean up some selection code
Teemu Murtola [Fri, 27 Nov 2015 10:19:13 +0000 (12:19 +0200)]
Clean up some selection code

- Make most input parameters to centerofmass.* routines const.
- Remove unused return values for the routines, and replace the checks
  for incorrect calls with asserts.
- Use ConstArrayRef in test code to get rid of other templates in test
  code.

Change-Id: I343f3165df73a5a7d4468ca233f08d09b9a5b259

8 years agoRotate Figure 8.2 in manual.
Elton Carvalho [Wed, 25 Nov 2015 21:35:47 +0000 (18:35 -0300)]
Rotate Figure 8.2 in manual.

Fixes #1865

Change-Id: I4bd006fa691481179d4eec4299d9cc5d18db6e3f

8 years agoUse local variables instead of those in *ir.
Magnus Lundborg [Wed, 25 Nov 2015 22:36:15 +0000 (23:36 +0100)]
Use local variables instead of those in *ir.

We set vout and fout to that values of ir->nstvout and ir->nstfout
Use the local variables.

Change-Id: I17dbc1f9c2fda7099cfa2f38da6600e2d175bd5a

8 years agoFix logic of dd_print_missing_interactions exit
Mark Abraham [Tue, 24 Nov 2015 18:55:30 +0000 (19:55 +0100)]
Fix logic of dd_print_missing_interactions exit

Old code would write a fatal error from master rank, and then exit
without coordinating with the other ranks. Instead, all ranks should
participate in the fatal error, using the existing code that takes
care of printing output only from master rank.

Change-Id: Iec91ddd09ba076cd977d2c1ef388cf99adae92f6

8 years agoFix error in multi-sim communication
Mark Abraham [Tue, 24 Nov 2015 16:08:03 +0000 (17:08 +0100)]
Fix error in multi-sim communication

I lost the [0] in converting the old code, and there was not enough
testing coverage to find it.

Fixes #1848

Change-Id: Ifb9ffaf5a525537231b1f4e848bba3ef0873a077

8 years agoFixes newly introduced bug in make_ndx.
David van der Spoel [Tue, 24 Nov 2015 13:49:38 +0000 (14:49 +0100)]
Fixes newly introduced bug in make_ndx.

After cleanup removing "NOTSET" from general include files a bug
was introduced in make_ndx not being able to generate groups
based on atom name, residue name or atom type.

Fixes #1859

Change-Id: I5ccca69ca31ae9d53f7473bcd9e6864db9a66fc8

8 years agoUpdate and expand pre-submit commit matrix
Mark Abraham [Tue, 27 Oct 2015 16:18:24 +0000 (17:18 +0100)]
Update and expand pre-submit commit matrix

Upstream, dynamic host assignment is now done from the requirements
expressed in the configuration line.

Updated old and new configs to support latest versions for icc, gcc,
MSVC, clang, and CUDA.

Change-Id: Icce62d1ba80a5b40ff00d78cdd24e15c8c45f2e7

8 years agoMove precision detection symbols to baseversion.*
Teemu Murtola [Sat, 21 Nov 2015 20:43:56 +0000 (22:43 +0200)]
Move precision detection symbols to baseversion.*

Part of splitting copyrite.* to its components.
Add extern "C" declaration to the symbols to make it simpler to check
their presence.

Change-Id: Ie6d776719766435ad75915b40ec1c01b06f23f7e

8 years agoMoved domdec structures out of commrec.h.
David van der Spoel [Sat, 21 Nov 2015 14:27:16 +0000 (15:27 +0100)]
Moved domdec structures out of commrec.h.

In order to clean up the legacyheaders directory here the
structures relating to domain decomposition are taken out of
commrec.h and moved to a new file domdec/domdec_struct.h

To not introduce new cyclic dependencies modified the
interface of write_checkpoint and gmx_fatal_collective.

Part of #1415

Change-Id: I485a03eddbb87dcc236b7e2e7d85d03383d86f61

8 years agoCleanups in legacyheader/types/commrec.h
David van der Spoel [Sat, 21 Nov 2015 21:33:13 +0000 (22:33 +0100)]
Cleanups in legacyheader/types/commrec.h

Removed superfluous typedefs from above file.

Part of #1415.

Change-Id: If3d99dc24864d21dbbfa2eaf57fd5264f7d3d9ec

8 years agoFix generic group-scheme kernel table dereferencing
Mark Abraham [Sun, 22 Nov 2015 12:08:46 +0000 (13:08 +0100)]
Fix generic group-scheme kernel table dereferencing

Changes to regressiontests see the generic kernels triggered more
often, and these need to not dereference table data that hasn't been
initialized. This change follows the example of nb_free_energy.cpp.

Change-Id: Ifca4ed318dfc04e760e65d1419df13388cb88248

8 years agoRemove correlationfunctions -> mdtypes dependency
Teemu Murtola [Sun, 22 Nov 2015 05:22:45 +0000 (07:22 +0200)]
Remove correlationfunctions -> mdtypes dependency

This only existed because of bool_names, which was much more general
that most other MD-specific enums in md_enums.h.  Instead, add a
boolToString() utility function and use it.  This is also more robust,
as passing an integer with a value other than 0/1 no longer causes an
out-of-bounds array access.

Remove some cycle suppressions that were not suppressing any cycles not
covered by other suppressions.

Change-Id: Id0a4e2aa1d73fb1dd07ef182a4f9e4370cb4115c

8 years agoUse v.data() instead of &v[0] for C interop
Teemu Murtola [Sat, 21 Nov 2015 12:00:57 +0000 (14:00 +0200)]
Use v.data() instead of &v[0] for C interop

When passing std::vector arrays to C code, use C++11 .data() instead of
&v[0], since this works also for empty arrays, even with various debug
versions of STL.

arrayref.h still has an &v[0] protected by an emptiness check, since
that is a potentially widely used header.

Change-Id: I3a342a0086c7d0f101c9a91227625c062bedfd5e

8 years agoMerged legacyheaders/types/qmmmrec.h into mdlib/qmmm.h
David van der Spoel [Fri, 20 Nov 2015 18:50:37 +0000 (19:50 +0100)]
Merged legacyheaders/types/qmmmrec.h into mdlib/qmmm.h

Change-Id: I711270f864d9266b554c44a1185723449973e0b3

8 years agoMerged genborn.h from legacyheaders/types into mdlib/genborn.h
David van der Spoel [Fri, 20 Nov 2015 18:19:36 +0000 (19:19 +0100)]
Merged genborn.h from legacyheaders/types into mdlib/genborn.h

Part of #1415.

Change-Id: I2c9dcb827219649791183d016bf07d056a9ca049

8 years agoMoved legacyheaders/types/group.h to mdtypes.
David van der Spoel [Fri, 20 Nov 2015 19:15:57 +0000 (20:15 +0100)]
Moved legacyheaders/types/group.h to mdtypes.

Part of #1415.

Change-Id: I959941cf586b90e97359e8ec026dc923ff7f8aa5

8 years agoMerged legacyheaders/types/ns.h and nblist.h to mdtypes/nblist.h
David van der Spoel [Fri, 20 Nov 2015 15:10:10 +0000 (16:10 +0100)]
Merged legacyheaders/types/ns.h and nblist.h to mdtypes/nblist.h

Also parts moved out of forcerec.h.
In order to make this work some parts of the forcerec structure
had to be made pointers, and the same for nblist structures.

Part of #1415.

Change-Id: Iaaadd76ccca001a11371b9a0ad1b75a727732f00

8 years agoCombine enums.h and names*.
David van der Spoel [Wed, 11 Nov 2015 21:13:22 +0000 (22:13 +0100)]
Combine enums.h and names*.

Combined enums.h and names* to mdtypes/md_enums.cpp/h.
Added doxygen comments to md_enums.h
Removed macros in inputrec.h to reduce cyclic dependencies.

Clean up of legacyheaders. By removing some unnecessary includes
from the files names.h and enums.h (now md_enums.h)
a lot of 'freeriders' showed up, therefore had to include
topology.h in many files.

Part of #1415

Change-Id: I12b8ef4f82b7aec806aea2eee7d77604e86dc576

8 years agoSplit wallcycle interface
Mark Abraham [Wed, 18 Nov 2015 19:05:46 +0000 (20:05 +0100)]
Split wallcycle interface

Separated header for components that relate to accumulating counts
from end-of-run reporting. The former benefits from exposing a minimal
interface, e.g. so CUDA code isn't potentially exposed to C++11
headers.

Refs #1745

Change-Id: I70517ac104f002b7b4e61a3aaa26acff5193361c

8 years agoRemove ewcWAIT_GPU_NB_L_EST
Mark Abraham [Sat, 24 Oct 2015 15:49:59 +0000 (17:49 +0200)]
Remove ewcWAIT_GPU_NB_L_EST

This responsibility doesn't fit with the rest of gmx_wallcycle (and
the new implementation has slightly lower overhead, too).

Change-Id: I99984e8ae19f8201d1e49aa9fe0f01062ac8ee47

8 years agoMerged legacyheaders/nrnb.h and types/nrnb.h to gmxlib.
David van der Spoel [Thu, 19 Nov 2015 15:19:21 +0000 (16:19 +0100)]
Merged legacyheaders/nrnb.h and types/nrnb.h to gmxlib.

Part of #1415

Change-Id: I33922419a6a5a7976bda12fd81e2d752eb0c5c6d

8 years agoMoved mdatom.h from legacyheader/types to mdtypes.
David van der Spoel [Thu, 19 Nov 2015 12:08:40 +0000 (13:08 +0100)]
Moved mdatom.h from legacyheader/types to mdtypes.

Add doxygen comments to the elements of the structure.

Part of #1415.

Change-Id: I811ad4782dd482ac7fe198c85c85b91af6e20b67

8 years agoMoved legacyheaders/types/energy.h to mdtypes.
David van der Spoel [Thu, 19 Nov 2015 11:05:50 +0000 (12:05 +0100)]
Moved legacyheaders/types/energy.h to mdtypes.

Part of #1415

Change-Id: I65a00cc49110a09edfafc7520a7a480f73b5165c

8 years agoSimplified init and mdrun code
Mark Abraham [Wed, 14 Oct 2015 10:51:46 +0000 (12:51 +0200)]
Simplified init and mdrun code

Replaced bVV with EI_VV(ir->eI), so that someone reading the code
doesn't have to remember that they mean the same.

There's already restart-handling code that runs very early in mdrun to
determine whether a valid checkpoint restart will happen, so stopped
doing redundant checks and communication. Eliminated
gmx_fexist_master.

Consolidated logic related to setting up and using bInitStep. Renamed
boolean variable to startingFromCheckpoint according to new style. The
old bStartingFromCpt was only used together with a check for
velocity-Verlet, so we mays as well use the unqualified form and have
one fewer control variable.

Change-Id: Ic8baef9c7364a436bc2bb887e204b2f0f7988734

8 years agoRemoved mdrun fatal_error with P3M-AD
Berk Hess [Thu, 19 Nov 2015 13:02:44 +0000 (14:02 +0100)]
Removed mdrun fatal_error with P3M-AD

Change-Id: I43f988622aa77f504e9d5ca0693f5758b0e59c5c

8 years agoRemoved Reaction-Field-nec
Berk Hess [Wed, 18 Nov 2015 08:34:59 +0000 (09:34 +0100)]
Removed Reaction-Field-nec

The RF no exclusion correction option was only introduced for
backward compatibility and a performance advantage for systems
with only rigid molecules (e.g. water). For all other systems
the forces are incorrect. The Verlet scheme did not support this
option and if it would, it wouldn't even improve performance.

Change-Id: Ic22ccf76d50b5bb7951fcac2293621b5eef285c5

8 years agoFixed -npstring command line argument in gmx tune_pme
Carsten Kutzner [Tue, 17 Nov 2015 11:32:22 +0000 (12:32 +0100)]
Fixed -npstring command line argument in gmx tune_pme

The old format "-npstring -n" would be interpreted as two command
line options by the parser. Therefore, now the syntax is adapted
to "-npstring n" and the minus sign is added later when the mdrun
command line is constructed.

Change-Id: I97b96a2985c3376f60297d336c7914bb48e21e41

8 years agoFix use of #if vs #ifdef
Mark Abraham [Mon, 16 Nov 2015 15:56:28 +0000 (16:56 +0100)]
Fix use of #if vs #ifdef

Change-Id: Ic2b52f88cde3793d1f0b96fe36acbe7db1126174

8 years agoRemove t_adress
Mark Abraham [Mon, 16 Nov 2015 19:59:37 +0000 (20:59 +0100)]
Remove t_adress

This was intended for removal with AdResS, but the migration of
typedefs/inputrec.h meant it got lost.

Change-Id: Ia0ee6ee20258cfab47345459ce07261d1452cd8b

8 years agoFix AlignedAllocator with MSVC2015 debug mode
Mark Abraham [Thu, 29 Oct 2015 15:12:59 +0000 (16:12 +0100)]
Fix AlignedAllocator with MSVC2015 debug mode

The rebind feature of the allocator is apparently used by error
checking in MSVC2015 C++ standard library, and that requires a
templated "copy constructor," and templated constructors can't be
auto-generated. Once we supply that constructor, we must also supply
any other ones we want, such as the no-argument constructors.

Change-Id: Id8446ac5691c9bd7d6f60768b47775211e43fb08

8 years agoRemove unused code detected by PGI compiler
Erik Lindahl [Fri, 31 Jul 2015 22:13:25 +0000 (00:13 +0200)]
Remove unused code detected by PGI compiler

Minor cleanup to fix warnings issued by the PGI compiler.
- Unused routines have been removed, including ones that
  were never referenced unless specific defines were set
  directly in source files.
- Unreachable breaks have been removed.
- Add a flag to suppress warning that PGI does not
  understand a GCC pragma in the generated parser.cpp

There are still issues with PGI not catching exceptions
in the unit tests, SIMD, and OpenMP.

Change-Id: Ic7900b80e31745aafa031c806f0664734014bbe5

8 years agoRemoved state_global from mdrun energy-summation
Mark Abraham [Mon, 3 Aug 2015 10:20:49 +0000 (12:20 +0200)]
Removed state_global from mdrun energy-summation

state_global was used only when MD_READ_EKIN was set, ie. when
restoring KE data when restarting from checkpoints. So there is
no use passing it to every call to compute_globals.

Accordingly, moved use of restore_ekinstate_from_state().

Also added some docs and const correctness.

Refs #1793

Change-Id: I937f397602c761c92cd8e48121b56b1805a05470

8 years agoRemove "support" for twin-range with VV integrators
Mark Abraham [Mon, 3 Aug 2015 20:08:31 +0000 (22:08 +0200)]
Remove "support" for twin-range with VV integrators

Group-scheme twin-range non-bonded interactions never worked with
VV+constraints, and removing it was a to-do item. There are no plans
to make it work with VV, and there are plans to remove the twin-range
scheme entirely, as well as rework leap-frog more closerly into the
Trotter scheme.

Refs #1137, #1793

Change-Id: Ibd70b5397568bfcd328cd6dd1c5c99384d7aaca8

8 years agoMerge branch release-5-1
Mark Abraham [Mon, 16 Nov 2015 10:47:43 +0000 (11:47 +0100)]
Merge branch release-5-1

Conflicts only from version numbers

Change-Id: I78235cce0c4fd7bcf4235dd888e1aef739d46001

8 years agoRemove AdResS
Mark Abraham [Tue, 10 Nov 2015 16:33:17 +0000 (17:33 +0100)]
Remove AdResS

This feature will disappear with the group scheme, so we might as well
get it out of the way first. Doing this removal on its own might help
re-implement some time, if someone was keen.

Removed bVir, bPress, bSurft fields of t_mdebin, because all MD
algorithms now support such calculations.

gmx grompp now issues a fatal error if the main adress .mdp option is
on, and otherwise ignores the obsolete fields (like we do with other
.mdp options we've removed).

mdrun can read old .tpr files, but issues a fatal error if AdResS was
active in them.

gmx dump and gmx compare ignore all AdResS related fields.

Other tools can still read such .tpr files for their other content.

Removed Sebastian Fritsch from GROMACS 2016 contributor list, since he
only worked on AdResS features. Christoph Junghans made other
contributions that are still useful, and so remains.

Removed obsolete literature references

Also fixed some incorrect doxygen of init_forcerec().

Part of #1852

Change-Id: I22fa0fe480148aeda0ace194646a5ec2f3d20a8c

8 years agoAdd EnumOption with support for proper enum types
Teemu Murtola [Fri, 21 Aug 2015 10:10:31 +0000 (13:10 +0300)]
Add EnumOption with support for proper enum types

Generalize EnumIntOption such that it can now store the output into a
proper enum type, making it easier to write code where the compiler can
check for correct usage of the enums (i.e., give an error for
unintentional mixing of enum types, or for implicit int-to-enum casts).

Change-Id: Idcdd671f555327a3e3dad521b92d50930cb6e281

8 years agoMerged legacyheaders/types/inputrec.h into mdtypes/inputrec.h
David van der Spoel [Thu, 12 Nov 2015 19:30:27 +0000 (20:30 +0100)]
Merged legacyheaders/types/inputrec.h into mdtypes/inputrec.h

Part of #1415.

Change-Id: I39885a01474173170bc6a7a7c2e54e7f21d64370

8 years agoMove responsibility for FFT description string
Mark Abraham [Thu, 12 Nov 2015 23:09:10 +0000 (00:09 +0100)]
Move responsibility for FFT description string

Configuring which FFT library will do the job is managed wholly by
CMake variables, so it seems reasonable to pass them through config.h
and use them to set the FFT description string at the only place that
needs it. This means the configuration-printing code doesn't have to
depend on the fft module.

Removed C++ header guard on fft.h while I was there.

Change-Id: Id20add978095d3ef998851bf68509afe2dbd3287

8 years agoMerged legacyheaders/types/state.h into mdtypes/state.h
David van der Spoel [Sat, 14 Nov 2015 11:57:54 +0000 (12:57 +0100)]
Merged legacyheaders/types/state.h into mdtypes/state.h

Also merged swap/enum.h into legacyheaders/types/enums.h
to be moved later out of legacyheaders.
Part of #1415, #1854.

Change-Id: Ie53f190d6798b81c531896de80ef25c060836479

8 years agoFix reporting of unused cycle suppressions
Teemu Murtola [Sat, 14 Nov 2015 20:08:53 +0000 (22:08 +0200)]
Fix reporting of unused cycle suppressions

Now also dependencies that do not exist at all are reported as unused
suppressions.  There was already one unnecessary suppression.

Change-Id: I75b16743789121c4b7ab6c92850e1a6a39f88059

8 years agoMoved all cool stuff to its own file
Mark Abraham [Thu, 12 Nov 2015 12:51:28 +0000 (13:51 +0100)]
Moved all cool stuff to its own file

Stopped reading data files from share/top, because this implementation
does string handling much more transparently. It also removes
dependency on fileio. Users can no longer change the databases
locally, which is less fun, but they can still change the source.

Removed cool quote dependency on gmx_rng. std::random is quite
appropriate in this case.

Stopped pdb2gmx writing a cool quote if a .gro title was missing

Now that gurgle.dat isn't a file, the management of how binaries
find the installed share/top is based on residuetypes.dat.

Change-Id: I625da0c8a4179934ff2f6cb47b5c2cb971d378d9

8 years agoFix walltime measurement with bgclang
Mark Abraham [Thu, 12 Nov 2015 07:10:37 +0000 (07:10 +0000)]
Fix walltime measurement with bgclang

BlueGeneQ + xlc was fine

BlueGeneQ + bgclang clock_gettime doesn't work properly, leading to
checkpoints every nstlist steps.

Change-Id: I8c58da39be7dd19a8aea2715b418586c42feba46

8 years agoMove network.h to gmxlib/
Teemu Murtola [Sat, 14 Nov 2015 04:53:09 +0000 (06:53 +0200)]
Move network.h to gmxlib/

- Suppress cyclic dependency caused by too high-level code that is
  currently present in checkpoint.cpp.
- Remove unused network.h use from forcetable.cpp to avoid another
  cyclic dependency.
- Remove all includes for network.h from other headers, and introduce
  them where required.
- Remove broken debug_gmx().
- Some cleanup.

Change-Id: Ib80787c4c2f16b12cc0f152f1017ea44dd69ecf4

8 years agoOptimized the bonded thread force reduction
Berk Hess [Wed, 21 Oct 2015 10:04:50 +0000 (12:04 +0200)]
Optimized the bonded thread force reduction

The bonded thread force reduction now uses fixed size blocks of 32
atoms. Instead of dividing reduction of the whole range of blocks
uniformly over the threads, now only used blocks are divided
(uniformly) over the threads.
This speeds up the reduction by a factor #threads (!) for typical
protein+water systems when not using domain decomposition.
With domain decomposition the speed up is up to a factor of 3.

Change-Id: I255b4336d315ef62ac9bc446c22313bf47baa097

8 years agoMove gmx_ga2la.h to domdec/
Teemu Murtola [Fri, 13 Nov 2015 08:01:11 +0000 (10:01 +0200)]
Move gmx_ga2la.h to domdec/

Doxygen documentation for the moved functions is missing, which makes
Jenkins complain.

Change-Id: I2b5748b2b96c599531c04109e4f657d2e4c6281e

8 years agoIon/water position swapping for multiple ion types and polyatomic ions
Carsten Kutzner [Mon, 22 Dec 2014 17:19:39 +0000 (18:19 +0100)]
Ion/water position swapping for multiple ion types and polyatomic ions

- Support for a user-defined number of ionic species
- Support for (small) polyatomic ions
- New protocol is able to process old CompEL .tpr files
- Cleaned up the code in a few places
- Updated swap-related .mdp options in the online user guide
  and in the PDF manual
- Updated complex.swap* regression tests in a separate commit
  to go along with this one
- Updated mdrun test fixture using the position swapping functionality

Change-Id: I89c8ad05726755d85e7f92223673624b7f8363be

8 years agoReplaced atom_id by int.
David van der Spoel [Fri, 13 Nov 2015 09:15:23 +0000 (10:15 +0100)]
Replaced atom_id by int.

Change-Id: Id5d3937e3293bf9e4cb8b4d35b981a289e6001b1

8 years agoRemove t_commrec dependency from cmdlineinit.cpp
Teemu Murtola [Fri, 13 Nov 2015 09:06:07 +0000 (11:06 +0200)]
Remove t_commrec dependency from cmdlineinit.cpp

This removes remaining legacyheaders dependencies from commandline/.

Change-Id: Iff17ee731823fc4979231944a1f53595e8a9f7fc

8 years agoMove gmx_detect_hardware.h to gmxlib/
Teemu Murtola [Fri, 13 Nov 2015 07:10:41 +0000 (09:10 +0200)]
Move gmx_detect_hardware.h to gmxlib/

Some cleanup while there.

Change-Id: Ifb2b097972fe3e901054992751fee622abd7d4f2

8 years agoMove nonbonded.h to gmxlib/nonbonded/
Teemu Murtola [Fri, 13 Nov 2015 08:17:47 +0000 (10:17 +0200)]
Move nonbonded.h to gmxlib/nonbonded/

Change-Id: Iacd6d204be0de7da0016206936c2afd76cafd3e4

8 years agoLet users build without compiler warnings
Teemu Murtola [Wed, 11 Nov 2015 05:06:28 +0000 (07:06 +0200)]
Let users build without compiler warnings

Our build system uses a very aggressive set of compiler warnings, in
particular for gcc.  There have been several occasions where new
releases of compilers have started producing more warnings, which is
impossible for us to anticipate.  There is little value in users seeing
such warnings, when the main intention is to catch more issues in
Jenkins.

Change the default build to not enable these warnings when building from
a source tarball.  CMake options GMX_DEVELOPER_BUILD=ON or
GMX_COMPILER_WARNINGS=ON both enable the old flags, and the latter is
used for Jenkins builds.  In most cases, these should not matter, since
the warnings are still on by default when building from a git
repository.

Change-Id: Ib9d3b2d1c3388b17808525615d13a1e66214edde

8 years agoMerge types/nsgrid.h into nsgrid.h
Teemu Murtola [Fri, 13 Nov 2015 08:27:01 +0000 (10:27 +0200)]
Merge types/nsgrid.h into nsgrid.h

Change-Id: Ic5b3180201bcc230633a3f0a2ba2219f51dde579

8 years agoUpdate includesorter.py
Mark Abraham [Thu, 12 Nov 2015 23:31:17 +0000 (00:31 +0100)]
Update includesorter.py

std::array was missing. Luckily, not actually a problem.

Change-Id: I0dbdd89086d129c7ce6a5b03efb709a1a837d4d2

8 years agoMoved genborn.h to mdlib
David van der Spoel [Wed, 11 Nov 2015 20:59:33 +0000 (21:59 +0100)]
Moved genborn.h to mdlib

Part of #1415

Change-Id: Ia2d734be40df97426348a153040cf311a3abf7a3

8 years agoReport unused cycle suppressions
Teemu Murtola [Thu, 12 Nov 2015 20:20:00 +0000 (22:20 +0200)]
Report unused cycle suppressions

This should make it less likely that we accidentally reintroduce a
dependency that was already once fixed, as currently it is very easy to
forget obsolete suppressions in place.

Change-Id: I686d15cccb342266ffb44e6e3cb52ed4cb92710e

8 years agoMoved txtdump.* to fileio.
David van der Spoel [Wed, 11 Nov 2015 20:51:17 +0000 (21:51 +0100)]
Moved txtdump.* to fileio.

Some cleanups in edsam.cpp too.

Part of #1415

Change-Id: I6cd58951eff1bac0dad75dbd448a958e57c767e7

8 years agoMoved copyrite.* to fileio from gmxlib and legacyheaders.
David van der Spoel [Wed, 11 Nov 2015 07:06:30 +0000 (08:06 +0100)]
Moved copyrite.* to fileio from gmxlib and legacyheaders.

Part of #1415

Change-Id: Id6cfb84cc683f88731fac7d80053aadc9b828806

8 years agoMoved inputrec.* from gmxlib and legacyheaders to mdtypes.
David van der Spoel [Wed, 11 Nov 2015 12:22:48 +0000 (13:22 +0100)]
Moved inputrec.* from gmxlib and legacyheaders to mdtypes.

Part of #1415

Change-Id: Idb00712d1b6ea9648a36d349f670790aaaf2c6d4

8 years agoMerge release-5-0 into release-5-1
Mark Abraham [Wed, 11 Nov 2015 15:50:05 +0000 (16:50 +0100)]
Merge release-5-0 into release-5-1

Change-Id: I292a7eab69893472723338b44b4653f725f7294f

8 years agoFixed (harmless) fp exception in wallcycle_sum
Berk Hess [Wed, 11 Nov 2015 09:33:47 +0000 (10:33 +0100)]
Fixed (harmless) fp exception in wallcycle_sum

Change-Id: I332e1d24f640df6d9459f5289a46bfd1ab7f9c71

8 years agoSupport inspecting expected error messages in tests
Teemu Murtola [Wed, 11 Nov 2015 04:44:26 +0000 (06:44 +0200)]
Support inspecting expected error messages in tests

Add a command-line option --show-error-messages to test binaries.
When set, each test that uses EXPECT_THROW_GMX to test for expected
errors prints out the error message from the expected error, making it
possible to easily inspect it.

It is not (yet) easily possible to write a test that actually asserts
something about the message.

Change-Id: Iede88ae96f31d0545c9ba56d827b3c6a98ebd88d

8 years agoRemove build system for boost
Teemu Murtola [Mon, 9 Nov 2015 16:23:56 +0000 (18:23 +0200)]
Remove build system for boost

Now that no code depends on boost, remove the build system and
associated documentation.  This is in a separate commit to make it
easier to revert, in case some dependency to boost is reintroduced.

Change-Id: I27e974abe6e44abe6c60371bf9f087f8d63cb667

8 years agoRemoved legacyheaders/typedefs.h
David van der Spoel [Wed, 4 Nov 2015 12:28:04 +0000 (13:28 +0100)]
Removed legacyheaders/typedefs.h

More cleaning up in legacyheaders. Mostly this patch involves
shuffling around include files, and adding a couple of forward
declarations. Renames gmxlib/typedefs.* to mdtypes/state.* and
introduces new utility/int64_to_int.cpp with header.
Introduced new directory mdtypes to resolve circular dependencies.
Right now state.* and history files
are the only files living there.

Part of #1415

Change-Id: I5dc59a2ca3bd1f9c5391f4b9deb9f116b30106fc

8 years agoRemove remaining boost dependencies
Teemu Murtola [Fri, 6 Nov 2015 20:41:54 +0000 (22:41 +0200)]
Remove remaining boost dependencies

- Implement that small part of boost::exception that we still depend on
  in exceptions.*.  For now, this is essentially the same
  implementation (but using C++11 features where applicable), but having
  this fully in our hands would allow some further simplification in,
  e.g., the way we initialize the exceptions.
- Copy boost/current_function.hpp to utility/.
- Add a few missing includes elsewhere.

The build system and remaining boost references will be removed in a
child change.

Change-Id: I657cde82033eb927f4a35e126329c0666f66548e

8 years agoBump patch version to prepare for 5.1.2
Mark Abraham [Tue, 10 Nov 2015 15:16:38 +0000 (16:16 +0100)]
Bump patch version to prepare for 5.1.2

Change-Id: Iefe307be5b3085555e7850566111dc2903b686db

8 years agoCorrect LINCS dHdl contribution
Berk Hess [Mon, 9 Nov 2015 14:52:10 +0000 (15:52 +0100)]
Correct LINCS dHdl contribution

The LINCS constraint contribution to dH/dlambda was missing a factor
1/delta_t^2 and thus orders of magnitude too small.

Fixes #1851

Change-Id: I864726d9a86a34207d2a02ad0803874fbfb33966

8 years agoRemove misc. copyrite.h functions
Teemu Murtola [Sat, 7 Nov 2015 07:27:01 +0000 (09:27 +0200)]
Remove misc. copyrite.h functions

- Replace Program() and ShortProgram() with calls to IProgramContext.
  This is now easier that there are at least basic catch-alls in place.
- Replace GromacsVersion() with gmx_version().
- Move gmx_thanx() to cmdlinemodulemanager.cpp, which was the only
  user (removed the non-essential use from gmx_anadock.cpp).

Change-Id: I46cd50cc9d4dfef3ff29aad067841b67948df7f8

8 years agoMove gmx_omp_nthreads.h and gmx_thread_affinity.h to gmxlib
Teemu Murtola [Fri, 6 Nov 2015 11:09:33 +0000 (13:09 +0200)]
Move gmx_omp_nthreads.h and gmx_thread_affinity.h to gmxlib

One cyclic dependency found, but suppressed for now.

Some cleanup, and remove the gmx_ prefix from thread_affinity.*.

Change-Id: I31a4e1216b90a70a42e5fd375c84623d08b56ddd

8 years agoMove PBC enums to pbc.*
Teemu Murtola [Fri, 6 Nov 2015 12:04:12 +0000 (14:04 +0200)]
Move PBC enums to pbc.*

This starts to break the dependency magnet that enums.h and names.h are,
and makes the selection/ module independent of legacyheaders/.

Change-Id: I70d17f913356be5492d3f38aa6f23f499584fe8b

8 years agoMove ns.h and nsgrid.h to mdlib/
Teemu Murtola [Thu, 5 Nov 2015 20:11:23 +0000 (22:11 +0200)]
Move ns.h and nsgrid.h to mdlib/

Two more headers out of legacyheaders/.  Remove unnecessary include from
nonbonded.cpp to avoid a circular dependency.

Change-Id: I8936e770407eef9f92abb0477b8e24c2b3d0ec7a

8 years agoMove force.h and vsite.h into mdlib/
Teemu Murtola [Thu, 5 Nov 2015 18:46:42 +0000 (20:46 +0200)]
Move force.h and vsite.h into mdlib/

- Remove a cyclic gmxlib <-> mdlib dependency by removing an unnecessary
  include.
- A tables <-> mdlib cyclic dependency broken by moving flags only used
  in functions in forcetable.h there from force.h.
- Minor cleanup in the moved files.

Change-Id: I544a77927c2ab245437e16b17fe80d32c2badb2c