Skip to content

Add PPCG diagonalization method with Polak-Ribiere conjugate gradient#7434

Open
DAVID68666 wants to merge 2 commits into
deepmodeling:developfrom
DAVID68666:feature/ppcg-diago
Open

Add PPCG diagonalization method with Polak-Ribiere conjugate gradient#7434
DAVID68666 wants to merge 2 commits into
deepmodeling:developfrom
DAVID68666:feature/ppcg-diago

Conversation

@DAVID68666
Copy link
Copy Markdown

@DAVID68666 DAVID68666 commented Jun 5, 2026

Summary

Add PPCG (Projected Preconditioned Conjugate Gradient) diagonalization method to hsolver module.

Changes

  • diago_ppcg.h — PPCG class declaration with Polak-Ribiere beta mixing
  • diago_ppcg.cpp — PPCG implementation: preconditioned conjugate gradient with explicit projection, Cholesky orthonormalization, and line minimization
  • source_hsolver/CMakeLists.txt — Register diago_ppcg.cpp in build

PPCG vs BPCG

Aspect BPCG PPCG
Beta formula Fletcher-Reeves Polak-Ribiere (projection-corrected)
Extra state beta z_old, beta_denom per band
Projection Implicit Explicit per iteration

Test plan

  • PPCG compiles on CPU and GPU
  • Eigenvalue convergence matches LAPACK reference
  • CI pipeline passes

@DAVID68666 DAVID68666 force-pushed the feature/ppcg-diago branch from df29942 to cabbb9a Compare June 5, 2026 12:26
Comment thread source/source_pw/module_stodft/sto_wf.cpp
@DAVID68666
Copy link
Copy Markdown
Author

DAVID68666 commented Jun 5, 2026 via email

Add Projected Preconditioned Conjugate Gradient (PPCG) method using
Polak-Ribiere beta formula for conjugate direction mixing, with
explicit projection to maintain orthogonality against eigenvectors.
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.

3 participants