Verlet-Algorithmus

Der Verlet-Algorithmus ist eine Methode zur numerischen Lösung der Newton’schen Bewegungsgleichungen. Er entsteht aus dem Leapfrog-Verfahren durch Elimination der Geschwindigkeitsberechnungen. Der Verlet-Algorithmus wird oft bei Molekulardynamik-Simulationen in der theoretischen Chemie verwendet. Der Algorithmus ist nach Loup Verlet benannt.

Herleitung

Es werden zwei Taylor-Entwicklungen dritter Ordnung der Position x ( t ) {\displaystyle {\vec {x}}(t)} aufgestellt. Dabei wird eine davon vorwärts ( t + Δ t ) {\displaystyle (t+\Delta t)} und eine rückwärts ( t Δ t ) {\displaystyle (t-\Delta t)} in der Zeit entwickelt. Hierbei ist v {\displaystyle {\vec {v}}} die Geschwindigkeit und a {\displaystyle {\vec {a}}} die Beschleunigung.

x ( t + Δ t ) = x ( t ) + v ( t ) Δ t + 1 2 a ( t ) Δ t 2 + 1 6 b Δ t 3 + O ( Δ t 4 ) {\displaystyle {\vec {x}}(t+\Delta t)={\vec {x}}(t)+{\vec {v}}(t)\Delta t+{\frac {1}{2}}{\vec {a}}(t)\Delta t^{2}+{\frac {1}{6}}{\vec {b}}\Delta t^{3}+O(\Delta t^{4})}
x ( t Δ t ) = x ( t ) v ( t ) Δ t + 1 2 a ( t ) Δ t 2 1 6 b Δ t 3 + O ( Δ t 4 ) {\displaystyle {\vec {x}}(t-\Delta t)={\vec {x}}(t)-{\vec {v}}(t)\Delta t+{\frac {1}{2}}{\vec {a}}(t)\Delta t^{2}-{\frac {1}{6}}{\vec {b}}\Delta t^{3}+O(\Delta t^{4})}

Addition der beiden Gleichungen ergibt

x ( t + Δ t ) = 2 x ( t ) x ( t Δ t ) + a ( t ) Δ t 2 + O ( Δ t 4 ) {\displaystyle {\vec {x}}(t+\Delta t)=2{\vec {x}}(t)-{\vec {x}}(t-\Delta t)+{\vec {a}}(t)\Delta t^{2}+O(\Delta t^{4})} .

Dies ist die allgemeine Gleichung des Verlet-Algorithmus. Die Beschleunigung a ( t ) {\displaystyle {\vec {a}}(t)} hängt dabei vom Potenzial V {\displaystyle V} und der Masse des Teilchens m {\displaystyle m} ab, sie kann mit

a ( t ) = 1 m V ( x ( t ) ) = F m {\displaystyle {\vec {a}}(t)=-{\frac {1}{m}}\nabla V(x(t))={\frac {\vec {F}}{m}}}

bestimmt werden.

Anwendung

Ist die Position x 0 {\displaystyle {\vec {x}}_{0}} bekannt, muss zuerst die Position x 1 {\displaystyle {\vec {x}}_{1}} über

x 1 = x 0 + v 0 Δ t + 1 2 a 0 Δ t 2 {\displaystyle {\vec {x}}_{1}={\vec {x}}_{0}+{\vec {v}}_{0}\Delta t+{\frac {1}{2}}{\vec {a}}_{0}\Delta t^{2}}

bestimmt werden. Sind dann die Positionen x 0 {\displaystyle {\vec {x}}_{0}} und x 1 {\displaystyle {\vec {x}}_{1}} bekannt, können über Iteration des Verlet-Algorithmus alle folgenden x n {\displaystyle {\vec {x}}_{n}} bestimmt werden.

x n + 1 = 2 x n x n 1 + a n Δ t 2 {\displaystyle {\vec {x}}_{n+1}=2{\vec {x}}_{n}-{\vec {x}}_{n-1}+{\vec {a}}_{n}\Delta t^{2}}

Der Verlet-Algorithmus liefert nur Positionen und keine Geschwindigkeiten. Diese müssen deshalb extra bestimmt werden, um daraus E k i n {\displaystyle E_{kin}} und damit die Gesamtenergie zu berechnen. Dies ist notwendig, um die Energieerhaltung zu überprüfen.

Weblinks

  • Alexander Fulst, Christian Schwermann: Molekulardynamiksimulation. S. 7–10.
  • Thomas Jacobsen: Advanced Character Physics. In: Gamasutra. (englisch)