Skip to content

Conversation

@aamrindersingh
Copy link

Adds support for computing overlap integrals of arbitrarily many Gaussian basis functions.

The main addition is n_center_overlap_integral(basis, n, ...) which generalizes the existing 2-center overlap to arbitrary N. It uses Obara-Saika recursion with memoization for the angular momentum build-up, and includes screening based on the K factor from the Gaussian product theorem.

Usage:

from gbasis.integrals.overlap_n_center import n_center_overlap_integral

S3 = n_center_overlap_integral(basis, n=3)
S4 = n_center_overlap_integral(basis, n=4, tol_screen=1e-10)

I've added a regression test to ensure that the N=2 case matches the existing overlap_integral() exactly. All 11 new tests pass and existing tests are unaffected.

The implementation follows the patterns in overlap.py and should serve as the foundation for intracule/extracule functionality mentioned in the issue.

Checklist

  • Write a good description of what the PR does.
  • Add tests for each unit of code added (e.g. function, class)
  • Update documentation
  • Squash commits that can be grouped together
  • Rebase onto master

Type of Changes

Type
🐛 Bug fix
✨ New feature
🔨 Refactoring
📜 Docs

Related

Closes #220

- Add is_n_center_overlap_screened() to screening.py
- Add _overlap_n_center.py with primitive overlap functions
- Add overlap_n_center.py with public API n_center_overlap_integral()
- Add comprehensive tests including N=2 regression test

This implements the foundation for arbitrary-order overlap integrals
using Obara-Saika recursion with memoization and screening support.
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.

WoC: Arbitrary-order Overlap Integrals (and evaluations enabled thereby)

1 participant