Skip to content

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

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

prckent wants to merge 16 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
prckent and others added 2 commits October 24, 2026 21:03
Keep the plane-wave tiling and Hessian tests alongside the incoming batch tests. Update the diamond batch regression values, adapt Communicate reference handling without losing the mutable ParticleSet, and retain the 7200 timeout and MPI launcher for the PW converter.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Set the global test timeout to 3600 and the PW converter timeout to 120. Retain the MPI launcher configuration unchanged.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@prckent

prckent commented Oct 26, 2026

Copy link
Copy Markdown
Contributor Author

Test this please

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