Preliminary implementation of colinear lonepairs 22/4522/4
authorradakb <brian.radak@gmail.com>
Fri, 24 Aug 2018 18:20:09 +0000 (14:20 -0400)
committerDavid Hardy <dhardy@ks.uiuc.edu>
Fri, 31 Aug 2018 17:41:43 +0000 (12:41 -0500)
commit846dbb0e27253d4b0e16c4c5c5616734c3d66dc9
treed2cd05abdff650de4dbf11fd791cf61a65bfb944
parentcffde1d70bcbfe87d18aff6847558d9281d6f206
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
src/HomePatch.C
src/HomePatch.h
src/Molecule.C
src/Molecule.h
src/structures.h