2010-08-30 19:21
Submitted by:
John Chodera (jchodera)
Assigned to:
Nobody (None)
Allow user to specify velocity randomization groups for AndersenThermostat

Detailed description
A more realistic model of stochastic thermostatting in explicit solvent simulations is achieved by allowing only solvent particles to have their velocities randomized while running a simulation with AndersenThermostat. This technique is used, for example, by Peter Bolhuis in his transition interface sampling simulations of protein folding (e.g. [1]). Peter had to hack this support into gromacs, but we can allow it in OpenMM with a simple extension of the OpenMM API for AndersenThermostat.

I propose to add a method to AndersenThermostat:


where groups is a vector<vector<int>>, a list of groups of atom indices. Each atom index should appear at most in one group. Atoms in a group would all have their velocities randomized together, with the probability of the group being selected for randomization on any given timestep being (collisionFreq * timestep / natoms_in_group). Atoms not appearing in any group would never have their atomic velocities randomized by this AndersenThermostat.


[1] J. Juraszek and P. G. Bolhuis, Proc. Nat. Acad. Sci. USA 103, 15859 (2006).

Add A Comment: Notepad

Message  ↓
Date: 2010-08-30 20:55
Sender: John Chodera

This sounds reasonable, and more convenient for the user in this use case. I can think of other cases where one might want to specify supersets of constraint groups to be randomized simultaneously (e.g. "massive collisions", where the whole system undergoes simultaneous collisions) but these are much less likely to be important cases.

Alternatively, you could raise an exception if there are "dangling constraints groups" where the user has specified a group that includes some, but not all, atoms in a constraint group, but I agree your suggestion sounds much simpler!

Date: 2010-08-30 20:41
Sender: Peter Eastman

What about simply allowing the user to specify which atoms the thermostat is applied to, but not what the groups are? The system you propose makes it very easy for a user to make a mistake (by putting atoms in different groups, even though they're connected by constraints), leading to very subtly incorrect results.

No Changes Have Been Made to This Item