Removing the center of mass translational velocity

GROMACS version: 5.1.4
GROMACS modification: No
Here post your question:

Dear Gromacs users,

I am trying to simulate removing the center of mass translational velocity each 10 steps, so that I set the mdp file as the following:
nstcomm = 10
comm-mode = Linear
comm-grps = System

Nevertheless, I noticed that the information present in the .log file was:
comm-mode = Linear
nstcomm = 100

Then, I make a test modifying the mdp file with nstcomm = 1000:
nstcomm = 1000
comm-mode = Linear
comm-grps = System

And then the log file respected the numer of steps:
comm-mode = Linear
nstcomm = 1000

Is there a limit of frequency for the removal of the center of mass translational velocity? Why the .log file does not respect when I ask for removing the center of mass translational velocity every 10 steps, but it does respect when I ask for removing every 1000 steps?

Thanks in advance

Hi,
nstcomm is linked to nstcalcenergy (default value 100).
gmx grompp give a note like
“nstcomm < nstcalcenergy defeats the purpose of nstcalcenergy, setting nstcomm to nstcalcenergy”.

That is what happen when you set nstcomm=10 and nstcalcenergy=100 (default value), then gmx grompp set nstcomm to nstcalcenergy

Best regards
Alessandra

Hi Alessandra,

I thank you very much for the help!

Best regards
Ana

Sorry to revive an old post but this seemed to me the most logical place to ask this question.
I was following @jalemkul 's excellent tutorials, some of the mdps (for example) of which set nstcomm to 1, but I get the grompp error you @alevilla mention. Setting nstcalcenergy to 1 definitely slows the simulation down (I’m not sure exactly by how much but simulations that ended overnight were now ending after Close Of Business on the next day, so it is a de facto 2x slowdown). Here @anapaularp mentions attempting nstcomm = 10 and @pszilard suggests one might not want to have (or should at least look out for) such a low value of nstcalcenergy. Given all that, I was wondering how one decides on a reasonable value for nstcomm? I suppose one can do it iteratively: pick a value, start the simulation watching the drift of the COM, extrapolating whether it might violate a reasonable bound for the planned duration of the simulation, and restarting at a new value, perhaps bisecting on an optimal value. But this is cumbersome and assumes one knows the duration a priori. Is there some recognized standard for this choice?

It should not be necessary to do COM motion removal more often than you do neighbor searching, for instance every 100 steps, depending on your system and setup. If you find that your system is experiencing drift, you can check to make sure that nstcomm is a factor of, or equal to, your coordinate writing frequency. Another thing you can try is separately removing COM from your solute and solvent.

1 Like

Quite often, this leads to crashes. I would not advise doing it.

1 Like