Care is taken to remain stable even with high damping.
1. Update velocity:
\[
\begin{align*}
\mathbf{v}_{\text{proposed}\ i} &=& e^{- \Delta t \gamma} & \ \mathbf{v}_{i-1} & & \text{Damp previous velocity}\\
& & +\sqrt{T(1-e^{-2 \Delta t \gamma})} & \ \mathcal{N}(0,I) & & \text{Replace noise lost to damping}\\
& & -\Delta t & \ \nabla U(\mathbf{x}_{i-1}) & & \text{Accelerate downhill}
\end{align*}
\]
2. Update position:
\[
\mathbf{x}_{\text{proposed}\ i} = \mathbf{x}_{i-1} + \Delta t \ \mathbf{v}_{\text{proposed}\ i}
\]
3. Fix position:
\[
\mathbf{x}_i = \text{project}( \mathbf{x}_{\text{proposed}\ i} )
\]
\(\ \ \ \text{project}\) SVD-decomposes projection matrix into \(\mathbf{USV}^\top\), returns \(\mathbf{UV}^\top\).
4. Fix velocity:
\[
\mathbf{v}_i = \frac{\mathbf{x}_i - \mathbf{x}_{i-1}}{\Delta t}
\]