QMCPACK / QMCPACK/qmcpack

ParticleSet position randomization

Open
#5,585 0 comments 0 reactions 0 assignees View on GitHub
cleanup enhancement
Dominant language
C++
Stars
403
Forks
154
Avg merge
1d 12h
Merged PRs (30d)
82

Description

There are several different methods in ParticleSet, InitMolecularSystem that can randomize particle positions. The input is handling for this is spread across ParticleSet, InitMolecularSystem, and ParticleSetPool. These methods need to be called by both tests and the applicatio. In the application only InitMolecularSystem is used, and in fact includes randomization of initial electron positions for solids as well. It has no mechanism to do anything but use the per openmp thread random generators, which should have no place in the application since this creates a situation where deterministic behavior is dependent on at minimum the runtime values of several environment variables and implicit but opaque threadsafety over data structures.

InitMolecularSystem lacks a real constructor and actually expects semi repackaged xml nodes as put input.

**Describe the solution you'd like**
This needs to be cleaned up. Such a fundamental element the code should not be a confusing mess it should have formal threading environments and be able to produce unambiguous repeatable results for testing.

**Describe alternatives you've considered**
Forgetting about writing integration tests that involve ParticleSet.

**Additional context**

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.