# Re: Question regarding NAMD nonbonded routines

From: Vincent Kraeutler (vincent_at_kraeutler.net)
Date: Thu Jul 26 2007 - 12:27:29 CDT

First of all, thanks to you and Floris for your very instructive answers.

I hope you don't mind if I have a few more questions ;-)

a) Peter Freddolino wrote:

[snip]
> Please have a look at
> http://www.ks.uiuc.edu/Research/namd/2.6/ug/node24.html, which describes
> the types of switching that can be used to avoid straight truncation
> (which is a *very* bad idea). The electrostatic and vdw cutoffs are the
> same *unless* you define eleccutoff and vdwcutoff. In practice these are
> usually identical. The same pairlist is used either way.
>
>

Neither the user's guide nor the NAMD paper seem to precisely describe
the form of the switching function used, but the guide notes that "The
switching function used is based on the X-PLOR switching function."

Googling for X-PLOR and NAMD turns up [1], which mentions that the "C2
switching function implemented in NAMD and described in " [2], which is

S(r) =
case (r < r_s): 1
case (r >= r_c): 0
otherwise: 1 + R^2 * (2R - 3)

where R = (r - r_s) / (r_c - r_s), where r_c is the cutoff distance and
r_s is the shift distance. Inspecting the code (ComputeNonbondedUtil.C)
suggests that this is correct, but I might easily be missing something
and would like to confirm this.

b) I think I now understand (thanks to the paper and your answers) how
"patches" and "compute objects" interact. It looks like a very nice
system, though I have to admit I would not have figured it out from the
code ;-) There seems to be a third important component in that game,
which I don't quite understand yet (and for which I would greatly
appreciate a quick explanation): the "reduction manager" (
http://www.ks.uiuc.edu/Research/namd/doxygen/classReductionMgr.html ). I
have a hunch it's responsible for collecting the results of individual
compute objects. Can you confirm this?

c) I don't think I quite understand the pairlist construction algorithm
yet. I can see that the partitioning of the system into patches gets it
down to O(N)-scaling, but some comments in the code ("// add remaining
atoms to pairlist via hydrogen groups") suggest I might missing some of
the details. Do I understand it correctly that (i) the pairlist of
particles in a given patch are constructed based on particles in the
same patch as well as particles in the neighboring patches; (ii)
interatomic (rather than inter-group) distances are used in the pairlist
construction; (iii) the above comment refers to the assignment of
hydrogens to patches based on the atoms they are bound to?

Thank you very much!

Kind regards,
v.

[1] @ARTICLE{Izaguirre1999,
author = {J.A. Izaguirre and S. Reich and R.D. Skeel},
title = {{Longer time steps for molecular dynamics}},
journal = {J. Chem. Phys.},
year = {1999},
volume = {110},
pages = {9853},
}

[2] @ARTICLE{Humphreys1994,
author = {D. D. Humphreys and R. A. Friesner and B. J. Berne},
title = {{A Multiple-Time-Step Molecular Dynamics Algorithm for
Macromolecules}},
journal = {J. Phys. Chem.},
year = {1994},
volume = {98},
pages = {6885-6892},
}

This archive was generated by hypermail 2.1.6 : Wed Feb 29 2012 - 15:45:00 CST