4 ms·
What are the tiny details?!
by mrspeaker 8y ago
What are the tiny details?!
- aroman_ro 8y agoThe biggest is that in real molecular dynamics simulation you need the position and velocity at the same time. If you want to calculate the total energy, for example, you need both positions and velocity at one time moment. It's not a big deal for a simple project to simply average the 'before' and 'after' velocities... but again, those are tiny details. There is the initial state issue, again, a tiny detail. You may find more...
- jules 8y agoWith leapfrog you can use x + v dt/2 for the positions to calculate the energy. Or use this update rule: x += v*dt/2 v += a(x)*dt x += v*dt/2 This gives you the x,v at the same time, yet still doesn't require storing the accelerations. The acceleration calculation can imperatively update v :) In fact, if you call that update leapfrog(dt), then you can get a fourth order symplectic method like so: leapfrog(c1*dt) leapfrog(c2*dt) leapfrog(c1*dt) Where c1,c2 are particular coefficients which you have to ask Yoshida.
- aroman_ro 8y agoAs I said, tiny details :)
- jules 8y agoIn Leapfrog we iterate v <- v + a(x)dt x <- x + vdt With Euler initialisation this is equivalent to: v <- v + a(x)dt/2 x <- x + vdt v <- v + a(x)dt/2 (consider a sequence of steps: we'll have two v <- v + a(x)dt/2 updates next to each other, which gives v <- v + a(x)dt) This is exactly the same as velocity verlet, if you substitute the value for v computed in the first update into the next two equations: x <- x + (v + a(x)dt/2)dt v <- (v + a(x_prev)dt/2) + a(x)dt/2