You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Add functionality to the GBasis library for evaluating 2-electron integrals, including non-Coulomb repulsions. The current Python implementation is very slow, but it also uses a very inefficient algorithm. A more efficient algorithm, combining the Obara-Saika and Head-Gordon-Pople recursions, would fix this issue. One advantage of having this coded in (pure) Python is that it makes it easy to explore new screening methods, exploit sparsity, and include unconventional integrals (e.g., screened Coulomb interactions). Here is a good introduction to Gaussian integral evaluation, which can help you get your bearings without overwhelming you with (important!) details.
📚 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 (re)implement the 2-electron integrals in GBasis. This is important partly because it seems we may have a bug in the integrals for high angular momentum (cf. #216) and because the current implementation is painfully slow. It is very helpful for many people to have a pure Python implementation of the 2-electron integrals because, while it will always be (relatively) slow, it allows more flexibility for development of new algorithms and facilitates cross-platform code interoperability. In addition, in many cases integral evaluation is not the performance bottleneck.
The key steps will be to
Understand the recursive evaluation of Gaussian integrals.
Implement the key recursions. (vertical, horizontal, electron-transfer)
Apply these recursions in sequence to evaluate the 2-electron integrals.
Write functions for different "initializations" of the Boys function to support different types of 2-electron integrals.
2-electron integrals from PySCF can be used for testing, as can a recursion check against existing integrals (which are surely reliable for low angular momentum). For more general integral types, one will have to test by manual verification (e.g., numerical integration using Grid.
🏁 Expected Outcomes
Implement the recursive evaluation of 2-electron integrals into GBasis using the algorithm in the notes. This requires implementing several different recursions, which are the "building blocks" for the algorithm as a whole.
Implement several different "generalized Boys functions" so that multiple types of 2-electron integrals are supported.
Write comprehensive tests and documentation for all new functionality.
Write tutorial Jupyter notebooks that show how to use the new functionality.
Required skills
Python, OOP
Preferred skills
Be comfortable with calculus and numerical algorithms (especially recursion). Experience with scientific programming and quantum chemistry can help
An algorithm for doing this are included in the attached notes, starting page 17 (eq. 61).
The trick for using "unconventional Boys functions" is from an old paper of Ahlrichs which gives several (families of) 2 ``electron'' integrals in section 5.
Description
Add functionality to the
GBasislibrary for evaluating 2-electron integrals, including non-Coulomb repulsions. The current Python implementation is very slow, but it also uses a very inefficient algorithm. A more efficient algorithm, combining the Obara-Saika and Head-Gordon-Pople recursions, would fix this issue. One advantage of having this coded in (pure) Python is that it makes it easy to explore new screening methods, exploit sparsity, and include unconventional integrals (e.g., screened Coulomb interactions). Here is a good introduction to Gaussian integral evaluation, which can help you get your bearings without overwhelming you with (important!) details.📚 Package Description and Impact
GBasisis 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 (re)implement the 2-electron integrals in
GBasis. This is important partly because it seems we may have a bug in the integrals for high angular momentum (cf. #216) and because the current implementation is painfully slow. It is very helpful for many people to have a pure Python implementation of the 2-electron integrals because, while it will always be (relatively) slow, it allows more flexibility for development of new algorithms and facilitates cross-platform code interoperability. In addition, in many cases integral evaluation is not the performance bottleneck.The key steps will be to
2-electron integrals from PySCF can be used for testing, as can a recursion check against existing integrals (which are surely reliable for low angular momentum). For more general integral types, one will have to test by manual verification (e.g., numerical integration using Grid.
🏁 Expected Outcomes
GBasisusing the algorithm in the notes. This requires implementing several different recursions, which are the "building blocks" for the algorithm as a whole.🙋 Mentors
📝 Notes