Skip to content

feat(xc): add SCANL meta-GGA functional with FD Laplacian kernel#7533

Open
dyzheng wants to merge 1 commit into
deepmodeling:developfrom
dyzheng:feat/scanl-laplacian-support
Open

feat(xc): add SCANL meta-GGA functional with FD Laplacian kernel#7533
dyzheng wants to merge 1 commit into
deepmodeling:developfrom
dyzheng:feat/scanl-laplacian-support

Conversation

@dyzheng

@dyzheng dyzheng commented Jun 28, 2026

Copy link
Copy Markdown
Collaborator

Implement Laplacian-dependent XC functional support enabling the SCANL (SCAN + Laplacian) meta-GGA functional. Key changes:

  • Register SCANL functional name with runtime user warning
  • Add laplacian_rho() for single-FFT spectral Laplacian computation
  • Pass correct lapl_rho to tau_xc/tau_xc_spin (was wrongly using grho)
  • Add vlapl output from tau_xc/tau_xc_spin
  • Implement FD Laplacian kernel for vlapl potential to avoid |G|^2 amplification that causes SCF divergence (following dyzheng PR Fix(module_xc): compute real density laplacian for meta-GGA functionals #7286)
  • Add vlapl stress contribution via density Hessian in G-space
  • Guard vlapl processing when functional doesn't depend on Laplacian
  • Fix SCAN unit test (pass lapl_rho=0.0, vlapl=0.0)
  • Update test CMakeLists with required source files and link libraries

Si2 FCC stress FD validation: SCANL 1.1% error, SCAN 0.0% error. Metallic Al error is pre-existing k-point convergence issue.

Reminder

  • Have you linked an issue with this pull request?
  • Have you added adequate unit tests and/or case tests for your pull request?
  • Have you noticed possible changes of behavior below or in the linked issue?
  • Have you explained the changes of codes in core modules of ESolver, HSolver, ElecState, Hamilt, Operator or Psi? (ignore if not applicable)

Linked Issue

Fix #...

Unit Tests and/or Case Tests for my changes

  • A unit test is added for each new feature or bug fix.

What's changed?

  • Example: My changes might affect the performance of the application under certain conditions, and I have tested the impact on various scenarios...

Any changes of core modules? (ignore if not applicable)

  • Example: I have added a new virtual function in the esolver base class in order to ...

Implement Laplacian-dependent XC functional support enabling the SCANL
(SCAN + Laplacian) meta-GGA functional. Key changes:

- Register SCANL functional name with runtime user warning
- Add laplacian_rho() for single-FFT spectral Laplacian computation
- Pass correct lapl_rho to tau_xc/tau_xc_spin (was wrongly using grho)
- Add vlapl output from tau_xc/tau_xc_spin
- Implement FD Laplacian kernel for vlapl potential to avoid |G|^2
  amplification that causes SCF divergence (following dyzheng PR deepmodeling#7286)
- Add vlapl stress contribution via density Hessian in G-space
- Guard vlapl processing when functional doesn't depend on Laplacian
- Fix SCAN unit test (pass lapl_rho=0.0, vlapl=0.0)
- Update test CMakeLists with required source files and link libraries

Si2 FCC stress FD validation: SCANL 1.1% error, SCAN 0.0% error.
Metallic Al error is pre-existing k-point convergence issue.
@dyzheng

dyzheng commented Jun 28, 2026

Copy link
Copy Markdown
Collaborator Author

The remain issue of this PR:
image

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant