Skip to content

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

@PaulWAyers

Description

@PaulWAyers

Description

Add functionality to the GBasis library for arbitrary-order overlaps. One motivation of this is to support the evaluation of the intracule (the distribution function for the interelectronic distance) and the extracule (the distribution function for the center-of-mass of electron pairs). See these review articles.

📚 Package Description and Impact

GBasis is a pure-Python package for evaluating and analytically integrating Gaussian-type orbitals and their related quantities. The goal is to build a set of tools to the quantum chemistry community that are easily accessible and easy to use as to facilitate future scientific works.

👷 What will you do?

Your main focus will be to add functionality for the overlaps of arbitrarily many Gaussian basis functions. It is important to include screening, as otherwise the evaluations can be quite expensive. An important application, which should be supported with an appropriate API, is evaluation of the intracule and extracule. Another important application is the evaluation of near-arbitrary interparticle repulsions. This is possible because, using tricks popularized by Beylkin and Monzon, almost any interparticle repulsion can be written as a sum of Gaussians. This would include the (many-body) interactions associated with nucleons and other types of cofermions and cobosons. This is a place where some creativity can be exercised, as innovative new algorithms and improved fits are being consistently proposed. That said, these potential applications are beyond the scope of this specific issue, though they are relatively easy extensions thereto.

This functionality also allows us to compute arbitrary positive integer powers of the electron density and related density matrices analytically. (Typical approaches rely, instead, on numerical integration that become increasingly ill-conditioned for high powers.) This is sometimes useful when describing (very) multicenter bonding.

3- and 4-Gaussian overlaps from PySCF can be used for testing. 1-Gaussian overlaps and 2-Gaussian overlaps are built-in already and can be used for testing. An algorithm similar to what is needed here is already included in IOData (for two Gaussians). See also the overlap integrals in GBasis.

🏁 Expected Outcomes

  1. Implement the overlap for an arbitrary number of (contracted, Cartesian or spherical) Gaussian basis functions.
  2. Add support for screening, with appropriate default parameters.
  3. Add functionality for evaluating the intracule and extracule.
  4. Utilities for computing positive integer powers of the electron density and relevant density matrices.
  5. Support for (near) arbitrary interparticle repulsion integrals. This uses the aforementioned trick of Beylkin and Monzon. A similar trick is used in MADNESS, which can be used for inspiration.
  6. Write comprehensive tests and documentation for all new functionality.
  7. Write tutorial Jupyter notebooks that show how to use the new functionality.
  8. Follow our guidelines for contributors.
Required skills Python, OOP
Preferred skills Be comfortable with math and numerical algorithms. Experience with scientific programming and quantum chemistry can help
Project size 350 hours, Large
Difficulty Medium to Hard 🥵

🙋 Mentors

Marco Martínez-González mmg870630_at_gmail_dot_com @marco-2023
Farnaz Heidar-Zadeh farnaz_dot_heidarzadeh_at_queensu_dot_ca @FarnazH
Esteban Vöhringer-Martinez estebanvohringer_at_qcmmlab_dot_com @evohringer

📝 Notes

An algorithm (two algorithms, in fact) for doing this are included in the attached notes,
which were developed in the context of the intracule and extracule. The attached notes are old and have Fortran-style pseudocode (they are that old). [To be clear, I would not suggest implementing the direct algorithms for the intracule/extracule. It is better to pass through the multi-Gaussian overlaps.]

Note that multi-Gaussian overlaps are extremely sparse, so a sparse tensor structure should be used. The main operation one needs are tensor contractions (usually pairing indices to one or more copies of the 1- or 2-electron density matrix), which will determine the type of structure one uses to store the tensor. One may need to use pytorch functionality for this.

If we had the arbitrary-order overlaps coded, I would argue that we should support some additional evaluations, notably:

  1. intracule on a grid.
  2. extracule on a grid.
  3. integrals of powers of the electron density.
  4. (maybe) integrals of moments of powers of the electron density. These integrals show up in some of the moment density functional development work that Parr and Nagy did a couple decades ago. That specific topic is not very active right now, though, so this could definitely be deferred to the (far) future.
  5. This supersedes GSoC 2025: Arbitrary-order Overlap Integrals (and evaluations enabled thereby) #183

Metadata

Metadata

Labels

enhancementNew feature or request

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions