QMCPACK / QMCPACK/qmcpack

Goals for overhaul of all aspects of XML input system

Open
#407 44 comments 0 reactions 6 assignees Claimed by @ye-luo View on GitHub
enhancement input stale
Dominant language
C++
Stars
403
Forks
154
Avg merge
1d 12h
Merged PRs (30d)
82

Description

This issue serves to gather requirements and suggestions for revisions to the input system, and also to gather known problems with the existing system. I envisage revising the situation around v4.0.0, i.e. not immediately, but within a year.

Please add comments.

The current system of input settings and overall XML handling is showing strains. From the user perspective, we lack validation, silently ignore typos/errors, lack sufficient defaults, and don't have a way to show all the settings that are set or used by a given input. Many input files specify properties that should be defaults or that we even don't read, e.g. "version" information, although on occasion the version settings are actually important. The inputs are therefore much more cluttered than necessary. As new functionality is added or older/less used functionality is reactivated, this is an increasing problem.

From the computational side, the current implementation lacks separation of responsibilities between object instantiation and input handling making construction of unit tests difficult. There are also no clear docs explaining this aspect of the code or the expected standards, which anyone seeking to add an observable would need to know. We also know the current implementation of XML parsing leaks memory.

Related issues, most of which need to be triaged ahead of a bigger overhaul include:

Relocate command line flags: #146
Input setting validation: #228
Input robustness in Jastrow specification: #282
New capabilities (twist averaging in one input): #147
Defaults: #19 (and really defaults for nearly all settings in the simulation)
Verbosity setting: #404

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.