Skip to content

feat: add restricted rVV10 plane-wave support - #8031

Draft
CleverPhysician wants to merge 7 commits into
deepmodeling:developfrom
CleverPhysician:feature/rvv10-pw-restricted
Draft

CleverPhysician wants to merge 7 commits into
deepmodeling:developfrom
CleverPhysician:feature/rvv10-pw-restricted

Conversation

@CleverPhysician

@CleverPhysician CleverPhysician commented Sep 26, 2026 •

Copy link
Copy Markdown

Linked Issue

  • No linked issue; this Draft PR is submitted for maintainer scope and architecture review.

What's changed?

This PR adds an ABACUS-native rVV10 nonlocal-correlation component for the CPU/double/full-complex plane-wave Kohn–Sham SCF path.

  • dft_functional selects the semilocal XC term; xc_nonlocal=rvv10 registers an independent additive PotRvv10 component.
  • rvv10_b and rvv10_c are validated input parameters and are passed explicitly through setup_estate_pw -> Potential -> PotRvv10.
  • The default b=6.3, C=0.0093 reproduces the initial RPW86+PBE parameterization.
  • Existing ABACUS PW_Basis FFTs, XC_Functional::grad_rho/grad_dot, charge layouts and pool reductions are reused; QE is used only as a numerical reference.
  • MPI pool-distributed PW transforms and collinear nspin=1/2 are supported. For nspin=2, rVV10 uses the total valence-plus-core density and adds the same scalar nonlocal potential to both spin channels.
  • Functionals that already contain vdW/VV10 terms are rejected to prevent double counting.

Scope

Supported in this Draft: CPU, double precision, full-complex PW, norm-conserving pseudopotentials, SCF, serial or MPI pool distribution, and nspin=1/2.

Explicitly deferred: GPU, LCAO, USPP/PAW, gamma-only/reduced-gamma layouts, noncollinear nspin=4, forces, stress, relaxation/MD, and simultaneous pairwise D2/D3/D4 corrections. A pre-generated universal kernel table and additional functional-specific parameter sets are follow-up work; the current fixed table is generated once per rVV10 component and validated against the pinned numerical convention.

Unit Tests and/or Case Tests for my changes

Local checks completed after rebasing onto origin/develop 1202e6f:

  • python3 -m unittest discover -s tests/rvv10 -p 'test_*.py' — 16/16 passed.
  • Python syntax checks passed.
  • clang++ -std=c++11 -fsyntax-only passed for the modified input parser and rVV10 core evaluator.
  • git diff --check passed.
  • agent_governance_check.py --base origin/develop --head HEAD reports no errors; only allowed header-dependency review warnings remain.
  • Regression driver includes serial/MPI nspin=1/2 SCF modes, invalid-parameter checks, PBE+rVV10 parser acceptance, vdW/VV10 double-counting rejection, and no-Libxc refusal.

Hosted C++/SCF CI is still required for the full FFT/Libxc/MPI build. This PR remains Draft until the hosted CI and QE/ABACUS energy, potential, spin and MPI comparisons are reviewed by the maintainer.

@Growl1234

Growl1234 commented Sep 26, 2026 •

Copy link
Copy Markdown

From the first glance I am 👎 at how it's handled:

  • dft_functional RVV10 looks like the wrong abstraction. rVV10 is a nonlocal correlation component, so coupling it directly to rPW86+PBE makes SCAN+rVVV10, r2SCAN+rVV10, etc. unnecessarily awkward. The semilocal XC and nonlocal correlation should be represented independently.
  • I also don't see much value in merging such a narrowly restricted intermediate implementation. At least MPI and ordinary spin support look like natural parts of the initial feature.
  • Not really blocking but worth consideration: Run-time kernel generation also seems unnecessary for a fixed, universal kernel. Pre-generating and storing the kernel data would avoid repeated start-up work (faster) and keep the production path simpler.

@CleverPhysician
CleverPhysician force-pushed the feature/rvv10-pw-restricted branch 2 times, most recently from 2fe137c to eda7816 Compare September 26, 2026 13:23
@CleverPhysician
CleverPhysician force-pushed the feature/rvv10-pw-restricted branch from eda7816 to 00792ab Compare September 26, 2026 14:25
@mohanchen mohanchen added the Features Needed The features are indeed needed, and developers should have sophisticated knowledge label Sep 30, 2026

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Features Needed The features are indeed needed, and developers should have sophisticated knowledge

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants