Improve energy conservation of vdwForceSwitching/LJcorrection 69/4869/4
authorradakb <brian.radak@gmail.com>
Wed, 19 Dec 2018 16:20:23 +0000 (11:20 -0500)
committerDavid Hardy <dhardy@ks.uiuc.edu>
Wed, 19 Dec 2018 21:32:46 +0000 (15:32 -0600)
commit0b54461a6adc3da0566815880be77bc445c436eb
treec6f3e1727a90728b714054f1f5ab5de851f0c694
parentd4f6a456312cdc0f04e3e2d7b42187a1f9df7c12
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
easier.

Change-Id: Ia53bc80f79e1976f2f0ca62f2f0d6988a2fe960a
src/ComputeNonbondedBase.h
src/ComputeNonbondedBase2.h
src/ComputeNonbondedFEP.C
src/ComputeNonbondedTI.C
src/ComputeNonbondedUtil.C
src/ComputeNonbondedUtil.h
src/Molecule.C