Update to lonepair and Drude particle bond behavior 55/5155/6
authorradakb <brian.radak@gmail.com>
Wed, 1 May 2019 20:09:06 +0000 (16:09 -0400)
committerDavid Hardy <dhardy@ks.uiuc.edu>
Thu, 30 May 2019 21:09:29 +0000 (16:09 -0500)
commitf300bda91efcef80ee5d0f1ca86ac4f93e910365
treeb0c9c903c4bdce41976c24e5f3f50e36f9659cea
parent40b8299f986986cd93ae591e3f90d21aade99ed3
Update to lonepair and Drude particle bond behavior

The CHARMM RTF/PSF standard for lonepairs no longer includes explicit bonds in
the BOND section. This would break NAMD, which needs explicit bond connectivity
to build inherited exclusions (and migration groups?). The development version
of Psfgen that builds equivalent PSFs also only writes Drude bonds as an option.

This update yields the following behavior:

1) When reading a PSF, Ignore all explicit BOND declarations that include
  lonepairs or Drude particles (flagged by a mass heuristic). This is a little
  dicey, but not actually that bad because NAMD then checks lonepair
  assignments against the lphost entries and Drude particles against non-zero
  polarizability -- a mismatch causes the program to stop.

2) If no wildecard DRUD-X bond is defined in the parameter files then, if
  CHARMM format Drude is on, a default bond is allocated (force constant of 500
  -- a global constant in Psfgen and all extant Drude RTFs).

3) Lonepair bonds are not "real" and now get assigned dummy parameters. This
  happens regardless of any definitions in the prm file (which usually don't
  exist and thus we never check for them).

4) After reading the lphost section, allocate new bonds between lonepairs and
  their primary host with dummy parameters. This fixes the missing connectivity
  problem used to build exclusions.

5) After reading a PSF, allocate new bonds between Drude particles and their
  preceding atom (which is already required to be their parent).

This has been extensively tested against Drude/lonepair containing systems
built with explicit bonds -- the old code and new code (w/o explicit bonds)
yield identical energies.

Possible issues/TODO:

1) Verify that MEMOPT builds are not effected.

Change-Id: I83467807a8cb71cb87fcd32c6a0ba3d09876f7e6
src/Molecule.C
src/Molecule.h
src/Parameters.C
src/Parameters.h