5 months agoUpdate behavior for alchemical bonded scaling 34/4934/2
radakb [Fri, 1 Feb 2019 19:11:09 +0000 (14:11 -0500)]
Update behavior for alchemical bonded scaling

Molecule::get_fep_bonded_type now explicitly catches bonded terms
involving alchemical atoms that should NOT be scaled and assigns
them to group 0 (as opposed to 1 or 2). This may have been a quiet
bug for the case alchBondLambdaEnd > 0.0 and alchBondDecouple off,
neither of which are default and are not often (or never?) used.

Change-Id: I404703eadd30951270ff2a453e8cdff31c835bdc

5 months agoMove optimization options to ...OPTS macros 23/4923/2
Jim Phillips [Fri, 25 Jan 2019 18:08:05 +0000 (12:08 -0600)]
Move optimization options to ...OPTS macros

Optimization-related options should be in COPTS/CXXOPTS where
they can be over-ridden by CXXTHREADOPTS, unlike CC/CXX.

Change-Id: I2c23c9816a77f1dc0b99bd51f1d6aa5f573268de

5 months agoFix direct calls to SDAG entry methods 08/4908/3
Jim Phillips [Fri, 18 Jan 2019 16:52:13 +0000 (10:52 -0600)]
Fix direct calls to SDAG entry methods

Directly calling SDAG entry methods that contain when clauses has
always had undefined behaviour, but Charm++ 6.9.0 now raises errors.
Now calls SDAG methods via proxy with callbacks to enforce order.

The error occurs when running the CUDA SMP build with multiple
processes on four or fewer physical nodes, as otherwise the
hard-coded heuristic falls back to the older PME since the newer
PME CUDA code does not scale well. Although this misuse of SDAG could
be caught as a compile-time error, Charm++ for some reason implements
as a run-time error.

Change-Id: Icf734a79daa3b3f6c5c0b70667fa782bcc40447e

6 months agoModify xlC flags to avoid CthThread crash 02/4902/2
Jim Phillips [Thu, 17 Jan 2019 20:02:01 +0000 (14:02 -0600)]
Modify xlC flags to avoid CthThread crash

CXXTHREADOPTS = -O0 -qstrict ... avoids crash with new xlC on Summit.

Change-Id: I6304a242254f087c80f69efae38c8179e58022a9

6 months agoFix REST2 config parameter name lookup 90/4890/1
David [Fri, 11 Jan 2019 17:40:22 +0000 (11:40 -0600)]
Fix REST2 config parameter name lookup

The REST2 config parameter names identifying PDB file and column were
not correctly updated in the global NamdState class.  Bug fixed.

Change-Id: Icf0f1e2b5bc7adfef0e4579b742aa9f0e8b28c16

6 months agoUpdate Colvars to version 2018-12-18 73/4873/2
Giacomo Fiorin [Thu, 20 Dec 2018 16:53:34 +0000 (11:53 -0500)]
Update Colvars to version 2018-12-18

Add dipoleMagnitude variable (contributed by Alejandro Bernardin):

Minor bugfix for #ifdef NAMD_TCL, triggered by a build without Tcl:

Minor fixes to silence compiler warnings and cosmetic changes.

Change-Id: I7d5963e6d8d9b52a8f1c90994420c8057ee197af

7 months agoImprove energy conservation of vdwForceSwitching/LJcorrection 69/4869/4
radakb [Wed, 19 Dec 2018 16:20:23 +0000 (11:20 -0500)]
Improve energy conservation of vdwForceSwitching/LJcorrection

The existing implementation for vdwForceSwitching + LJcorrection
introduces a discontinuity into the potential (but not the force)
in order to make the long-range correction more well-defined.
While this discontinuity is very small for normal cutoffs, it
can cause detectable issues at moderate lengths (~8 A).

This revision reverts to the old vdwForceSwitching behavior and
modifies the long-range correction to include a "core" correction
term based on the same approximation -- this is theoretically
dubious, but works quite well in practice.

On a practical note, this change greatly simplifies the code
because vdwForceSwitching behavior is now uniform. Supporting
multiple branches in the alchemical code will now be substantially

Change-Id: Ia53bc80f79e1976f2f0ca62f2f0d6988a2fe960a

7 months agoUpdate Colvars to version 2018-12-14 63/4863/2
Giacomo Fiorin [Fri, 14 Dec 2018 20:22:02 +0000 (15:22 -0500)]
Update Colvars to version 2018-12-14

Bugfixes concerning corrFunc/runAve:

Fix for the dependency handling in orientationAngle, orientationProj, tilt,
abnd spinAngle (an error condition was raised when it shouldn't have):

The "cv save" command now triggers writes of output files from the ABF bias:

Relevant commit messages:
394145d 2018-12-14 Split off init() function for orientation derivatives [Giacomo Fiorin]
df94a7c 2018-12-12 Silence compiler warnings [Giacomo Fiorin]
026ef05 2018-11-16 Update version strings [Giacomo Fiorin]
4d8244f 2018-11-16 Make internal numbering of default colvar names consistent [Giacomo Fiorin]
331a205 2018-11-16 Add end_of_step() function to variables and biases [Giacomo Fiorin]
e71730c 2018-11-15 Fix declaration of local variable [Giacomo Fiorin]
07b9ff4 2018-11-15 Check that second variable is defined before accessing it [Giacomo Fiorin]
563f081 2018-11-15 Improve output format for runAve and corrFunc, cosmetic changes [Giacomo Fiorin]
475f493 2018-11-15 Use consistent return types for colvar-class analysis functions [Giacomo Fiorin]
acf8cc2 2018-11-15 Do not recompute finite-difference velocity; make it unavailable only during simulation [Giacomo Fiorin]
24b2db4 2018-11-15 Use properly name of second variable for correlation function [Giacomo Fiorin]
e5397e6 2018-11-15 Fix default file names for corrFunc and runAve output files in the doc [Giacomo Fiorin]
9fe9ff9 2018-11-15 Initialize corrFunc, runAve output files when cvm::output_prefix() is available [Giacomo Fiorin]
7e8bbaf 2018-10-30 Implement cv save in ABF [Jérôme Hénin]
d388035 2018-10-29 Add missing hyperlink [Giacomo Fiorin]

Change-Id: I22b3b0ac000bee69d4dc7fe3d41d657f426a3550

7 months agoFix implicit declarations in C files 62/4862/1
Jim Phillips [Thu, 13 Dec 2018 20:58:20 +0000 (14:58 -0600)]
Fix implicit declarations in C files

Add headers.  Also add "utils" target to build extra tools.

Change-Id: Id414747c56ca8d417ad93e600e10fbc7abd38ed1

7 months agoRemove unused files that use Charm's cmidirectmanytomany api 26/4826/3
Nitin Bhat [Tue, 27 Nov 2018 17:08:01 +0000 (11:08 -0600)]
Remove unused files that use Charm's cmidirectmanytomany api

With the new zerocopy api in Charm++, the older unused
cmidirect api is being removed. This patch removes the source
code files and their dependencies in NAMD that use the
cmidirectmanytomany api. These include fftlib.{ci,h,C},
fftmap.h, OptPme.{ci,h,C} and OptPmeRealSpace.{h,C}.

Change-Id: I154a209a5d5ed4a88e1382fd4d67665fe5eb9677

8 months agoClarify that soluteScalingFactor is \beta 10/4810/1
Giacomo Fiorin [Thu, 15 Nov 2018 18:10:10 +0000 (13:10 -0500)]
Clarify that soluteScalingFactor is \beta

To avoid any misunderstandings, this change clarifies that the parameter \beta
from the solute-scaling equation is being provided, as opposed to

Change-Id: I77b2015367896ee03cdfad18bfa5c028c49038b3

8 months agoFix LJcorrection behavior in alchemical simulations 08/4808/2
radakb [Tue, 13 Nov 2018 15:08:59 +0000 (10:08 -0500)]
Fix LJcorrection behavior in alchemical simulations

The alchemical tail correction previously used the fixed value of
alchLambda2 rather than the IDWS-enabled getter function
SimParameters->getCurrentLambda2(). This produces incorrect comparison
energies when performing FEP w/IDWS.

A separate error also could have occured if combining nonbondedScaling
with TI (probably never been done before). The TI derivatives now use
the correct Molecule->getEnergyTailCorr() getter function which includes
the scale factor.

Change-Id: Ibed7793c4f6625f0fc8118d4271f413ca2755b1c

8 months agoUpdate running CUDA and performance tuning 03/4803/4 release-2.13
David Hardy [Fri, 9 Nov 2018 18:45:25 +0000 (12:45 -0600)]
Update running CUDA and performance tuning

Moved performance tuning chapter to later part of user guide.
Updated to discuss NAMD performance tuning concepts.

Updated section on running CUDA for modern GPUs, added explanation
of what is and is not accelerated, what is and is not disabled by
CUDA-accelerated builds, and added some keywords.

Updated copyright year on user guide.

Change-Id: I21cda6ef7bd25fde53274d0733637b645645c2f8

8 months agoUpdate release date 00/4800/3
Jim Phillips [Fri, 9 Nov 2018 15:02:49 +0000 (09:02 -0600)]
Update release date

Add grant number to announce.txt file.

Change-Id: Idb9367c0f1491193d99269a149b934a4c07bda8f

8 months agoMajor update for deinterleave_IDWS 96/4796/2
Jérôme Hénin [Fri, 9 Nov 2018 00:04:07 +0000 (01:04 +0100)]
Major update for deinterleave_IDWS

finally good behavior with ParseFEP and the default option

Change-Id: Id1534bb802db1653178eb61f935df80bf54cef06

8 months agoUpdate user guide front material 99/4799/1
David Hardy [Fri, 9 Nov 2018 06:59:33 +0000 (00:59 -0600)]
Update user guide front material

Add J. Maia to author list.  Add grant number to cover page.

Change-Id: Ice67ea8120db6fda5b939079803f4134fce53547

8 months agoAmmended QM/MM documentation 95/4795/1
melomcr [Thu, 8 Nov 2018 21:59:02 +0000 (15:59 -0600)]
Ammended QM/MM documentation

Added 4 missing keywords to the keyword list in the user guide.

Change-Id: Ife82db4508e061a12f7211023e0aec2b49e4b513

8 months agoQM/MM documentation in user guide 58/4758/4
David Hardy [Wed, 31 Oct 2018 12:59:34 +0000 (07:59 -0500)]
QM/MM documentation in user guide

Documentation has been created from the research web page and paper.
Included introductory material with figures from website, pointer
to Python scripts, keyword definitions, and references.  Tested
building both the PDF and HTML.

Also have included Python and other relevant scripts into a new
lib/qmmm/ directory.

Change-Id: I0e9376500425af20b6d7d6bb6529b3728cd9897f

8 months agoDeinterleave IDWS with safe defaults for parseFEP 79/4779/2
Jérôme Hénin [Tue, 6 Nov 2018 22:37:53 +0000 (23:37 +0100)]
Deinterleave IDWS with safe defaults for parseFEP

meaning, interpolating, which is slow and strange but works
The work I could put into making the subsampling version robust, I'd
rather use to fix ParseFEP to accept uneven sampling per window.
Most of the work on that has been done by Brian already.

Change-Id: Iddfd4230b651806cbabeffc311d2b34f2fa82f96

8 months agoPermit negative pH and pKai 85/4785/1
radakb [Wed, 7 Nov 2018 20:39:05 +0000 (15:39 -0500)]
Permit negative pH and pKai

I'm not entirely sure why this was originally required. In any event,
systems under study now do require extreme values as low as -1, so I've
had this change locally for a while now. It shouldn't impact many users.

Change-Id: Idab0f436979d1d81c1ecd900742820130551f7ee

8 months agoAdd alchIDWSFreq fallback to outputEnergies 70/4770/7
radakb [Fri, 2 Nov 2018 16:35:52 +0000 (12:35 -0400)]
Add alchIDWSFreq fallback to outputEnergies

If alchOutFreq = 0, fallback to alchIDWSFreq = outputEnergies. This
enables IDWS output to stdout without sending any output to

Also, because the value of alchLambda2 is step-dependent (not event
driven), the use of two IDWS output streams may be inherently
incompatible if the output frequencies are different (outputEnergies
must be an odd multiple of alchOutFreq). Users can still use whatever
settings they would like, but there is a warning issued when
alchOutFreq > 0 and alchOutFreq != outputEnergies.

Minor change:

alchIDWSfreq --> alchIDWSFreq, to match camel casing convention
throughout the rest of the code

Change-Id: I5d6611b6eb9374cd1cc97e1e87169e4beba83322

8 months agoPrint warning if margin greater than 4 83/4783/2
Jim Phillips [Wed, 7 Nov 2018 18:30:39 +0000 (12:30 -0600)]
Print warning if margin greater than 4

There are legitimate reasons for large margins, but the user should
be made aware of the consequences of increasing it unnecessarily.

Change-Id: Iacf9b216199d2c6a639bcfa611af2734fa1b0f3c

8 months agoAdding error message for large patches on nbond kernels 82/4782/2
Julio Maia [Wed, 7 Nov 2018 17:29:14 +0000 (11:29 -0600)]
Adding error message for large patches on nbond kernels

We had an 'invalid argument' error when large patches (>11k atoms) were
accounted for on CudaTileList::buildTileLists. This happened because
the amount of shMem allocated inside the tilelist kernels
is dependant on the number of atoms in the largest patch.

I've added a query to get the maximum shared memory available per block.
We can compare that against the necessary shared memory to launch the
tilelist kernels, and if those launches are about to go wrong, NAMD prints
a nice message to warn the user about the patches sizes.

Change-Id: Ie35b40d83f87b06ec33cd60b0a1936cec18b6114

8 months agoWarn that extraBonds angles are cosine-based and allow harmonic 63/4763/3
Jim Phillips [Thu, 1 Nov 2018 03:40:58 +0000 (22:40 -0500)]
Warn that extraBonds angles are cosine-based and allow harmonic

The "normal" flag for extraBonds angles was left uninitialized
when the cosAngles feature was implemented, which tends to
result in extraBonds angles being treated as cosine-based.

Since workflows may unknowingly depend on the current behavior
warn the user and add extraBondsCosAngles option to change it.
Also fix bad comment that reversed meaning of normal flag.

Change-Id: I1a300d6b12654c676c91f15236b135ef3e5fc4e3

8 months agoDocumentation for stochRescaleHeat keyword 69/4769/2
radakb [Fri, 2 Nov 2018 15:09:03 +0000 (11:09 -0400)]
Documentation for stochRescaleHeat keyword

This commit adds documentation for this previous addition to the
stochRescale thermostat. The option only affects output, not
dynamics, but should still be regarded as experimental. The current
documentation says as much.

Change-Id: I2720beb414682896a8d98821aa40901616a1e6bf

8 months agoFix error from copying uninitialized angle parameters to GPU 66/4766/2
Jim Phillips [Thu, 1 Nov 2018 14:52:19 +0000 (09:52 -0500)]
Fix error from copying uninitialized angle parameters to GPU

One example was the ffTK tutorial bond and angle optimization.
Replacement angle parameters would be counted as unique but only
the last would be copied from the parameter assignment tree to the
indexed parameter array. The new CUDA bonded code would look at
uninitialized and never-used data at the end of the parameter array
and exit with "Can't use cosAngles with Urey-Bradley angles".

We could use the indexing functions to set correct counts for
all bonded term parameters, but this would break backwards
compatibility of memopt compressed structure files, especially
those containing extraBonds, so just initialize the full arrays
as is already done for dihedrals, impropers, and cross-terms.

Change-Id: I5d4592c3580f6876243427415b591b8ea88158d9

8 months agoFix uninitialized variable in QM 67/4767/1
David [Thu, 1 Nov 2018 20:32:06 +0000 (15:32 -0500)]
Fix uninitialized variable in QM

Change-Id: I6933ab6bc08f48a878ab1de2ce2c1818ff5dbc43

8 months agoUpdate to 2.13. 50/4750/1
Jim Phillips [Mon, 29 Oct 2018 21:05:56 +0000 (16:05 -0500)]
Update to 2.13.

Change-Id: I378e27ec1917ebe82e860e3da4398cc4bc4494ba

8 months agoImprove error reporting for new CUDA PME device polling 46/4746/1
Jim Phillips [Mon, 29 Oct 2018 18:58:13 +0000 (13:58 -0500)]
Improve error reporting for new CUDA PME device polling

Call cudaDie with a useful message rather than NAMD_bug.

Change-Id: Ibcbc4365055367678a05e76fa5830653c923146c

8 months agoSmall improvements to Colvars doc 42/4742/1
Giacomo Fiorin [Mon, 29 Oct 2018 15:21:34 +0000 (11:21 -0400)]
Small improvements to Colvars doc

More forward-compatible explanation of current keywords, and support for some
hyperlinks.  There are no changes to the C++ or Tcl code.

The PDF and HTML versions of the manual both compile correctly.

See also:
(review completed)

Change-Id: I18dc77fe5ee7411fc2d552d4e4ecf90cbada9ca7

8 months agoUpdate Colvars version (omitted in previous push) 41/4741/1
Giacomo Fiorin [Mon, 29 Oct 2018 15:21:08 +0000 (11:21 -0400)]
Update Colvars version (omitted in previous push)

Change-Id: I67f5e19c2a58133ad5477152566dfb2fba525381

8 months agoDon't pollute global namespace with fake sbrk for Windows 32/4732/1
Jim Phillips [Fri, 26 Oct 2018 01:32:04 +0000 (20:32 -0500)]
Don't pollute global namespace with fake sbrk for Windows

Conflicts with similar fake sbrk added in Charm++ 6.9.0.

Change-Id: Ic15d55fa63d5f8939387a2881eced8193683d103

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

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 99/4699/3
Jérôme Hénin [Tue, 16 Oct 2018 20:17:49 +0000 (22:17 +0200)]
Fix for

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:

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

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.

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:

Change-Id: Ib5656752b7472d4a7d1896013189ab100e97a31d

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

- 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

9 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

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:

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 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.

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)]

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

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 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

o Preliminary doxygen comments for the various routines mentioned

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.

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

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.

1) Re-organized archiving the titrator to cphrst so that this is more

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

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

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/ 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

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