alexxy/gromacs.git
10 years agoSix new quotes from classic literature.
David van der Spoel [Wed, 5 Mar 2014 20:08:18 +0000 (21:08 +0100)]
Six new quotes from classic literature.

Change-Id: Id881baea8d6eeedc70dec3975a4c3e20e788285a

10 years agoAdd RelWithAssert build type
Roland Schulz [Sun, 2 Mar 2014 19:40:47 +0000 (14:40 -0500)]
Add RelWithAssert build type

Works mostly like Release just without -DNDEBUG.

Also generalized some machinery for managing compiler/linker flags so
that we can have an easier time later when we reconsider how to manage
all of our build types.

Also minor corrective changes to the behaviour of other build types.

Change-Id: I70283cb6069cb772c287c0aef329d95b8eacd987

10 years agoRemove dependency on TNG in trxio.h
Roland Schulz [Wed, 5 Mar 2014 07:34:17 +0000 (02:34 -0500)]
Remove dependency on TNG in trxio.h

Partial fix for #1452

Change-Id: I59474ea08d40362fa9d10745a5fb1d4e12254b68

10 years agoReport MIC SIMD correctly
Roland Schulz [Thu, 27 Feb 2014 06:41:41 +0000 (01:41 -0500)]
Report MIC SIMD correctly

Avoid cmake warning because SIMD cannot be detected. And
avoid that version information prints "None". This is
needed because MIC doesn't use GMX_SIMD so that the same
setting (__MIC__) can be used both for native and (future)
offload.

Also added installguide section.

Change-Id: I4af3b13678aa5c3c69c60bda499c3691ac83dc53

10 years agoMerge "Merge release-4-6 into master"
Mark Abraham [Wed, 5 Mar 2014 06:23:00 +0000 (07:23 +0100)]
Merge "Merge release-4-6 into master"

10 years agoBuffer estimate now works with rvd-switch=0
Berk Hess [Fri, 28 Feb 2014 11:37:29 +0000 (12:37 +0100)]
Buffer estimate now works with rvd-switch=0

With rvdw-switch=0, the Verlet buffer estimation code would divide
by 0. The estimate for vdw-switch functions now use the exact 3rd
derivative of the potential at the cut-off iso estimating the 2nd.
grompp now prints a note with rvdw-switch < 0.5*rvdw.
Updated estimate formula in the manual and added a missing factor
of 2 (the code did use the factor of 2).

Change-Id: Ia259d703515f69b0ed3390e2f7be671e0a15bd5f

10 years agoCheck zlib can actually be linked
Roland Schulz [Thu, 27 Feb 2014 05:53:18 +0000 (00:53 -0500)]
Check zlib can actually be linked

Only use zlib compression in tng if zlib can really be linked.
This is equivalent to ee26e1264 for libxml2.

It is slightly simpler than the approach in gmxTestLibXml2
and CheckLibraryExists could be used there too.
This does not detect potential linking errors with shared
libraries similar to those solved in #740 for FFTW.

Fixes #1435

Change-Id: I5009e50b6caf810a12e71ecd83bde2edb21a2b32

10 years agoAvoid segfault when comparing tpr
Roland Schulz [Mon, 3 Mar 2014 23:22:31 +0000 (18:22 -0500)]
Avoid segfault when comparing tpr

Segfault was possible if number of idef didn't match

Change-Id: I62315e3340eec8acf14c01d14917392bc63e46e0

10 years agoAdd enum and docs for using tpx_version
Mark Abraham [Sun, 2 Mar 2014 16:53:40 +0000 (17:53 +0100)]
Add enum and docs for using tpx_version

Documented procedure for having hassle-free feature branches and
ensuring merges into main branch cannot silently cause problems.
Added an enum to make the process work smoothly.

Change-Id: I69b87f9bac0b51784e70f8a618808ef086951343

10 years agoMerge release-4-6 into master
Roland Schulz [Mon, 3 Mar 2014 20:31:54 +0000 (15:31 -0500)]
Merge release-4-6 into master

Conflicts:
admin/installguide/installguide.tex

3643d2a Add fatal error for Andersen+constraints+DD ignored
because already in master.

Change-Id: I6b3346503036e5b31bcc929daa5bcc9a04dde3bc

10 years agoFix calling SIMD group kernels
Mark Abraham [Mon, 3 Mar 2014 16:34:53 +0000 (17:34 +0100)]
Fix calling SIMD group kernels

The #define of GMX_SIMD*_OR_HIGHER takes place in simd.h, which got
changed late in the evolution of the recent SIMD-module patch, in
order to reduce unwanted module dependencies. However, the explicit
dependency of the group kernel setup code on the SIMD module was not
added. (It seems that the dependency on the old SIMD macros.h was been
satisfied transitively.) In effect, this turned off group-scheme SIMD,
but the silent fallback to C kernels meant there was no red flag until
we got around to measuring performance.

Change-Id: I78842cb191f6188fe4188800399efd2ed99e5543

10 years agoFix incorrect grid cell size in g_sas -nopbc
Teemu Murtola [Fri, 28 Feb 2014 04:33:59 +0000 (06:33 +0200)]
Fix incorrect grid cell size in g_sas -nopbc

Fixes #1445

Change-Id: I798fc8fe96608633f26d9a3500f83f39b44af008

10 years agoMove default library path search to program context
Teemu Murtola [Sun, 12 Jan 2014 18:37:08 +0000 (20:37 +0200)]
Move default library path search to program context

The default library path search is now implemented in
CommandLineProgramContext, and accessible through the generic interface.
This provides the following benefits:
 - All the magic for finding stuff from the binary path is in a single
   place, under the commandline/ module, where it belongs.
 - Code using the library path is now in C++, fixing some potential
   buffer overruns and removing the need for some utility code.
 - Programs using the Gromacs library can customize how the library data
   files are found.
 - PATH_SEPARATOR is no longer exposed outside path.cpp, encapsulating
   this detail.
 - The library path is only searched once during the execution of the
   binary, reducing the amount of file I/O done if multiple data files
   are accessed.
 - The library path is printed in the startup header, making it explicit
   where they are read (helpful in particular if there are problems with
   it, or the user may have multiple installations).  The GMXLIB
   override doesn't currently affect this printout; maybe it should, but
   I don't want to put the environment variable (and the support for
   multiple directories) into the program context.

Change-Id: I4d099215ef7e1f269d4c7a42989835d980bc1566

10 years agoAdd fatal error for Andersen+constraints+DD
Mark Abraham [Mon, 24 Feb 2014 16:31:07 +0000 (17:31 +0100)]
Add fatal error for Andersen+constraints+DD

This combination produced a temperature that was 6.5 degrees higher
than the same with one domain, for a 1ns PME lysozyme in water
simulation.

Change-Id: I9f80276c47de955a5053bcabb6fe7c9bfdceaf0e

10 years agoswitch ld_seed from int to gmx_int64_t
Christoph Junghans [Mon, 3 Feb 2014 20:52:32 +0000 (13:52 -0700)]
switch ld_seed from int to gmx_int64_t

* allows more than 4,294,967,295 different seeds for ld
* tpx version bumped, used new style for magic version constants
* changed printf format strings to conform to new type

Change-Id: Id661ca331a100dc942ac978cc1b50cfdade09731

10 years agoAdded CUDA LJ-PME nbnxn kernels
Szilard Pall [Tue, 25 Feb 2014 20:39:07 +0000 (21:39 +0100)]
Added CUDA LJ-PME nbnxn kernels

This change implements CUDA non-bonded kernels for LJ-PME introduced
in the Verlet scheme with 99029d.

The CUDA kernels implement geometric as well as Lorentz-Berthelot (LB)
combinations rules (unlike the CPU SIMD) mostly because even though PME
is very slow with LB, it is still beneficial to let the user offload the
non-bondeds to a GPU and potentially bump up the cut-off to further
reduce the CPU PME load.

Note that as now we have 120 kernels compiled for up to four different
target architectures, the nbnxn_cuda module takes a very long time to
build and can become the bottleneck during compilation. We will deal
with this later.

Change-Id: I819b59a8948da0c8492eac6a43d4a7fb6dc98354

10 years agoBumped TNG to latest version.
Magnus Lundborg [Sat, 1 Mar 2014 11:39:22 +0000 (12:39 +0100)]
Bumped TNG to latest version.

Change-Id: Id3ca6c18c1f51640997829bd8ad251a7ca91d04f

10 years agoImproved CUDA non-bonded kernel performance
Szilard Pall [Fri, 28 Feb 2014 21:11:08 +0000 (22:11 +0100)]
Improved CUDA non-bonded kernel performance

Some old tweak which was supposed to improve performance had in fact
the opposite effect. Removing this tweak and with it eliminating
shared memory bank conflicts it caused improved performance by up
to 2.5% in the force-only CUDA kernel.

Change-Id: I7fcb24defed2c68627457522c39805afc83b3276

10 years agoResidual SIMD Doxygen improvements
Teemu Murtola [Mon, 27 Jan 2014 18:55:00 +0000 (20:55 +0200)]
Residual SIMD Doxygen improvements

- Add a link to the overview documentation from the module page.
- Remove some trailing spaces.

Some issues noted, but not fixed here:
- \nosubgrouping would make the file pages look more consistent, if it
  worked for files...
- Some of the SIMD routines are not included in any named group, making
  them appear separately at the end of the documentation.
- The list of members on the SIMD module page is exceedingly long,
  making it hard to find things there.  Would require some thinking on
  how to best solve this.

Change-Id: I628f321172a3c3e8f4874e166c48e12763d1490e

10 years agoMisc. Doxygen configuration changes
Teemu Murtola [Mon, 27 Jan 2014 18:55:00 +0000 (20:55 +0200)]
Misc. Doxygen configuration changes

- Adjust Doxygen preprocessor behavior such that it actually parses
  #ifdefs in the code.  Otherwise, some parts of the SIMD code seemed to
  get ignored.
- Extract static functions on all levels of documentation for
  consistency (and we may end up with some static inline members in
  public headers; currently at least vec.h qualifies).
- Remove unnecessary excludes now that VERBATIM_HEADERS=NO already
  excludes the unwanted files.
- Some other minor cleanup.
- Move member groups higher up in the layouts, since they generally are
  the most interesting part.

Change-Id: Iea04772628716ed12f44cd4465c2027f4670bfae

10 years agoConvert gmx-sas to the C++ framework
Teemu Murtola [Sat, 26 Oct 2013 05:25:28 +0000 (08:25 +0300)]
Convert gmx-sas to the C++ framework

An example of converting a non-trivial analysis tool to the new
framework.  Most functionality is intact, but the command-line interface
is changed a bit.  Changes in behavior:
 - Writing a position restraint file is not implemented.  Would not be
   very difficult to add.
 - Solvation free energy estimates are written into a separate file
   instead of the main output file, and only if requested with an -odg
   option.
 - The calculation group is specified as a selection with -surface.
   Can be a dynamic selection.  The total area of this group is always
   written out.
 - There can be 0..* extra output groups, specified as selections with
   -output.  All can be dynamic, and must always be a subset of the
   calculation group.
 - There is no longer a separate concept of hydrophilic and hydrophobic
   surface area.  The user can trivially calculate such things by
   providing two different output groups.  The old hydrophobicity
   definition is easily expressed as "... and charge {-0.2 to 0.2}".
 - tpr file is no longer required for most of the output.
 - Output precision is different from the old tool.  The current
   precision (fixed to three decimal places) should be sufficient for
   most uses, but it could be considered to use %g for formatting like
   the old tool if really necessary.

Future TODOs:
 - Consider if the legends on the plots could be improved.
 - Add unit tests for the actual surface area calculation routine.

Part of #665.

Change-Id: Iee60c13b927b3b63b6e218164cd961971f2f3fce

10 years agoAdd support for non-uniform X axis in array data
Teemu Murtola [Thu, 27 Feb 2014 05:02:02 +0000 (07:02 +0200)]
Add support for non-uniform X axis in array data

It is now possible to construct AnalysisArrayData objects that have a
non-uniform X axis.  AnalysisDataAverageModule can use this to provide a
more meaningful X axis in the output plot in case the values correspond
to, e.g., a set of atoms.

Change-Id: I578f6944d4ff51c315d068b011b705be2a4be00a

10 years agoImprove support for data sets in C++ tools
Teemu Murtola [Wed, 26 Feb 2014 09:55:03 +0000 (11:55 +0200)]
Improve support for data sets in C++ tools

- If a data set does not set the number of columns, the framework now
  leaves it uninitialized (does not call startData() etc.), and the tool
  can check this when processing the frame.
- Make it possible to specify an output file in a tool unit test without
  actually testing the contents of the file.  This supports testing
  tools that only produce data in response to certain output options
  being set.
- Add support for specifying a comparison tolerance for a data set in a
  unit test.

Change-Id: I49794c93336c22c07f1a745d28d1b4f6f856b25b

10 years agoCUDA kernels for switched LJ
Szilard Pall [Fri, 10 Jan 2014 11:46:15 +0000 (12:46 +0100)]
CUDA kernels for switched LJ

This change adds CUDA GPU kernels for force and potential switching,
implemented in the Verlet scheme for CPUs in f3acaf.

Change-Id: I73a83d352924379d9005104fa59f3478d3e684b0

10 years agoImprove floating point comparisons in unit tests
Teemu Murtola [Sun, 23 Feb 2014 19:42:17 +0000 (21:42 +0200)]
Improve floating point comparisons in unit tests

Improve basic floating point comparison support:
- Replace EXPECT_NEAR_TOL with a more flexible alternative that allows
  specifying various tolerances.
- Some Doxygen improvements in testasserts.h.

Additionally, make the reference data framework use the new approach:
- Add a tolerance setting to the reference data framework, and make the
  default tolerance a lot stricter.
- Store the reference data with enough precision to allow lossless
  roundtrips.  This makes them more difficult to inspect visually with
  the XSLT files, but that can be addressed separately.
- Run FFT tests with GMX_FFT_FLAG_CONSERVATIVE to make the results with
  FFTW have less variance.  The 3D FFT tests were already using this,
  but others weren't.  Set the tolerance for the FFT tests based on a
  bit of testing of what works.  It should now pass even without the
  conservative flag, at least most of the time.  The tolerance is still
  lower than what it was earlier even for single, and a lot stricter for
  double.
- Regenerated all reference values from a double-precision build.
  For the FFT tests, used fftpack without optimizations.

Change-Id: I187dd9be20fd17cc8b3e779dcd9dbad34043bb00

10 years agoRemove Cygwin+MingW from installguide
Roland Schulz [Wed, 26 Feb 2014 22:26:26 +0000 (17:26 -0500)]
Remove Cygwin+MingW from installguide

MingW was never supported (#448). And Cygwin is currently
not working. Until/Unless it is working the guide shouldn't
claim support.

Change-Id: I6558b95bc47b80f7d97a7960587e83e959682990

10 years agoFree-energy now works with the Verlet scheme
Berk Hess [Tue, 26 Nov 2013 07:52:16 +0000 (08:52 +0100)]
Free-energy now works with the Verlet scheme

Implemented perturbed non-bonded interactions with the Verlet
by masking them from the nbnxn pair lists and storing them in an
old-fashioned group neighbor list. This way we keep a single
free energy kernel.
The free energy kernel uses OpenMP atomic for reductions.

Also fixed grompp setting nstcalcenergy=0 with nstenergy=0.

Change-Id: I5a6a7e84b46e06250d141e2e08cb3a11077cddab

10 years agoFix -Wmaybe-uninitialized warnings in some files
Alexey Shvetsov [Fri, 29 Nov 2013 18:54:50 +0000 (22:54 +0400)]
Fix -Wmaybe-uninitialized warnings in some files

Also clean-up and clarification of clean_vsite_dihs.

Change-Id: Ica4b1d17039e23bc2274a20fe5abca18295a7593
Signed-off-by: Alexey Shvetsov <alexxy@omrb.pnpi.spb.ru>
10 years agoMisc. Doxygen build system improvements
Teemu Murtola [Wed, 26 Feb 2014 05:08:53 +0000 (07:08 +0200)]
Misc. Doxygen build system improvements

- Check Doxygen version when running one of the Doxygen targets, and
  produce a note that states the expected version if there is a
  mismatch.
- Check the result of the Doxygen process and fail the build if the
  program returns an error code.
- Add a tag to all warnings that identify the type of documentation that
  produces them.  This should make it easier to understand the Jenkins
  warnings in the case not all documentation types produce a certain
  warning.

Change-Id: I030c0b2c69958fe41f0b964399cb1c2e1b250e77

10 years agoAdded message to warn that group kernels are deprecated.
Erik Lindahl [Mon, 24 Feb 2014 23:06:24 +0000 (00:06 +0100)]
Added message to warn that group kernels are deprecated.

Nothing will change for now, but both grompp and mdrun now
warn that we will remove the support for group kernels in
a future version when all interaction forms are supported by
the verlet cutoff scheme (tentatively a year from now).

Change-Id: Id00a67e44e60818cb0e6f1897d6939f53ea01540

10 years agoUpdating and improving Andersen thermostat documentation
Michael Shirts [Tue, 25 Feb 2014 03:28:21 +0000 (22:28 -0500)]
Updating and improving Andersen thermostat documentation

Added mdp options for andersen thermostat, and updated to
reflect changes in 5.0, plus add a citation for one of the assertions.

Change-Id: Ia713a4f2dd39dd5224952be334d8953b6613a66e

10 years agoICC aliasing optimization flags
Roland Schulz [Wed, 26 Feb 2014 06:20:57 +0000 (01:20 -0500)]
ICC aliasing optimization flags

GCC already uses -fstrict-aliasing (-ansi-alias). Thus it is safe
to also use this for optimization in ICC. const/non-const aliasing
shouldn't be used anywhere either and should be safe too.

Change-Id: I6a1b10c3d00bc2473a25a15e26934f61c046157d

10 years agoUse reduce in pme
Roland Schulz [Mon, 10 Feb 2014 21:30:50 +0000 (16:30 -0500)]
Use reduce in pme

Use the reduce added to the simd module. Also fixes that
aligned store was used for possible unaligned stack buffer.

Change-Id: I5e08b0a0998fe5371148d1af9668fd6f2ecd5934

10 years agoRedesigned SIMD module and unit tests.
Erik Lindahl [Wed, 22 Jan 2014 17:30:10 +0000 (18:30 +0100)]
Redesigned SIMD module and unit tests.

Second part of the commit (after renaming), which contains
the actual functionality changes. This new version
implements a complete interface layer that
is architecture-agnostic, while each architecture has a
separate implementation file with both single, double and
simd4 versions (that can be used simultaneously). simd.h
contains a number of defines that describe the capabilities
of the instruction set, and there is a new documentation
module for Doxygen. This will be used in a later patch
for modularized verlet kernels. With that, we hope to remove
all architecture-specific SIMD code from the rest of Gromacs.
All SIMD math functions have been redesigned so they work even
with instruction sets that do not support integers (and even
on sets that do not support logical operations), and
accuracy has been improved for double precision sincos() by
removing the table implementation. To try to reduce
the size of this relatively large patch I have kept a few
header files (in particular the math files in gromacs/simd)
to avoid touching all the group kernels. With this new kernel
module, 256-bit AVX2 SIMD acceleration will now automatically be
enabled for the verlet kernels. Group kernels will use AVX_256
in this case. Also incorporates changes from Teemu to make
static and gmx_inline library functions appear correctly in
the Doxygen documentation.
Relocation of nbnxn SIMD setup from nb_verlet.h to nbnxn_simd.h
in mdlib by Berk. Now the nbnxn SIMD setup is completely internal.
Replaced the pr4 functions in the nbnxn kernels by simd4.
The nbnxn kernel selection is now nearly architecture agnostic.
Also enabled FMA again for pmecorr SIMD functions in double.

Change-Id: I643da75f346f120500682bcc4bcc1333a635db70

10 years agoReplace all mdrun rngs with cycle based rng
Roland Schulz [Mon, 20 Jan 2014 21:33:02 +0000 (16:33 -0500)]
Replace all mdrun rngs with cycle based rng

The stateful random rumber generator (rng) used previously doesn't
produce reproducible results in parallel for sd/bd and doesn't
produce reproducible results for continutation for replica exchange.
The rng state has been removed from the checkpoint file.

Fixes #995

Change-Id: Id2a5d064cf363c54db3c16a0675cfeba553feeaa

10 years agoFix GMX_PRIu32 and GMX_PRIu64 for MSVC
Teemu Murtola [Wed, 26 Feb 2014 07:19:46 +0000 (09:19 +0200)]
Fix GMX_PRIu32 and GMX_PRIu64 for MSVC

Change-Id: Ib7490c66687d98a135338d51de41bfda35b8938d

10 years agoAdd ThreadSanitizer build type
Mark Abraham [Fri, 18 Oct 2013 15:47:25 +0000 (17:47 +0200)]
Add ThreadSanitizer build type

This might be useful for helping detect misuse of thread
operations.

It does run quite slowly, so use in an automatic per-patch Jenkins
build is probably not a good idea. In any case, it should be run
on a real workload, as well as toy examples.

As discussed in the CMake file that manages the new build type, using
TSan requires that CMake can demand that atomic operations are not
used. Accordingly, the atomic.h functionality and the CMake atomics
testing that uses it have some changes so all the ways atomic.h is
used work correctly. Documentation of how and why things work is
expanded.

A benign race condition with the (unused) return value of
mdrunner_start_threads is fixed.

Change-Id: I0da01c0bedeec2e49d4456d757c54fbe58c56ef4

10 years agoFixes seperate PME nodes without LJ-PME
Berk Hess [Tue, 25 Feb 2014 06:29:54 +0000 (07:29 +0100)]
Fixes seperate PME nodes without LJ-PME

The very recent LJ-PME nbnxn patch dereferenced a NULL pointer
with seperate PME nodes without LJ-PME. Also LJ parameters were
communicated when not needed.

Change-Id: I40bd0c8f96294b54599afee6021139b71cc8c860

10 years agoKeep compilers happy on BG/Q
Mark Abraham [Wed, 12 Feb 2014 15:57:29 +0000 (16:57 +0100)]
Keep compilers happy on BG/Q

Change-Id: I99439b002f95145504c359fddc61dc701431d8f0

10 years agoClean up options for domain decomposition
Mark Abraham [Sat, 22 Feb 2014 15:00:59 +0000 (16:00 +0100)]
Clean up options for domain decomposition

Documented mdrun options better. Documented the environment variables.
Renamed the environment variables to better describe their function.
Renamed the helper function because not all of these environment
variables relate to numbers of steps.

Change-Id: I12dba40f8cdf489ea23c3f4dd8810efde54a4aaf

10 years agoImplemented LJ-PME nbnxn kernels
Berk Hess [Thu, 5 Dec 2013 09:27:59 +0000 (10:27 +0100)]
Implemented LJ-PME nbnxn kernels

Implemented nbnxn SIMD and C kernels for LJ-PME. CUDA kernels will
follow later.
The nbnxn LJ-PME kernels subtract the full mesh contribution, using
the mesh C6 coefficients (usually geometrically combined). This gives
much higher accuracy for non-geometric force-fields.
The group kernels will soon be changed to use the same setup.

Change-Id: Ibbc6eef1c62a97ff6b2e3013f19594946581e44e

10 years agoFixed bug with LJ pot-switch in 4xN kernels
Berk Hess [Thu, 20 Feb 2014 09:01:22 +0000 (10:01 +0100)]
Fixed bug with LJ pot-switch in 4xN kernels

The recent commit of LJ switch functions in the nbnxn kernels
contained a bug in the 4xN kernels which caused the force on some
pairs not to be switched.

Change-Id: Ib4303223924e92d7e84641071a4a56955de70274

10 years agoPermit warning-free use of Andersen thermostat
Mark Abraham [Mon, 24 Feb 2014 04:32:06 +0000 (05:32 +0100)]
Permit warning-free use of Andersen thermostat

Simulations using Andersen thermostat don't need to remove center of
mass motion, because that is intrinsic to the algorithm. Using it with
nstcomm > 1 generated a warning that center-of-mass removal is
unnecessary. Using it with nstcomm == 0 generated a warning that
ice-cube artifacts might be generated. Resolved by suppressing the
latter warning for both Andersen thermostats.

Change-Id: I6b2c1594cabd81964b3ba1ebc5dd61e0f1debb5e

10 years agoSuppress icc warning for Boost 1.55 use of #pragma once
Mark Abraham [Sat, 22 Feb 2014 18:13:35 +0000 (19:13 +0100)]
Suppress icc warning for Boost 1.55 use of #pragma once

Change-Id: Ib187cf34ba2c72a2c57fc55cfd26154508e9543b

10 years agoRemoved deprecated Encad FF.
Rossen Apostolov [Thu, 20 Feb 2014 16:21:50 +0000 (17:21 +0100)]
Removed deprecated Encad FF.

Change-Id: Ib7f5c3d9920307a808dde9ef13b0f042827eb8ca

10 years agoFix load_lj_pair_params2 for MIC
Roland Schulz [Thu, 20 Feb 2014 08:57:56 +0000 (03:57 -0500)]
Fix load_lj_pair_params2 for MIC

Change-Id: I181bf5c6190d19ee2cb7bcf629c1b81e849e6373

10 years agoUpdated Boost to latest 1.55.0
Roland Schulz [Wed, 29 Jan 2014 19:07:28 +0000 (14:07 -0500)]
Updated Boost to latest 1.55.0

Shouldn't have any disadvantage because boost still has support
for e.g. GCC 3.3. Newest version should work better with newer
compilers (e.g. no warnings).

Reduced the number of changes in boost to two:
- Virtual dtor fix is not required anymore
- Removed #error which was aimed at producing compiler errors
  for removed dependencies. Because this internal boost is only
  meant to be used by Gromacs we shouldn't have to detect
  odd usage of BOOST_* defines.

Fixed two comipler warnings:
- Applied nvcc.path from https://svn.boost.org/trac/boost/ticket/9392
- Commented out unsed parameter

These warnings should be fixed in future boost versions but if not and
the changes have to be reapplied, check Gerrit for the diff. Patch Set 1
contains the unmodified version without the fixes.

Change-Id: I09179891f9979a5997171a579a6a552621a693df

10 years agoMerge "Merge release-4-6 into master"
Roland Schulz [Fri, 21 Feb 2014 20:16:23 +0000 (21:16 +0100)]
Merge "Merge release-4-6 into master"

10 years agoAdded new amber99sb-ildn-bsc0 force field.
Nina Fischer [Thu, 20 Feb 2014 10:48:07 +0000 (11:48 +0100)]
Added new amber99sb-ildn-bsc0 force field.

It extends the original amber99sb-ildn with new
parameters for nucleic acids, while the protein
parameters are the same in both force fields.

Change-Id: I665ea598015428ced103ce18f6665afd0d5ede8c

10 years agoportability aspects in install guide + minor tweaks
Szilard Pall [Fri, 7 Feb 2014 18:57:09 +0000 (19:57 +0100)]
portability aspects in install guide + minor tweaks

Added information on portability aspects related to CPU instruction
sets, related to #1428.

Additionally, made several minor updates and tweaks related to
compilers, platforms, cmake, etc.

Change-Id: I621262c939c119e5bdd5e7c91dda0ae3ffc60b7b

10 years agoMerge release-4-6 into master
Roland Schulz [Fri, 21 Feb 2014 00:53:08 +0000 (19:53 -0500)]
Merge release-4-6 into master

Changed BUILD_CPU_ACCELERATION to GMX_SIMD in
CMakeLists.txt.

Reverts change to src/mdlib/pme_simd4.h. Corresponding
fix for master is under review as I5e08b0a09.

Removed reference to PD in message in shellfc.c.

Conflicts (all trivial):
CMakeLists.txt
src/contrib/fftw/CMakeLists.txt
src/gromacs/gmxlib/gmx_detect_hardware.c
src/gromacs/legacyheaders/shellfc.h
        src/gromacs/gmxlib/copyrite.cpp

Change-Id: I2d43520ae8833055eff51d431e47cd8b90d3a687

10 years agoReinstate shell code with DD
Mark Abraham [Thu, 20 Feb 2014 21:59:41 +0000 (22:59 +0100)]
Reinstate shell code with DD

Further work on the complex/sw test case in the 5.0 regressiontests
branch reveals that the initial conditions may have been the reason
for the problems observed with DD and more than one node, rather than
the implementation.

Refs #1429

Change-Id: I26ff6d9f8c79605afa794cae4761b5643b712124

10 years agoRemove particle decomposition
Mark Abraham [Sat, 12 Oct 2013 00:27:28 +0000 (02:27 +0200)]
Remove particle decomposition

The paths that are eliminated are those for which MD_PARTDECOMP was
needed, those triggered by PARTDECOMP(cr), and any for which PAR(cr)
&& !cr->dd.

Reviewers, please note
* that for the purposes of this patch, OpenMP is not a form of
  parallelism,
* the definition of DOMAINDECOMP(cr) in commrec.h,
* that TPI and NM can run in parallel, but use neither PD nor DD,
* multi-simulations run in parallel but need not use DD, so
* we still need both PAR(cr) and DOMAINDECOMP(cr), and
* I have generally left the indenting alone to make for easy review,
  but we will uncrustify before merging

Summary of changes in this patch:

Removed
* code triggered by MD_PARTDECOMP
* code triggered by PARTDECOMP(cr)
* anything decomposition-related with "pd" in the name (but the name
  clash with x86 vector intrinsics is unfortunate)
* t_mdatoms field called start (DD does atom number remapping)
Note that bPDvsitecomm was never set anyway!
* manual section

Renamed two functions with "pd" in their name changed to "serial"
because they are still needed there (and moved them?)

Deleted files, functions and function paramters that only supported PD
code paths.

Cleaned up
* use of DOMAINDECOMP(cr)
* a bit of Generalized Born code that should have been static or
  was unused
* bcast_state machinery can now be much simpler; still does the right
  thing, but does it further behind the scenes and easier to
  understand
* made explicit the assumption of replica exchange that the
  integrator is dynamical, which makes for some minor
  simplifications

Refs #1292

Change-Id: If029f16e6b4b06d58d465afe072a3cde6481479e

10 years agoadded gmx_is_{single,double}_precision
Christoph Junghans [Tue, 18 Feb 2014 17:32:47 +0000 (10:32 -0700)]
added gmx_is_{single,double}_precision

* allows easy detection of the precision for cmake, autotools
  without parsing the output of gmx_print_version_info (no
  cross-compile support) or the output of strings command (unix
  only)
* linking against libgmx with/out -DGMX_DOUBLE will lead to
  unpredictable segfaults

Change-Id: I472f10ae374a1f42c94c55e156b53f8905bdf098

10 years agoFix aligned store to unaligned memory
Roland Schulz [Mon, 17 Feb 2014 22:23:33 +0000 (17:23 -0500)]
Fix aligned store to unaligned memory

Also fixes that unaligned store was used when not necessary.

Change-Id: I44bb222a07ec0af65198667787b8673b3c6cd2e7

10 years agoavoid mdrun crash when rdtscp is not supported
Mark Abraham [Fri, 31 Jan 2014 14:06:20 +0000 (15:06 +0100)]
avoid mdrun crash when rdtscp is not supported

When using rdtscp, mdrun now detects at runtime whether the CPU supports
this instruction and if this is not the case, it issues a fatal error
and instructs the user to recompile mdrun for the compute host. Note
that this will happen rarely, only when cross-compiling from a newer
host for a rather old one.

Additionally, when the user manually picks AVX, we also turn on RDTSCP
as all AVX-capable CPUs support it.

Also made CMake advanced cache option for GMX_USE_RDTSCP. This replaces
the previously hidden GMX_DISTRIBUTABLE_BUILD option.

Fixes #1428

Change-Id: I8bc884ef9ea8ea4661626b60490182ae2b302648

10 years agoAdd integration tests for replica exchange
Mark Abraham [Tue, 10 Dec 2013 07:02:52 +0000 (18:02 +1100)]
Add integration tests for replica exchange

Only NVT and NPT tested so far.

Added new convenience class for a value-parameterized mdrun
integration-test fixture.

Change-Id: I25211277d6979909f67378dc578e3d388a8abeda

10 years agoRename ffopen and ffclose to gmx_ff*.
Rossen Apostolov [Wed, 12 Feb 2014 13:14:42 +0000 (14:14 +0100)]
Rename ffopen and ffclose to gmx_ff*.

There are name clashes with e.g. PathScale compiler.

Fixes #1250.

Change-Id: I3e5e85d9335f2695515483d59d440276823624f0

10 years agoFix Reference Build
Roland Schulz [Mon, 17 Feb 2014 22:21:19 +0000 (17:21 -0500)]
Fix Reference Build

Rename (e5e37f2c62c) broke reference build

Change-Id: Id98b61f2af2e4731f57a775ee9c4057baf76587a

10 years agoAdd documentation for using Doxygen
Teemu Murtola [Sun, 9 Feb 2014 12:15:32 +0000 (14:15 +0200)]
Add documentation for using Doxygen

- Add a page that provides guidelines and examples for using Doxygen.
  Hopefully, this would make simple examples easier to find, and help
  people write correct comments from the beginning.
- Remove unnecessary \addtopublicapi and \addtolibraryapi.

Once the contents are there, it is easy to enhance the documentation by
adding content whenever noticing things that are tricky.

Change-Id: I319e30452004998df73c249f46570cb2254daa87

10 years agoImplemented nbnxn LJ switch functions
Berk Hess [Thu, 14 Nov 2013 08:59:50 +0000 (09:59 +0100)]
Implemented nbnxn LJ switch functions

The nbnxn C reference and SIMD kernels now support force and
potential switching, which are selected through vdw_modifier.
Both use analytical functions, since tables are expensive with SIMD.
Made the nbnxn kernel naming consistent with the group scheme.
Corresponding CUDA kernels will be added soon.

Dispersion correction always needs table generation, which had always
been a fortuitous side effect of something else, until this patch.

Change-Id: I52a1cda5ec7c3bdce6f3f2735ff7b13303ea5880

10 years agoMake some variable names less cryptic
Mark Abraham [Tue, 18 Feb 2014 18:03:39 +0000 (19:03 +0100)]
Make some variable names less cryptic

No changes to function

Change-Id: I910abe7d8f42186bfd43706d3389fca2f0995cc6

10 years agoFix outstanding references to "CPU acceleration"
Mark Abraham [Sun, 16 Feb 2014 22:36:56 +0000 (23:36 +0100)]
Fix outstanding references to "CPU acceleration"

Since we now use GMX_SIMD rather than GMX_CPU_ACCELERATION we
should be consistent.

Change-Id: I6a798870e5b89fc92bdbea18680e017101a2f704

10 years agoFix harmless bug with combination of group and twin-range
Mark Abraham [Fri, 14 Feb 2014 17:29:34 +0000 (18:29 +0100)]
Fix harmless bug with combination of group and twin-range

The combination of
* group cut-off scheme,
* coulomb-modifier != none,
* rcoulomb > rlist (ie. twin-range), and
* rlistlong == -1

was being treated by the wrong clause in readir.c because the check
for "might be zero at cutoff" did not consider the modifier. The only
behavioural difference was issuing a warning that there will be no
buffering.

The modifier checks have been refactored to make it possible to check
the modifier.

Also removed some useless checks for EVDW_SWITCH

Change-Id: Ic64f3f48be17f6d87230bc4060a31e1fb4343973

10 years agoExtend TestFileManager
Mark Abraham [Mon, 27 Jan 2014 19:43:04 +0000 (20:43 +0100)]
Extend TestFileManager

A test fixture may wish to change the output temporary directory, and
should be able to do so without perturbing the global state from which
the test TestFileManager object is initialized.

The only client of this feature (the setup code) is updated
accordingly.

Minor fixes to existing documentation.

Change-Id: I7ba7a82964c05f12de107710655b6320d42ae99c

10 years agoEnable more warnings
Roland Schulz [Tue, 11 Feb 2014 21:30:59 +0000 (16:30 -0500)]
Enable more warnings

- pointer arithmetic on void*
- increase warning level for ICC from 2 (=Wall) to recommended 3.
  Includes useful warnings such as:
  - statement has no effect
  - external/internal linkage conflict
- See gerrit for description of all disabled warnings.

Change-Id: I1c41119ed8bcee8dda8af0cbe2866b3e404a3992

10 years agoFix test reference data accidentally broken
Mark Abraham [Sun, 12 Jan 2014 22:23:11 +0000 (23:23 +0100)]
Fix test reference data accidentally broken

Change-Id: Ib622b126b0331c88acab924aff660211122f9d03

10 years agoRemove support for .g87 and .xyz I/O formats
Mark Abraham [Sun, 12 Jan 2014 22:23:11 +0000 (23:23 +0100)]
Remove support for .g87 and .xyz I/O formats

Aspects of support for these have been broken since before GROMACS
4.5. That support is sometimes interactive, and thus a poor fit for
the way GROMACS supports other trajectory and coordinate formats.
Other file-format conversion options exist; GROMACS does not have to
be a Swiss-army knife.

Removed undocumented features of gmx helix that required .g87 support
for no particularly good reason.

Uncrustified files in this commit

Change-Id: Iad4845fd66ad4c55f9a31965d33ded745656db53

10 years agoSmall enhancement of computational electrophysiology manual section.
Carsten Kutzner [Thu, 13 Feb 2014 17:08:23 +0000 (18:08 +0100)]
Small enhancement of computational electrophysiology manual section.

Added a note about what can be done if large membrane undulations turn out
to be a problem in a Computational Electrophysiology setup.

Change-Id: I5f50b4026ea1a8b88368b10c39d2207070c4740c

10 years agoImprove man page formatting slightly
Teemu Murtola [Sat, 15 Feb 2014 11:18:01 +0000 (13:18 +0200)]
Improve man page formatting slightly

- Don't add extra space whenever [TT]/[BB]/[II] is specified.  This may
  have been necessary 15 years ago, or has always been broken, but
  currently it adds a lot of forced double spaces and leading spaces
  onto man pages.  The text is much more readable without it.
- Merge all command line options into a single OPTIONS section. Divide
  it into groups using extra paragraphs in between.  Could possibly be
  formatted nicer, but that would require extra nroff trickery that we
  might rather get rid of.

Related to #1437.

Change-Id: I4b27b79604a1830914cd5d14d6581918f33bb107

10 years agoFix default enum values in help output
Teemu Murtola [Sun, 16 Feb 2014 04:48:39 +0000 (06:48 +0200)]
Fix default enum values in help output

nenum() does not return an enum value, but an index into the underlying
array, which means that the first element is 1 and not zero like the
code assumed.  The help output was off-by-one, and could error out if
some environment variable was set that was affecting the help output.

Fixes #1438.

Change-Id: Iec2f05c9ced55868902069ce59bc4979a6879f86

10 years agoFix some broken links in HTML pages
Teemu Murtola [Sat, 15 Feb 2014 05:34:44 +0000 (07:34 +0200)]
Fix some broken links in HTML pages

Links to programs need to be prefixed with the relative path, as well as
"gmx-".  Also added the "gmx " prefix to the displayed names.

Change-Id: I60bd0a58761a725804aa4c5b02619c3031ae7d26

10 years agoOne more bump of the TNG version.
Magnus Lundborg [Thu, 13 Feb 2014 13:49:39 +0000 (14:49 +0100)]
One more bump of the TNG version.

This is just to include the improved warning flag settings.

Change-Id: Idc1e0b43b963e8431cd943214c424012d09b6a4c

10 years agoRemoved option to use OpenMP with the TNG library.
Magnus Lundborg [Wed, 12 Feb 2014 08:02:24 +0000 (09:02 +0100)]
Removed option to use OpenMP with the TNG library.

OpenMP was only used for compiling a few of the examples. With
the latest version of the TNG library the detection is done when
compiling those examples and skipping them if OpenMP is not
available.

Fixes #1432

Change-Id: I76df67b10067f2fbc57a4cf0b1825875239e435d

10 years agoEnable TNG builds on Windows by default.
Magnus Lundborg [Wed, 12 Feb 2014 08:11:58 +0000 (09:11 +0100)]
Enable TNG builds on Windows by default.

With the latest version of TNG the problems encountered on
Windows should be fixed.

Change-Id: I52d7fd609d086ba4abe4eb8cd95337a58ee35641

10 years agoBumped TNG to latest version.
Magnus Lundborg [Wed, 12 Feb 2014 07:59:48 +0000 (08:59 +0100)]
Bumped TNG to latest version.

Change-Id: Iefbb35ce46f0c545a23b8bea6b90ad5e11caeffc

10 years agoRefactored 'solvate' and 'insert-molecules'
Mark Abraham [Mon, 3 Feb 2014 00:13:27 +0000 (01:13 +0100)]
Refactored 'solvate' and 'insert-molecules'

The use of "VDW radii" in these tools was misleading in both
documentation and code. VDW radii are used if they are found, but they
used to be scaled down via a hidden option, and the user had to
magically know what kind of number to give to -vdwd. Documented what
is going on here.

Made that hidden option public, and renamed -vdwd to -radius. Renamed
variables named r to be more reflective of their use as additive
inter-atomic exclusion half-distances. This clarified what "mk_vdw"
was really doing, and that a call to it should not be living at the
end of a function that reads in a conformation from a file. Renamed
lots of things and documented more behaviour. Freed some memory
that should have been freed all along.

This exposed some horrible use of t_atoms. Fixed the code to always
allocate on the heap, call the initializer and call the destructor.

Change-Id: I3f8bbbed07442ccc6cd8e563168f5a68736c6b40

10 years agoRe-fix compiler warnings with scanner.cpp
Mark Abraham [Mon, 3 Feb 2014 15:17:08 +0000 (16:17 +0100)]
Re-fix compiler warnings with scanner.cpp

The existing check for -Wno-deprecated-register worked with a pre-3.4
clang SVN release, but the release 3.4 compiler only has
-Wno-deprecated. Not sure if any compiler does or will support
-Wno-deprecated-register but even if it's wasted, it's not doing any
harm.

Change-Id: I274255415b66b889dc155472c5f81b6073cdce3e

10 years agoSplit genbox into 'solvate' and 'insert-molecules'
Mark Abraham [Sun, 2 Feb 2014 20:31:20 +0000 (21:31 +0100)]
Split genbox into 'solvate' and 'insert-molecules'

All working old functionality is retained in new 'solvate' and
'insert-molecules' programs. Registered genbox as obsolete, so someone
using gmx genbox gets a hint, which is also triggered by the old
symlink. No new symlinks, of course. Updated all mentions of genbox in
the whole repo.

For gmx solvate:
* Cleaned up unused functions
* Cleaned up unused headers
* Cleaned up useless command-line options
* Updated documentation
* Checked that its behaviour for writing velocities is OK (but there's
  no good way to test that)

For gmx insert-molecules:
* Cleaned up unused functions
* Cleaned up unused headers
* Cleaned up useless command-line options
* Updated documentation
* Added tests, worked out that -vdwd and spc216.gro were not required
  for a decent test and updated accordingly
* Renamed -cs to -f for consistency with other tools. It would be nice
  to have a hidden fallback so that -cs does the right thing, but the
  machinery does not exist.
* Added helpful check now that -ci is required (generic file I/O error
  previously)
* Fixed bug with gmx insert-molecules -ci and velocities. Old version
  would dereference v pointer because the insertion function does not
  return velocities for the inserted molecules.

Split the respective test cases into separate compilation
units. Consolidated functions called by both new tools into
read-conformation.[ch]. The naming and use of those functions are
horrendous, and will be fixed in the next patch.

genbox-addconf.[ch] is no longer specific to any tool, so renamed it
back to addconf.[ch].

Change-Id: I7781c3db189f5d95d5731e4e86cc0585f7d677c7

10 years agoFixed another vmdio issue.
David van der Spoel [Mon, 10 Feb 2014 17:18:09 +0000 (18:18 +0100)]
Fixed another vmdio issue.

An include that was missed previsouly in trxio.h.

Change-Id: Id7f491e402dec0ee6783d933e98692abb6ce9f1a

10 years agoUpdate stuff for old BlueGene
Mark Abraham [Fri, 7 Feb 2014 17:32:14 +0000 (18:32 +0100)]
Update stuff for old BlueGene

BlueGene/L is likely completely dead. We have no ability to
support SIMD on BlueGene/P (technically we can do 2-wide SIMD,
but there's probably issues and this platform is almost dead).

Change-Id: Ib607fd11f0b575bcddf4085351ceb2989529247d

10 years agoFirst part of commit for redesigned SIMD module - namechanges.
Erik Lindahl [Fri, 24 Jan 2014 20:04:47 +0000 (21:04 +0100)]
First part of commit for redesigned SIMD module - namechanges.

This patch contains the bulk part of trivial name changes
in preparation for the new SIMD module.
- Add the gmx_simd_ prefix, and _r suffix for real simd data.
  This makes the module more generic, and we separate the
  gromacs SIMD layer from x86 implementation better.
- epi32 (intel name to indicate 64-bit var extended to 128 bits)
  has been changed to int32 in types and defines.
- Negated-fused-multiply-add nomenclature has been changed
  so "-a*b+c" is fnmsub. This is the standard on both Intel
  and AMD, where most people have SIMD coding experience.
  My apologies for first recommending Berk to use the opposite.
- GMX_CPU_ACCELERATION_ strings have been changed to GMX_SIMD_,
  both in the code and in CMake.
- Defines like GMX_X86_SSE2 that indicate instruction set
  availability have received the _OR_HIGHER suffix to clarify
  that those are cumulative in contrast to the SIMD setting,
  which only indicates the highest level. These will be moved
  away from config.h to the simd headers in the next patch.
- GMX_SIMD_WITDH_HERE has been changed to GMX_SIMD_REAL_WIDTH.

Change-Id: I7a2567f7ddaf8ecd95a4f3b1162bbf03342b2b63

10 years agoAdded information about how to cite the TNG paper.
Magnus Lundborg [Thu, 6 Feb 2014 15:13:27 +0000 (16:13 +0100)]
Added information about how to cite the TNG paper.

Change-Id: I698582f296603f741842f99437bcf872a42682d7

10 years agoAdded safety check for fitting group in anaeig.
Jan Henning Peters [Mon, 10 Feb 2014 17:53:32 +0000 (18:53 +0100)]
Added safety check for fitting group in anaeig.

Previously, g_anaeig would not check the number of atoms in the selected
fit group against the number of atoms in the reference structure if this
was read from the eigenvector file (g_covar adds the reference structure
to the eigenvector file if fit and analysis group are identitcal). As a
result, anaeig would run out of bounds when selecting the atoms for
fitting, reading random values from memory.

This simple check should prevent this behaviour by terminating anaeig
with a fatal error similar to the one that is invoked if the group
selected for analysis has an incorrect number of atoms.

Change-Id: I63a1e1629144e539808d95d867e0ad0673480fdf

10 years agoMoved conditional cmake code for vmdio.
David van der Spoel [Mon, 10 Feb 2014 12:08:24 +0000 (13:08 +0100)]
Moved conditional cmake code for vmdio.

When moving the vmdio.c file to the fileio directory the
corresponding conditional was left in the gmxlib/CMakeLists.txt
file. This is corrected here.

Change-Id: I91a7123aebe639b89a19733ef972699a2c8c9630

10 years agoShell completions through Options
Teemu Murtola [Fri, 7 Feb 2014 18:52:53 +0000 (20:52 +0200)]
Shell completions through Options

- Implement shell completion generation for command line options
  specified through an Options object.
- Use this support to generate the list of options for the wrapper
  binary instead of hardcoding them.
- Use this support and the conversion from t_pargs/t_filenm to Options
  to generate the existing completions.  The only differences in the
  generated completions are in the order of the options and in changing
  "$n == 1" to "$n <= 1" and ".@(xtc|trr|...)" to "@(.xtc|.trr|...)".
- Extend some of the options to expose information necessary for this.

Related to #969 and #1410.

Change-Id: Ib77543367c38803ef186f6024a1af14feb806d80

10 years agoMove orientation restraints checks inside init function
Mark Abraham [Tue, 4 Feb 2014 15:29:15 +0000 (16:29 +0100)]
Move orientation restraints checks inside init function

This removes clutter from runner(), much like init_disre() already
does. Removed duplicate check for the number of orientation restraints
being zero. Removed an unused function parameter.

Change-Id: Icc6a08a2ed4af010e65bfe1f5e49b6c229454df1

10 years agoMake 'gmx -h' invariant wrt. provided options
Teemu Murtola [Fri, 7 Feb 2014 18:38:13 +0000 (20:38 +0200)]
Make 'gmx -h' invariant wrt. provided options

The help output no longer depends on what the user provided on the
command line.  To do this, initialize a separate copy of the options
holder for writing the help.  This decouples the module manager and the
actual help output a bit more.  Make the option holder implementation
shared through cmdlinemodulemanager-impl.h.

Change-Id: I82ea1e969c7d02eadcb2a9f519af30561cb19991

10 years agoRemove old help formatting code
Teemu Murtola [Mon, 23 Dec 2013 18:14:22 +0000 (20:14 +0200)]
Remove old help formatting code

Make parse_common_args() format its help using the new
CommandLineHelpWriter class.  To support this:
 - Add conversion functions that map t_filenm and t_pargs options to
   corresponding Option classes.
 - Add support for arbitrary file types from the filenm.h enum to
   FileNameOption.
 - Add support for writing a list of known issues from
   CommandLineHelpWriter.
 - Some minor extensions to the Option classes to make it easy to do
   the conversion.
 - Fix gmx_hbond to not specify the same option twice.
 - Remove wman.* as unused after the change.

Related to #969.

Change-Id: I25143ddfa4226abd5ae5b95172f69c8fc615b720

10 years agoMake FileNameOption behave more like old filenm parser
Teemu Murtola [Wed, 5 Feb 2014 19:59:17 +0000 (21:59 +0200)]
Make FileNameOption behave more like old filenm parser

If a required file name option is provided without a value, then it is a
no-op.  Previously, FileNameOption raised an exception for such usage.
Add a test to cover this case.

Related to #642.

Change-Id: I89d6cc8ee5d5bf2915bb6841317b402ade00b99b

10 years agoImplement synopsis for help output
Teemu Murtola [Tue, 4 Feb 2014 18:41:19 +0000 (20:41 +0200)]
Implement synopsis for help output

Print all the options into the synopsis, for all the output formats
(console, man pages, and HTML).  Formatting is not the nicest possible,
but surely better than what it was (in wman.cpp, the synopsis is only
printed into the man pages, with no wrapping whatsoever).

Part of #969.

Change-Id: Ic09ac91b3d5b5e2d42d41b83935d54c894eb8e97

10 years agoRefactor new help formatting implementation
Teemu Murtola [Tue, 4 Feb 2014 15:42:39 +0000 (17:42 +0200)]
Refactor new help formatting implementation

- Merge formatFileOption() and formatOption() into one.
- Remove unnecessary generality by splitting description formatting into
  its own class, and make OptionsFilter only do option filtering.  All
  output handling is now in OptionsListFormatter (which was renamed from
  OptionsExportFormatter).
- Split formatting basic option name and value placeholders into a
  separate function.

There should be no functional change.  Preparation for a proper synopsis
implementation.

Part of #969.

Change-Id: I900883eb39853ed67d5f6177ae06847283348d9e

10 years agoClean up .log file dump of inputrec
Mark Abraham [Thu, 6 Feb 2014 06:15:19 +0000 (07:15 +0100)]
Clean up .log file dump of inputrec

New wide name made formatting ugly. Renamed a few things to follow
.mdp convention.

Change-Id: I39550bff607a9ead01d228a7ab297eac1dde2523

10 years agoIssue fatal errors rather than use broken shell code
Mark Abraham [Tue, 4 Feb 2014 21:13:46 +0000 (22:13 +0100)]
Issue fatal errors rather than use broken shell code

Refs #1429

Change-Id: I18a17f1e232a86a13f4e3b591bd992702af3017b

10 years agoFix & update docs for GMX_TEST_OPTIONS
Teemu Murtola [Tue, 4 Feb 2014 20:20:18 +0000 (22:20 +0200)]
Fix & update docs for GMX_TEST_OPTIONS

The macro did not appear in Doxygen documentation, because it was
excluded to avoid warnings from undocumented instances of it.  Since
there aren't that many, opted to protect those with \cond instead.  Also
some minor updates and additions to the documentation, and some minor
cleanup of touched code.

Change-Id: I04785e6d66f124ae8ec5dde87bb7c7442230d83a

10 years agoInitialize inputrec better in genbox
Mark Abraham [Thu, 6 Feb 2014 17:23:49 +0000 (18:23 +0100)]
Initialize inputrec better in genbox

Incoming NBNXN patches change the behaviour if you just leave the VDW
modifier set to zero. The modifier is not supposed to be zero, because
grompp is supposed to change eintmodPOTSHIFT_VERLET to something
non-zero, but since we don't have a vanilla constructor for an
inputrec and use it outside grompp, we have a horrible flow-on effect.

So we set both the modifiers explicitly, to avoid these problems.

Change-Id: I2f8381e81104e673fb1a602b2d9cac1ccd81fff0

10 years agoFix build of share/template when installed
Teemu Murtola [Sat, 1 Feb 2014 18:08:09 +0000 (20:08 +0200)]
Fix build of share/template when installed

It is now possible to build the analysis tool template using the
Makefile.pkg and the CMakeLists.txt that are installed with it, at least
under some conditions.  FindGROMACS.cmake could probably be improved
further by using gromacs/version.h to detect the version for those
installations where it is present (4.6 and up); the current list of
functions is confusing (init_domdec_vsites, for example, already appears
in 4.6, but causes the detected version to be set to 5.0), and requires
extra maintenance for each release.

Remove obsolete Template.mak, which was used by autoconf to generate an
installed Makefile.

Change-Id: Ibcaa792b721db7fc9729710e36ace29bddbb82c3

10 years agoEE dhdl header should not specify one lambda
Michael Shirts [Sun, 1 Dec 2013 04:19:34 +0000 (23:19 -0500)]
EE dhdl header should not specify one lambda

The header for dhdl for expanded ensemble should not specify a single
lambda value because the simulation visits many lambdas.  This commit
fixes this problem.

Change-Id: I717203a58657fbce2bf3739c15be5f05a61435bf

10 years agoRemove antiquated and unused gmxpar.tex documentation
Mark Abraham [Wed, 5 Feb 2014 00:46:17 +0000 (01:46 +0100)]
Remove antiquated and unused gmxpar.tex documentation

Change-Id: I7c7637c38063f8d511c575990bf5c5542beaa725

10 years agoUse random seeds by default
Roland Schulz [Tue, 4 Feb 2014 02:26:22 +0000 (21:26 -0500)]
Use random seeds by default

A stocastic simulation not being reproducible by default is less
surprising. It wasn't true that lmc-seed was intialized using
ld-seed.

Change-Id: I5c95f1957b926287c8436d081661cb9d7504ee76