namd.git
8 months agoEnable work computation with thermostat heat 31/4731/1
radakb [Thu, 25 Oct 2018 18:46:35 +0000 (14:46 -0400)]
Enable work computation with thermostat heat

The work computation for the neMD/MC switch in constant-pH MD can
now be computed from the thermostat heat whenever the settings
include:

stochRescale     on
stochRescaleHeat on

All other combinations will use the default computation from the
alchemical protocol work. Note that:

1) This is still technically experimental!

2) stochRescale can still be used with the default method

The thermostat detection method should correctly catch older versions
of NAMD where stochRescale is not available. This really only matters
for various developmental versions of 2.12, since versions lower than
that are missing other critical features.

Change-Id: If618759214c38f6ff0c60586004012e610e2718f

8 months agoSimplify microscopic inherent pKa calculations 23/4723/2
radakb [Tue, 23 Oct 2018 19:18:17 +0000 (15:18 -0400)]
Simplify microscopic inherent pKa calculations

This revision doesn't change the function of the code, but puts the
implementation more inline with the equations in the published paper.

Briefly, the multiplicity of states must be taken into account when
computing transition probabilities based on the inherent pKa. This
is most clearly written as a correction to the macroscopic pKa input
in the form of a log-ratio of multiplicity factors for the current
and trial states. This was previously split into two corrections,
which was technically correct, but obscured the ratio component.
This also reduces the number of logarithms computed.

Additional change:

The input pattern for a two-site degenerate diprotic acid has been
implemented. This was just a convenient feature for testing and does
not match any published force field parameters.

Change-Id: If3ddb84fc6271b2f261055c82ee98f055ed49310

8 months agoEven better parsing in deinterleave_IDWS 21/4721/1
Jérôme Hénin [Tue, 23 Oct 2018 12:49:21 +0000 (14:49 +0200)]
Even better parsing in deinterleave_IDWS

Read number of equilibration steps directly from file,
fixes ParseFEP incompatibility reported by Brian Radak.

Change-Id: Ib518ef0dfde395b51af028f6fd1972ec7df6d489

9 months agoImprove error reporting for CUDA device polling 08/4708/1
Jim Phillips [Wed, 17 Oct 2018 19:57:05 +0000 (14:57 -0500)]
Improve error reporting for CUDA device polling

Fix cases where calling cuda_errcheck would do nothing
because device had not returned error to use cudaDie.
Also provide uniform and complete messages in all cases.

Change-Id: Ia2ee1c1b33a2f5dd97e705869b97e70e9e666771

9 months agoRebuild dependencies 07/4707/1
Jim Phillips [Wed, 17 Oct 2018 18:59:19 +0000 (13:59 -0500)]
Rebuild dependencies

Change-Id: Id6439d9b3054af41b53505cab53b3430dd5cbb1e

9 months agoFix for deinterleave_idws.py 99/4699/3
Jérôme Hénin [Tue, 16 Oct 2018 20:17:49 +0000 (22:17 +0200)]
Fix for deinterleave_idws.py

Fixes issue reported by Brian Radak when fepout files contain
no data for equilibration.

Change-Id: I1a8df0ebfe7839fcba5ea98f3a8caf91c17c1575

9 months agoMake pairlisted coordNum variable consistent under biasing forces 98/4698/1
Giacomo Fiorin [Tue, 16 Oct 2018 20:12:28 +0000 (16:12 -0400)]
Make pairlisted coordNum variable consistent under biasing forces

See commits from: https://github.com/Colvars/colvars/pull/162

Change-Id: Idf1e1bb0ea5feb0623c2a5edda4ffc084c15db83

9 months agoCompute heat transfer and work with stochastic rescaling 93/4693/3 release-2-13-beta-2
radakb [Tue, 16 Oct 2018 15:17:08 +0000 (11:17 -0400)]
Compute heat transfer and work with stochastic rescaling

The stochRescale thermostat is now extended to enable computation
of heat transfer and work. The added overhead is incredibly small,
but for now reporting (to stdout and Tcl callback) only occurs with
the new stochRescaleHeat keyword. Other thermostats may also be able
to accomodate this computation, so the generic HEAT and WORK fields
have been added.

Both computations are _cumulative_ wrt firstTimestep, so resetting
from Tcl causes the accumulation to start over. Note that this also
requires tracking the TOTAL energy change between the current step
and firstTimestep.

For true equilibrium simulations, the cumulative work should be
rigorously zero. In practice one instead gets a small number that is
polynomial in the timestep (roughly quartic?).

For neMD/MC simulations this should be an appropriate route to
computing work for a Metropolis criterion. While this approach
mixes protocol and shadow components, test comparisons with direct
computation of the protocol component (CUMALCHWORK) show no obvious
differences within statistical precision. There are minor debates
about asymmetric (used by NAMD) versus symmetric integrator
splittings, so this assertion rests on its empirical validity.

Change-Id: Iddbf54ccd6edb78594705d287681ba4159b4a2e1

9 months agoFix broken error message in Lepton colvar functions 92/4692/2
Giacomo Fiorin [Tue, 16 Oct 2018 15:11:09 +0000 (11:11 -0400)]
Fix broken error message in Lepton colvar functions

https://github.com/Colvars/colvars/commit/0e4af1fb5be9cf592a1f1824d447147f3c442033

Change-Id: Idd58c7d3663c1d3b46edae15df608d58fd2274de

9 months agoUpdates for 2.13 beta 2 release 91/4691/1
Jim Phillips [Tue, 16 Oct 2018 03:40:54 +0000 (22:40 -0500)]
Updates for 2.13 beta 2 release

Change-Id: Id7b2a36f50f1c9ff5bebba19941ab1be0b65ea4c

9 months agoFix segfault in hybrid load balancer in CUDA build 90/4690/1
Jim Phillips [Mon, 15 Oct 2018 21:22:58 +0000 (16:22 -0500)]
Fix segfault in hybrid load balancer in CUDA build

Would access index of largest compute when no migratable
computes exist due to everything being offloaded to GPU.

Load balancer could be disabled completely in this case.

Change-Id: I772fd7540605f8c7cdb1fed348a90ecd456531a7

9 months agoFixes and improvements in Colvars doc 89/4689/1
Giacomo Fiorin [Mon, 15 Oct 2018 18:08:11 +0000 (14:08 -0400)]
Fixes and improvements in Colvars doc

Addresses the latex2html issue for the NAMD user's guide, and also improves
the learning curve by defining the variable functions earlier in the chapter.

The resulting diff is fairly large, mostly due to having merged one chapter
with another chapter that was not consecutive.

https://github.com/Colvars/colvars/pull/183

Change-Id: I1e6a2005c62efc863bf47c98f1a81ae951535883

9 months agoAllow linear bias to deal with non-scalar variables (Colvars fix) 88/4688/2
Giacomo Fiorin [Fri, 12 Oct 2018 17:49:47 +0000 (13:49 -0400)]
Allow linear bias to deal with non-scalar variables (Colvars fix)

See for details: https://github.com/Colvars/colvars/issues/181

Change-Id: Ib5656752b7472d4a7d1896013189ab100e97a31d

9 months agoImprovements to deinterleave_idws.py 87/4687/2
Jérôme Hénin [Fri, 12 Oct 2018 17:44:40 +0000 (19:44 +0200)]
Improvements to deinterleave_idws.py

- make interpolation optional
- allow multiple fepout files at a time (thanks to Tom Joseph)
- detect spacing of samples more robustly

Change-Id: Ic081403c1e8f05f36f1846cc2dfdf0521e080f68

9 months agoIgnore NOHOSTNAME in CUDA code 86/4686/1
Jim Phillips [Fri, 12 Oct 2018 17:07:32 +0000 (12:07 -0500)]
Ignore NOHOSTNAME in CUDA code

Since CUDA binaries cannot be statically linked there is
no problem calling gethostname() for CUDA error messages.
Including the host name in the error message is critical
for finding bad GPUs on large parallel machines.

Change-Id: Ic97bed4e3ea44156d21b0ff558c37655464f95f6

9 months agoFix hypothetical PME race condition 79/4679/1
Jim Phillips [Wed, 10 Oct 2018 05:09:51 +0000 (00:09 -0500)]
Fix hypothetical PME race condition

In PmeZPencil::send_all_ungrid using CkLoop if the pencil's
home PE does not wait for the helper PEs to finish sending
it could in theory receive incoming data for the next step
and overwrite the charge/potential grid before it was sent.
This would be very unlikely, but it was triggering a recently
added bug check because hasData was being reset to 0 by the
host PE before being checked by the helper PEs.

Change-Id: I4ec7b22ae4f3035c1328498a2cc8f5c4665171c5

9 months agoRevert "Enable gethostname on Cray XE/XK/XC" 77/4677/1
Jim Phillips [Wed, 10 Oct 2018 02:58:56 +0000 (21:58 -0500)]
Revert "Enable gethostname on Cray XE/XK/XC"

This reverts commit 9aa0082e0c1202f5ce14d7ca52ad7a44cf1b9c25.

Statically linked binaries hang if gethostname is called.

Change-Id: I24bdef3d8a21f8805e035ba033ffa0a513f3f633

9 months agoEnable gethostname on Cray XE/XK/XC 76/4676/1
Jim Phillips [Tue, 9 Oct 2018 21:34:29 +0000 (16:34 -0500)]
Enable gethostname on Cray XE/XK/XC

The original Cray XT compute node OS lacked gethostname() so
it was disabled by a macro that was preserved when porting to
the newer Linux-based compute node OS on later machines.
The primary functional benefit of this change is including the
node hostname in CUDA error messages.

Change-Id: I1f58375ef742cbfb15636d73bfa6015d5cafd517

9 months agoAvoid CUDA PME unspecified launch failures 73/4673/1
Jim Phillips [Tue, 9 Oct 2018 19:58:07 +0000 (14:58 -0500)]
Avoid CUDA PME unspecified launch failures

Adding an cudaEventSynchronize() call seems to make random
unspecified launch failures in cuda_check_pme_forces go away.
Also increased detail of error message in case it comes back.

Change-Id: Iafa66934d2c8425e303937b319d629794b055aa3

9 months agoCatch single atom pair constraint failures 65/4665/1
Jim Phillips [Mon, 8 Oct 2018 19:43:20 +0000 (14:43 -0500)]
Catch single atom pair constraint failures

The non-iterative solution for constraining a single pair of
bonded atoms contains a sqrt() that returns a NaN if the argument
is negative.  Catch this case as for the interative method to
prevent NaNs from propagating to velocities, temperature,
pressure, and positions; and eventually causing a segfault that
looks to the user like a bug rather than unstable dynamics.

Change-Id: Ifcd34cd8af18ef337b214ea3f5a07c3622f12cc9

9 months agoUse itemize instead of list environment 42/4642/1
Giacomo Fiorin [Tue, 2 Oct 2018 14:04:16 +0000 (10:04 -0400)]
Use itemize instead of list environment

This change allows using TeX4ht to compile the HTML version of the NAMD UG,
which is an option worth exploring.

Note also that TeX4ht is included in the TeX Live distribution.

Change-Id: I6db4535f50677f542e17ddbfb46cdbeb7843d366

9 months agoManually remove VMD section of Colvars chapter to appease LaTeX2HTML 41/4641/1
Giacomo Fiorin [Tue, 2 Oct 2018 19:49:39 +0000 (15:49 -0400)]
Manually remove VMD section of Colvars chapter to appease LaTeX2HTML

After many hours of trials, _I_ _give_ _up_.  All flavors of LaTeX tried
(traditional PostScript, PDF via pdflatex, and HTML via TeX4ht) produce
correct output for that section.  Unfortunately, LaTeX2HTML fails without any
clear remediation via any of the most common conditional compilation
strategies (\newcommand, \ifx, \ifdefined, ...).

This commit manually removes a section that belongs to the VMD doc, but it
also prevents future automatic integration of the Colvars doc (the section
should not be reintroduced).

Change-Id: Ifff928cec01151f3472e6cc70f9b1cda793577b7

9 months agoAvoid potential integer overflow in warp arithmetic 31/4631/1
Jim Phillips [Fri, 28 Sep 2018 20:44:57 +0000 (15:44 -0500)]
Avoid potential integer overflow in warp arithmetic

Replace blockDim.x*foo/WARPSIZE with blockDim.x/WARPSIZE*foo
since we know blockDim.x is a multiple of WARPSIZE.  This avoids
overflow of blockDim.x*foo for large foo (blockIdx.x or gridDim.x).
This fix is cautionary as no bug has actually been observed.

Change-Id: I276feb01323d2b677a0456254d026681cd39f56c

9 months agoFix bad CUDA forces with with oversized periodic cell 29/4629/1
Jim Phillips [Fri, 28 Sep 2018 17:14:33 +0000 (12:14 -0500)]
Fix bad CUDA forces with with oversized periodic cell

The newer tile-based streaming nonbonded kernel (useCuda2 yes)
skips copying forces to the host for patches that have no
interacting tile pairs.  This can leave stale or uninitialized
force data on the host that is copied to the patch forces.
Fix is to initialize host force data to zero for such patches.

Symptom is eventual instability in the simulation, although
pressure in a deterministic run diverges after first cycle.
This has only been observed on a large parallel run with many
nearly empty patches due to an oversized periodic cell,
such that a patch could have only atoms that are outside the
tile pairlist distance for any interactions on the same GPU.
Workarounds include +nostreaming flag or useCuda2 no option.

Change-Id: Ie4a26905acf65d74332e2f2779ec1428f763a70a

9 months agoMove #ifdef guards for NAMD_TCL only to context where they are needed 15/4615/1
Giacomo Fiorin [Tue, 25 Sep 2018 16:40:49 +0000 (12:40 -0400)]
Move #ifdef guards for NAMD_TCL only to context where they are needed

Addresses issue reported by Engelbert Tijskens, Flemish Supercomputer Center

Change-Id: Ia90e60befed388527d802fa275e2f3615d95b262

9 months agoProvide basic info (instead of footnote) at top of the Colvars chapter 08/4608/1
Giacomo Fiorin [Sun, 23 Sep 2018 21:30:30 +0000 (17:30 -0400)]
Provide basic info (instead of footnote) at top of the Colvars chapter

Change-Id: I7825160e3948285a14ebb424c7dcb29190a63868

9 months agoRemove diagnostic message from cv command 07/4607/1
Giacomo Fiorin [Sun, 23 Sep 2018 21:27:21 +0000 (17:27 -0400)]
Remove diagnostic message from cv command

Change-Id: Ie23c85be48d0acc3cfc4e8c09745e19cd31eba59

9 months agoAdd hyperref package into user guide 04/4604/1
David [Fri, 21 Sep 2018 21:38:56 +0000 (16:38 -0500)]
Add hyperref package into user guide

Create hyper links in PDF version of user guide.  With the hyperref
package, the \contentsline command needs 5 arguments instead of 3.
Using Giacomo's recommended parameters to hyperref that includes
citations linked in blue and page back references from bibliography.
Changed all URLs to use \url command to link the web pages.

Change-Id: I11062adc051399d0f0deb4f7cb8b936307c2da09

10 months agoDocument solute scaling parameters in user guide 93/4593/2
David Hardy [Thu, 20 Sep 2018 18:54:48 +0000 (13:54 -0500)]
Document solute scaling parameters in user guide

Provide user guide documentation for solute scaling (aka REST2)
configuration parameters.  Change default value for soluteScalingAll
to OFF, so as not to scale bond and angle interactions, as recommended
by the 2011 reference paper.

Change ssFile to soluteScalingFile and ssCol to soluteScalingCol for
consistency.  Update REST2 example scripts in the lib/replica/REST2
directory.

Also remove the "\url" command from URLs in the Colvars section, as
its introduction breaks the NAMD documentation build.  Now URLs are
simply set in teletype font, as done elsewhere.

Change-Id: Ie8ce1753b4bf559eed0d4351f22721c54dc23a61

10 months agoFix memopt CUDA pencil PME hang with oversized periodic cell 88/4588/2
Jim Phillips [Mon, 17 Sep 2018 21:12:23 +0000 (16:12 -0500)]
Fix memopt CUDA pencil PME hang with oversized periodic cell

Bugs for pencils with no charge contributions were introduced
with the USE_NODE_PAR_RECEIVE optimization, which uses a nodegroup
to process incoming PME messages on any pe in the process.
This code path was/is only enabled for memopt CUDA builds.

Change-Id: Id55d517dd536cea2a523fedcdfcc6fdbe586eeb9

10 months agoAdd section on changes in Colvars syntax (incl. backward-compatible ones) 84/4584/2
Giacomo Fiorin [Tue, 18 Sep 2018 01:34:48 +0000 (21:34 -0400)]
Add section on changes in Colvars syntax (incl. backward-compatible ones)

This change was already reviewed on GitHub by Joao Ribeiro:
https://github.com/Colvars/colvars/pull/178

Change-Id: I7edb8e28b6a70193606e10a3474e51cd33615665

10 months agoRevert "Fix Colvars user guide documentation" 85/4585/1
David Hardy [Tue, 18 Sep 2018 04:34:11 +0000 (23:34 -0500)]
Revert "Fix Colvars user guide documentation"

This reverts commit 6d0bb129df5d9a61f19bfd254b126621045a07ba.

The fixes here were resubmitted by the author along with some content changes.

Change-Id: I169728a4c8c9543693b07713f5e0511f19ce25de

10 months agoFix Colvars user guide documentation 81/4581/1
David Hardy [Mon, 17 Sep 2018 22:57:42 +0000 (17:57 -0500)]
Fix Colvars user guide documentation

Modified Colvars section macros in order to resolve Latex references.
Also fixed typos in two references.

Change-Id: Ic67565f5a7e9cb75b6d29f1c8401f43e5700d8b6

10 months agoFix pencil PME hang with oversized periodic cell 73/4573/2
Jim Phillips [Thu, 13 Sep 2018 21:56:49 +0000 (16:56 -0500)]
Fix pencil PME hang with oversized periodic cell

Pencil-decomposed PME has optimizations for pencils that do not
contain charge contributions for any atoms.  When this code was
adapted to use CkLoop this optimization was broken, leading to
hangs in some cases.  Bug is fixed and code is simplified as well.

Change-Id: Idb3482ddfe9287814f7baa897eaa0f4ff71ace90

10 months agoUpdate documentation for RAMD 72/4572/2
David Hardy [Thu, 13 Sep 2018 17:42:07 +0000 (12:42 -0500)]
Update documentation for RAMD

Documentation provided by Stefan Richter.

Removed make_distribution.sh file.

The example has been removed due to its size.  The plan is to post the
example on NAMD's website.  We will then need to update the User Guide
and the README file accordingly.

Change-Id: Ice8564b8a4555808f2caca7ecdb942827d9140f3

10 months agoState long-term support of old-style walls without deprecating them 70/4570/2
Giacomo Fiorin [Thu, 13 Sep 2018 13:52:13 +0000 (09:52 -0400)]
State long-term support of old-style walls without deprecating them

This change reaffirms the commitment to support old-style keywords as
short-hands for the more flexible harmonicWalls (which is their backend
anyway).  Those keywords are now called "legacy", but not "deprecated".

Using the lower and upper boundaries as default values for the walls is
deprecated explicitly (i.e. "will be removed in the next release").

Because there is no functionality change (only output messages are revised),
the Colvars version string is not being updated.  This will also avoid merge
conflicts with other commits currently pending.

Change-Id: If00bfce90877573896ea0f879fc0ebc74fa31012

10 months agoWarn about near-zero mass atoms in Colvars 58/4558/1
Giacomo Fiorin [Sat, 8 Sep 2018 00:39:43 +0000 (20:39 -0400)]
Warn about near-zero mass atoms in Colvars

Change-Id: Ie686f3950cb94c19926e7ec6aeb8b05f900719f7

10 months agoIssue warning when atom has tiny mass but is part of a COM group 57/4557/2
Giacomo Fiorin [Fri, 7 Sep 2018 16:00:55 +0000 (12:00 -0400)]
Issue warning when atom has tiny mass but is part of a COM group

The current check is for masses <= 0.001, thus catching fixed-up zero
masses and unfixed lone pairs.

Making this into an error may break somebody's calculations, but the
warning should help troubleshooting future problems.

Change-Id: I219e9861c7da3925faa2fd63df52120ac18d730a

10 months agoUpdate grant numbers 56/4556/2 release-2-13-beta-1
David [Fri, 7 Sep 2018 20:58:10 +0000 (15:58 -0500)]
Update grant numbers

Change-Id: I0926404d57de22f10b3064b6229bbc953f2315db

10 months agoUpdate version number in user guide. 55/4555/1
Jim Phillips [Fri, 7 Sep 2018 20:56:12 +0000 (15:56 -0500)]
Update version number in user guide.

Change-Id: I275dcd6ad03f4313517983e50663927dc9809a08

10 months agoUpdate RAMD to version 5.0.4 54/4554/2
David [Fri, 7 Sep 2018 19:29:48 +0000 (14:29 -0500)]
Update RAMD to version 5.0.4

Updated scripts for RAMD to version 5.0.4 that has been tested
successfully with NAMD versions 2.10 and 2.12.  Retained earlier scripts
in directory ramd-4.1.

From the website: t-random acceleration molecular dynamics (tRAMD) is a
protocol for the ranking of drug candidates by their residence time and
obtaining insights into ligand-target dissociation mechanism.
https://www.h-its.org/downloads/ramd/

Contributed by Stefan Richter and Rebecca Wade.

Change-Id: If9c0decf899570d0eb04dd04d03c088701f965fc

10 months agoUpdates for 2.13 beta 1 release 46/4546/2
David Hardy [Thu, 6 Sep 2018 20:32:37 +0000 (15:32 -0500)]
Updates for 2.13 beta 1 release

Updated version string, notes, and announcement files.

Change-Id: I2529bb34098444be911117a702c1586f15c32cb9

10 months agoRemove CUDALINKOPTS from Linux-POWER 53/4553/1
Jim Phillips [Fri, 7 Sep 2018 18:57:00 +0000 (13:57 -0500)]
Remove CUDALINKOPTS from Linux-POWER

Does nothing because it is a misspelling of CUDADLINKOPTS,
because it is only needed to link cufft_static, and
because it needs CUDAOBJS=$(CUDAOBJSRAWSTATIC) to be active.

Change-Id: Ic85d6cbe52f436c5ce3094f003ae3bcf44cb0614

10 months agoBuild Win64 with CUDA 9.1 for Pascal and Volta 52/4552/1
Jim Phillips [Fri, 7 Sep 2018 18:50:52 +0000 (13:50 -0500)]
Build Win64 with CUDA 9.1 for Pascal and Volta

Change-Id: Ie4232bb8b46109a8e18098addb7dbfbb9d21ad8d

10 months agoUpdate Colvars to version 2018-09-07 49/4549/1
Giacomo Fiorin [Fri, 7 Sep 2018 15:06:11 +0000 (11:06 -0400)]
Update Colvars to version 2018-09-07

This change addresses an issue raised with PLB tutorial files, containing
invalid input, and reported by David Hardy ahead of the Urbana FE workshop.

Relevant commits from https://github.com/Colvars/colvars

d3d8e4f 2018-09-07 Raise error when walls coincide in non-trivial ways (e.g. periodic variables) [Giacomo Fiorin]

Change-Id: Idcc0a703b03f4ec82141df30825ad5c5ccf61959

10 months agoUpdate Colvars to version 2018-08-29 47/4547/1
Giacomo Fiorin [Thu, 6 Sep 2018 22:44:07 +0000 (18:44 -0400)]
Update Colvars to version 2018-08-29

This update includes several minor fixes: relevant commits in
https://github.com/Colvars/colvars are listed below.

6539dd9 2018-08-28 Add cv resetindexgroups command [Giacomo Fiorin]
a9c786e 2018-08-28 Invoke new-style colvarscript commands when available [Giacomo Fiorin]
44a4b34 2018-08-28 Allow multiple instances of indexFile [Giacomo Fiorin]
6f630a4 2018-08-28 Store the module's config string with comments, add command to access it [Giacomo Fiorin]
8272aab 2018-08-17 Raise error when the same keyword is being used repeatedly [Giacomo Fiorin]
10b2840 2018-07-30 More explicit documentation for periodic custom cv [Jérôme Hénin]
788cb54 2018-07-25 Check for matching braces before beginning to parse [Giacomo Fiorin]
ac2ff20 2018-07-24 Initialize correctly OpenMP lock state data structure [Giacomo Fiorin]
acdf322 2018-07-20 NAMD/VMD: accept PDB flags in load_coords [Jérôme Hénin]
f3f7033 2018-07-20 Doc: warn about fittingGroup in PBC [Jérôme Hénin]
61b5f6f 2018-07-07 Forbid atoms with zero mass [Jérôme Hénin]
127375e 2018-06-21 Revert ext lagrangian timestep if necessary [Jérôme Hénin]
fb67424 2018-06-06 Implement modifycvcs subcommand [Giacomo Fiorin]
8a4d86c 2018-06-06 Disable echoing of errno message until sorting out what changes errno [Giacomo Fiorin]
bc09f23 2018-06-05 Prevent renaming CVCs after initialization [Giacomo Fiorin]
33794f3 2018-06-05 Fix handling of previous/current step total forces with SMP [Giacomo Fiorin]

Change-Id: I6d73d3695e9c3f069871f6f39fa06ca6a6e34de4

10 months agoPreliminary implementation of colinear lonepairs 22/4522/4
radakb [Fri, 24 Aug 2018 18:20:09 +0000 (14:20 -0400)]
Preliminary implementation of colinear lonepairs

The CHARMM Drude and additive force fields now support colinear as
well as relative and bisector lonepairs. The lonepair facility is
now extended to enable PSFs with these specifications. Other lone
pair types exist in CHARMM but only as part of the RTF standard and
these are still NOT supported, since no extant force field makes use
of those lonepair types.

Summary of changes:

o The lphosts struct now contains a numhosts attribute (i.e. the
  number of particles needed to specify the position of the lonepair).
  This was previously assumed to be three, but can now also be two.

o The read_lphosts() routine now stores the number of hosts for
  each lonepair and can read variable numbers of indices in the
  index section (this previously assumed four indices per lonepair).

o The reposition and redistribute routines inside HomePatch now
  have multiple code paths depending on the number of lphosts.
  These could probably be better identified and the if/else tree
  likely needs refinement in order to permit other types of
  lonepairs.

o Preliminary doxygen comments for the various routines mentioned
  above.

NB: All lonepair specifications in a PSF are expected to have three
    associated values. However, the meaning of these values depends
    on the lonepair type. Nonetheless, for simplicity with the old
    code, the struct values are still called "distance", "angle",
    and "dihedral", even when this is not what the value signifies.

NB: The "weight" specification in the PSF remains hardcoded as "F"
    (for false) inside NAMD. Again, no extant force field uses
    lonepairs with weighted placement, so this can really only be
    specified inside an RTF, which NAMD never reads anyway.

Change-Id: I4751d597ba4d43b078c1da052e56f8a5252481a4

10 months agoDo not disable PME CUDA when using REST2 20/4520/1
David [Fri, 24 Aug 2018 17:37:31 +0000 (12:37 -0500)]
Do not disable PME CUDA when using REST2

PME CUDA is now compatible with REST2, so the relevant test in
SimParameters for disabling PME CUDA has been removed.  Also removed
previously commented out code, since the new CUDA kernels are now
compatible with non-orthorhombic periodic cells.

Change-Id: I06428b6554f3feb5909efbd5d3a62e7ba2ba7aea

10 months agoPME CUDA recalculate self-energy term 16/4516/1
Jim Phillips [Thu, 23 Aug 2018 22:30:56 +0000 (17:30 -0500)]
PME CUDA recalculate self-energy term

Modify PME CUDA implementation to always recalculate the self-energy term.
This solves the incompatibility with REST2, in which PME CUDA was getting
the energy wrong after a charge rescaling.

Also greatly simplifies code by submitting self energy to reduction system
where it is calculated rather than separately reducing it to a pencil.

Change-Id: I05d8d959004b5e7ed8a274f41936a9400a4a7e1d

11 months agoSpeed up diffbinpdb 85/4485/1
Jim Phillips [Fri, 17 Aug 2018 20:10:48 +0000 (15:10 -0500)]
Speed up diffbinpdb

Call read() once per million atoms, rather than once per atom
(which is horribly slow on a POSIX parallel filesystem).

Change-Id: If547a0d1ccb06a5566601e9bdc5648cea4f9a409

11 months agoAvoid large messages in memopt atom distribution 61/4461/1
Jim Phillips [Wed, 8 Aug 2018 19:15:47 +0000 (14:15 -0500)]
Avoid large messages in memopt atom distribution

When sending atoms from input pes to patches during startup of
memory optimized builds, sending one message per pe can result
in very large messages that break gni persistent messages in
Converse, so send one message per patch instead.

Change-Id: If134460983309da2e6add79d3117ee07d3fae59e

11 months agoAdded documentation for 'gridforcescaleupdate' tcl command 31/4431/1
Chris Maffeo [Thu, 2 Aug 2018 16:21:12 +0000 (11:21 -0500)]
Added documentation for 'gridforcescaleupdate' tcl command

Change-Id: I23e232db83cc79bda0fec7c3f7321f26f4f7604b

11 months agoDisable incompatible CUDA kernels 29/4429/1
David [Wed, 1 Aug 2018 22:06:55 +0000 (17:06 -0500)]
Disable incompatible CUDA kernels

Automatically disable particular CUDA kernels that are incompatible with
certain simulation options.  Specifically, disable CUDA bonds for Drude,
disable CUDA dihedrals and crossterms for accelMDdihe and accelMDdual,
and disable PMECUDA for REST2.  This action is controlled by
undocumented SimParameter useCUDAdisable, defaulting to TRUE to enable
the disabling.

Tested successfully for REST2 test system, Drude water and decane
systems, and accelMD applied to ApoA1.

Change-Id: I380a5a2bfadeb0ba2a791b2c7c29cdad66405cab

11 months agoRemove superfluous CkQdMsg parameters in Node 27/4427/2
Ronak Buch [Wed, 1 Aug 2018 19:50:12 +0000 (14:50 -0500)]
Remove superfluous CkQdMsg parameters in Node

Change-Id: Ida651555cb13f939609535d091f5a88baa288ae3

11 months agoFix TIP4P water models when using AMBER inputs 24/4424/2
radakb [Tue, 31 Jul 2018 19:44:41 +0000 (15:44 -0400)]
Fix TIP4P water models when using AMBER inputs

The effective deprecation of the "lonepairs" keyword caused some
unexpected behavior when using a parm7 in place of a psf. The main
difference is that lonepairs are now _assumed_ until they are not
found. Since parm7s do not flag lonepairs, the flag is now always
set to false.

Note that TIP4P is a special case of lonepairs, so this is not a
problem. However, the fix does seem a bit counterintuitive, so later
a more involved fix is in order.

The TIP4P lonepairs are treated as a special case.  The rigid bond
constraints routine HomePatch::rattle1old() calls tip4_omrepos()
routine to reposition the lonepair site after the atom positions
are updated on each water molecule.

Change-Id: I91f430f79c810ad0ff13999de4cdcd453f6171ff

11 months agoFix REST2 CUDA update of LJTable 06/4406/4
Julio Maia [Fri, 27 Jul 2018 16:41:56 +0000 (11:41 -0500)]
Fix REST2 CUDA update of LJTable

REST2 CUDA updates LJTables for A-P's kernels, contributed by Julio Maia.
Update the table values in device memory without changing the memory
allocation, destroy and recreate the CUDA texture object.  The update is
driven by SimParameters called from Tcl script with an update to
soluteScalingFactor or soluteScalingFactorVdw.  From rank 0, update
ComputeNonbondedUtil through select() to rebuild LJTable for CPU and then
update CudaNonbondedTables on all CUDA devices through the node group
instance of ComputeCUDAMgr.

Change-Id: Ib88b0e84c95ef145f191f403534f0b53851fc89a

11 months agoFix QM/MM memory allocation error 00/4400/1
David [Thu, 26 Jul 2018 19:09:04 +0000 (14:09 -0500)]
Fix QM/MM memory allocation error

Bug is due to uninitialized variable qmcSMD.  Fix is to initialize it in
prepare_qm() setup function.

Change-Id: I6da432b431b6f331227c11023499b9efbbb74756

11 months agoImprove CUDA error checking 92/4392/2
David [Tue, 24 Jul 2018 17:32:07 +0000 (12:32 -0500)]
Improve CUDA error checking

Modify cudaCheck() macro to also print line number where error occurs.

Change-Id: I84a6e7afe64c23691d2c15bfdc0ffcc8b034152a

12 months agoFix bug for Drude systems without lonepairs 64/4364/1
radakb [Tue, 17 Jul 2018 21:06:14 +0000 (17:06 -0400)]
Fix bug for Drude systems without lonepairs

Most Drude systems contain lonepairs, so the is_lonepairs_psf and
is_drude_psf flags are generally redundant. However, hydrogen groups
and non-bonded exclusions were apparently only activated based on the
is_lonepairs_psf flag.

Since SWM4 contains both Drude and lonepairs, this bug could only be
encountered (and obviously crashed) for pure organic liquids or
non-aqueous mixtures.

Change-Id: I87214f0fbc2ef0ec745d498c1155ba5d0519579c

12 months agoFix HMR bug in constant-pH MD 63/4363/1
radakb [Tue, 17 Jul 2018 14:59:01 +0000 (10:59 -0400)]
Fix HMR bug in constant-pH MD

This patch makes sure that constant-pH MD does not undo mass
repartitioning within titratable residues.

Also, a warning is now issued whenever a proton is automagically
inserted during setup. This is because it is impossible to
on-the-fly repartition mass on those protons and thus the insertions
will not match any pre-existing HMR.

Unfortunately, this means that HMR constant-pH MD will be an
advanced feature for now, since one cannot rely on the auto-setup
within constant pH.

Change-Id: I0243f2e9a781b923a9b5bd83b68b867a0a6fe701

12 months agoDo not set dummy unit cell vectors along non-periodic dimensions 34/4334/2
Giacomo Fiorin [Sat, 7 Jul 2018 15:18:47 +0000 (11:18 -0400)]
Do not set dummy unit cell vectors along non-periodic dimensions

If no periodicity is defined along a certain dimension, NAMD currently sets a
"dummy" PBC unit cell vector (e.g. (1,0,0) for the first dimension).

Due to this choice, analysis tools cannot properly detect the boundary
conditions of the simulation from DCD files, which do not support
integer/boolean periodicity flags.  The unit cells stored in XST and XSC files
are correct (non-periodic dimensions are omitted), but these files are very
rarely used in analysis.

The above behavior was likely introduced to avoid divisions by zero when
computing reciprocal lattice vectors, but it can potentially cause undefined
behavior in various components of NAMD unless full PBCs are enabled.

This change partially addresses the problem by setting non-periodic dimensions
to zero when writing a DCD file.

The desirable solution is to eliminate all uses of the "dummy" unit cell
vectors altogether.

Change-Id: I9983b070b2a5f161d5d9859a72690b955d574077

12 months agoImprovements to random number routines used in constant-pH MD 37/4337/1
radakb [Tue, 10 Jul 2018 01:32:09 +0000 (21:32 -0400)]
Improvements to random number routines used in constant-pH MD

- Some users reported a bug when sampling from a PMF with a
  dominant mode. Underflow during subtraction meant that no
  choice was made. A catch has been added that finds and returns
  the modal value in this case.

- The normal() code has been changed to use the iterative
  Box-Muller-like transformation that is implemented in Random.h
  The new code also stores the second normal variable and returns
  it later rather than just discarding it.

Change-Id: I7d66b93b7135665db91208412d482b5a47ed268d

12 months agoBug fixes in Monte Carlo functionality 27/4327/4
radakb [Thu, 5 Jul 2018 13:37:21 +0000 (09:37 -0400)]
Bug fixes in Monte Carlo functionality

This update is an unfortunate hodge-podge of changes. A significant
error in the algorithm was discovered while introducing new features and
reorganizing the output code.

MAJOR BUG FIXES
---------------
1) cphMaxProposalAttempts is an extremely problematic parameter for
  small systems. This keyword is now deprecated and internally assigned
  to be one. Simulations of small systems with non-unit values almost
  certainly yielded incorrect statistics, but the effect is much smaller
  for large systems with uniform weights (the default).

2) Equivalent states were incorrectly accounted for during the inherent
  pKa proposal step (a mistake from the original paper). The pKas are
  now correctly shifted by the log multiplicity to obtain the
  _microscopic_ pKa when moving in the direction of a multiplicity.

  An unrelated error in the code seems to have bizarrely compensated for
  this problem. Namely, the unnormed pairwise weights were taken with
  respect to the current state such that the unnormed weight of the
  current state is exactly one. However, these weights were computed in
  log-space such that the assignment of one was incorrect (it should be
  zero). This meant that all other weights were reduced by a factor of
  1/e in a manner that did not maintain detailed balance in certain
  instances. Since 1/e ~= 1/2 and 1/3, this seems to have semi-corrected
  residues with those multiplicities.

As severe as the second error sounds, tests indicate that the most
significant problems were actually from the first error. Systematic
errors from the latter are actually probably at or below statistical
precision (+/- 1.0 pKa units).

All of these errors were unhelpfully masked by the published WHAM
procedure.

MAJOR CHANGES
-------------
1) The inherent pKa MC step now precludes transitions between equivalent
  states. This should be more efficient in nearly all instances and was
  a fairly heavily requested feature. The original aim was to be able to
  toggle this behavior on a per residue basis, but this was put on hold
  when bugs starting cropping up.

MINOR CHANGES
-------------
1) Re-organized archiving the titrator to cphrst so that this is more
  flexible.

2) Added preliminary support for proton transfer and co-titration moves,
  including separate enumeration in the move summary and persistence in
  the restart file. However, in light of the MC errors this
  functionality is now suspect and thus deactivated until it can be
  retested.

3) Various bug-fixes in the initialization procedure. These were
  probably not encountered by most users and would have lead to crashes.

4) Disable obsolete building of hydrogen coordinates when not restarting
  from a known state. This was introduced for older versions of the
  build procedure and is catastrophic for certain instances such as
  certain primary amines, since "chirality" was occasionally built
  incorrectly.

Change-Id: If2692eef0110d3ad835090481371a65798fecdf6

12 months agoInitial version of IDWS 67/4267/9
Jérôme Hénin [Fri, 15 Jun 2018 13:55:29 +0000 (15:55 +0200)]
Initial version of IDWS

Interleaved Double-Wide Sampling, based on an idea from Grace Brannigan.
Switches between lambda2 values, eg. every fullElectFrequency steps.
On-the-fly FEP average is calculated using only forward samples.
Use lib/alch/deinterleave_idws.py to get complete forward and backward data.
Also adds the fep.tcl driver script to lib/alch.

Change-Id: I2faffe5acffb0c8bad18573074c082664f79ced4

13 months agoWork around gcc 6.3.0 vectorizer bug on Cray XE/XK systems 87/4287/1
Jim Phillips [Wed, 20 Jun 2018 21:19:02 +0000 (16:19 -0500)]
Work around gcc 6.3.0 vectorizer bug on Cray XE/XK systems

GCC 6.3.0 has a bug when building with -march=bdver1, which
Cray programming environment targets for Opteron on XE/XK machines.
The symptom in NAMD is incorrect pressure values on CPU-only builds.

Change-Id: I3c32bf0c32dce4d7626971707d112a3f2e5c132c

13 months agoAdd support for Charm++'s change to use 64 bit ID for load balancing 45/4245/9
Ronak Buch [Wed, 6 Jun 2018 23:19:18 +0000 (18:19 -0500)]
Add support for Charm++'s change to use 64 bit ID for load balancing

Based on the value of the CMK_LBID_64BIT compile-time variable,
select either the new 64 bit ID or old 4 int LDObjid to use as
the ID for load balancing, and provide accessor to abstract
access to both types.

This is necessary to support the new 64 bit LB ID interface in Charm++
6.9.0. Once NAMD no longer cares about supporting versions of Charm++
older than 6.9.0, this can be removed and the new interface can be used
unconditionally.

Change-Id: Ice18a9537b694e8e6174cd8118cbc60d59800fe9

13 months agoRemove unused stores to fields 2 and 3 of the element id 48/4248/4
Ronak Buch [Thu, 7 Jun 2018 22:32:38 +0000 (17:32 -0500)]
Remove unused stores to fields 2 and 3 of the element id

Change-Id: I087563a7a347d47f01db8006866d3194f85cc934

13 months agoFix bug in PDB destructor 63/4263/1
Jim Phillips [Thu, 14 Jun 2018 17:20:57 +0000 (12:20 -0500)]
Fix bug in PDB destructor

Array of pointers sometimes pointed to independently
allocated elements and sometimes to elements of an array.
Destructor would call delete [] if elements were
contiguous in memory, which could happen by coincidence.
Now independently tracks how data was allocated.

Bug reported on Mac by J.C. Gumbart.

Change-Id: I22c6a2c0a37d208913a73b83cd76098afc412778

13 months agoDon't initialize CUDA before fork in Charm++ startup 44/4244/1
Jim Phillips [Wed, 6 Jun 2018 03:47:21 +0000 (22:47 -0500)]
Don't initialize CUDA before fork in Charm++ startup

Change-Id: I0c5377628b1bac2a1bca4f5db9b83167b1c04d8f

13 months agoFix compilation error with gcc 4.4 (update Colvars to 2018-05-29) 38/4238/1
Giacomo Fiorin [Thu, 31 May 2018 14:58:47 +0000 (10:58 -0400)]
Fix compilation error with gcc 4.4 (update Colvars to 2018-05-29)

Change-Id: Ie97a495e06e0697071fd8c0beaf4d108425bbded

14 months agoUpdate Colvars to version 2018-05-15 75/4175/2
Giacomo Fiorin [Tue, 15 May 2018 15:08:31 +0000 (11:08 -0400)]
Update Colvars to version 2018-05-15

Introduces performance enhancements to coordNum and selfCoordNum, in
particular a pairlist feature introduced by Josh Vermaas.

Below are the relevant commits from https://github.com/Colvars/colvars/

8bee345 2018-05-15 Condense computation of value and gradients for coordNum and selfCoordNum [Giacomo Fiorin]
325e1b3 2018-05-15 Fix pairlist loop based on feedback from Josh [Giacomo Fiorin]
6faa836 2018-05-11 Unify coordnum template function, include pairlist check/update in it [Giacomo Fiorin]
13ac4a3 2018-05-10 Added documentation for the tolerance and pairListFrequency options [Josh Vermaas]
7564f23 2018-05-10 New check. Tolerance is MUCH higher than you'd want for real simulation, but it makes the difference clear quickly. Pairlistfrequency 2 means that every other printed value will match exactly with the non-tolerant coordnum [Josh Vermaas]
9394090 2018-05-10 Fixed compiler errors resulting from theorycraft-coding [Josh Vermaas]
020f555 2018-05-10 Incorparated Giacomo's comments. [Josh Vermaas]
1682ea7 2018-05-10 Prototype pairlist implementation [Josh Vermaas]

Change-Id: Ie27a2f59b44b1dfda269410b1745c0ed5ec5f068

14 months agoUpdate/fix incomplete behavior of nonbondedScaling 72/4172/1
radakb [Mon, 14 May 2018 20:27:20 +0000 (16:27 -0400)]
Update/fix incomplete behavior of nonbondedScaling

nonbondedScaling is supposed to permit application of a positive
scalar multiple to all ELECT and VDW terms. Since LJcorrection terms
are part of VDW, these should be also be scaled (also the virial
correction, in analogy to the force).

This is a real edge case "bug," I only realized it when trying to
perform simulated scaling on a box of rigid water, which should be
identical to simulated tempering. Even then the results only differ
appreciably when the effective temperature is >320 K. Needless to
say I'm probably the only person to ever attempt this.

TODO:

There are probably also missing ELECT terms when using Drude, the
Thole terms in particular. Since those are implemented as a 4-body
bonded term, this should be implemented easily using the "scale"
attribute of the tuple, only I don't know where that is set. Help?

If there are no objections, I would also like to add a
dihedralScaling keyword that serves the same function for (proper)
dihedrals and crossterms (maybe only when mergeCrossTerms is True?)

We could also add an option for a step-dependent update for both of
these keywords, just as we do for alchLamdba via alchLambda2 and
alchLambdaFreq. That would enable simple enhanced sampling
integrators based on nonequilibrium switches. This should offer less
of a challenge than implementing solute scaling switches at the C
level.

Change-Id: I5ea29616da95a517fee56c69a5daa87ed4edbdb7

14 months agoFix config file parameter introspection bug 68/4168/1
Jim Phillips [Fri, 11 May 2018 20:43:28 +0000 (15:43 -0500)]
Fix config file parameter introspection bug

Previous changes to drop Tcl USE_COMPAT_CONST introduced a bug
when trying to read the value of a previously set parameter
before startup.  Fix, and error message improved.

Change-Id: I655bd994cca49b8d680854473dc7b10d7e97f06c

14 months agoAvoid placing extra PME load on first node 47/4147/1
Jim Phillips [Tue, 8 May 2018 20:27:15 +0000 (15:27 -0500)]
Avoid placing extra PME load on first node

At larger PE counts patches are excluded from both PE 0 and PE 1
to avoid slowing down any global integrator bottlenecks.  Since
PME work is preferentially placed on PEs without patches, extra
PME work could be placed on the first node.  This patch treats
PE 1 as having patches for the purpose of assigning PME work.

Change-Id: Ib8eac51d65f5ffe83b60a47ffbc4c97a03f8be54

14 months agoBug-fix for cphrst writing with Constant-pH MD 40/4140/2
radakb [Mon, 7 May 2018 13:47:36 +0000 (09:47 -0400)]
Bug-fix for cphrst writing with Constant-pH MD

It was reported that constant-pH restart files were not being
written with the correct frequency (cphRestartFreq). This was
apparently not well-tested since in most cases it makes sense to
just write restart files when the trajectory completes.

The writing criteria is now corrected.

Change-Id: Id1cfca8f6e87abac90957322f2cfbf325d5cdc9a

14 months agoRequire NAMDJSBLOCKIO environment variable for js block IO 30/4130/2
Jim Phillips [Fri, 4 May 2018 18:54:10 +0000 (13:54 -0500)]
Require NAMDJSBLOCKIO environment variable for js block IO

Updated js plugin causes psfgen to write block aligned js files,
which cannot be read by builds of NAMD and psfgen before today.
With this patch, psfgen will by default write the earlier js file
format (not block aligned) that is still readable by older builds.
The newer block aligned js files are produced only if environment
variable NAMDJSBLOCKIO is set.

Change-Id: Ic27ffdd074e46af0546a13a72329606f8571d6c6

14 months agoUpdate molfile plugin from John 29/4129/1
David [Fri, 4 May 2018 16:50:05 +0000 (11:50 -0500)]
Update molfile plugin from John

The update from John fixes issues with reading JS files, so that NAMD is
not forced to follow the new block alignment conventions.  We will later
want to modify NAMD to improve file reading performance by following the
new conventions, which is especially important for large systems.

Change-Id: I295c2a9b9529a72bf4355c4fd4fdf30f74450f7e

14 months agoFix minor bug with REST2 parameters 11/4111/1
David [Thu, 3 May 2018 00:14:31 +0000 (19:14 -0500)]
Fix minor bug with REST2 parameters

Correctly set range for soluteScalingFactorCharge.

Change-Id: I4126d9f998bde1f1f703ff201480887198ad809c

14 months agoUpdate Colvars to version 2018-04-29 98/4098/1
Giacomo Fiorin [Wed, 2 May 2018 18:51:22 +0000 (14:51 -0400)]
Update Colvars to version 2018-04-29

Fixes two small bugs identified by HanatoK

6d0c917 2018-04-29 Fix missing deallocation of output stream object (reported by HanatoK) [Giacomo Fiorin]
c92d369 2018-04-17 Do not test for atom group size [Jérôme Hénin]

Change-Id: Ice861520c4fc30896ae0c12a61b9cbaf5c70a004

14 months agoREST2 sample 93/3593/6
Wei Jiang [Tue, 30 Jan 2018 21:50:35 +0000 (15:50 -0600)]
REST2 sample

A complete work directory is ready for a full REST2 test.  New user
will get chance to know how to launch REST2 job and how to postprocess
trajectory data.  The 'aaqaa3_rest2_test.namd' config file lists all
necessary keywords and Tcl interface for a single solute tempering.
The 'rest2_remd.namd' is a full REST2 driver, which launches 16
different solute tempering replicas and manages exchanges among them.

Change-Id: I3ba4ef3af546c7afa748d0540c88c900218ffe04

14 months agoREST2 implementation in NAMD 88/3588/10
Wei Jiang [Mon, 29 Jan 2018 18:26:28 +0000 (12:26 -0600)]
REST2 implementation in NAMD

Contributed by Wei Jiang, Jonathan Thirman and Sunhwan Jo. REST2 denotes
second generation Replica Exchange Solute Tempering, where all heated
atoms get scaled charge and van der Waals parameters, as well as dihedral
and, optionally, bond and angle parameters.

The config file parameters are:
  soluteScaling - enable REST2, off by default
  soluteScalingFactor - scaling factor for solute interactions
  soluteScalingFactorCharge - optional factor for electrostatics
  soluteScalingFactorVdw - optional factor for van der Waals
  soluteScalingAll - apply scaling to bonds and angles, on by default
  ssFile - optional PDB for marking solute atoms, defaults to main PDB
  ssCol - optional column from ssFile, defaults to Occupancy column

Parameter soluteScalingFactor is the primary scaling factor for all
solute interactions.  Electrostatics and van der Waals interactions can
also be independently scaled using soluteScalingFactorCharge and
soluteScalingFactorVdw, respectively.

Rather than scaling individual energy and force terms, the rescaling
coefficients can be directly applied to the force field parameters
during the parameter reading and setup phase.  An extended LJ table is
tabulated for the van der Waals interactions, and the charges are scaled
before integration.  Each is updated at the Tcl scripting level, so that
there is no impact to performance during time stepping.

Bonded interaction rescaling is also applied to the force field
parameters rather than the individual interactions.  The scaling is
performed in ComputeHome(Self)Tuples.h, which is then offloaded
correctly to GPU.

However, the van der Waals parameter rescaling for now works correctly
only for CPU.  Testing shows that the CUDA kernels are not receiving the
updated LJ table parameters.

The charge rescaling is working correctly for the short-range non-bonded
CUDA kernels.  However, the electrostatic potential is not rescaling
correctly unless "usePMECUDA off" is specified (testing on one node).

Change-Id: Ic51dc0036310e85a6d6172fa475034f467ca18ab

14 months agoDocumentation for stochastic velocity rescaling 78/4078/3
radakb [Fri, 27 Apr 2018 19:54:40 +0000 (15:54 -0400)]
Documentation for stochastic velocity rescaling

o Add descriptions for the four new keywords.

o Add citation for the Bussi, et al. article.

Change-Id: I5d76a9c1e463693a2be71b6659d5631c64fcbf3d

14 months agoDrop Tcl USE_COMPAT_CONST and use const char* 71/4071/1
Jim Phillips [Fri, 27 Apr 2018 00:30:39 +0000 (19:30 -0500)]
Drop Tcl USE_COMPAT_CONST and use const char*

USE_COMPAT_CONST was for backwards compatibility with Tcl 8.3
and Tcl 8.4 has been out for over a decade.  Most changes are
mechanical, with some const propagation into related code.

Change-Id: Ieec6b339399a572e0732f7f61e4ba7753df1a15e

14 months agoRemove deprecated calls to cufftSetCompatibilityMode 69/4069/1
Ronak Buch [Thu, 26 Apr 2018 19:58:39 +0000 (14:58 -0500)]
Remove deprecated calls to cufftSetCompatibilityMode

Change-Id: I5358a0c6fa09c692e4460d63e969dbef591f3d48

14 months agoRemove unused code 57/4057/2
David [Wed, 25 Apr 2018 15:03:57 +0000 (10:03 -0500)]
Remove unused code

HomePatch has two constructors, one of which takes just the number of
atoms rather than the FullAtomList.  That constructor is called only
from PatchMgr::preCreateHomePatch, which is now never called.

Both methods and their prototypes have been removed.

Change-Id: Id839d68c2c24a7066bc454c41587c8bdd3488c11

14 months agoFinalize stochastic velocity rescaling implementation 49/4049/4
radakb [Tue, 24 Apr 2018 13:09:37 +0000 (09:09 -0400)]
Finalize stochastic velocity rescaling implementation

Here we add additional scripting features and increase robustness
of the stochastic velocity rescaling implementation. More doxygen
style comments are also added.

o stochRescaleFreq is no longer a required option and instead
  defaults to the steps per cycle frequency (default 20). This is
  in line with the default behavior in GROMACS.

o stochRescale and stochRescaleTemp can now be set from a Tcl
  script. This permits, for example, temperature replica exchange
  or neMD/MC with non-thermostatted switches to be implemented.
  For now, stochRescalePeriod CANNOT be reset, because this would
  require more significant changes, much like langevin and tCouple
  have now. I can't envision any use case for this, so I did not
  consider it worth the time.

o The stochastic component now has a more rigorous backend inside
  the Random class. The new routine sum_of_squared_gaussians(),
  should be pretty transparent. Really this is a highly-specialized
  case of a Gamma distribution, but again, I don't know of any
  other uses for such a routine, so I stuck with the specialized
  routine that assume integer argument (numDegFreedom - 1 in
  practical use). I didn't take the time to profile _this_ routine,
  but I translated the whole thing from Tcl and tested them for
  proper statistics and timings. It looks like the approximation
  for large arguments saves ~33% compute time per RNG.

Change-Id: Ic613a22ddc88c50f832fd3e889dc926ba7aece82

15 months agoFix passing string literal to non-const 42/4042/1
Jim Phillips [Sat, 21 Apr 2018 21:36:21 +0000 (16:36 -0500)]
Fix passing string literal to non-const

Actual bug as non-const argument was modified.

Change-Id: I3fa33f47050c55cdb39ab95c0c194f6db6e5ba3c

15 months agoAdd Doxygen comments 38/4038/1
David Hardy [Fri, 20 Apr 2018 20:07:14 +0000 (15:07 -0500)]
Add Doxygen comments

Doxygen comments added for stochastic velocity rescaling method.

Change-Id: I67b0b64d14de040d0755d1761c176a636b54ab41

15 months agoImplementation of a stochastic velocity rescaling thermostat 35/4035/6
radakb [Thu, 19 Apr 2018 23:29:05 +0000 (19:29 -0400)]
Implementation of a stochastic velocity rescaling thermostat

Bussi, et al. proposed a Gibbs sampling type thermostat which
couples the system to a heat bath by solving an auxiliary
Fokker-Planck equation for the kinetic energy in order to obtain
a (globaly) velocity scaling factor. The solution is to a stochastic
differential equation so the scaling factor depends on the current
kinetic energy as well as a stochastic component.

This algorithm has a two distinct advantages over Langevin dynamics:

1) In general, only 2 random variables are required at each
  rescaling, down from 3*Natoms for Langevin. Even for a box of
  216 TIP3P waters on my laptop, this leads to a ~5% speed-up!

2) Rescaling velocities, as opposed to adding noise to the vectors,
  is much less disruptive of the underlying dynamics and leaves
  holonomic constraints intact. One can thus avoid over-application
  of expensive RATTLE calls during the Ornstein-Uhlenbeck steps.

Possible issues with the present implementation:

1) The rescaling routines currently assume that the number of
  degrees of freedom is very large such that the underlying Gamma
  distribution can be treated as a Gaussian distribution. I haven't
  investigated this in-depth, but clearly it works for O(10^3)
  degrees of freedom.

2) The equations in the paper utilize a time parameter, which we
  call the stochVelRescalingPeriod, however, this could easily
  be converted to a frequency and save a division operation every
  few steps. Furthermore, using the standard NAMD idiom, the number
  of steps between rescalings is the stochVelRescalingFreq, even
  though that is also technically a period (in timesteps). It's
  debatable if this is a nomenclature we would like to encourage.

3) We don't currently permit different time factors per atom, as
  tCouple and Langevin do. It's not clear how recommendable this
  might be and it will change the implementation and performance,
  but other codes support it.

4) There are currently no defaults, although it would be quite
  reasonable to suggest

  stochVelRescalingPeriod 1.0 ;# in ps, suitable for water
  stochVelRescalingFreq   10  ;# the default pairlist frequency

5) It is generally straightforward to compute heat transfer during
  the rescaling, which can be (nearly trivially) used to compute
  the "shadow work" performed by the integrator (a quantity related
  to integrator error). This may be a very easy and general way to
  use this integrator for nonequilibrium MD/MC, but it is not done
  at present.

Change-Id: I6fbea09971a41f46f6f670977f1deb30c06a427d

15 months agoCleanup JSON IO for constant-pH MD 04/4004/2
radakb [Mon, 16 Apr 2018 18:28:32 +0000 (14:28 -0400)]
Cleanup JSON IO for constant-pH MD

The writing of JSON files (constant pH restarts) is now much
cleaner. There are a few quirks of format that might preclude
using a more general writer, but this was easy enough of a change
without the extra testing that that would require.

Other than a lurking bug in constant-pH specific error reporting,
this outwardly changes nothing that a user will see. It will,
however, make mucking about in the restart format easier as time
goes on.

Change-Id: Ie62dd7cfa42f778078984a73a3e878ef222784a5

15 months agoUpdate Colvars to version 2018-04-11 79/3979/1
Giacomo Fiorin [Wed, 11 Apr 2018 20:10:07 +0000 (16:10 -0400)]
Update Colvars to version 2018-04-11

Allows periodic custom/scripted variables, and adds a fix to allow the use of
old-style walls with scriptedColvarForces (bug report by Jeff Comer on namd-l).

c72a6db 2018-04-11 Move initialization of two flags to colvarmodule constructor [Giacomo Fiorin]
431e52a 2018-04-06 Allow scripted/custom colvars to be periodic [Jérôme Hénin]
81d391f 2018-04-05 Split colvarcomp constructor into POD constructor + init()unction [Giacomo Fiorin]

Change-Id: I2e88eafdbc49ccb4234c348e55448f6bc002f820

15 months agoConstant-pH - more config and restart format updates 20/3920/1
radakb [Thu, 29 Mar 2018 19:27:34 +0000 (15:27 -0400)]
Constant-pH - more config and restart format updates

- Residue aliases are now part of the config file definition,
  rather than being hardcoded ad hoc. THIS MEANS YOU WILL NEED TO
  UPDATE YOUR JSON FILES FROM HEREON.

- Residue exclusions are now stored in the restart file, which
  means you no longer have to keep using cphExcludeResidue commands
  during subsequent runs (it would have crashed before if you
  didn't).

TODO: All of the changes to the restart format are starting to
  make the writer a bit heavy and over complicated. It looks like
  I'll finally have to sit down and write some general JSON
  encoding procs...

Change-Id: Ia8868b0cec9da0348bfa31f9f2a82346b1f7b6d6

15 months agoFix ordering error when updating parameters for Constant-pH MD 03/3903/1
radakb [Mon, 26 Mar 2018 20:30:20 +0000 (16:30 -0400)]
Fix ordering error when updating parameters for Constant-pH MD

In "fixing" the new restart behavior I accidentally created an
ordering error in the move dictionary (this is why I don't like
dict merge). The MC moves were inadvertently rebuilt in a random
order depending on how they were set (from keywords, etc). This
didn't change any of the results, but it caused the MC moves to be
occasionally printed in a different order after restarts, which
I didn't notice until I wrote a script to track MC statistics
between runs and saw that they didn't make sense.

Change-Id: I965d7c25b7fa25657efdda707302bbb35b78a473

15 months agoMinor updates and fixes for constant-pH MD 93/3893/3
radakb [Fri, 23 Mar 2018 17:41:09 +0000 (13:41 -0400)]
Minor updates and fixes for constant-pH MD

The changes might look much more comprehensive than they actually
are...(this one kind of got away from me).

New features/fixes:
-------------------

- Official support for diprotic phosphate monoesters
  (parameterization pending, publish soon?)

- The pH is now stored in the restart file and therefore does NOT
  need to be set as a keyword during a restart. This is in
  preparation for replica exchange and/or other simulation modes
  that will change the pH value

- Multiple config files can now be read. These will overwrite (and
  warn the user about) duplicate titratable residue definitions,
  with preference for the last loaded.

- MC statistics are now stored in the restart file and accumulated
  over mutiple restarts. These may not make sense if the inherent
  pKa is updated between runs and this might get updated in the
  future

- Fix expected behavior when changing weights and switch times
  after a restart. Previously the restart file was overwriting
  keyword specifications, which are supposed to always have
  preference.

- See previous. The restart format is now a bit different, so OLD
  RESTART FILES MAY NOT HAVE THE BEHAVIOR ADVERTISED HERE! The
  JSON format dict is now minimal and entries that match the
  default are removed. This decreases the file size by about half
  (though it was only order of KB before).

- Hopefully more robust error checking and responses when the user
  gives bad input specs. Things now crash when you probably want
  them to rather than just ignoring the input.

Code clean-up and other backend things the user doesn't see:
------------------------------------------------------------

- Harmonized the Tcl switch idiom across all files - this was
  actually a surpising thing that I didn't know. Tcl switches do
  not adhere to "break" statements and _return_ the final
  expression within the given selection. Thus you can wrap a
  switch statement in []s and get the value back (cool!).

- Change lsearch statements to more readable "in" and "ni"
  statements (this might only work for Tcl 8.5 and later)

- simplified numtcl interface:
    - choice now subsumes weightedChoice (which no longer exists)
      and accepts optional weights. The result now includes the
      list element AND index

    - lincr now subsumes llincr (which no longer exists).

    - lmultiply and lincr now have broadcast behavior similiar to
      Numpy ndarrays. That is, you can add or multiply a list
      in-place by either a value or a list of identical size (in an
      element by element fashion). Both functions follow the
      indexing behavior or lindex, lset, etc. when using nested
      lists

- Massive overhaul of cphTitrator to be analogous to cphSystem
    - The namespace now exports a _single_ function, cphtitrator
      which accepts actions (e.g. get, set, propose) as the first
      argument

    - fuction documentation! hey, how about that?

    - internal data structures are almost totally different

- Clean-up/re-write of matrix reading for residue definitions. This
  started getting really ugly for large residues, so a whole bunch
  of shorthand convenience functions were introduced to make it
  bearable to add new residue patterns.

Change-Id: Ib041f5e70cd25aa14aabe9a2a8ae5f7384b211aa

16 months agoRebuild Make.depends 80/3880/1
Jim Phillips [Tue, 20 Mar 2018 21:36:22 +0000 (16:36 -0500)]
Rebuild Make.depends

Change-Id: Id303697d3e37e6da319738279c710e5c5e5b8657

16 months agoControl CUDA runtime thread affinity 76/3876/1
Jim Phillips [Sun, 18 Mar 2018 15:10:10 +0000 (10:10 -0500)]
Control CUDA runtime thread affinity

CUDA launches threads that inherit the affinity of the threads
initializing either the runtime or the individual contexts.
Now the runtime inherits the pre-Charm++ affinity, as does the
context for single-device hosts.  Multi-device host contexts
inherit the affinity of the binding pe.

Change-Id: I6c617bfadbf3316d1a4873cdbbda4bdf751445f5

16 months agoUpdate Colvars to version 2018-03-14 49/3849/1
Giacomo Fiorin [Wed, 14 Mar 2018 18:04:45 +0000 (14:04 -0400)]
Update Colvars to version 2018-03-14

This update fixes an issue reported by Marcelo Melo with the order of atoms in
Colvars groups being given manually by number, but out of order.  The intended
behavior is that Colvars atom groups can be defined out-of-order, but
coordinates are read from files in-order.  This fix introduces a back-mapping
to the original order, retaining backward compatibility as much as possible.

As stated already to various UIUC members in private, given the increased
frequent use of reinitatoms (e.g. in constant pH) I'd really like to phase out
most selection commands internal to Colvars.  These "selections" should be
managed centrally by NAMD, kept updated between topology changes, and made
available to the objects as Tcl procs.  These may be VMD-like selections (a
long standing issue) but they don't have to.

Below are the relevant commits from https://github.com/Colvars/colvars/

9b85d5f 2018-03-13 Fix issue with out-of-order atom selections; clarify format for ref positions [Giacomo Fiorin]

Change-Id: Ia84f3241b0b41227ae05ae784c9de8eed83cd9e0

16 months agoFix Lowe-Andersen thermostat on KNL 38/3838/1
Jim Phillips [Mon, 12 Mar 2018 14:31:22 +0000 (09:31 -0500)]
Fix Lowe-Andersen thermostat on KNL

Added macros to use r2list_f instead of r2list on KNL.

Change-Id: I71a539ab8dac1e66a7542a9863905a0b8d9ca0d6

16 months agoUser guide updates for constant-pH MD 23/3823/2
radakb [Thu, 8 Mar 2018 14:17:40 +0000 (09:17 -0500)]
User guide updates for constant-pH MD

Modify documentation to reflect new selection syntax. This just
changes <segid>:<resid> to <segid>:<resid>:<resname> for all
pertinent keywords.

Since the long-hand syntax is a bit verbose, I removed the explicit
repeat to show how optional arguments work. The optional argument
is always strict repetition of the pattern, so this should be self
explanatory. The alternative was an awkward wrapping of the
"Acceptible Values" field that seemed confusing to me.

Change-Id: I086f3e291148ad0dba59dd3a339d62fdafb0de58

16 months agoFix bug when aliasing titratable residue names with constant pH 22/3822/2
radakb [Thu, 8 Mar 2018 14:13:09 +0000 (09:13 -0500)]
Fix bug when aliasing titratable residue names with constant pH

During residue aliasing only the resname was aliased and the
segresidname was not. This broke analysis tools and would have
caused very confusing behavior with residue selection. This is
now fixed here.

If anyone has been using this bug (for all of the last 3 days?),
it would only affect HSD, HSE, and HSP residues which are
otherwise aliased to HIS. A simple sed replacement in stdout,
cphlog, and cphrst files will completely fix the problem going
forward.

Change-Id: Ia2518f625e2110709fd7a8b19190dd7fb660c709