Skip to content

feat: add solve_poisson_robust (Split 1) and tests#319

Open
Ao-chuba wants to merge 5 commits into
theochem:masterfrom
Ao-chuba:feature/robust-poisson-split1
Open

feat: add solve_poisson_robust (Split 1) and tests#319
Ao-chuba wants to merge 5 commits into
theochem:masterfrom
Ao-chuba:feature/robust-poisson-split1

Conversation

@Ao-chuba

@Ao-chuba Ao-chuba commented Jul 13, 2026

Copy link
Copy Markdown
Member

@marco-2023 @PaulWAyers
This PR implements solve_poisson_robust() in src/grid/robust_poisson.py, introducing the Split-1-Plus-Solve pipeline for a more robust electrostatic potential calculation. Related to #288. The solver improves on the plain solve_poisson_bvp() by pre subtracting the sharp nuclear core density before passing the residual to the BVP solver.

Pipeline:

Total density rho(r)
      |
[SPLIT 1]  load pre-fitted Gaussian params via load_atomic_gaussian_params()
      |     subtract core density → smooth, residual
      |
[SOLVE]    solve_poisson_bvp on residual → phi_numerical
      |
Total Potential = phi_core (analytical) + phi_numerical

No new external dependencies introduced.

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR adds a new “Split 1 + BVP” robust Poisson solver (solve_poisson_robust) that subtracts an analytical, pre-fitted Gaussian “core” density before solving the smoother residual numerically, then re-adds the analytical core potential.

Changes:

  • Added solve_poisson_robust() implementing the Split-1-Plus-Solve pipeline for improved stability on cusp-like densities.
  • Added a new test suite covering accuracy on Gaussian densities, stability on sharp/negative densities, and error handling for unsupported elements.
  • Exposed the new solver via the package grid top-level import.

Reviewed changes

Copilot reviewed 3 out of 3 changed files in this pull request and generated 3 comments.

File Description
src/grid/robust_poisson.py Implements Split-1 core subtraction + solve_poisson_bvp residual solve and returns a total-potential callable.
src/grid/tests/test_robust_poisson.py Adds tests validating correctness/stability and basic API behavior for the new solver.
src/grid/__init__.py Re-exports the robust Poisson solver from the top-level package.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread src/grid/robust_poisson.py Outdated
Comment thread src/grid/robust_poisson.py Outdated
Comment thread src/grid/tests/test_robust_poisson.py Outdated
@Ao-chuba

Copy link
Copy Markdown
Member Author

the suggestions given by copilot was valid to some extend . and changes were made accordingly , do check in the updated pr
@PaulWAyers @marco-2023

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.

2 participants