-
Notifications
You must be signed in to change notification settings - Fork 188
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Monte Carlo displacement move is broken #4587
Comments
Hi Jean-Noel The function implements a multi-particle MC move. It moves 1...N distinct particles (by design) where N is defined by the calling function. Good that you catched point 4. In point 5: in an N particle move all N particles are moved and the energy prior to the move and after the move of N particles is computed. It is not N single particle moves in a row. In low density systems a N-particle move can be computationally cheaper than N times a 1 particle moves because the energy is less frequently computed. In high density systems the acceptance rate drops the more particles are moved in one single MC move. |
Thanks for your remarks. Regarding point 5, the way I understand it,
The PR implements such an early stopping mechanism, since it's a low-hanging fruit and most of code around it had to be modified anyway.
This is now documented. |
Description of changes: - track particles with default-constructed type 0 (fixes espressomd#4588) - restore the original particle velocity when a Monte Carlo displacement move is rejected (fixes espressomd#4587)
There are several issues with method
RE.displacement_mc_move_for_particles_of_type()
:particle_number_to_be_changed=N
when the system contains less thanN
particles of the chosen typeN
particles, if movej
is rejected, the remainingN - j - 1
moves are still attempted, even though allN
moves will necessarily be reverted at the end; this leaves N particles in their original positions but with different velocitiesThe text was updated successfully, but these errors were encountered: