Conservation of momentum in SD integrator

GROMACS version: 2022.4
GROMACS modification: No
Based on my understanding of article [1] Parrinello integrator does not natively conserve local or global momentum, while DPD does. Manual claims that DPD is not implemented but the sd does conserve global momentum (translational degree of freedom) “For simulating a system in vacuum there is the additional advantage that there is no accumulation of errors for the overall translational and rotational degrees of freedom.”

  1. Does gromacs name its integrator sd specifically because it is changed from Parrinello such that the momentum is conserved ?
  2. Can momentum be conserved after equilibration with thermo and/or pressure coupling at all, or if I am missing something?
  3. I am new to c++ so I don’t see in the file /gromacs/src/gromacs/mdlib/update.cpp the implementation of the relative velocity scaling, that in my understanding would restore conservation of momentum, can someone point to a line where it (do_update_sd ???) is used with friction and with noise and getting passed relative velocity, and all else constant when it’s called only for particle i, or how can I tell at all when it gets passed i values or values of i relative to j.

Thank you,
Max.

Citations:
[1] Goga, N., Rzepiela, A. J., De Vries, A. H., Marrink, S. J., & Berendsen, H. J. C. (2012). Efficient algorithms for Langevin and DPD dynamics. Journal of chemical theory and computation, 8(10), 3637-3649.

Parrinello Rahman does conserve global momentum, up to a minor scaling. SD does not conserve (global) momentum.

Thank you for your response, and in the sections of my data where I need to perform NPT simulations, I’ll use Parrinello Rahman. Is it correct that the only NVT option for preserving momentum and fixing flying ice cube effect is to use Nose-Hoover thermostat with md integrator ?

No, v-rescale also preserves momentum and avoids the flying ice cube effect. In GROMACS the only thermostat that has issues is the Berendsen thermostat and you can not use that unless you override the warning produced by grompp.

Thank you very much, I’ll give v-rescale a thought.