Re: Error in NAMD Controller Class Reference- Adaptive Tempering

From: Jeff Comer (
Date: Fri Sep 11 2015 - 08:10:02 CDT

Dear Sachin Natesh,

I'm not that familiar with adaptive tempering, but I noticed that this
equation bears similarity with integrators for overdamped Brownian
dynamics. What you have pointed out is not actually an error, but the
correct discretization of the Gaussian noise.

First, a quick dimensional analysis. Notice that the Gaussian noise
has the correlation function <ζ(t')ζ(t)> = δ(t-t'), which is stated in
the paper you cite
( The delta
function has units of the inverse of its argument since ∫ dt δ(t) = 1.
So the noise, ζ(t), has units of 1/sqrt(t). Thus, ζ(t) Δt must have
units of sqrt(t).

You might want to do a search on the "Wiener process", which will give
you more insight about what is going on. Basically, we are integrating
the Gaussian noise ζ(t) over a finite time Δt. The integral of a
zero-mean unit-variance Gaussian noise is the Wiener process, which is
basically Brownian dynamics with a diffusion constant=1 (which obeys
the diffusion equation with D=1 if you average over many instances).
Integrating ζ(t) from 0 to Δt gives a Gaussian probability density
p(x)=1/(4πΔt) exp(–x^2/(4Δt)). (See ) If you compare this to the
standard normal distribution, you see that the standard deviation is
sqrt(2Δt). So to discretize Eq. 1 of the reference you cited, you need
a Gaussian random number with a standard deviation of sqrt(2Δt).

random->gaussian()*sqrt(2.*adaptTempDt) is just that.


Jeffrey Comer, PhD
Assistant Professor
Institute of Computational Comparative Medicine
Nanotechnology Innovation Center of Kansas State
Kansas State University
Office: P-213 Mosier Hall
Phone: 785-532-6311

On Thu, Sep 10, 2015 at 7:13 PM, Sachin Natesh <> wrote:
> Hello all,
> In the NAMD controller class reference, which can be found here, I notice a
> possible error in the computation of the adaptive tempering temperature
> update (lines 1875-1878; see below)
> 01875 //dT is new temperature
> 01876 BigReal dT =
> ((potentialEnergy-potEnergyAverage)/BOLTZMANN+adaptTempT)*adaptTempDt;
> 01877 dT += random->gaussian()*sqrt(2.*adaptTempDt)*adaptTempT;
> 01878 dT += adaptTempT;
> On line 1877, the stochastic portion of the temperature update is added to
> what has been computed for the new temperature thus far, though the
> integration time-step, adaptTempDt, is placed within the sqrt function. This
> seems particularly erroneous to me as equation 1 of the paper upon which the
> NAMD implementation is based (here) calls for the integration time-step to
> fall outside of the radical, which can be realized through simple cross
> multiplication of the dt differential.
> Does the NAMD implementation of the adaptive tempering algorithm actually
> contain this error, is it the online documentation that is flawed, or am I
> missing something?
> Any information in this regard would be much appreciated.
> Best,
> Sachin Natesh

This archive was generated by hypermail 2.1.6 : Tue Dec 27 2016 - 23:21:18 CST