Roland Schulz [Tue, 20 May 2014 04:56:53 +0000 (00:56 -0400)]
Move some verlet headers to mdlib
This change does removes all dependencies on those (explicit) types
from files outside of mdlib (the only one were in programs/mdrun).
Change-Id: Ia2b90303249e3e7454ac869afb5cbe0cf290a400
Mark Abraham [Wed, 6 Aug 2014 18:57:09 +0000 (20:57 +0200)]
Add depressing quote
Change-Id: I5a66e0f90119544b4b876c273b4a678404bd4dbe
Stefan Fleischmann [Fri, 8 Aug 2014 15:14:17 +0000 (17:14 +0200)]
Avoid stack overflow on Windows with CMake > 2.8.10.2
CMake used to add "/STACK:
10000000" to the default linker flags. That
was removed in version 2.8.11-rc1. The default value used by MSVC is
apparently too small because mdrun crashes with a stack overflow when
built on Windows with MSVC or ICC and CMake newer than 2.8.10.2.
The issue is already fixed in GROMACS 5.0 and master by I1e9858ae3. This
is a backport for release-4-6 of that commit.
Change-Id: Ib9238e513da8e86049d9e56c82262055d3c8b349
Erik Lindahl [Sun, 10 Aug 2014 23:24:26 +0000 (01:24 +0200)]
Make internal BLAS/LAPACK messages less noisy
BLAS and LAPACK are close to insignificant to Gromacs, so
avoid multi-line noisy warnings about "fallback" solutions;
those will just worry users and make them spend time investigating
under what conditions it might play a role, when we really don't
care much for BLAS/LAPACK performance. Message has been
changed to short inconspicuous status lines when we are using
built-in versions.
Change-Id: I9f1b0c769907521d5cb6325c8d67cd61ca8a803a
Erik Lindahl [Wed, 30 Jul 2014 12:34:32 +0000 (14:34 +0200)]
Improve Gromacs portability
This patch addresses a few general portability issues
that we have experienced at least on Fujitsu compilers
(K computer) and (partly) for Pathscale x86 compilers.
- I have added a generic compiler definition fallback
for boost, so it will work on unidentified compilers.
- There is now a define for gmock-1.7.0 to handle
the case where wcscasecmp() is not available. We use
this by default since it is not important for us.
- If we do not find atomics for sparc64 we now warn and
fall back on mutexes rather than the compile dying.
- The compiler flag checks have been updated from
cmake-3.0, and more warning checks added.
- Since some non-GCC compilers set _GNUC_ for
compatibilty, we do not assume all such compilers
support tr1, but use the internal tr1/tuple definition
in Gmock by default.
- Before using the sched.h affinity functions, we now
check that all the functions we need are supported,
rather than just one of them.
Change-Id: I31b7f0f46a9d03a627c73a0789b4a9b24fa860ee
Erik Lindahl [Fri, 8 Aug 2014 21:37:49 +0000 (23:37 +0200)]
Replace __LP64__ with check for pointer size
The __LP64__ define is not set e.g. on PGI compilers,
so instead we use a portable way of checking for
pointer size based on defines from stdint.h.
Change-Id: Ib2dd6e45c2b168add07f5478d59aec487a91ab9e
Berk Hess [Wed, 30 Jul 2014 12:59:17 +0000 (14:59 +0200)]
Added checks for TPI + Verlet scheme
Change-Id: I040f4cc9dbb8ff25ed97d18cca0b4a2c1e7014b0
Roland Schulz [Tue, 5 Aug 2014 02:05:04 +0000 (22:05 -0400)]
Check MD5sum for regressiontest
Because we decided it is important for FFTW we should do it for
the tests too. Is only done for non -dev versions.
Change-Id: Id7d1ee027bd302ad7cb10f46d93b0f435872c67e
Teemu Murtola [Sun, 10 Aug 2014 04:24:06 +0000 (07:24 +0300)]
Improve initAfterFirstFrame() usability
The initAnalysis() function was changed a long time ago to take the
analysis settings as a parameter, to make it easy to use those values in
initialization without storing them in local variables.
Do the same for initAfterFirstFrame(), now that there is a tool in
pipeline (gmx rdf) that would actually use this function and sees the
same issue there.
Change-Id: Ib10abb3790ac5472070edc76155cfa50cce96541
Teemu Murtola [Sun, 10 Aug 2014 04:17:20 +0000 (07:17 +0300)]
Make vec.h const-correct with both C and C++
C and C++ have different semantics for const if a function parameter has
multiple indirections (e.g., a double pointer or a 2D array). If such a
parameter is not modified by the function, it is tricky to write
const-correct code using such functions:
- If the parameter is declared const, then C will give a warning if a
non-const value is passed.
- If the parameter is not declared const, then C++ will give an error
if a const value is passed.
Added a macro that allows using a single declaration in vec.h for
functions that take matrix values as input parameters, and still making
it possible to pass both non-const and const values to such parameters
in both C and C++.
Change-Id: Ifca3ff6842489c3a1040a8261ba429d96409fc21
Teemu Murtola [Sat, 9 Aug 2014 04:21:44 +0000 (07:21 +0300)]
Basic exclusion support for analysis nbsearch
Add support for setting exclusions for AnalysisNeighborhood-based
searches. Required for some functionality in gmx rdf, and the interface
is focused on satisfying that need. Efficiency could potentially be
improved, as well as sanity checks on the input. Now that the basic
machinery is there, it can be extended and the implementation improved
without hopefully affecting calling code significantly.
Change-Id: Ia667ee61ed1bb3d1171c22d7752f22517b3ccda8
Roland Schulz [Sun, 10 Aug 2014 01:59:35 +0000 (21:59 -0400)]
Merge release-4-6 into release-5-0
Conflicts:
CMakeLists.txt (version bump ignored)
Change-Id: I4ba0209b5f69b6470470530662a0b27390a02771
Teemu Murtola [Sat, 9 Aug 2014 04:19:56 +0000 (07:19 +0300)]
Add Selection::hasOnlyAtoms()
Add a convenience function for checking whether a selection consists of
atom positions only. This will be useful for analysis tools that may
only support atom positions with some combination of options, leads
to clearer code than checking type() == INDEX_ATOM, and exposes less
internal implementation details.
Change-Id: Iaa2d0bfa2f567c060f6b006d423c2910ffd46a69
Erik Lindahl [Wed, 30 Jul 2014 12:46:57 +0000 (14:46 +0200)]
Fix portability issue with ArrayRef initializer overloading
Some compilers (in particular the Fujitsu compilers that are
derived from an earlier version of Clang) will not allow
overloading functions where one version uses a pointer to a
type, and the other a vector iterator to the same type - likely
because they have implemented iterators with pointers.
Regardless of what the C++ standard says, we need this working
on K computer, so this patch replaces the overloaded
initializers with non-member functions that create an ArrayRef
or ConstArrayRef either from pointers, an array,
or iterators.
Change-Id: I4c4e327c869920cc08e3f955e88cb3a5b28c7e87
Erik Lindahl [Tue, 5 Aug 2014 10:15:39 +0000 (12:15 +0200)]
Changed names of test files to avoid Fujitsu compiler bug
The Fujitsu compilers use an older version of the Clang
parser where certain static class initializers (e.g. strings)
are put in a static initializer function stub named after
the file and class. When the first such class has identical
names in two different files where the last part of the
name is identical, this will result in clashing symbols
at link time. Working around this would require an extra
(unused) class definition in each file that would pollute the
code, so for now we merely rename the files where it occurs
and hope that the compilers will be fixed (a bug report has
been submitted).
Change-Id: If552a06950facb0cdbb6e34e0b324aafa6083ae8
Teemu Murtola [Sun, 3 Aug 2014 04:27:36 +0000 (07:27 +0300)]
Basic support for 2D neighborhood search for analysis
Add support for doing a neighborhood search based on distances in the
X-Y plane into the analysis neighborhood search routines. The basic
logic is lifted from 'gmx rdf -xy' and made a bit more general.
Currently, only basic searching is implemented, but grid-based should
not be too difficult either. Later implementation of a grid-based
search should be transparent to callers.
Change-Id: I635d7f7a5eb0136d7a3a4c968ddaa34b03ae3bc7
Berk Hess [Mon, 4 Aug 2014 12:18:36 +0000 (14:18 +0200)]
Fix hang with LJ-PME and empty domains
With LJ-PME and DD domains with 0 atoms and LJ-PME mdrun could hang.
Fixes #1571.
Change-Id: Ie205954c4f5e1a52df846a69972f735867eea15d
Roland Schulz [Tue, 29 Jul 2014 23:37:19 +0000 (19:37 -0400)]
Workaround for ICC 14
Problem was only present with BUILD_SHARED_LIBS=no
Change-Id: Ieb4377d819aa5eff3d139cdbe55775989118a738
Teemu Murtola [Sun, 3 Aug 2014 14:32:31 +0000 (17:32 +0300)]
Verify MD5 sum for FFTW download
Since ExternalProject provides confusing error messages with MD5
checking enabled, add a custom download step that works as expected.
When passed a local file as the URL, ExternalProject does the MD5
verification just fine, so the code now downloads the tarball in a
custom step and then passes that local file to ExternalProject.
This allows removing the lengthy security warning that appeared there if
one was just following the quick-and-dirty installation instructions,
and likely only confused novice users. While this change may not
improve overall security significantly, it hopefully allows everyone to
agree to remove that warning and thus improve the end-user experience.
Change-Id: I9ac5a30ae5858b7a6557ccb2d981cc909457d020
Teemu Murtola [Sun, 3 Aug 2014 04:16:54 +0000 (07:16 +0300)]
Check frame atom count before evaluating selections
Several tools work even if passed a trajectory that only contains a
subset of the atoms specified in the topology. The selections work as
well, provided that the selections don't need to access other atoms.
It may be a bit unclear what the selections need for evaluation, though.
Now the selections report an error if the trajectory does not contain
the necessary atoms; previously, it would most likely just crash.
I'm not 100% sure that the check catches all possible cases, but at
least for the majority of the cases it will provide significantly better
feedback.
Currently, it is only possible to pass the first N atoms, as supporting
anything else would require significant changes elsewhere as well, but
the check itself would be straightforward to adapt if the implementation
gets otherwise done (just replace the std::max operations with unions).
Change-Id: I5d9bf68567ba8634bb81b82a6833c0d398a40bdb
Berk Hess [Sat, 2 Aug 2014 08:53:31 +0000 (10:53 +0200)]
Fixed PME bug with high OpenMP thread count
PME energies and forces could be incorrect with combined MPI+OpenMP
parallelization. This would, only, happen when
pmegrids->nthread_comm[YY] >= 2, which can only occur with high OpenMP
thread count with multiple large prime factors.
It's unlikely that this issue affected production runs.
Fixes #1572.
Change-Id: I03b38c279c8f8ab2e111dad0976edad88b3ea93b
Erik Lindahl [Thu, 31 Jul 2014 14:32:30 +0000 (16:32 +0200)]
Added tests for denormal and underflow for simd exp()
The SIMD math functions are not expected to handle
the denormal range correctly, but it should at least
be clamped to zero rather than producing garbage
values. No changes required to the math function,
so it appears to pass these tests as-is.
Change-Id: I841c2948c81f6b62f42e60ff30ffd5e4f77926fa
Teemu Murtola [Thu, 31 Jul 2014 17:57:12 +0000 (19:57 +0200)]
Merge "Merge release-5-0 into master"
Roland Schulz [Mon, 7 Jul 2014 21:44:28 +0000 (17:44 -0400)]
Replace most strdup with gmx_strdup
gmx_strdup existed but code was using a mixture of it and strdup.
Advantages of using gmx_strudup everywhere:
- consistency
- error handling for out of memory
- strdup might not be available (e.g. Cygwin)
Left strdup in testutils which had already error handling. And fatalerror.cpp
which cannot use gmx_strdup because it could lead to an infinite loop.
If all strdup are removed gnu++0x in gmxTestCXX11.cmake is not required
anymore.
Change-Id: I6ed3e17e34b833b01222d4b45c680db7aadada34
Roland Schulz [Thu, 31 Jul 2014 16:23:51 +0000 (12:23 -0400)]
Merge release-5-0 into master
Change-Id: Ifc6c3180fe5803bc9a23a0be84be7c93ecb7f472
Berk Hess [Thu, 31 Jul 2014 11:08:34 +0000 (13:08 +0200)]
Avoid division by 0 in nbnxn_search
Note that this issue did not affect any results.
Change-Id: I3c454783484c416b50808b9512e14072cb749784
Mark Abraham [Thu, 24 Jul 2014 14:34:04 +0000 (16:34 +0200)]
Converted md_support.c to C++
Removed some unused variables. Converted min to std::min.
Added some static_cast<int> to keep gcc-4.1 happy.
Change-Id: I45823c40a0058a74469d8da1f95a0c65fe6c602c
Christian Wennberg [Mon, 28 Jul 2014 16:06:36 +0000 (18:06 +0200)]
Fix overflow in LJ-PME nbnxn kernels
The SIMD exp function in the LJ-PME nbnxn kernels could overflow
for pair distances far beyond the cut-off. Added a mask to avoid this.
Fixes #1552
Change-Id: Id87710f3815b341f53a69df0a2990d0bb4edfa74
Roland Schulz [Mon, 28 Jul 2014 19:05:08 +0000 (21:05 +0200)]
Merge "Merge release-5-0 into master"
Roland Schulz [Mon, 28 Jul 2014 17:32:04 +0000 (13:32 -0400)]
Merge release-5-0 into master
Conflicts:
src/testutils/refdata.h (trivial)
Manual changes:
src/external/Random123-1.08/include/Random123/features/compilerfeatures.h
replaced simple.h with basedefintions.h
Change-Id: I96fbc370b1c6bec101d877b2e3bda1adec56fcb6
Roland Schulz [Fri, 25 Jul 2014 22:36:17 +0000 (18:36 -0400)]
Fix build of binary package
Commit a00437 accidentally changed that the source-package error is also
printed for binary packages. Because it defined
CPACK_SOURCE_PACKAGE_FILE_NAME which we used to detect source-package.
This now uses CPACK_INSTALL_CMAKE_PROJECTS which is hopefully future-proof.
It also adds a proper warning for binary packages.
Change-Id: I842655755bed1c448f30db435a85ad1ca5844a60
Roland Schulz [Tue, 1 Jul 2014 08:54:42 +0000 (04:54 -0400)]
Add unit test for random/Threefry
Change-Id: I5f9d60c594c0d7a6925b829658119d2fdea5d113
Roland Schulz [Tue, 1 Jul 2014 10:35:53 +0000 (06:35 -0400)]
Remove Random123/features
Remove all auto-detection and replace with hard-coded
values and gmx_inline.
The purpose is that it now should compile on any hardware /
compiler. Correctness is guaranteed (as is custom in all
of Gromacs) by unit tests (separate commit).
Change-Id: I7e75ff38f7288e87817d42582ae844c1d38ef369
Roland Schulz [Mon, 7 Jul 2014 01:14:45 +0000 (21:14 -0400)]
Remove individual cuda libraries
Instead use CUDA_ADD_LIBRARY to build libgromacs. It builds all
non CUDA files using the standard build rules. Thus this should not
have any effect on non CUDA files. All CUDA files were compiled
with the same nvcc OPTIONS, and thus nothing should have changed
for them either.
This also removes the requirement for gmxManageNvccConfig to set
fPIC manually because now CUDA_ADD_LIBRARY knows when the library
is shared.
Change-Id: I23fe6b7a9766a39c525cdc1abfa3922ec24058d9
Roland Schulz [Wed, 9 Jul 2014 00:38:19 +0000 (20:38 -0400)]
Remove memtest
Native GPU acceleration isn't using it and OpenMM has been removed.
Change-Id: I9c657d37654b3a822ff980b5e28e5158fd52884b
Erik Lindahl [Sun, 27 Jul 2014 08:54:33 +0000 (10:54 +0200)]
Fix selection of xtc groups not starting at index 0
The code to select atoms to write to the xtc file
only looped over the number of atoms selected for
output rather than all atoms. This meant that xtc
group selections that were not located at the start
of the atom indices would not be written correctly.
Fixes #1561.
Change-Id: I48886a75c682e38122dadcb2f752507b14b308fe
Roland Schulz [Sun, 13 Jul 2014 00:34:41 +0000 (20:34 -0400)]
Workaround for ICC 14 bug
ICC name-mangling is incorrect for static variable in static
member in anonymous namespace.
Fixes #1558
Change-Id: Ie861224bcc61df2f26025d1dd106bcab827308bb
Roland Schulz [Thu, 10 Jul 2014 01:11:50 +0000 (21:11 -0400)]
Fix Cygwin+Shared-Libs+FFTW
Cygwin doesn't have or require fPIC
Change-Id: If1af6f070e2cd0457f429a155e92014af51c0c33
Teemu Murtola [Thu, 24 Jul 2014 03:29:49 +0000 (06:29 +0300)]
Do not actually install uniqueptr.h
Due to some rebasing error or something,
22d74432 unintentionally undid
the change in
1078df1d.
Change-Id: Icabe61112b98229bc4e5e13462892b9f5a584d8b
Roland Schulz [Tue, 1 Jul 2014 08:53:53 +0000 (04:53 -0400)]
Add support for int64 in refdata
Change-Id: Ia5fedbe7593d9630a095eaf1cb6d69f0c1223ee0
Roland Schulz [Tue, 22 Jul 2014 03:35:00 +0000 (23:35 -0400)]
Fix GMX_BUILD_OWN_FFTW for Cygwin
CMAKE_BINARY_PREFIX doesn't exist and thus the previous version added just
an extra slash which doesn't work under Cygwin.
Change-Id: I285f93020d0818515fff3f2cfbf41662f03190d0
Roland Schulz [Wed, 16 Jul 2014 00:13:01 +0000 (20:13 -0400)]
Fix GMX_NONBONDED_NUM_THREADS!=GMX_PAIRSEARCH_NUM_THREADS
Change-Id: I7d5416fa299e244244d7bf48e785090da2e0b6d0
Mark Abraham [Sun, 6 Jul 2014 16:52:23 +0000 (18:52 +0200)]
Quiet gcc-4.8 warnings about unused results
The warning -Wunused-result is on by default, so we'd like to deal
with those before adding routine testing to Jenkins with gcc-4.8.
Change-Id: I905d43e7fa50229b38d2d3d9e642372790f73899
Teemu Murtola [Thu, 10 Jul 2014 03:39:59 +0000 (06:39 +0300)]
Fix HTML help and man pages for commands with dashes
Replace one case of "gmx-something" to "gmx something" conversion with
explicit construction of the latter from its component parts.
The other instance does not (easily) have the component parts available,
so only the first dash is removed when converting between
"gmx-something" and "gmx something". Add an assert for the condition
that this requires to remain functional.
Change-Id: I5bfbd1acae440af93b3b7b50a25d8782a7e60c8a
Erik Lindahl [Sat, 12 Jul 2014 08:10:36 +0000 (10:10 +0200)]
Avoid clang/32 optimization affecting IEEE endian detection
This turns the detection code into a c++ file, moves the
structure to a global one and adds volatile specifiers.
This should hopefully prevent any standard-adhering
compiler from touching the data.
Change-Id: I6f4b86ddf6b0567655466e0877bb1ba39a45ce4e
Teemu Murtola [Wed, 9 Jul 2014 19:43:09 +0000 (22:43 +0300)]
Make gmx_node_num/rank safer
With real MPI, MPI_Init() is called as the first thing, but with
thread-MPI, MPI is "initialized" only much later, when the actual
threads are started. But code between these two points may expect to be
able to check whether the current rank is the master and/or whether
there are other ranks, and try to use these functions for that.
Previously, for thread-MPI builds, they accessed invalid memory and
returned essentially random values if called between these two init
points. Now they behave as if the single thread that is executing at
that time is the single master rank.
Also document the behavior in more detail.
Change-Id: Ia3bef9c5899c528e315fe1310bde970dfec68769
Erik Lindahl [Fri, 11 Jul 2014 08:16:27 +0000 (10:16 +0200)]
Make AVX2 check more robust
Apparently the GNU assembler version 2.20 supported some
parts of AVX2 (in particular the FMA floating-point ops),
which caused our cmake test to pass. This patch changes
it to test the integer addition instead, which isn't
supported in as-2.20 in my tests.
Change-Id: I79e516639fc78d1590d306f486eb027962388543
Teemu Murtola [Thu, 10 Jul 2014 10:57:32 +0000 (13:57 +0300)]
Fix HTML links that contain file extensions
- Consider '-' and '_' as part of a word when replacing links, so that
convert-tpr and make_ndx are considered single words, and the
extensions there are not converted into links.
- Do links.dat replacement before program links, so that the URL in the
above program name links is not processed.
Change-Id: I0ce204d3adedc56e57c1e1cd150a63d21c442eab
Teemu Murtola [Thu, 10 Jul 2014 13:41:15 +0000 (16:41 +0300)]
Bump SOVERSION
There for sure have already been binary-incompatible changes in master
compared to 5.0, and there will be more.
Change-Id: I8522e8b140920e4c3123cb94ad62e760e3869043
Roland Schulz [Thu, 10 Jul 2014 01:36:31 +0000 (21:36 -0400)]
Fix xml2 link check rerun
gmx_check_if_changed logic had a typo and thus check wasn't rerun
if LIBXML2_INCLUDE_DIR or LIBXML2_LIBRARIES changed.
Change-Id: I838f32fd6e9b62480acc4eafc4bf3d657477d09d
Mark Abraham [Sat, 5 Jul 2014 22:25:11 +0000 (00:25 +0200)]
Name the tarball how we like it
This names the tarball and the top-level directory how
GROMACS usually does it. Previously, I'd been renaming
stuff manually.
Change-Id: I485c4a4c711064a3a0ca2343ec696375cbc3de96
Mark Abraham [Thu, 3 Jul 2014 14:30:04 +0000 (16:30 +0200)]
Quieten repeated cmake runs
We should not hassle the user about optional libraries that were not
found the first time. If the user wants to detect ones found in a
different place, then they can unset the relevant cache variables to
re-trigger detection and/or related output.
Change-Id: I266268dccc46da5b098d3d5640798cbee7ee6fd0
Roland Schulz [Wed, 14 May 2014 22:28:00 +0000 (18:28 -0400)]
Add comments for code with race condition
Change-Id: I89faa979ad605c463097e842e1112b2a24adee09
Teemu Murtola [Wed, 9 Jul 2014 05:09:26 +0000 (08:09 +0300)]
Clean up gmx_header_config
- Remove some probably unnecessary uses for GMX_CYGWIN.
- Move GMX_CYGWIN to config.h as it is not used in installed headers
(maybe it would be better to get rid of even the remaining uses in
favor of some other mechanism).
- Remove gmx_header_config_gen.h and all complexity that supports it as
there is nothing generated there any longer.
- GMX_NATIVE_WINDOWS could possibly be moved somewhere else, but
currently it is only used in two headers, so possibly even better
would be to just get rid of those two.
Closes #1454
Change-Id: Id27370a007eda30b7c803a3c14aa687d43555db8
Teemu Murtola [Wed, 9 Jul 2014 05:02:21 +0000 (08:02 +0300)]
Merge release-5-0 into master
Conflicts:
cmake/gmxCFlags.cmake (adjacent changes)
Change-Id: I45088d7b5256613971b9926fc5fa50511a2ed743
Roland Schulz [Sun, 6 Jul 2014 04:40:14 +0000 (00:40 -0400)]
Fix Cygwin build
Doesn't work with AVX but I suspect this to be Cygwin's/GCC's fault.
GCC Bug 61730
Change-Id: I171e8414a8d65800804226034604a9973770bfdd
Roland Schulz [Thu, 3 Jul 2014 02:43:32 +0000 (22:43 -0400)]
Remove all unnecessary HAVE_CONFIG_H
There is no reason to check for HAVE_CONFIG_H other than
in public headers. Left it in the one public header which used
it (gromacs/math/vec.h). Also didn't change thread_mpi.
Change-Id: I15237d3d2dc35a4087a04fc2fbde4a3cb05d2e59
Teemu Murtola [Sat, 17 May 2014 05:06:08 +0000 (08:06 +0300)]
Improve module dependency graph layout
The suppressions for the cycle checker are now also used to mark those
suppressed dependencies invalid in the dependency graph, and ignore them
in the layout. If all the cycles are suppressed in this way, the
dependency graph passed to dot is a DAG, which is what dot is designed
to lay out. So the result is much better (and resembles the
dependencies more clearly, in particular if some thought is put into
which edge from a cycle is suppressed).
Change-Id: Ie4de368197939ec4613d599f51b940afc95dcd2d
Teemu Murtola [Sun, 20 Apr 2014 12:48:46 +0000 (15:48 +0300)]
Module dependency cycle checker for 'doc-check'
The doc-check script now also checks for cyclic dependencies between
subdirectories within libgromacs. Currently, this reports 247 cycles,
out of which 210 contain a legacyheaders->swap edge. Update the
documentation for the checker.
Add a separate suppression mechanism for cycles. With some changes in
the way the cycles are reported, the existing suppression mechanism
could also have been used. However, this separate mechanism allows the
same information used for layout of the dependency graph, such that the
ignored edges causing cycles are also ignored in the dependency ordering
of the modules.
Change-Id: I7b9ed3cd0d5ed05dee8902f96b2407a113f4b200
Erik Lindahl [Mon, 7 Jul 2014 11:43:58 +0000 (13:43 +0200)]
Make IEEE754 check more robust
This change should prevent compilers from
optimizing away the structure used for checking
strings in the binary by also using it to produce
a return values. There are now also clearer
warnings, and if IEEE754 cannot be detected we
fall by to using the OS versions of erf/erfc()
in double precision. Fixes compiles on Power7.
Change-Id: I8ed834d5b87baf33e03725d2ab93a60a76c34a12
Teemu Murtola [Wed, 14 May 2014 18:37:35 +0000 (21:37 +0300)]
Remove PCA_QUIET
Instead of exposing this to all callers of parse_common_args(), make the
command-line runner only execute the module on the master node in the
case help is being printed. It should be quite rare that anyone runs -h
with multiple nodes (which is the only case this nowadays affected), so
this doesn't need an extra flag that callers need to be aware of.
Change-Id: I0a0b76d358bd7db283e5244c49acbd4a40d7af6f
Teemu Murtola [Fri, 27 Jun 2014 11:20:39 +0000 (14:20 +0300)]
Additional index group checks for selections
Now index groups provided to selections are checked more thoroughly, and
an error is given if a group references an atom index outside the
topology (or the maximum atom number in the absence of a topology).
Negative atom indices also trigger the same error.
Previously, such index groups were silently accepted (except for a
warning during reading for negative indices), and the out-of-range atoms
dropped from the selections.
Change-Id: Id7a024ed316920d9594454ae36f7b9bdd9a429fc
Teemu Murtola [Sun, 22 Jun 2014 11:18:13 +0000 (14:18 +0300)]
Clean up program name handling in oenv
- Remove unused functions to access the program name and command line
from oenv.
- Replace these with direct access to a ProgramContextInterface, and use
that instead of the global program context instance in places where
output_env_t is easily accessible.
- Replace some calls to ShortProgram() with an equivalent call in oenv
for places where oenv is readily accessible.
Change-Id: I2e8bc8701b8217f51ed9936338e1e9c3c21bd8ba
Teemu Murtola [Sun, 11 May 2014 18:28:45 +0000 (21:28 +0300)]
Improve FileNameOption error handling
- Make FileNameOption check the presence of an input file for required
input options, and give an informative error message if that is not
the case. This hopefully reduces confusion about the
"File I/O error: topol.tpr" messages that are reported.
- Make FileNameOption check if the file name provided by the user for an
input file exists, and if it does, only check that it is valid for
fn2ftp() instead of overriding the user. If the file name is not
valid for the option, an informative error is given.
- Add a special mechanism for -multi and -multidir to avoid the check
above, as well as all other file name completion (that was done
earlier, but didn't really work as expected). The same mechanism
could also replace PCA_NOT_READ_NODE, if someone wants to make that
work again.
- Move all logic that changes user input to something else or checks
file system contents to FileNameOptionManager to make that more easily
customizable. FileNameOption without a manager now only checks that
the file name has a recognized and valid type for the option.
- Expose the necessary functionality through FileNameOptionInfo to do
the above.
- Split tests according to the above division of responsibilities, and
add tests for most of the error paths.
There is very little code that remains the same in this change, so the
rewrite and move are combined.
The first bullet causes some changes in behavior if programs have
declared file name options with ffREAD, but don't actually use the input
always, but those are easy to fix when found. This required changing
one existing test for pargs.cpp.
Change-Id: Iea2c60e5de35160cf1faf599afde99b9858e98c7
Teemu Murtola [Mon, 7 Jul 2014 15:28:22 +0000 (18:28 +0300)]
Move GMX_CXX11 to config.h
Now that uniqueptr.h is not used by any installed header, do not install
it. Move GMX_CXX11 that was used only by this file to config.h now that
config.h can be freely included in that file.
Part of #1454
Change-Id: Ie4c2f23057962f2dc1f96c309c10d5ce0c2c2a74
Teemu Murtola [Mon, 7 Jul 2014 04:59:38 +0000 (07:59 +0300)]
Remove gmx_unique_ptr from options public headers
There was a single factory function in the generic option interface that
created objects and passed ownership to the caller. The implementation
for this method always follows the same pattern, and there only a single
caller, so it is easy to make it exception-safe while returning a plain
pointer. As a side effect, it removes some boilerplate code from all
the implementations for this method.
There are more complicated alternatives that avoid the plain pointer,
based on creating a helper class that can only be forward declared in
the installed headers, but I don't think those are worth the extra code.
This removes the last use of gmx_unique_ptr in an installed header.
Part of #1454
Change-Id: I948973d32042d388341265d5db6efbbcf0f7db8f
Teemu Murtola [Sun, 6 Jul 2014 04:04:57 +0000 (07:04 +0300)]
Make selections ignore \r in input
Now the selection engine treats \r (as well as various other space
characters) the same as a space. Added a unit test for this.
There is an extra trailing space in some cases that may be more common
with \r\n than otherwise, but that is a separate, mostly cosmetic
issue.
Fixes #1555
Change-Id: I78dfe8e477133b98a98fecf1fad243262f9b30c8
Teemu Murtola [Mon, 7 Jul 2014 04:41:26 +0000 (07:41 +0300)]
Remove selection help from SelectionCollection
Instead, make the only caller outside the selection module to use
selhelp.h directly. This is not significantly messier, and allows
removing one use of gmx_unique_ptr from an installed header.
To actually remove that instance, do not install helptopicinterface.h.
This has the added benefit that now the whole onlinehelp module is free
from public headers, making the interface cleaner. Adjust doxygen
documentation accordingly.
Part of #1454
Change-Id: Ifb557da86fb0d422650029812d30cc6766730fb9
Teemu Murtola [Sun, 6 Jul 2014 19:46:13 +0000 (22:46 +0300)]
Change some gmx_unique_ptr to shared_ptr in public headers
Change "trivial" occurrences of gmx_unique_ptr to boost::shared_ptr in
cases where there is a simple factory or a sink function where the
ownership of the object passes in or out from the library.
The main advantages:
- Removes GMX_CXX11 dependencies from installed headers.
- Improves memory management, where the memory is deallocated in the
same library/executable that allocated it (through the shared_ptr
deleter that gets created during construction).
The only disadvantage is that this blurs the ownership of the objects
slightly.
There are only two other instances of gmx_unique_ptr left in installed
headers, and those should be relatively easy to remove as well with a
bit of refactoring.
Related to #1454.
Change-Id: I1f694b30e4f8129f5d010115c0968a444e927ca0
Mark Abraham [Sun, 6 Jul 2014 11:15:00 +0000 (13:15 +0200)]
Remove bOK from MD loop
Berk hacked this off in 2002 and it hasn't been used since.
Change-Id: Ife0e0c7d2ceff922561cbf9f61db45061dda0f77
Teemu Murtola [Sat, 21 Jun 2014 04:48:31 +0000 (07:48 +0300)]
Move -debug to cmdlinemodulemanager.cpp
Now the option can be used uniformly even for tools that do not call
parse_common_args(). The description is still mdrun-specific, though.
While at it, made it work without an explicit debug level: if only
-debug is provided without any value, the debug level defaults to 1.
Also made -hidden work for 'gmx -h', as there now is a hidden option
there.
Renamed some associated functions to start with a gmx_ prefix, and
reorder things in fatalerror.* so that debugging code is in a single
block, and functions are in the same order in both files.
Removed unused debug_level from oenv. This probably needs a better
mechanism to control what is written to the debugging output.
Change-Id: I1526916356b545c56d9f601f121e6c4e581639eb
Teemu Murtola [Tue, 8 Jul 2014 03:53:47 +0000 (06:53 +0300)]
Make doc-check pass again without warnings
The include path needs to be updated here as well for tng_io.
Change-Id: I747a00a607fa6df6638dddc24f009565ab923c50
Mark Abraham [Sat, 5 Jul 2014 12:24:28 +0000 (14:24 +0200)]
Fix tarball and install, particularly for INSTALL
Getting the INSTALL file generated from the markdown, into the tarball
via CPack and not otherwise installed is a bit tricky. I did this
manually for 5.0, but this automates things. CPack source archives use
a mechanism that acts on whole directories. So we put INSTALL into its
own output directory (as we do for generated HTML), and the
directory-globbing mechanism takes care of it fine. Added some
documentation for why we need to do this.
Added more CPack-time checks that the tarball will be complete.
Prevented installation of .gitattributes.
Change-Id: I77c645faf7b292a085165bdd1598741dae6972a5
Mark Abraham [Mon, 7 Jul 2014 13:28:38 +0000 (15:28 +0200)]
Version bump after 4.6.6 release
Change-Id: Ifac0db3a07caba28c123d233b54356a1db0d79ba
Teemu Murtola [Sat, 5 Jul 2014 16:14:21 +0000 (19:14 +0300)]
Merge release-5-0 into master
Change-Id: I9813e3770c78f62c9003987b22c0315c89c87485
Magnus Lundborg [Tue, 1 Jul 2014 10:09:14 +0000 (12:09 +0200)]
Fix bug causing reading next frame not to stop.
Corresponds to commit
e6e85d562829bca in the TNG repo.
Change-Id: I89ee3e7649c4cf832798d9e2ce61b397a1757579
Magnus Lundborg [Mon, 30 Jun 2014 08:06:02 +0000 (10:06 +0200)]
Fix tng_num_frame_sets_get() with no frame sets.
When there are no frame sets the function returned an error.
This corresponds to commit
6f7862c7406b in the TNG repository.
Fixes #1540
Change-Id: I3df04d84ebd8fcdc6be76a446efa3209df363d23
Teemu Murtola [Sun, 29 Jun 2014 05:00:45 +0000 (08:00 +0300)]
Reinstantiate unsorted index group check
In most contexts, providing an index group with duplicate atoms or atom
indices not in ascending order results in the selection getting silently
evaluated incorrectly. The selection engine now detects this case and
gives a fatal error, hopefully reducing confusion if such a case arises.
The case where an unsorted index group is provided as a sole value of a
selection is still supported.
Change-Id: I0b647a26d9a1b47da10c84bdd3d073412d166a75
David van der Spoel [Wed, 2 Jul 2014 14:12:38 +0000 (16:12 +0200)]
Fixed inconsistency in blocka handling.
In some cases the inconsistent handling of blocka structure
throughout the gromacs code could lead to reading uninitialized
variables (src->a[nra]). This is fixed here.
Change-Id: I514072e713c11f5ad7c15dbd702468789d3d53d3
Roland Schulz [Thu, 3 Jul 2014 16:17:39 +0000 (12:17 -0400)]
Add running tests to install-guide
At least on architectures we don't test, it is necessary that the user
runs the tests. Because we don't have a way to query whether it is a
tested architecture every user should run the tests.
Also add a warning if unit tests cannot be build because libmxl2 wasn't
found.
Partial fix for #1548
Change-Id: I8b87cc77f909d5cf2a4ee70151096312e3191af2
Teemu Murtola [Tue, 1 Jul 2014 04:05:41 +0000 (07:05 +0300)]
Update some installation-related docs
- Add comments for installation-related variables in CMake, in
particular the RPATH section that has caused some confusion.
- Document those few variables that can be used to alter the
installation tree structure in the install guide.
- Reword some parts in the install guide about CMake iteration.
- Remove GMX_INSTALL_PREFIX, as there are other approaches to get the
desired result with CPack that are less confusing. This variable
wasn't documented or probably used anywhere outside some dormant
Jenkins jobs.
Change-Id: I199b06d905b45961313ed9fa44ae82e5987be0fe
Roland Schulz [Tue, 1 Jul 2014 08:53:53 +0000 (04:53 -0400)]
Add support for int64 in refdata
Change-Id: Ia5fedbe7593d9630a095eaf1cb6d69f0c1223ee0
Teemu Murtola [Tue, 1 Jul 2014 04:17:21 +0000 (07:17 +0300)]
Adjust include directory order for some corner cases
Always add headers found from the source/build tree to the beginning of
the list of include paths, such that they are preferred over those
potentially found in other non-system directories.
Fixes #1539
Change-Id: Id79634073fea5b10f250128db8ab08019a7f9e21
Mark Abraham [Sat, 28 Jun 2014 17:13:50 +0000 (19:13 +0200)]
Fix GMock to work on MSVC
This duplicates the logic of GMock's (pre-release) commit r675 in
order that GROMACS can build and test without problems on all MSVC
versions.
Change-Id: I8a7188d2d34fdfa2753a71291d8528e5c9753c6d
Teemu Murtola [Mon, 30 Jun 2014 14:10:49 +0000 (17:10 +0300)]
Merge release-5-0 into master
Conflicts:
CMakeLists.txt (version only)
src/gromacs/fileio/tngio.h (includes only)
src/gromacs/fileio/tngio_for_tools.h (includes only)
src/gromacs/gmxlib/gmx_thread_affinity.c
(took variable rename from 5.0, other changes from master
kept)
src/gromacs/gmxpreprocess/hackblock.c (includes only)
src/gromacs/gmxpreprocess/pdb2top.cpp
(took 5.0 removal of unused parameter)
src/gromacs/mdlib/constr.c (includes only)
src/gromacs/utility/fatalerror.cpp
(applied similar error message change to basenetwork.cpp)
Change-Id: I7137225e37828a19c4b92aa2ec055e7177aa5676
Mark Abraham [Sun, 29 Jun 2014 20:51:47 +0000 (22:51 +0200)]
Version bump for 5.0
Change-Id: I7ef67766e28e7ac65f9e027e61bfb9f13809d543
Mark Abraham [Sun, 29 Jun 2014 18:16:06 +0000 (20:16 +0200)]
Add forgotten licenses to COPYING
Change-Id: I3c9beffae164d0c0260d121af29db051b60ca159
Mark Abraham [Sat, 28 Jun 2014 19:57:18 +0000 (21:57 +0200)]
Refer to "mixed" precision in user-facing documentation
GROMACS has used mixed precision for many years, so we may as well be
accurate about it. In the code, we should continue to refer to single
precision for aspects of the implementation, but mdrun should not
be referred to as running in "single precision."
Also removed useless install-guide section from manual.
Change-Id: I3c26acedcdb391de50bdcb6a5e913ea0cfc32845
Berk Hess [Sun, 29 Jun 2014 09:31:14 +0000 (11:31 +0200)]
Take LJ-PME into account for table spacing
The table spacing for the grid correction for Ewald interactions
only took Coulomb and not LJ into account. Note that with default
settings LJ tables can use a coarser spacing than Coulomb.
Change-Id: Ib0f831a2177bcf10ad9e03c6764cc155e89abdbb
Erik Lindahl [Fri, 27 Jun 2014 09:04:29 +0000 (11:04 +0200)]
Fixed free energy with LJ-PME
First, Only the normal LJ part of the potential was
shifted for LJ-PME with potential-shift
modifier in the free energy kernel,
and not the Ewald component. This had an effect
of roughly 0.05% on the total energy. Second,
Berk found that the verlet nbnxn SIMD LJ-PME kernel
had an issue that caused the potential and force
to be slightly off. With this patch, both
potential and force match the non-free-energy
kernel perfectly with at lambda=0.
Change-Id: I4bc53ce1bdb96ba06656b86470dbf8dbd1e81972
Mark Abraham [Thu, 5 Jun 2014 17:20:56 +0000 (19:20 +0200)]
Convert install guide to markdown
Adds `make install-guide` to make both a plain-text INSTALL for the
tarball, and a monolithic HTML install guide for uploading to the
website. Intended for processing with pandoc, but I don't think
there's any pandoc-specific extensions used. Naturally, if the build
system doesn't have pandoc, then this make target is not available,
just like the other documentation features.
Added more description about various SIMD instruction sets,
portability, and how to use compilers and the GMX_SIMD setting.
Added summary of important CMake options for typical GROMACS
installations.
This now does some variable interpolation to keep accuracy up without
active maintenance, so setting some such variables gets changed a bit.
Mentioned more optional build components
Minor textual changes to the install guide.
Fixes #1440. Refs #1242
Change-Id: Iff8e165759fbf8cc5199c8447e912403b8a79a17
Mark Abraham [Sun, 29 Jun 2014 09:46:03 +0000 (11:46 +0200)]
Merge "Merge release-4-6 into release-5-0" into release-5-0
Berk Hess [Wed, 5 Mar 2014 22:24:30 +0000 (23:24 +0100)]
Updated LJ-PME documentation
Added a description of the more accurate treatment of the LJ
combination rule treatment for LJ-PME.
Also updated the Verlet support table.
Removed old figure describing the quality of an old approximation no
longer available in the code.
Added some usage suggestions.
Change-Id: If671536bced4a404caab10b7aa386f8f88f95c46
Rossen Apostolov [Thu, 19 Jun 2014 09:48:16 +0000 (11:48 +0200)]
Use cosistent style when referring to force fields.
Refs #677.
Change-Id: I386c6d9782c88d5af929a3230cd3beb06f2cfbd2
Teemu Murtola [Sun, 29 Jun 2014 04:39:59 +0000 (07:39 +0300)]
Remove some hardcoded selection string buffers
This removes some arbitrary limitations on the length of the input
string. The error handling would still be in the need of a bigger
overhaul (all of these were in the error handling parts).
Fixes #1538, related to #655.
Change-Id: I1112b5ccae526cf3b8fd079bbabf8d7f61e52635
Roland Schulz [Sun, 29 Jun 2014 07:32:16 +0000 (03:32 -0400)]
Merge release-4-6 into release-5-0
Change-Id: I89230f8a117d9636570e573b7b2657c79aea51c0
Roland Schulz [Sun, 29 Jun 2014 05:17:34 +0000 (01:17 -0400)]
Fix detection of i386 in tmpi
The i386 without underscore is not recommended for new code and is not
defined if -std=... (other than gnu...) is passed on the command line.
__i386__ is already present for GCC 3.2 so there is no need for the old
name. Also we use __i386__ in other places in the code already.
We dont pass such a flag by default for 4.6, but the user could.
In 5.0 this fixes tmpi if the compiler supports c++11 and we pass
std=c++11.
Fixes #1533
Change-Id: I615cb91d3e3196a90fa4ba03fa183bf47af5d444
Erik Lindahl [Tue, 24 Jun 2014 20:54:45 +0000 (22:54 +0200)]
Enable rtp angle/dihedral entries not connected by bonds
pdb2gmx has previously silently ignored any angles or
torsions not connected by bonds. This patch adds code
to mark with RTP/hackblock entries that have been
assigned in this search, and afterwards we add those
that have not yet been matched. In particular, this makes
it possible to have angles or torsions in RTP entries
even if those atoms are not connected by bonds.
Fixes #1276.
Change-Id: I61c3c3954ef8c4cd59956d88b73c6a69c1a66c65
Michael Shirts [Sun, 1 Dec 2013 01:06:10 +0000 (20:06 -0500)]
Allow printing potential energies to dhdl.xvg file
Previously, only total energies were printed out to the dhdl.xvg
file. In many cases, it is more useful to print out just
the potential energies. For example, when doing mdrun -rerun,
and comparing to output run without rerun, the velocities may not
be identical, which makes it difficult to compare the total
energies between runs when computing free energies and other
observables. dhdl-print-energy can now be 'no', 'total',
or 'potential'. The alternative 'kinetic' should generally not
be needed, since that can be done analytically in all cases.
Backwards compatible in the .tpr since gmx_bool is an int. The
old false value will be interpreted as 'no', and the 'yes' value
as 'total' energy, which will reproduce the old behavior.
Fixes #1329
Change-Id: I16828ef07c46bcfc61fe03744cbf251c00160636
David van der Spoel [Sat, 28 Jun 2014 07:33:55 +0000 (09:33 +0200)]
Fixes #1532, SEGV in g_current.
Unfortunately the tool does not do anything useful at this point
in time it seems, it just produces one graph that is non-zero
Change-Id: Ie991b8200628253ab308d36cb5afc80138b1acff