Re: [UCE]AMBER: Temperature not rising enough during simulated annealing

From: Thomas Cheatham <>
Date: Thu, 14 Sep 2006 22:33:42 -0600 (Mountain Daylight Time)

> I am trying to do a simulated annealing run on a protein polymer, and
> as a test run I ran a simple job in which I tried to heat the system to
> 700 K over the course of 1 ps. For some reason the temperature only rose
> to 450 K. Could the size of my system be the problem (2700 protein

1 ps is a rather short simulation...

> &cntrl
> ntt=1,
> /
> &wt type='TEMP0', istep1=0, istep2=1000, value1=0, value2=700,/
> &wt type='TAUTP', istep1=0, istep2=1000, value1=0.2, value2=0.2,/
> &wt type='END'/

Here you are trying to raise the temperature from 0 to 700K using
Berendsen temperature coupling with a time constant of 0.2 ps. What this
temperature coupling does is scale the velocities with a factor that is
preportional to the deviation of the instantaneous or current kinetic
energy to the desired value multiple by a time factor that controls how
strong the coupling is. This scaling has a decay, specifically the
coupling time. As the coupling time (TAUPTP) becomes progessively larger,
the effective scaling is diminished. In the limit of very large TAUTP,
essentially no scaling is done (which is ultimately desirable).

If TAUTP = DT (the time step), then the scaling has no decay and the
velocities are scaled preportionally to the deviation in temperature at
each step.

The scale factor on the velocities X, is (loosely, see the Berendsen
paper for more detail) such that

  X*X = 1 + DT/TAUTP(T_desired/T_current - 1)

Let's look at your case. Over 1000 steps, the velocity jumps from 0 to
700. So, if you map the target temperature at each step "N", the target
temperature should be N * 700/1000. You do not even set the target
temperature to 700K until step 1000 (i.e. at 1 ps). However this is not
why the temperature stays at 450K.

Your scaling factor is .2 ps or (200 fs) such that the scaling at each
step is ~ sqrt [ 1 + 0.001 / .2 * (T_desired/T_current - 1) ] or

   ~ sqrt [ 1 + 0.005 * T_desired/T_current - 0.005 ]

 = sqrt [ 0.995 + 0.005 * (T_desired/T_current) ]

If your desired temperature is 700K and current temperature is 450K,
effective scaling of the temperature at each step is only by sqrt(1.00278)
or less than 0.14%.

If you really want to ramp the temperature in 1 ps, you will likely
have to set the coupling time to be very close to DT and ramp the
temperature to 700K sooner.

Realistically, for a simple pure water system, equilibration occurs on a
~50-100 ps time scale. Nowadays it is routine to run ~1-5 ns of
equilibration of the water/ions (restraining the solute). You might be
able to get away with 500 ps (with the TAUTP you choose) but 1 ps is
definately unreasonable. Even if you did instantaneous scaling at each
step, if you continued the simulation after 1 ps without temperature
control, it is very unlikely that you would maintain 700K...


The AMBER Mail Reflector
To post, send mail to
To unsubscribe, send "unsubscribe amber" to
Received on Sun Sep 17 2006 - 06:07:17 PDT
Custom Search