Bug in "pair/lj/charmm/coul/charmm/implicit"


I found a bug in the pair-potential "pair/lj/charmm/coul/charmm/implicit", the Coulombic forces are computed incorrectly. This happens for particle distances r_inner < r < r_outer where a factor of 1/2 is missing in part of the derivative. ( The derivative of the smoothing function ought to be multiplied by the Coulombic potential. Instead, it is multiplied by its derivative, thus giving a factor 2 which must be compensated.)

Attached is the corrected .cpp file from V. 16Aug13 and a minimum example: With the faulty version, the minimization stops with "linesearch alpha is zero" whereas the corrected version zeroes forces to the desired tolerance.

Jens Pfeifer

pair_lj_charmm_coul_charmm_implicit.cpp (6.86 KB)

ex.data (186 Bytes)

in.minimize (384 Bytes)

I just double-checked by running NVE. The old code does not conserve
energy as expected, the new code does. I just checked it in to the
repo. It will be released soon.

Thanks for spotting that.