WIP: Supercell tiling and Hessian support for plane-wave orbitals - #6177
Draft
prckent wants to merge 10 commits into
Draft
WIP: Supercell tiling and Hessian support for plane-wave orbitals#6177prckent wants to merge 10 commits into
prckent wants to merge 10 commits into
Conversation
prckent
marked this pull request as draft
August 29, 2026 15:37
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Proposed changes
Note: This draft PR will need further refinement e.g. adjusting the added short tests for speed, updated nomenclature, further checks. Documentation also needs to be added. Comments welcome at any time. Current to do list below.
Add tiling support for plane-wave wave functions. Expand the capabilities to reproduce the common spline input parameters. e.g. Diamond C 2x1x1, bcc H 2x2x2, and bccH 3x3x3 work with this addition using the same check values as for the existing spline tests.
Hessian support is added enabling plane-wave backflow to run and possibly even optimize. Correctness of that optimization is a backflow topic and is not addressed here.
Flux estimator is removed from some existing spline short tests since it was unchecked due to poor statistics. Removing it speeds the tests.
This is a new niche capability aimed mainly at providing a missing cross-check on the spline implementation. We currently only have plane-wave checks in primitive cells/without tiling. The implementation could be significantly sped up with some careful BLAS and blocking, but unless we receive feedback on their potential utility, I do not suggest we spend time since splines will always be faster. Splines require a fixed number of a basis evaluations independent of system size and mesh spacing (64) while plane waves scale with system size and plane-wave cutoff.
Interestingly, this spo-set type has no documentation at all https://qmcpack.readthedocs.io/en/develop/intro_wavefunction.html#plane-wave-basis-sets .
Tiling implementation and band filling added by GitHub Copilot and GPT 5.6 Sol. Stochastic tests curated by hand.
To do:
What type(s) of changes does this code introduce?
Does this introduce a breaking change?
What systems has this change been tested on?
ubuntu 24, gcc13, openmpi.
Checklist