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

7 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

7 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

7 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

7 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

7 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

7 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

7 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

7 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

7 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

7 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

7 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

7 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

7 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

7 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

7 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

8 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

8 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

8 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

8 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

8 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

8 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

8 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

8 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

8 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

9 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

9 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

9 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

9 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

9 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

9 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

9 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

10 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

10 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

10 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

10 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

10 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

10 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

11 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

11 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

11 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

11 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

11 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

11 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

11 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

11 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

11 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

11 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

11 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

11 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

11 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

11 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

11 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

11 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

12 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

12 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

12 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

12 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

12 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

12 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

12 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

13 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

13 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

13 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

13 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

13 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

13 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

13 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

13 months agoComment on the effects of wrapAll and wrapWater in the UG. 18/3818/1
Giacomo Fiorin [Wed, 7 Mar 2018 14:12:06 +0000 (09:12 -0500)]
Comment on the effects of wrapAll and wrapWater in the UG.

Over time, the wording "alters this behavior" may have become confusing to
novice users, and lead them to think that even the physical trajectory of a
standard MD simulation is changed.

The new explanation is more verbose, but mentions explicitly the use cases
where wrapAll or wrapWater are not recommended.

Change-Id: I68e1ac0734ff0480fb88c0a7f601d7c5140b19eb

13 months agoConstant-pH MD: Revisions and new functionality 94/3794/3
radakb [Thu, 1 Mar 2018 21:56:16 +0000 (16:56 -0500)]
Constant-pH MD: Revisions and new functionality

Minor changes:
 - Clean up of documentation
 - Variable name segresid changed to segresidname throughout (see below)
 - Complete re-hab or residue testing facility. The old system was based
   on the old, directional pattern of patch definition. This is no
   longer necessary and way more robust. Testing that the correct
   patches are defined is still very easy, but a new convenience
   function is added for testing the correctness of the patches is also
   added. Scripting a test with this is very involved...
 - Simplification and performance enhancements for the experimental
   cphAnalyzeForce command.
 - Using minimization via cphNumMinSteps now results in reallocation of
   velocities when done. Either the temperature or thermostat
   temperature are used.
 - The generic namdtcl interface now includes a "::kBT" proc that
   returns the value of kT in the current thermostat.

Major changes:
 - A residue, in the topology sense, can now be divided into multiple
   titratable residues. Any titratable residue which does not have the
   same name as the topological residue is considered a "sub-residue"
   and requires special definition in the configuration file. Note that
   some residues may ONLY contain sub-residues, such as a C-terminal
   alanine or the phosphates in a lipid head group. In order to
   differentiate sub-residues from the regular residues, we expand the
   <segid>:<resid> selection to <segid>:<resid>:<resname>, where
   <resname> may be a sub-residue name. This new label (the
   "segresidname") is the only guaranteed unique selector for a
   titratable residue.
   IMPORTANT! Even if a residue has no sub-residues, the new
   segresidname syntax MUST be used for any keyword that requires a
   residue selection. THIS BREAKS OLD NAMD CONFIGURATION FILES THAT
   SELECT RESIDUES!
 - The initial "run 0" command to kick-start the simulation has been
   replaced by the "startup" command and thus eliminates the spurious
   ENERGY: entry when a simulation begins. As a consequence, the old
   neMD/MC cycle sequence of MC/MD has now been flipped to MD/MC. This
   should not cause any change to statistics, but output will look
   slightly different.

Change-Id: Iad97be3aa5cfd1ee58228703f1c92b78987886b0

13 months agoUpdate Colvars to version 2018-02-24 69/3769/1
Giacomo Fiorin [Sat, 24 Feb 2018 19:10:22 +0000 (14:10 -0500)]
Update Colvars to version 2018-02-24

This update introduces new features such as runtime ABF integration,
accumulated work for K-changing restraints, use of OpenMP (for the few builds
where Charm++ allows it) as well as a fix for the TI estimator with staged
changes in K, and (re)initialization fixes that allow using Colvars in
combination with the new constant-pH protocols (only needed before the first
"run" is "colvars on").

colvarsTrajAppend is now deprecated: please stop using it.

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

eed97c9 2018-02-24 Obtain integer version number from version string
c17f3cd 2018-02-23 Write trajectory labels only when needed [Giacomo Fiorin]
7307b5c 2017-12-14 Doc improvements [Giacomo Fiorin]
7f86f37 2017-12-14 Allow K-changing restraints computing accumulated work; fix staged-k TI estimator [Giacomo Fiorin]
8e0d593 2017-12-12 Projected ABF in 2D and 3D [Jérôme Hénin]
b94aa7e 2017-11-16 Unify PMF output for 1D, 2D and 3D in ABF [Jérôme Hénin]
771a88f 2017-11-15 Poisson integration for all BC in 2d and 3d [Jérôme Hénin]
0166f9e 2017-12-13 Allow negative force constants for the linear bias [Giacomo Fiorin]
353ef72 2017-12-03 Allow running setup_input() and setup_output() when module is empty [Giacomo Fiorin]
6af4d60 2017-12-01 Print message when issuing cv delete in VMD [Giacomo Fiorin]
efdae9b 2017-12-01 Print a short help for cv without commands, suggest using cv help [Giacomo Fiorin]
0fc924e 2017-12-01 Allow "cv delete" only inside VMD, print error message otherwise [Giacomo Fiorin]
4413972 2017-11-30 Check for homogeneous colvar to set it periodic [Jérôme Hénin]
95fe4b2 2017-11-06 Allow abf_integrate to start in bin with 1 sample [Jérôme Hénin]
7cf56af 2017-11-13 Restore stdlib header include, needed to declare rand() [Giacomo Fiorin]
51590b2 2017-11-03 Move Tcl functions to colvarproxy class (remove VMD/NAMD duplicates) [Giacomo Fiorin]
5752af7 2017-10-25 Make running average accessible to scripts [Jérôme Hénin]
06eea27 2017-10-23 Shorten a few constructs by using the power function [Giacomo Fiorin]
cf72d16 2017-10-20 Improve comment text for CVC class [Giacomo Fiorin]
3165dfb 2017-10-20 Move includes of colvarproxy.h from headers to files [Giacomo Fiorin]
32a867b 2017-10-20 Add optimized powint function from LAMMPS headers [Giacomo Fiorin]
3ad070a 2017-10-20 Remove some unused includes, isolate calls to std::pow() [Giacomo Fiorin]
98d548a 2017-10-20 Account for correct colvar bin in colvarbias_ti class [Giacomo Fiorin]
0aaf540 2017-10-20 Replace all calls to std::pow() where the exponent is not an integer [Giacomo Fiorin]
624cc72 2017-10-20 Use correct bin for system force for all backends [Jérôme Hénin]
3ee2617 2017-10-19 Fix issue #140 (segfault at end of run) [Jérôme Hénin]
541ccb8 2017-10-13 Doc fixes [Giacomo Fiorin]
5005669 2017-10-10 Move OpenMP support to base colvarproxy class [Giacomo Fiorin]
b8fbc8d 2017-10-10 Remove unused variable [Giacomo Fiorin]
321d06a 2017-10-10 Add macros to manage colvarscript commands [Giacomo Fiorin]
5ac0088 2017-10-10 Don't track colvarscript when updating proxy versions [Giacomo Fiorin]
cc8f249 2017-10-04 Clarify that SMP depends on code build [Giacomo Fiorin]
c554537 2017-10-04 Comment to specify timing of Jacobian calculation [Jérôme Hénin]
0b2ffac 2017-10-04 Summarize colvar definition options, clarify some details [Giacomo Fiorin]
28002e0 2017-10-01 Separate writing of restart file from other output (e.g. PMFs) [Giacomo Fiorin]
92f7c1d 2017-10-01 Deprecate colvarsTrajAppend [Giacomo Fiorin]
36de8dc 2017-09-29 Accompany all section titles in the doc with a label [Giacomo Fiorin]
12a707f 2017-09-26 Accurate Jacobian calculation for RMSD variants [Jérôme Hénin]
fe389c9 2017-09-21 Allow subtractAppliedForce with extended-L again [Jérôme Hénin]
22e50da 2017-09-20 Include omitted keywords in colvarscript help [Giacomo Fiorin]
5dc0aaa 2017-09-20 Clarify that firstTimestep is always honored by Colvars [Giacomo Fiorin]
b61f978 2017-09-18 Add references to sections within crash course [Giacomo Fiorin]

Change-Id: Ie20a45d82eb05e3dbc7f58a7bf0744fb5ea98023

13 months agoUpdates and fixes to constant pH 68/3768/1
radakb [Fri, 23 Feb 2018 19:13:21 +0000 (14:13 -0500)]
Updates and fixes to constant pH

- Add basic support for titratable phosphate monoesters
- Fix potential bug when using mass repartitioning
- Remove extraneous code:
  o checkpoint/revert is redundant with reinitatoms
  o bfactors are already zeroed by psfgen
  o clean up old-style proposal summaries

Change-Id: I670aab3eb3630edf9ee8d622707f83951590881e

14 months agoClean up Projections tracing for CUDA offload 53/3753/1
Jim Phillips [Wed, 21 Feb 2018 05:03:35 +0000 (23:03 -0600)]
Clean up Projections tracing for CUDA offload

Various user events did not have their tags registered correctly
due to the registration call not being done on pe 0, etc..  Also
disabled excessive tagging of every timestep on every sequencer
and patch/timestep user note that doesn't appear to work anymore.

Change-Id: I7a56464888dc076914061331bf980c788e3c6760

14 months agoFix message priorities for CUDA offload 50/3750/1
Jim Phillips [Tue, 20 Feb 2018 17:11:30 +0000 (11:11 -0600)]
Fix message priorities for CUDA offload

Set priorities of messages to recvFinishPatchesOnPe, recvFinishPatchOnPe,
and recvOpenBoxesOnPe for CUDA bonded and nonbonded offloading to
launch bonded (non-streaming) before nonbonded (streaming), and to
interleave properly with PME and other work.

Change-Id: Ibf904ccc2f1593017bcf9f127800d5d50216c3f9

14 months agoChange multicore-linux64 to multicore-linux-x86_64 43/3743/2
Jim Phillips [Mon, 19 Feb 2018 21:00:00 +0000 (15:00 -0600)]
Change multicore-linux64 to multicore-linux-x86_64

The Charm++ build script (run in interactive mode) used to
suggest multicore-linux64 but now uses multicore-linux-x86_64.
There is no difference between these other than the name.

Change-Id: I623e5bdeb777eecf7003e0f6f4c2c85e6d90e1c5

14 months agoTranslate config script from csh to bash 38/3738/2
Jim Phillips [Mon, 19 Feb 2018 02:49:35 +0000 (20:49 -0600)]
Translate config script from csh to bash

Linux distributions no longer install csh by default.
Bash is universally available and most users know it.

Change-Id: Id59f75d26b414d90dfa6833512eb0473f423dc33

14 months agoFix lurking bugs for alchLambda/alchLambda2 24/3724/7
radakb [Sat, 10 Feb 2018 16:21:45 +0000 (11:21 -0500)]
Fix lurking bugs for alchLambda/alchLambda2

In scriptSet:

Resetting of alchLambda(/alchLambda2) has not been subject to the
constraint that 0.0 <= alchLambda <= 1.0, as is imposed at startup.
This was only ever done from scripts and probably only by advanced
users, but could still potentially cause sneaky errors that might
be hard to diagnose.

At startup:

I don't know how this didn't break things before - alchLambda2 is
uninitialized by default but checked for validity even during TI,
where it is never used unless alchLambdaFreq > 0. There are now
separate checks for alchLambda and alchLambda2 when alchFepOn and
alchThermIntOn.

Change-Id: I45a04f82da9e40ffe7dedace2c0c2c23fddbd572

14 months agoUpdates to abf_integrate 39/3739/1
Jérôme Hénin [Mon, 19 Feb 2018 13:35:08 +0000 (14:35 +0100)]
Updates to abf_integrate

in particular, read gradient files from the CZAR estimator.

Change-Id: Ibdf923c33329a8049b8c5ea5794736cc4e2a1db8

14 months agoInclude PCI bus address in all CUDA error messages 16/3716/1
Jim Phillips [Tue, 13 Feb 2018 17:02:17 +0000 (11:02 -0600)]
Include PCI bus address in all CUDA error messages

When device IDs are hidden by the launch system such that every
device shows up as device 0 it is useful to report the PCI bus
address of the device in addition to the hostname and device ID.

Change-Id: I4e1516cbc67bcdb09d6d052eca595f8417cce5f2

14 months agoImprove CUDA device selection error checking 34/3634/1
Jim Phillips [Tue, 6 Feb 2018 04:43:37 +0000 (22:43 -0600)]
Improve CUDA device selection error checking

Enforce that number of devices is a multiple of number of
processes and that process does not bind same device twice.
Modify +ignoresharing to make each process bind all devices
to cope with launch systems that limit device visibility.
Add documentation, including for +devicesperreplica.

Change-Id: Icb21819bd703b3e33bafbe4a8577b20b32f6077d

14 months agoFix alchemical coupling + LJcorrection 85/3585/2
radakb [Mon, 29 Jan 2018 17:25:04 +0000 (12:25 -0500)]
Fix alchemical coupling + LJcorrection

Integrating alchemical coupling with LJcorrection introduced a
very subtle bug when alchVdwLambdaEnd = 0.0. This is because
the LJcorrection uses a linear combination of the endpoint
corrections, neither of which vanish when alchVdwLambdaEnd = 0.0
(no scaling occurs during the entire simulation). I don't know
who, if anyone is using this, and it should only be a serious
problem when
  a) doing staged VdW/elect decoupling of a ligand
  and
  b) using constant pressure (which is abysmal for performance).

The new behavior just lumps all of the atoms into a single group
when alchVdwLambdaEnd = 0.0, which is actually the same as the
old behavior before integration with alchemy.

Change-Id: I253d76478792a245c1bc8529783304efaa46e54e

14 months agoFix CUDA with multiple processes per host 74/3574/2
Jim Phillips [Fri, 26 Jan 2018 05:20:03 +0000 (23:20 -0600)]
Fix CUDA with multiple processes per host

Every process on a host was binding all of the devices on that host,
which is inefficient due to context switching and caused errors when
devices were in compute mode EXCLUSIVE_PROCESS.  Modified DeviceCUDA
to only report devices that are assigned to pes of the calling process.
Also fixed a couple of related bugs.

The ideal configuration for multi-node runs is one process per device.
There is inefficiency and potential strangeness when the number of
devices per node is not a multiple of the number of processes per node,
but it does seem to run.

Change-Id: I310164bd0541afbc2eac1c920462a03fd069e0d4

14 months agoExpanded alchemical functionality: Drude and CMAP 69/3569/2
radakb [Wed, 24 Jan 2018 16:48:01 +0000 (11:48 -0500)]
Expanded alchemical functionality: Drude and CMAP

The following are now compatible with alchemical calculations:
  o Drude Thole damping
  o Crossterms (i.e. CMAP)
  o Drude anisotropic terms

Only the first of these was actually explicitly disabled in prior
releases. Alchemical scaling of crossterms is arguably a very rare
edge case - I can only envision it being used if an entire peptide
or lipid is being annihilated, which is a very ambitious
transformation. However, that in fact was the easiest test case (a
single energy calculation), so it has been implemented.

Thole damping contributes to the electrostatic TI derivative and
FEP energy while the other two go into the bonded term.

Change-Id: I680a176337ed2d920324ec300ca27dec1bc5fddf

14 months agoRebuild dependencies 72/3572/1
Jim Phillips [Thu, 25 Jan 2018 18:33:27 +0000 (12:33 -0600)]
Rebuild dependencies

Change-Id: I1a538cb140833b1de02da4fc9b993042d9a9a402

14 months agoImprove PME performance when toggling alch/LES/PairInteraction 61/3561/6
radakb [Tue, 23 Jan 2018 20:09:13 +0000 (15:09 -0500)]
Improve PME performance when toggling alch/LES/PairInteraction

The number of PME grids is increased for methods like alchemy and
causes a slowdown of ~30%, even if the method is toggled off at
the Tcl level (as happens in hybrid neMD/MC, such as constant pH).
This commit enables the number of PME grids to change when the MD
settings permit it.

Following the ComputeNonbondedUtil class as a template, this
introduces the new ComputePmeUtil class that caches the PME grid
related variables from SimParameters and shares that information
with ComputePme and ComputePmeMgr via inheritance. Other variables
could also be stored here in order to centralize dependence on
SimParameters, but this has not been done yet and is not necessary
for any obvious performance reason.

Previous tests showed a 30-40% slowdown for constant pH and alchemy,
regardless of settings. The new code shows only 2-5% slowdown when
omitting alchemical switches, and ~25-30% for 50/50 usage.

Change-Id: I6711f452aa80ae2375ef03595f6e0ed620146674

14 months agoFix PNG for constant pH execution flowchart 68/3568/1
radakb [Wed, 24 Jan 2018 14:59:18 +0000 (09:59 -0500)]
Fix PNG for constant pH execution flowchart

Apparently GIMP is much better at converting PDFs to PNGs than
Inkscape is (at least in this case?).

Change-Id: I017c79ab37f553d076e3fe6e9ab9415608ed5b34

14 months agoUpdate arch files for Linux POWER CUDA 56/3556/2
David [Tue, 23 Jan 2018 18:53:03 +0000 (12:53 -0600)]
Update arch files for Linux POWER CUDA

Removed SM 5.0 targets from POWER CUDA arch files.
There were never any POWER platforms with Maxwell GPUs.
(Also removed extra blank line from .cuda9prof arch file.)

Change-Id: I0bc53010b6a45c654491ed931015821a2fa253c0

14 months agoRemove commented code now in DeviceCUDA.C 59/3559/1
Jim Phillips [Tue, 23 Jan 2018 19:21:37 +0000 (13:21 -0600)]
Remove commented code now in DeviceCUDA.C

Change-Id: Ia4a7fe3e4ab8647dca19dcf92bdabc9e9df448e2

14 months agoUpdate Charm++ to 6.8.2 55/3555/2
David [Tue, 23 Jan 2018 18:12:10 +0000 (12:12 -0600)]
Update Charm++ to 6.8.2

Updated NAMD configuration and notes occurrences of 6.8.1 to 6.8.2.

Found 6.8.1 occurrences by doing in the base directory:
fgrep -r -I --exclude-dir='Linux*' 6.8.1 .

Change-Id: I77ac50804edf3b3754c228998a390fbeba203947

14 months agoFix User's Guide build 48/3548/2
Jim Phillips [Tue, 23 Jan 2018 03:28:23 +0000 (21:28 -0600)]
Fix User's Guide build

Remove subcaption and chemfig packages.
Add ug_constantph.tex to Makefile dependencylist.

Change-Id: I159e3babc31dbaea8103f91040da48d098183fb9

15 months agoFix config script for CUDA builds 49/3549/1
Jim Phillips [Tue, 23 Jan 2018 03:41:02 +0000 (21:41 -0600)]
Fix config script for CUDA builds

Build Make.config in proper order for overrides.
Only include version-specific files if they exist.

Change-Id: I879f5580443ba1e71d471d0f36322fa262dfa61c

15 months agoFix/update constant pH MD user guide 39/3539/1
radakb [Fri, 19 Jan 2018 18:58:46 +0000 (13:58 -0500)]
Fix/update constant pH MD user guide

o Update references
o Fix issues with tikz images when using latex2html
o tikz and chemfig images are now made as separate tex documents
  and then converted from pdf to png

Change-Id: Ia86c806e7471f264e81b6a6cfaabba25dcab7371

15 months agoFix "alch off" in scripts failing to disable alchemy kernels 33/3533/1
Jim Phillips [Thu, 18 Jan 2018 18:52:45 +0000 (12:52 -0600)]
Fix "alch off" in scripts failing to disable alchemy kernels

This bug was reducing the performance of constant pH simulations.

Change-Id: I36398bf47a42637b89007fb203ef33f1664c85ca

15 months agoFix Windows link error 04/3504/1
Jim Phillips [Thu, 11 Jan 2018 07:07:13 +0000 (01:07 -0600)]
Fix Windows link error

Visual Studio C++ mangles forward-declared struct and class
differently, so must use "struct FullAtom" everywhere.

Change-Id: I40b2175f06c24dff104a4b22147c1d5fb951b9ef

16 months agoUpdated selection of point charges and fix bug in PME correction. 64/3464/4
melomcr [Fri, 22 Dec 2017 00:01:07 +0000 (18:01 -0600)]
Updated selection of point charges and fix bug in PME correction.

Classical point charges are selected correctly when the QM region
moves across periodic boundaries.

Fixed bug in PME correction calculation.
Improved error messages to provide more context.

Change-Id: I7a980bf0f1eab1d0e7307f1a651375bf525c74e6

16 months agoFix integer overflows for exclusion counts 56/3456/1
Jim Phillips [Wed, 20 Dec 2017 15:55:41 +0000 (09:55 -0600)]
Fix integer overflows for exclusion counts

Eliminates false "Low global exclusion count!" errors with
negative exclusion counts on two-billion-atom systems.

Change-Id: I40a697eed2f28a7bdd0e062238641c68dab84ae4

16 months agoFix PME placement bug for grids with 2^31 or more points 55/3455/1
Jim Phillips [Wed, 20 Dec 2017 15:43:30 +0000 (09:43 -0600)]
Fix PME placement bug for grids with 2^31 or more points

Integer overflow would use one pencil per dimension with message
"PME using 1 x 1 x 1 pencil grid for FFT and reciprocal sum."
rather than, e.g., 45 x 45 x 43.

Change-Id: Iba99b6bd773b57d8bb272b219ffe1b1349bd2a29

16 months agoUse streaming message to distribute ComputeMap 54/3454/1
Jim Phillips [Wed, 20 Dec 2017 15:31:28 +0000 (09:31 -0600)]
Use streaming message to distribute ComputeMap

Initial ComputeMap distribution during startup was building its
own binary tree and allocating and sending large monolithic
messages.  Using MStream simplifies the code, is faster, and
avoids message allocation errors on two-billion-atom systems.

Change-Id: I0f1032da4c093718093d97b92300df7692ee114b

16 months agoUpdate config and arch for CUDA on Linux POWER 51/3451/1
David [Tue, 19 Dec 2017 18:56:07 +0000 (12:56 -0600)]
Update config and arch for CUDA on Linux POWER

Build options for CUDA on Linux POWER have been updated.
The config file now attempts to run nvcc to determine the
CUDA version and selects between .cuda, .cuda75, and .cuda9
arch files.

Change-Id: I352fd709f30f5e006c7497e0abbf9f4bc26e6837

16 months agoFix const correctness warnings about some string literals 32/3432/1
Phil Miller [Fri, 15 Dec 2017 17:09:13 +0000 (11:09 -0600)]
Fix const correctness warnings about some string literals

Change-Id: I27a652892d65b489e8875b2f02c23472d6fdd5ea