Skip to content
New issue

Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? # to your account

GSoC 2025: Improve Robustness of Poisson Solver #263

Open
PaulWAyers opened this issue Feb 10, 2025 · 0 comments
Open

GSoC 2025: Improve Robustness of Poisson Solver #263

PaulWAyers opened this issue Feb 10, 2025 · 0 comments
Labels
gsoc Possible Google Summer of Code Project

Comments

@PaulWAyers
Copy link
Member

PaulWAyers commented Feb 10, 2025

Description

Improve the robustness of the Poisson solvers that grid uses to evaluate the Coulomb potential due to a charge distribution,

$$ \Phi(\mathbf{r}) = \int \frac{\rho(\mathbf{r}')}{|\mathbf{r} - \mathbf{r}'|} d\mathbf{r}' $$

As pointed out by Becke, this is more efficiently treated, numerically, as a solution to the corresponding Poisson equation.

$$ \nabla^2 \Phi(\mathbf{r}) = - 4 \pi \rho(\mathbf{r}) $$

📚 Package Description and Impact

Grid is a pure Python library for numerical integration, interpolation and differentiation of interest for the quantum chemistry community.

👷 What will you do?

Grid has two different Poisson solvers, one using a boundary-value method (which seems more robust, but is not perfect #215) and one using an initial-value method which is less robust (see #162). You will attempt to find robust default parameters for these methods. It is conceivable that one needs (much) larger grids for solving the Poisson equation than we routinely use in numerical integration. (Our Gaussian-quadrature-ish grids are especially adapted to integration; for differentiation their accuracy is diminished. Solving the Poisson equation is essentially a differentiation.)

One approach, which would potentially make the method more robust, would be to use a screened Coulomb kernel instead; that approach can remove the singularity in the equation and, by taking the limit to zero screening, give robust results.

Another approach, which might be much easier, would be to use the strategy proposed in #16. That is, estimate the density with a linear combination of Gaussians using BFit, so that one only needs to solve the Poisson equation for the error in the fit.

🏁 Expected Outcomes

  1. Explore the boundary value solver. Find good values for the default parameters.
  2. See if the initial value problem can be made more robust or, failing that, if circumstances where it is robust can be identified.
  3. Develop a protocol where a sufficient grid, algorithm, and algorithm parameters can be selected, allowing high-level porcelain to be designed for the function.
  4. Explore whether using the "promolecular" trick is beneficial.
  5. Explore whether screened Coulomb potentials behave better.
  6. Write comprehensive tests and documentation for all new functionality.
  7. Write tutorial Jupyter notebooks that show how to use the new functionality.
Required skills Python, OOP
Preferred skills Be comfortable with math and numerical algorithms. Experience with scientific programming can help
Project size 350 hours, Large
Difficulty Medium 🤔

🙋 Mentors

Marco Martínez-González mmg870630_at_gmail_dot_com @marco-2023
Derrick Yang yxt1991_at_gmail_dot_com @tczorro
Esteban Vöhringer-Martinez estebanvohringer_at_qcmmlab_dot_com @evohringer
Ali Tehrani 19at27_at_queensu_dot_ca @Ali-Tehrani
@PaulWAyers PaulWAyers added the gsoc Possible Google Summer of Code Project label Feb 10, 2025
# for free to join this conversation on GitHub. Already have an account? # to comment
Labels
gsoc Possible Google Summer of Code Project
Projects
None yet
Development

No branches or pull requests

1 participant