Skip to content

WIP: Supercell tiling and Hessian support for plane-wave orbitals - #6177

Draft
prckent wants to merge 10 commits into
QMCPACK:developfrom
prckent:pwsupercell
Draft

WIP: Supercell tiling and Hessian support for plane-wave orbitals#6177
prckent wants to merge 10 commits into
QMCPACK:developfrom
prckent:pwsupercell

Conversation

@prckent

@prckent prckent commented Aug 29, 2026

Copy link
Copy Markdown
Contributor

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:

  • Reduce runtime and/or number of short pw stochastic tests
  • Update nomenclature (function & variable names) to be closer to spline code
  • Documentation

What type(s) of changes does this code introduce?

  • New feature
  • Testing changes (e.g. new unit/integration/performance tests)

Does this introduce a breaking change?

  • No

What systems has this change been tested on?

ubuntu 24, gcc13, openmpi.

Checklist

    • I have read the pull request guidance and develop docs
    • This PR is up to date with the current state of 'develop'
    • Code added or changed in the PR has been clang-formatted
    • This PR adds tests to cover any new code, or to catch a bug that is being fixed
    • Documentation has been added (if appropriate)

@prckent
prckent marked this pull request as draft August 29, 2026 15:37
@prckent prckent changed the title WIP: Supercell tiling support for plane-wave basis WIP: Supercell tiling and Hessian support for plane-wave orbitals Aug 29, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant