lumol-org / lumol

Universal extensible molecular simulation engine
http://lumol.org/
BSD 3-Clause "New" or "Revised" License
184 stars 18 forks source link

Use the molecular definition of virial for rigid molecules #253

Closed Luthaf closed 5 years ago

Luthaf commented 5 years ago

Fix #79 Fix #103

Adds tests for #58

So this should be the end of the story \o/. Basically, for the pressure to converge to the target pressure in NPT MC simulations of rigid molecules, one needs to use the molecular definition of the virial.

The problem is that constraining the molecules to be rigid is equivalent to having some extra forces acting on the atoms, and these forces can not be computed in the generic case. These forces do not appear in the molecular definition of the virial.

A problem occurs in lumol because we have both code for MD (where the atomic definition of the virial makes more sense) and MC with rigid molecules (where the molecular definition makes sense). To work around this, I dynamically select which virial definition to use based on the number of simulated degrees of freedom, introduced in #225.