Use the molecular definition of virial for rigid molecules #253
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
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.