Share 
Follow 
AboutDownloadsDocumentsForumsWikiIssuesNews
Date:
2009-06-24 17:57
Priority:
3
State:
Open
Submitted by:
John Chodera (jchodera)
Assigned to:
Nobody (None)
Summary:
Implement a velocity Verlet integrator

Detailed description
The velocity Verlet integrator is by far the easiest to work with in allowing correct implementation of algorithms like simulated tempering, replica-exchange, or any other enhanced sampling algorithm that requires manipulation or redrawing of velocities. With leapfrog Verlet, we need to do a half-kick back in time to synchronize positions and velocities, make our modification, do a half-kick forward, and then re-SHAKE in order to obtain a correct starting point for further integration. This is very difficult to do correctly, so using velocity Verlet would fit better with OpenMM's "easy to use correctly" philosophy.

Add A Comment: Notepad

Message  ↓
Date: 2010-06-23 03:30
Sender: Joshua Adelman

It also may be worth investigating a verlet-like version of the Langevin integrator as well. See:
E.Vanden-Eijnden and G.Ciccotti, “Second order integrators for Langevin equations with holonomic constraints,” Chem. Phys. Lett. 429, 310–316 (2006).

Date: 2010-01-29 03:35
Sender: John Chodera

This is just a note to say that this planned feature has been added to the OpenMM roadmap as a "farther-term" feature:

http://wiki.simtk.org/openmm/RoadmapTimeline

Per our discussion with Michael Shirts, it's likely that a "leapfrogized velocity Verlet" (from MRS):

1. evaluate force (positions are at t)
2. half kick velocity (from t-dt/2 to t)
3. constrain velocities to position at t.
-Insert temperature and pressure control here-
4. full kick position (from t to t+dt)
5. half kick velocities (from t to t+dt/2)
6. Constrain positions at t+dt, use the lagrange multipliers to constrain the velocities at t+dt/2

Where:

Step 2: v(t) = v(t-dt/2) + dt/2 a(t)
Step 4: x(t+dt) = x(t) + dt/2 v(t) + dt^2/2 a(t)
Step 5: v(t+dt/2) = v(t) + dt/2 a(t)

Now, one can actually reverse steps 4 and 5, and do:

Step 4: v(t+dt/2) = v(t) + dt/2 a(t)
Step 5: x(t+dt) = x(t) + dt/2 v(t+dt/2)

This looks a lot more like leapfrog; the only difference is the insertion of a constraint step between the velocity increments; in the case of pressure or temperature control, then the control steps are performed at this place as well.

Date: 2009-07-06 22:46
Sender: Siddharth Srinivasan

+1. I hope at least the documentation has been updated to correctly state the leapfrog is being used, and not Velocity Verlet.

No Changes Have Been Made to This Item

Feedback