Erik Lindahl [Tue, 13 Jan 2015 14:02:02 +0000 (15:02 +0100)]
Added two quotes from Julie Bernauer habilitation
Change-Id: Ic2cc616346326b992a9b8bc16e25b5b7df53719c
James Barnett [Wed, 14 Jan 2015 15:50:44 +0000 (09:50 -0600)]
Add tip4pew parameters to oplsaa.ff
The parameters come from:
Horn et al. (2004). J. Chem. Phys. 120, 9665-9678
http://dx.doi.org/10.1063/1.
1683075
Change-Id: I634b54df422934b00378f27d068f1493e3690fa9
Teemu Murtola [Tue, 13 Jan 2015 18:48:41 +0000 (20:48 +0200)]
Remove AnalysisNeighborhood::setUseBoundingBox()
Originally, this was added to provide more control for the caller about
how the search is done, with main user probably being more comprehensive
tests. This method was possible because at that time, all the
coordinates were clamped to the edges of the grid when determining the
cell, so it was at most a bit inefficient if some positions were outside
the grid.
But now, there is no clamping, so this method no longer works correctly:
the grid must cover all the reference positions (i.e., be at least the
size of the bounding box), so that the reference positions really are
within the grid cell to which they belong. Otherwise, when the grid
cells to search are pruned based on their distance from the test
position, some pairs could be missed.
Change-Id: I94ae4081f456c08ff89779ef20b91be0ca061d96
Teemu Murtola [Sat, 17 Jan 2015 17:34:03 +0000 (18:34 +0100)]
Merge "Merge branch release-5-0"
Szilard Pall [Wed, 10 Dec 2014 20:18:37 +0000 (21:18 +0100)]
Improve and clarify mdrun behavior with nsteps<0
Instead of silently ignoring nsteps<-2 values passed on the command
line, mdrun now issues fatal error for these invalid inputs only
ignoring -2 (which is the default).
Also clarified the use of "infinite" runs with nsteps=-1.
Change-Id: I60956fca8490cd47aafc7fefce58f4b541cd926d
Mark Abraham [Thu, 15 Jan 2015 10:15:57 +0000 (11:15 +0100)]
Merge branch release-5-0
Conflicts:
src/programs/mdrun/md.cpp
Deletion in release-5-0 while fixing md-vv allocation bug was in the
same place as deletion in master when removing integrator iteration.
Resolved by deleting both.
Uncrustified and bumped copyright years.
Change-Id: If605ab0b406f81297acd3bd7ead0b4bde38d54d3
Berk Hess [Mon, 12 Jan 2015 14:24:35 +0000 (15:24 +0100)]
Fix allocation issue with VV integrator
Allocation of temp buffers for VV and VVAK now uses state->natoms
instead of top_global->natoms.
Fixes #1669.
Change-Id: I64947405c138f601db7daa4f9628a04cff9fa8bb
Mark Abraham [Tue, 9 Dec 2014 12:42:15 +0000 (13:42 +0100)]
Fix and suppress warnings on BlueGene/Q
Extended the solution of I7158e16557 to the Program() function.
Suppressed warning about memory limits during compilation
Change-Id: Ib48fd7614817b8729fce0b0add9b7d68ce5608ff
Mark Abraham [Wed, 28 May 2014 09:23:46 +0000 (11:23 +0200)]
Refactor OpenMP initialization
Created two subfunctions so we have separated responsibilities.
Change-Id: I31a6766543e509ba1605db1a164f35746ecaa7e1
Mark Abraham [Thu, 8 Jan 2015 07:41:22 +0000 (08:41 +0100)]
Remove temporary symlinks from pre-5.0 tool names
Change-Id: I6c09eba804008294813f9445737602f563f9f944
Mark Abraham [Thu, 8 Jan 2015 10:34:06 +0000 (11:34 +0100)]
Remove mdrun -testverlet
This was only intended for quick performance testing of old .tpr files
during the transition period. The window where that was useful has
passed, and ongoing abuse of it has been observed. There is no need to
preserve this until the formal removal of the group scheme.
Fixes #1424
Change-Id: I589a8e316beeba6819cd01d9655bfc069bcbb174
Teemu Murtola [Thu, 1 Jan 2015 06:28:29 +0000 (08:28 +0200)]
Refactor logic for finding share/top/ files
Refactor the logic of how gmxlibfn() finds the library files into a
separate C++ class that provides some support for customization.
By itself, this change only rewrites the existing logic into C++ with a
few minor functional changes:
- unit tests no longer get confused if GMXLIB is set, and
- the default data directory is searched even if GMXLIB is set,
removing the need to duplicate all the files into custom directories
and/or to manually specify the default directory.
However, it also lays the groundwork for further refactoring:
- consolidating the other direct use of GMXLIB env.var. from
fflibutil.cpp into the same place
- more reusable logic for finding the files, e.g., for JIT compilation
or for structuring the data files into more than one directory
- removing one-off uses of functions like low_libopen
Change-Id: I4e14a7e7f11846b3828265c1c735da6bc57f97ff
Mark Abraham [Thu, 8 Jan 2015 18:37:46 +0000 (19:37 +0100)]
Handle ivec* correctly in DD error message
Fixes #1659
Change-Id: I2d0f666801c61fb1ecb56048cd8a776f42d272ee
Mark Abraham [Thu, 8 Jan 2015 12:50:30 +0000 (13:50 +0100)]
Fix floating-point exception
complex/swap_x does only two steps of MD and has been observed to give
a floating-point exception on Jenkins from print_wallcycle(). The last
stderr and .log output suggested tot == 0 may have been the problem,
but it can't actually be reproduced. Even if it's not fixing the right
problem, this code is preferable to the old version.
Change-Id: Iad514158ae551aded45787e8d595d3876b9e37c8
Teemu Murtola [Thu, 13 Nov 2014 20:14:25 +0000 (22:14 +0200)]
Closed some .xvg files that were being left open
Closed donor properties file in gmx hbond after removing use of
function static file pointer.
Improved naming and scoping of some file pointers in
analyze_clusters().
Added done_ed() as a place to close the essential dynamics output
file. Later, destructor content for ED should go here (or preferably
RAII).
Removed pr_energy() from gmx_cluster since it was never called.
Change-Id: I4c288e924eb81e9e0f87b8e59ee64dacc0708567
Teemu Murtola [Mon, 29 Dec 2014 06:14:48 +0000 (08:14 +0200)]
Custom program context for unit tests
This improves the usability and robustness of the tests:
- The data files in share/top/ are now always looked up from the source
directory, without relying on any detection of the binary location.
- It is possible to override the location of the source directory for
some cross-compilation scenarios, which changes both the lookup
location of share/top/ and the test input/reference files.
Change-Id: I1be5861ee594217bf27895563feb2c09fafe86c7
Teemu Murtola [Sun, 28 Dec 2014 12:36:07 +0000 (14:36 +0200)]
Split unit test init from testoptions.cpp
There is now much more functionality than just handling the options, so
it is clearer that the initialization is in its own file.
Change-Id: Ibd2857cb33578b80ad4cbcbdde4839b5d10eb3f7
Teemu Murtola [Sat, 20 Dec 2014 08:13:42 +0000 (10:13 +0200)]
Use analysis nbsearch for surface area calculation
This improves the code in several ways:
- Amount of code that does the actual computation is reduced by about
75%, making it significantly easier to follow.
- Computation with PBC no longer does an all-pairs search.
- The grid search is correct for triclinic cells (the old
implementation would not have given correct results if the bug that
caused an all-pairs search would not have been there).
- All optimizations in the generic nbsearch code benefit also this
algorithm: it is no longer limited to using grid cells that are
larger than the cutoff, reducing the search volume considerably.
Also remove some other micro-optimizations to make the code clearer.
These can be reintroduced if they have a measurable effect on the
performance; a TODO in the code explains what they were.
Change-Id: I8f68c56992305e4b82c128d33cac50315b9d2824
Teemu Murtola [Tue, 6 Jan 2015 07:59:42 +0000 (09:59 +0200)]
Use xvgrclose() for files opened with xvgropen()
Most callers used gmx_ffclose(), but there were also several that just
didn't close the file at all, or used plain fclose(). Not using
gmx_fio_fclose() left internal data structures inconsistent, which could
have an effect in unit test binaries that could execute some code more
than once (in particular, if the checkpoint code was triggered, as it
then got confused about the improperly closed files).
For consistency, changed gmx_fio_fclose() to xvgrclose(), except in
places where there were paths on which the file was not opened with
xvgropen(). Fixed some logic issues with opening/closing files in
different branches.
Change-Id: Iefda6880b06391b73423156888aee1d436e38199
Teemu Murtola [Sat, 20 Dec 2014 10:29:25 +0000 (12:29 +0200)]
Support subset of rvec array as input for analysis nbsearch
Make it possible to perform a neighbor search such that instead of using
a continuous rvec array as the reference/test positions, it is possible
considers a subset of such an array, specified by a separate index
array.
Also, add support for accessing the components of the shortest distance
vector between found pairs through AnalysisNeighborhoodPair. This frees
the caller from a separate pbc_dx() call in case that distance vector is
of interest.
Tests could still be extended and improved, but left for a later change.
Change-Id: I253ddda483122367d9c41a5ed8bb172e476a90bb
Teemu Murtola [Sun, 14 Dec 2014 14:19:11 +0000 (16:19 +0200)]
Minimal C++ replacement for rvec
Add a C++ class that acts as rvec, but also supports placement in STL
containers (i.e., is default-constructible, copy-constructible, and
assignable) and can be returned from functions. There is some ugly
reinterpret_casting required for rvec arrays to make this work, which
requires that the compiler generates compatible layouts for the class
and rvec. The tests ensure that this is the case, but it could be nice
to check some more exotic compilers as well, unless someone knows the
C/C++ standards well enough to say that this layout is always ensured.
Passing RVec as 'const rvec &' unfortunately also needs an explicit
function call because of issues with cppcheck and MSVC.
Minimal solution to #1017.
Change-Id: I79be58bf7be2a78f787f470044b3b5abf234ec0c
Teemu Murtola [Sun, 4 Jan 2015 14:46:09 +0000 (16:46 +0200)]
Clarify GMX_MPI management
Clarify semantics of GMX_MPI within CMake code: its meaning no longer
changes halfway through the main CMakeLists.txt file to mean "MPI or
thread-MPI" from its original meaning of "user selected real MPI".
Instead of having this logic in CMake, set GMX_MPI in config.h
programmatically.
The semantics of GMX_MPI are still different in the source code compared
to CMake, but that cannot be solved before some conclusion is reached
in #1320.
There have been several bugs (at least most caught during code review)
from assuming that GMX_MPI could be used to access the user input value
everywhere in CMake, and it is very confusing to follow the CMake code
because of this issue (the same code can have different behavior,
depending on the point where it gets executed).
CMake code still mixes GMX_LIB_MPI and GMX_MPI to check for the same
thing, but at least that no longer causes bugs. Removed an obsolete
if (GMX_MPI AND NOT GMX_THREAD_MPI) construct.
Fix a regex in gmxtree.py to properly parse '#if defined ...' in
config.h.
Related to #1320.
Change-Id: Icbdedd30eaa39978b6a302660207376fce1bba4e
Roland Schulz [Mon, 28 Jul 2014 04:58:12 +0000 (00:58 -0400)]
Enable fp-exceptions
This can help with finding errors quicker because mdrun crashes as soon
as a floating point value overflows or is invalid. fp-exceptions are
only enabled for builds with asserts (without NDEBUG), mainly because
it isn't always possible to avoid invalid fp operations for SIMD math
without a performance penalty.
Also, fix a few places where we had 1/0 or other invalid fp operations.
Fixes #1582
Change-Id: Ib1b3afc525706f4b171564fcaf08ebf3b2be3122
Teemu Murtola [Fri, 2 Jan 2015 16:49:03 +0000 (18:49 +0200)]
Minor selection clarifications
- Disallow unquoted strings as selection names. This prevents
"help all" getting parsed as a valid selection with name "help", as
well as some unwanted behavior with typos in the first word of a
selection. The selections are much more readable with the name
quoted, and all examples use the quotes, so there should be no harm
done in making the syntax stricter in this case.
- Clarify the generic help text printed out by 'gmx help selections'.
Now the help text references the manual, which contains a bit longer
introduction to selections, instead of trying to duplicate that
content.
Change-Id: I76a0b54b19e631c96c167cb55ed2dac5cff328a4
Teemu Murtola [Fri, 2 Jan 2015 17:20:06 +0000 (19:20 +0200)]
Fix crash with 'z of ...' within an expression
When a 'z of ...' construct was used within an arithmetic expression in
a selection, there were out-of-bounds array writes occurring during
selection compilation. Initialize the number of values produced by such
constructs correctly to avoid this.
Change-Id: I7fb62c086bc02a96e90e35ab0a2d9944518900db
Teemu Murtola [Fri, 2 Jan 2015 16:54:09 +0000 (18:54 +0200)]
Update copyright year in copyrite.cpp
Also, fix uncrustify.sh so that it works for files that have
filter=includesort git attribute.
Change-Id: I108e1d5cb5ce85f78a99bc966b8ea492db747f0c
Teemu Murtola [Tue, 9 Dec 2014 16:56:31 +0000 (18:56 +0200)]
Convert gmx-insert-molecules into proper C++ module
This makes the module a bit more exception-safe (but not perfectly),
removes remaining legacyheaders/ dependencies from the code, and
demonstrates how the new helper class works (and acts as a
proof-of-concept for that generic code).
This new approach also makes it easier to start using selections in the
tool, but that is a potential future improvement.
Change-Id: I0bad97ff7638f9f583a096f212c070c0e34af1a2
Teemu Murtola [Tue, 9 Dec 2014 16:54:25 +0000 (18:54 +0200)]
Add helper for generic C++ command-line modules
Add a helper class (gmx::CommandLineOptionsModuleInterface) that makes
it easier to implement proper C++ command-line modules for the wrapper
binary. The module only needs to implement the interface instead of
gmx::CommandLineModuleInterface, and the helper class then takes care of
command-line parsing and help, based on options initialized by the
module in initOptions(). This removes the need to duplicate
command-line parsing and help code into each module.
Change-Id: I3e213ce530532bd3f60e34fd261fe06797d10326
Berk Hess [Mon, 15 Dec 2014 19:31:44 +0000 (20:31 +0100)]
Fixed pbc=xy + 2 walls + Verlet scheme
Fixes #1660.
Change-Id: Id28f5d164c24d9bc6cb80faa8f4cba5e95262995
Berk Hess [Wed, 17 Dec 2014 10:26:21 +0000 (11:26 +0100)]
Fix bug FE + GPU + 2/3D domain decomposition
Fixes #1661
Change-Id: Ia84f6c1219a2052df0ed1c5c4d7f66c37ed7f67b
Teemu Murtola [Sat, 11 Oct 2014 19:56:24 +0000 (22:56 +0300)]
Rework gmx-solvate to use analysis nbsearch
- More understandable control flow, with less code.
- No memory leaks.
- No dependency on mdrun/group kernel specific neighborhood search, so
no confusing messages about deprecated group kernels or LJ/Coulomb
cutoffs. All output is controlled by the tool code now.
- Eventual group kernel removal no longer needs to consider these tools.
- Now tool code is independent of t_forcerec.
Even without additional algorithm-level optimization allowed by the new,
more flexible pair search, the new code outperforms the old one by ~30%
(in a debug build) in the cases triggered by the unit tests.
Some useful functionality is refactored into topology/. Subsequent
changes can clean that up and start using those parts also in
insert-molecules.
Change-Id: Ibad1090667e057a00c08a84bdb6bebbf2e55c5f4
Roland Schulz [Tue, 28 Oct 2014 21:49:08 +0000 (17:49 -0400)]
Fix CMP0054 cmake 3.1.0 warnings
Change-Id: I5d91289a543240fa6f493b7f7738522f3c268c07
Teemu Murtola [Sat, 29 Nov 2014 13:51:10 +0000 (15:51 +0200)]
Make 'gmx sasa' calculation thread-safe
Remove use of all static/global variables from the surface area
algorithm in surfacearea.cpp. This makes 'gmx sasa' computation mostly
thread-safe (only the Connolly surface output isn't). This in turn
gives the first analysis tool that does a non-trivial amount of
computation per frame in a thread-safe manner. Once we have TBB or some
other proper threading library in use, it should then be straightforward
to also implement threading support for the analysis framework, and
actually have a tool where the benefit could be observable.
Simplify the implementation a bit, as there were quite a few state
variables in the orignal code that were never used.
Change-Id: If9fa4829620afbe09c1e206903190ba03af8a082
Teemu Murtola [Tue, 16 Dec 2014 19:30:05 +0000 (21:30 +0200)]
Remove some backwards-compatibility glue for Jenkins
- GMX_CPU_ACCELERATION has not been used in a long time.
- The Documentation job should now be easy to update to use
'make check-source' instead of 'make doc-check'. There have been
various bumps to the regression tests that already make Jenkins vote
-1 for all changes older than the introduction of 'check-source',
so an additional negative vote from the Documentation job should not
matter.
Change-Id: Ic9908b2cdb56b43823c4f2c5e53294688f1af89d
Roland Schulz [Wed, 17 Dec 2014 09:06:07 +0000 (10:06 +0100)]
Merge "Merge branch 'release-5-0'"
Roland Schulz [Sun, 14 Dec 2014 20:25:53 +0000 (15:25 -0500)]
Fix cppcheck-1.67 warnings
Remove suppressions for previous cppcheck versions
Change-Id: Ifb03e7b2300b65ca8adb8e22b71da25ea472be52
Teemu Murtola [Sat, 29 Nov 2014 05:48:10 +0000 (07:48 +0200)]
Make 'gmx sasa' volume computation translation-invariant
Compute the center of the molecule also when PBC is used, instead of
using the origin as the center. The center is used for volume
computation, and this makes the output translation-invariant with PBC.
This also makes the results of PBC and no-PBC computation match for the
same structure in case there are no contacts over the PBC.
The whole volume algorithm is broken if the molecule is split across
PBC in the input structure (which is likely the case if one wants to use
-pbc), and that would require substantially more effort (essentially,
making each continuous surface whole before computing the volume), so
only added a note to 'gmx sasa -h' to explain this for now.
Change-Id: I1cf75505ceb403f5650f05453ec2bc7b979d1e9e
Mark Abraham [Thu, 11 Dec 2014 16:31:25 +0000 (17:31 +0100)]
Move code to prepare for GPU interface rework
This is pure renaming, so hopefully rebases work better. Two of the
header files were being explicitly removed from the set installed, but
now that these headers are no longer in legacyheaders, this issue is
resolved.
Change-Id: I5bbc89c2e52e0d92704896c48eeed5d9c00fd61a
Mark Abraham [Mon, 15 Dec 2014 23:29:20 +0000 (00:29 +0100)]
Merge branch 'release-5-0'
Conflicts:
CMakeLists.txt
Only changes from version numbers and test hashes, not relevant
for master branch
Change-Id: Ia10e2b82a4ffc3ac408813081c15fe6a858a93f3
Roland Schulz [Mon, 15 Dec 2014 00:32:29 +0000 (19:32 -0500)]
Fix NVML detection on Windows
Change-Id: I681744dd21a8390cbe2b2ad23c1ad49f2633b241
Mark Abraham [Sat, 29 Nov 2014 21:53:23 +0000 (22:53 +0100)]
Removing iteration + constraints framework
Getting rid of iteration + constraints required by the use of MTTK +
constraints, in order to simplify the main loop.
Eliminated related variables and arguments that are now unused.
Left some otherwise useless brace pairs in do_md(), so that
uncrustify-friendly formatting was preserved, so we can more easily
review this for correctness. Left TODOs to remove those braces later.
Implemented mdrun check so that an old .tpr with MTTK + any form of
constraints cannot be run.
Refs #1137
Change-Id: I22816de7db4420a66341fa8bf35d967a71ad6568
Mark Abraham [Wed, 1 Oct 2014 12:31:12 +0000 (14:31 +0200)]
Version bumps after new release
Numbers bumped, -dev tag replaced.
Change-Id: I59bbe346656f1892e154f899bac361fcfeea65a1
Mark Abraham [Tue, 9 Dec 2014 10:42:34 +0000 (11:42 +0100)]
Version 5.0.4
Removed -dev tags from versions. Bumped regressiontest hash.
Change-Id: Idcb1c288b0119c17a9ad644179e96c4734a798f6
Mark Abraham [Sat, 29 Nov 2014 21:50:25 +0000 (22:50 +0100)]
Fix constraints checks in grompp
This adds F_CONSTRNC to the set of interactions that should trigger
checks on SHAKE and LINCS parameters, and permits the MTTK check to
test also for SETTLE for its warning. The latter will also be used to
prevent MTTK + any constraints in a subsequent patch.
Change-Id: I175a2f050623192ff35a4cf93605fcfdd909f41a
Mark Abraham [Mon, 15 Dec 2014 17:57:47 +0000 (18:57 +0100)]
Merge "Merge release-4-6 into release-5-0" into release-5-0
Teemu Murtola [Sun, 14 Dec 2014 15:10:54 +0000 (17:10 +0200)]
Use new XML format with cppcheck
The console output in Jenkins is full of warnings about the old format,
and apparently some issues are not reported in the old format.
Change-Id: I35a40444b39b697d765d65c14706ebe7d2dcf67d
Teemu Murtola [Sat, 29 Nov 2014 04:58:51 +0000 (06:58 +0200)]
C++ interface for surface area calculation
Convert nsc_dclm_pbc() to a C++ class that provides the same interface,
except that the number of surface dots is specified separately, not for
each calculation. The internal implementation is still mainly the same,
but the new interface makes it possible to get rid of the global
variables storing the unit sphere surface dots. This in turn is
requires for making the algorithm thread-safe.
Clean up the implementation a bit by making internal functions static
(they will later become members of the Impl class), and replacing some
error-handling-by-writing-to-stderr-using-global-variables with asserts
or silent proper behavior.
Add tests for all the different paths of the unit sphere surface dot
generation. These help ensure that the algorithm stays unmodified when
it gets refactored for thread safety.
Change-Id: Icf39eb4d105555b2eafdfd70b219a73c294900af
Roland Schulz [Wed, 26 Nov 2014 01:40:30 +0000 (20:40 -0500)]
Use bitmask for bonded
Also move bitmask to utility and f_thread_t to forcerec-threading.h.
This introduces a cycle because listed-forces now depends on
mdlib/forcerec-threading.h. There is not yet a module where
forcerec-threading.h can go.
Change-Id: Ic220be2880f7263aa0e50b13f07ed509eb86e1b3
David van der Spoel [Thu, 11 Dec 2014 19:54:05 +0000 (20:54 +0100)]
Four new quotes from around the world.
Change-Id: Ib2f597c1f0e55160365d9e074b02b7eacbb84298
Mark Abraham [Thu, 3 Oct 2013 19:05:00 +0000 (21:05 +0200)]
Remove heuristic group-scheme neighbour-list updates
-1 == nstlist used to trigger the use of an algorithm that did
neighbour searching only when particles had moved far enough that
there might be a need to update the list. This supported obtaining
better energy conservation with the group cut-off scheme. It has been
superseded by the Verlet cut-off scheme.
Part of #1292
Change-Id: I074790c1c5670e874b8b587a1d46e62e2edc8961
Mark Abraham [Fri, 23 May 2014 19:07:54 +0000 (21:07 +0200)]
Fix latent bug in OpenMP initialization
mdrun worked fine because it only tries to call
gmx_omp_nthreads_init() once, but anybody trying to run thread-MPI
mdrun (e.g.) as a library or in tests would see a hang, because the
master rank never gets to the barrier because of the premature return.
Extracted a function, so that the return works as intended, which will
help us reason better about this code. Used quick return statements
for control flow, rather than nested conditionals, but there's no
other change to the functionality.
mdrun with OpenMP can now be called more than once. As a side effect,
even without OpenMP, the subsequent calls to mdrun now issue the
over-subscription warning - and all OpenMP runs report the OpenMP
settings.
Change-Id: Ie7019565ef9a513cf4dfb530e90452d4ef48289e
Mark Abraham [Sun, 18 May 2014 10:48:46 +0000 (12:48 +0200)]
Add StringFormatter and formatAndJoin to stringutil
The StringFormatter functor wraps formatString so that we can write
one-liners that take a container, format its objects to strings, and
join them with a separator into one string for e.g. logging output.
Re-implemented joinString in terms of formatAndJoin, by using an
IdentitfyFormatter, thus eliminating duplication of implementation.
Added some tests for joinString also.
Applied new functionality to reporting GPU status information.
Change-Id: I424543a1ca4e214c438cc39f104f087e7e70030a
Teemu Murtola [Thu, 26 Jun 2014 11:59:07 +0000 (14:59 +0300)]
Convert gmx rdf to the C++ framework
Convert the RDF calculation tool to the new framework. Main changed
beyond mechanical conversion:
- Remove -com and -rdf options in favor of using selections directly.
Both functionality, and a lot more, is now directly supported with
proper selections.
- Remove -hq and -fade options, as both are just post-processing that
can be trivially done based on the output xvg file alone.
- Normalization is reworked to work with dynamic selections.
- Add an -rmax parameter that allows specifying an upper cutoff for the
RDF. Combined with the use of the neighborhood search routines, this
potentially makes the tool a lot faster if the RDF is not required up
to half the box length.
Add basic unit/regression tests for a simple water box. The reference
values are not verified in any way, so they mainly catch regression
bugs.
Change-Id: Ieed19fc39a84e299291232190333652ced26abee
Mark Abraham [Thu, 11 Dec 2014 11:22:00 +0000 (12:22 +0100)]
Merge release-4-6 into release-5-0
Change-Id: I952a9b8dd61c0eb7456c640997093a1a5fea8fc3
Berk Hess [Thu, 11 Dec 2014 10:13:34 +0000 (11:13 +0100)]
Added grompp error for pulling to negative distance
Change-Id: Ida5f449709c95e7c89cff32957b9e57bc9d68212
Szilard Pall [Wed, 10 Dec 2014 16:49:07 +0000 (17:49 +0100)]
Fix nstep command line override print
The commit addresses two issues:
- printing negative simulation length with "-nsteps -1";
- eliminates rounding when converting a non-integer time-step value from
fs to ps units.
Fixes #1633
Change-Id: If1aac7e0f4e8e37f3e9777fa4eaa79744f3ccd65
Teemu Murtola [Sat, 6 Dec 2014 05:14:15 +0000 (07:14 +0200)]
Fix misc. analysis neighborhood search issues
- Avoid an overflow fp-exception in case of zero cutoff (original fix by
Roland).
- If a bounding box of the reference positions has a zero size in
some dimension, fall back to a single grid cell and simple searching
in that dimension (this could possibly be improved after the search
uses a rectangular grid).
- If the bounding box (or the PBC box) is very flat or has a forced
single grid cell in some dimension, adapt the grid dimensions such
that the cells really have ~10 particles on average.
Change-Id: I4f8e5df9c4c479e480052e575354c54319bac22f
Teemu Murtola [Wed, 5 Nov 2014 19:32:46 +0000 (21:32 +0200)]
Track locations for selection parsing products
SelectionTreeElement and all intermediate structures used for selection
method parameter parsing now track the location in the input string.
By itself, this change does nothing, but it enables the subsequent
change that switches to exceptions to use this information for much
better context information in the error messages.
The location is kept as a SelectionLocation instead of as a string to
avoid spending a lot of memory for these strings with complex
selections: in general, each node in the tree contains the concatenation
of the strings from its child nodes, and there can be quite a few nodes
at the top that all contain have the full selection as their location.
Related to #655.
Change-Id: I7b1a317e043c6ff791b25f5fa357d8166c577fae
Berk Hess [Mon, 8 Dec 2014 21:18:35 +0000 (22:18 +0100)]
Fix recent bug with trilinic 1D DD
A recent bug-fix (
c8d919a3) for triclinic 1D domain decompostion
introduced a bug for boxes with box[YY][XX]!=0.
Fixes #1656.
Refs #1631.
Change-Id: I06b9376212390b73e90a3ce9704dee2bad9693fb
Mark Abraham [Wed, 1 Oct 2014 12:31:12 +0000 (14:31 +0200)]
Version bumps after new release
Numbers bumped, -dev tag replaced.
Change-Id: I823a0a79a805c67988a461d891771ff999c6548f
Mark Abraham [Tue, 9 Dec 2014 10:42:34 +0000 (11:42 +0100)]
Version 5.0.3
Removed -dev tags from versions. Bumped regressiontest hash.
Change-Id: Ieb2588deeb5c866d621af7cbe7e5709ac6f53220
Carsten Kutzner [Wed, 3 Dec 2014 10:34:38 +0000 (11:34 +0100)]
Make tune_pme understand the "-nsteps" option. Fixes #1650
All command line arguments that tune_pme does not understand are passed over
to mdrun. For a quick sanity check the mdrun options are used together with the
additional option "-nsteps 1", which then appears twice on the command line.
The solution is to let tune_pme understand the "-nsteps" argument, so that it
only occurs on the mdrun command line at launch time. The option for that was
already there but before called "-simsteps".
Change-Id: I8362ced75e67b0e28b4a5e1bd427ae6ae4e0e758
Mark Abraham [Mon, 8 Dec 2014 23:14:56 +0000 (00:14 +0100)]
Merge "Merge release-5-0 into master"
Teemu Murtola [Fri, 24 Oct 2014 17:45:21 +0000 (20:45 +0300)]
Rectangular grid for analysis nbsearch
Previously, the grid-based analysis neighborhood search used triclinic
grid cells covering the triclinic unit cell. This made PBC handling
easy, but all other math is more complicated, and the volume where pairs
are searched is sub-optimal for triclinic boxes. Now, the grid is
composed of rectangular cells that cover the rectangular unit cell.
The most significant change to support this is that most computation for
what cells to loop over is now done in fractional cell coordinates to
support for non-integral shift of the cell grid at the edges of
triclinic boxes. The fixed list of cell neighbors is replaced with
on-the-fly computation, since the non-integral shifts mean that the list
of neighbors is not always the same. This approach also allows the list
of cells in the loop to easily depend on the test position. Any cells
that are completely outside the cutoff from the current test position
are skipped completely, improving the efficiency also for rectangular
boxes.
Currently, the list of cells looped over is still a rectangular
box, but with rectangular cells, the math to exclude corners should be
straightforward to add in subsequent changes.
Change-Id: I8bd4fa67e26e282cd5bd82dee5edfaf651e59a19
Berk Hess [Tue, 2 Dec 2014 10:14:22 +0000 (11:14 +0100)]
Fixed pull coord init with rate!=0, t_start!=0
When the start time of a simulation is non-zero a pull setup with
coordinates with rate!=0 and pull-start, grompp would generate
incorrect pull init reference values.
Also fixed the layout of the grompp pull coord information table.
Change-Id: I992a40b098853aba0922ec1d596430eb229d64a8
Mark Abraham [Mon, 13 Oct 2014 10:12:40 +0000 (12:12 +0200)]
Fix group-scheme bug with changing LJ parameters in FE
We don't optimize for the case when we have only changed one of charge
or type, so the other vector must always be valid even when it is not
changing. The logic of calling ewald_LRcorrection didn't do this
correctly, perhaps because the construction logic in md2atoms was
unclear.
Changed name, origin and logic for bFreeEnergy to
bHaveChargeOrTypePerturbed to better reflect the correct usage and
meaning. Avoided testing any pointers for NULL - we should use
explicit control-flow constructs.
Fixes #1596
Change-Id: I61172681048075d3022bd6c4b781c6c9153eeadd
Berk Hess [Tue, 2 Dec 2014 09:41:21 +0000 (10:41 +0100)]
Added PBC note to comm-mode=angular warning
Change-Id: Id397d51c05512427414aa7decea55fed83ff42ac
Carsten Kutzner [Mon, 8 Dec 2014 16:34:58 +0000 (17:34 +0100)]
Fixed a typo in the manual.
Using > in Latex text mode gave an upside-down question mark instead...
Also used math mode in expression before, which seems more appropriate.
Change-Id: Iefce4768545e899e922e4fa932c67d222927cefe
Mark Abraham [Mon, 31 Mar 2014 13:54:12 +0000 (15:54 +0200)]
Add basic GPU support for gmx tune-pme
New functionality
* permits the user to specify a per-node list of eligible GPU ids (as
distinct from mdrun, which permits the user to specify the array of
actual GPU ids to use), which it will then map to the PP ranks
in round-robin style during the optimization
* detects whether the mdrun is GPU-aware if the user specifies GPU ids
* handles error from mdrun when number of PP ranks does not match the
GPU id string provided
* handles error from mdrun when GPU with given id is invalid
* runs check that a .tpr will work mdrun with -npme 0, which is less
likely to run into issues at small scale with eligible partitioning
issues than -npme -1; noted TODO to fix this for large scale also
This code does not do anything active about optimizing the use of
OpenMP, as current-generation tune-pme is basically designed to have
no ability to change the number of MPI ranks at all. However, if the
MPI system is set up such that mdrun's automatic allocation of OpenMP
threads to ranks will work, then the optimization can take place over
runs that actually trigger the use of OpenMP. (This was true before
this patch.)
Some TODOs noted inline for future clean up / feature addition.
Refs #1119
Change-Id: Ic1ea4e7524f62e7e7480b2e61a0c0afad41ca710
Roland Schulz [Fri, 5 Dec 2014 23:31:17 +0000 (18:31 -0500)]
Merge release-5-0 into master
Conflicts (trivial):
src/gromacs/gmxlib/gmx_thread_affinity.c
src/gromacs/mdlib/clincs.cpp
Manual changes:
Removed config.h because not necessary anymore:
src/gromacs/mdlib/nbnxn_search_simd_4xn.h
src/gromacs/mdlib/nbnxn_search.c
Removed config.h supression:
docs/doxygen/suppressions.txt
uncrustify:
src/gromacs/mdlib/clincs.cpp
Change-Id: I00064120f12f609fabecac9b3c823d33c015e59c
Teemu Murtola [Mon, 27 Oct 2014 18:17:32 +0000 (20:17 +0200)]
Simplify analysisdata parallelism model
Instead of trying to hide all parallelism within the AnalysisData and
AnalysisDataStorage classes, add an AnalysisData::finishFrameSerial()
call and make higher-level code responsible of calling that in suitable
context to do serial processing for data frames. This then needs to be
propagated to parallel-aware data modules.
This substantially simplifies the implementation and makes it easier to
argue about correctness, since now nearly all potentially parallel code
will operate on distinct data, reducing the need to think about
synchronization. The drawback is that now the calling code needs to
think about this, but there will be very little code that this actually
affects, and that is in the framework, not in every analysis tool.
Further, this actually makes the parallelism easy to express in terms
of, e.g., tbb::parallel_pipeline(), so the clarity can actually improve
without too much complexity.
Update and improve related high-level documentation to make these
aspects easier to explain.
Change-Id: Ibbfb4b7aa3acf7fcda0bfdb4da7212f5b11c1fcb
Jiri Kraus [Wed, 22 Oct 2014 15:08:51 +0000 (08:08 -0700)]
Add optional NVIDIA Management Library (NVML) Integration
NVML integration allows to automatically control GPUBoost from GROMACS
directly on supported GPUs. With this GROMACS either changes
application clocks automatically to the best performing setting or
informs the user that he should do it. The latter is done if permissions
do not allow to change application clocks.
Change-Id: I998e45596e2f556a5be7fa146fcd216ecae11452
Mark Abraham [Sun, 12 Oct 2014 16:35:16 +0000 (18:35 +0200)]
Clean up non-PME part of ewald module
ewald/ewald and ewald/ewald-util code had several different kinds of
stuff in it. Separated code that does Ewald long-range and
Ewald-family charge correction from the code specific to the group
scheme.
Moved general-purpose routines that are used in a few other places to
calculate Ewald splitting parameters to the math module.
Minimized header dependencies.
Removed unused things: FLBS FLBSZ
Removed use of typedef for existing opaque struct ewald_tab, per
policy in #1490. Renamed to gmx_ewald_tab_t.
Change-Id: I1394bbd02aa92e6581d011e52c5bee12406a0144
Mark Abraham [Sat, 17 May 2014 13:35:56 +0000 (15:35 +0200)]
Make mdrun print the list of compatible GPUs
This extends functionality so that the available, compatible, and
actually-used GPU IDs are reported when that makes sense. This will
help (e.g.) gmx tune-pme optimize resource usage by running mdrun
to probe for the available hardware.
The old implementation and documentation had a few issues that have
been corrected or updated. The major issue was that the list of
compatible device IDs was formed and then replaced by the list of
device IDs to use, so the former was no longer available during
subsequent output.
Change-Id: I3ca3e88054bd7d288f556af7e5d7704145ab6fca
Mark Abraham [Sun, 14 Sep 2014 16:30:55 +0000 (18:30 +0200)]
Move threading support into listed-forces module
Added Doxygen, converted a macro to a const int.
Change-Id: I1e5579b1f80aecaf46827704cf5fd3b6d6285d80
Mark Abraham [Mon, 15 Sep 2014 07:07:18 +0000 (09:07 +0200)]
Created do_force_listed and moved code to the module
This commit is almost pure code motion and renaming, modulo things
like changes to predicates because they've been handled earlier in the
call tree.
Converted the logic to return immediately if GMX_FORCE_LISTED is
false, to make understanding and indenting easier.
Also migrated position-restraints code to bonded module, and called it
from a sensible place together with the other code inside
GMX_FORCE_LISTED. Elapsed time for position restraints now accrues to
the listed sub-timer, instead of a catch-all.
Reorganized the foreign-lambda part of position restraints to be
called together with the other foreign-lambda bonded
interactions. Fixed benign bug introduced by the copy-pasting in the
Verlet-scheme monster commit, where dvdl was re-used for
foreign-lambda position restraints in the then-newly-created
posres_wrapper(), instead of the dummy dvdl_dum.
Made some more const correctness of x and pbc.
Cleaned up some include-dependency logic in files in the module.
Change-Id: I118af1d66da210e08d9ea065d1f431b7470742cc
Berk Hess [Mon, 1 Dec 2014 21:40:40 +0000 (22:40 +0100)]
Make domdec a proper module
Now has
* Doxygen group definition
* initial Doxygen comments
* correct #include guards
* no export "C" for header used only in C++ code
* all relevant current files are declared as such in the module
* new domdec_constraints.h and domdec_internal.h
* split off domdec_specatomcomm.cpp and domdec_vsite.c from
domdec_constraints.cpp
Change-Id: I7ed79c1654850df31e242aa1e907afd124e3ae1b
Berk Hess [Tue, 2 Dec 2014 08:08:45 +0000 (09:08 +0100)]
Clarified grompp pull error messages
Change-Id: If0df3fcd0d034c4b4ced04eb32ed7bb74e596776
Teemu Murtola [Sun, 2 Nov 2014 13:45:21 +0000 (15:45 +0200)]
Improve selection parsing error reporting
Now the selection parser tracks the part of selection text that
contributes to the current parsing context, and uses that for more
useful error messages. At least in some cases, there is now also
context information for syntax errors, although this could likely be
improved further.
Exception handling during selection parsing is also improved:
- The above context is now added to the exception, similar to what the
old reporting mechanism does.
- The full selection is added to the exception as context, also for
non-interactive parsing.
- More consistent exception handling, e.g., in cases where an exception
is thrown during error handling.
Improve documentation for related functions.
Part of #655.
Change-Id: Ib276ce4e219692c9819e45a1637e3660d958803f
Berk Hess [Wed, 26 Nov 2014 20:17:12 +0000 (21:17 +0100)]
Avoid race on dvdl with Verlet+OpenMP+LINCS+FE+VV
Also restructured the dH/dlambda reduction in do_lincs (used for
coordinates and not affected by the race issue) to work similar
do the do_lincsp code and properly use thread parallelization.
Fixes #1647.
Change-Id: I4eeb131018abca88b3635932491d99a779e16037
Teemu Murtola [Tue, 26 Aug 2014 04:19:40 +0000 (07:19 +0300)]
Non-periodic nbsearch with grid based on bounding box
For cases where there is no full PBC, the analysis neighborhood search
routines now allow constructing the grid based on the bounding box of
the reference positions. This frees the caller from the need to provide
a reasonably sized box even without PBC to benefit from the grid
searching.
Change-Id: Ia14b7c584a6ca84a5f698c12dc1491dde78bfe6d
Teemu Murtola [Sun, 23 Nov 2014 11:27:30 +0000 (13:27 +0200)]
Move/add uncrustify documentation to dev manual
Add some basic description of code indentation/formatting guidelines,
and move documentation of uncrustify and related scripts to the
developer manual. Improve the documentation at the same time, and make
all script reference the developer manual for additional documentation.
Make uncrustify.sh work without explicitly setting the UNCRUSTIFY
environment variable if the pre-commit hook is already configured.
Change-Id: I81ae71fbcdae0e177cc7b05fe278f8c20a19fe7a
Teemu Murtola [Tue, 23 Sep 2014 14:24:36 +0000 (17:24 +0300)]
Add 'gmx pairdist' tool as partial g_mindist replacement
Add a new tool that can compute pairwise distances from one reference
selections to one or more calculation selections. The tool can do
minimum or maximum distance over the whole selection, as well as between
each residue/molecule pair in the selections. This should provide
(nearly) all the distance outputs that g_mindist has, and with a bit of
effort also be able to replace g_mdmat.
The tool intentionally does not compute contact counts; those should be
added into a separate tool to keep things simpler.
Update some documentation references.
Change-Id: I553c3477ae808a133a3cec2b46feaccc3420022f
Teemu Murtola [Sun, 24 Aug 2014 04:16:41 +0000 (07:16 +0300)]
Analysis grid nbsearch for more cases
Add support for grid neighborhood searching also for epbcXY and
epbcNONE, as well as the XY mode in the analysis neighborhood search.
The grid is done based on the input box size also for the non-periodic
dimensions, or a single grid cell is used if the box size is unknown in
that dimension. In the future, an option could be added to determine
the grid automatically from the bounding box, but that is outside the
scope of this change. For the XY mode, a single grid cell is always
used in Z.
Improved the logic of determining when grid search is possible and/or
reasonable and implemented the option to force the grid
searching (since the test data currently would not trigger it
otherwise).
Change-Id: I0c43bf95d7d5dd46e57923cdf0d6864fbb3dfe59
Berk Hess [Thu, 13 Nov 2014 11:30:33 +0000 (12:30 +0100)]
Added warning for unnecessary soft-core
The sc-coul mdp option is, presently, only active with lambda states.
grompp now issues a warning when using soft-core without Van der Waals
decoupling without lambda states.
Also fixed an incorrect twin-range grompp check with PME.
Refs #1421.
Change-Id: I0605fe0f735d69f96f478612a00434eccef6232f
Teemu Murtola [Wed, 29 Oct 2014 18:44:07 +0000 (20:44 +0200)]
Basic support for 'z of ...' selections
Add basic support for selections of type 'z of ...', where "z" can in
principle be any keyword and "..." any expression. However, currently
the only syntax that is actually supported is '[xyz] of co[gm] of ...',
because
1) this is the original case that was discussed in gmx-users some time
ago,
2) only the x, y, and z keywords satisfy the constraints that the
simplest possible implementation requires,
3) there is no context that would accept multiple values as produced by
an expression like 'z of resnr 1 to 3', and
4) there is no mechanism to detect that 'z of atomnr 1' actually
evaluates to a single value.
Some of these limitations can be lifted in the future with reasonable
effort, though.
Change-Id: I6b87ce8d5c93e1ad05722dd59a66375b52b8e363
Szilárd Páll [Sat, 8 Nov 2014 02:05:31 +0000 (03:05 +0100)]
Add kernel and compiler suport for CC 3.7 devices
On compute capability 3.7 NVIDIA GPUs we can make use of the increased
register size by running 128 threads/block with keeping the minimum
number of blocks per multiprocessor at 16.
Change-Id: I84ec179a409668fe44fb9183cf3485c21bd53254
Christian Wennberg [Mon, 24 Nov 2014 13:55:47 +0000 (14:55 +0100)]
Fixed typo in amber99sb-ildn force field
Torsion calculations for N- and C-terminus ILE tries to find a non-existing atom type
Change-Id: Ibdc6ecc88e0c4da304b97f092d0a908451e12ac4
Teemu Murtola [Sat, 1 Nov 2014 10:57:00 +0000 (12:57 +0200)]
Clarify memory management for selection values
Add asserts for cases where memory would be leaked when assigning the
storage pointer for gmx_ana_selvalue_t. Add functions for cases where
the assignment is combined with some other operation that takes care of
the memory deallocation or ownership transfer to make the asserts not
give false positives.
The above clarifies the memory management and makes it less prone to
errors, but does not fix the memory leak that was revealed by "z of ..."
implementation. To actually fix that, additionally split the logic for
freeing memory for gmx_ana_selparam_t, and call that also from the place
that earlier set the value pointer to NULL.
Move Doxygen documentation for some of the affected methods and their
neighbors to the header per newer guideline.
Add some extra debug output.
Change-Id: I4e5dfa1248a20cab8a242be7209b5b0779204e64
Teemu Murtola [Tue, 2 Sep 2014 17:20:21 +0000 (20:20 +0300)]
Helper function for grouping selection positions
Add a helper function that can be used to divide selection positions
into groups based on residues and/or molecules.
Currently, 'gmx sasa' uses a construct like this, and 'gmx rdf -surf'
will require it as well, as will a replacement for 'gmx mindist', so it
makes sense to have a common helper function. The helper function can
then do extensive checking on the input just in one place, and it keeps
the tool code more readable by removing some complicated loops from
there. Also, a single set of tests is necessary to cover all the paths,
and the tool tests can focus on the tool-specific functionality, without
needing to test also the different groupings.
Improve related documentation.
Change-Id: Iaa6904c4b4b7ff5b824f37d264c327bdf52da273
David van der Spoel [Fri, 28 Nov 2014 06:40:42 +0000 (08:40 +0200)]
Fixes recently introduced bug in gmx analyze.
Since the introduction of a separate module for autocorrelation
and related algorithms the program gmx analyze did not work anymore
due to a typo introduced, such that the acf related command line
arguments were not properly added to the others.
Change-Id: If79adc761de397e42c387d1aa6bd53d565b02820
Mark Abraham [Thu, 4 Sep 2014 21:39:15 +0000 (23:39 +0200)]
Convert remaining callers of do_force to C++
Major callers are converted in other patches.
Removed unused variables, used std::min/max, named constants, put
maximum length on sscanf floats.
Introduced an instance of bMaster. Initialized gstat to and later
checked for NULL before use. These help static analysis reason
correctly. Previous code functioned correctly in practice, but correct
analysis would require cross-function analysis that cr, when passed as
non-const, is not actually modified. Fixed a warning about stepsize
not being used in L-BFGS, and added more comments to this algorithm
while editing the code to help us understand what it does.
The predict_shells() function has been modified to use the
gmx_mtop_atomnr_to_atom() call for case 2; the previous version would
use an uninitialized pointer.
Fixes #1593.
Change-Id: I54f238cedc78aadb0dad080ea3b28f001dce8d94
Mark Abraham [Wed, 12 Nov 2014 02:41:15 +0000 (02:41 +0000)]
Remove use of interaction_mask_indices on BG/Q
This field was degrading cache performance ~1% on x86. It probably
made little difference on BG/Q, because the extra integer operations
can use the second instruction-issue port, assuming the use of OpenMP
to use more than one hardware thread per core. Overall, this code is
about 1% faster on BG/Q.
Minor fix to the gmx_load_simd_4xn_interactions() function that looks
up the exclusion masks, so that new non-x86 platforms won't silently
fail for want of an implementation of this function.
Minor simplication to always pass simd_interaction_indices to
gmx_load_simd_4xn_interactions(), since it is only used on BG/Q and
then it is non-null.
Change-Id: I140a11607810e9cf08b702cae0b48426c3592fec
Mark Abraham [Thu, 27 Nov 2014 17:04:46 +0000 (18:04 +0100)]
Merge branch release-4-6 into release-5-0
Conflicts:
src/gromacs/gmxpreprocess/readir.c
(added content at same point in both branches)
Change-Id: I9df7cef8c2e4920461fb3d84806c58cf07c645e2
Teemu Murtola [Fri, 10 Oct 2014 04:06:47 +0000 (07:06 +0300)]
Clean up gmx solvate
- Remove unused code.
- Remove help text that did not have corresponding implementation.
- Remove paths in addconf.c that were no longer triggered now that
gmx insert-molecules doesn't use it (will remove the whole file next,
though, so careful review may not be warranted).
- Fix most memory leaks outside add_conf (add_conf still leaks several
MB during the unit tests...).
- Consolidated memory management and reduced the scope of some
variables.
Change-Id: Ibf570247a7e91bc028401165000142b03baebe4d
Teemu Murtola [Thu, 9 Oct 2014 18:59:57 +0000 (21:59 +0300)]
Port gmx-solvate tests to use CommandLineTestBase
This makes the tests relatively easily extendable to support checking
the output.
Change-Id: Icf835aa143d3832a340d156327c0aee6c80ef4ea
Mark Abraham [Thu, 27 Nov 2014 16:55:56 +0000 (17:55 +0100)]
Merge "Merge release-5-0 into master"
Teemu Murtola [Fri, 10 Oct 2014 04:03:54 +0000 (07:03 +0300)]
More control over file backups
Add a gmx_set_max_backup_count() to specify how many backups should be
made, instead of just relying on the environment variable. Make the
default to be no backups: now tests and FAHCORE do not need special
treatment. Instead, make the command-line initialization specify the
maximum backup count, and add a command-line option that also allows
disabling backups as an alternative to the environment variable.
This also allows removing a valgrind suppression for memory leaks from
the test code.
Change-Id: Ib512eb2a491691c76404aacbf93b67087a1afe41
Teemu Murtola [Tue, 30 Sep 2014 03:55:37 +0000 (06:55 +0300)]
Further insert-molecules cleanup
- Run insert-molecules tests under valgrind, and fix (most) memory
leaks.
- Clarify memory management by moving memory allocation of some arrays
into functions where they are actually used.
- More sensible status output.
- Additional tests.
Change-Id: I7bc2f7b4b155ac650235da00b414561b963d347c
Christoph Junghans [Wed, 26 Nov 2014 22:18:01 +0000 (15:18 -0700)]
Merge release-5-0 into master
Change-Id: If41f9c458e5d3aa5f841afcd71bc7f72a1f312c7