Skip to content
New issue

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

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

Already on GitHub? Sign in to your account

Support for more quadratures? #43

Open
susilehtola opened this issue Dec 2, 2020 · 6 comments
Open

Support for more quadratures? #43

susilehtola opened this issue Dec 2, 2020 · 6 comments

Comments

@susilehtola
Copy link

numgrid sounds like a promising project, but is handicapped by the limitation to a single angular grid aimed for Gaussian basis sets, and the single Becke partitioning. It would be significantly more useful, if it had all the standard radial quadratures, as well as more modern partitionings.

Are there any plans to expand the project in this direction? API changes will become necessary to allow the user choosing the grid.

@bast
Copy link
Member

bast commented Dec 3, 2020

I am almost ready with a full rewrite to Rust (keeping Python interfaces) so this may also be a good moment to add some API changes.

I would very much like to extend the code for more quadrature schemes and partitioning schemes. Which ones would be the most important to start with in your opinion? If there is some open source reference data when implementing, that would help a lot also.

@susilehtola
Copy link
Author

Schemes in a rough order of importance / ease of implementation.

Angular schemes:

  1. Lebedev (you have these; only the biggest rules - which are never used - are from the Lebedev-Laikov paper)
  2. Lobatto, see section II.E of https://doi.org/10.1063/1.469408

Radial schemes:

  1. Lindh-Malmqvist-Gagliardi, you have this already
  2. Krack-Köster, see https://doi.org/10.1063/1.475719 (I like this since it's easy to compute and parameter-free)
  3. MultiExp, see https://doi.org/10.1002/jcc.10211.The paper also presents other grids that may be of interest.
  4. Treutler-Ahlrichs, see https://doi.org/10.1063/1.469408
  5. Mura-Knowles, see https://doi.org/10.1063/1.471749

Partitionings:

  1. Becke (you have this)
  2. Stratmann-Scuseria-Frisch, https://doi.org/10.1016/0009-2614(96)00600-8 (standard in most packages)
  3. Laqua-Kussmann-Ochsenfeld, section III.C of https://doi.org/10.1063/1.5049435

In addition to these, one should also include support for pruned grids, since they may lead to noticeable increases in performance. Support for the SG-0, SG-1, SG-2, and SG-3 standard grids would also be nice.

For several of these, especially the pruning, you can look into the code in Psi4 and PySCF.

@susilehtola
Copy link
Author

I am almost ready with a full rewrite to Rust (keeping Python interfaces) so this may also be a good moment to add some API changes.

Btw what do you see as the benefits of Rust? NumGrid is a pretty compact project

@bast
Copy link
Member

bast commented Dec 3, 2020

Thanks for the references! Rust: more speed and fewer bugs :-) See also https://www.nature.com/articles/d41586-020-03382-2.

@bast
Copy link
Member

bast commented Jan 3, 2021

Now after the library rewrite I will soon start extending it to more quadratures. For me first goal is to speed up the space partitioning for larger molecules. Then more radial options.

@bast
Copy link
Member

bast commented Jan 22, 2021

I will soon have the LKO and SSF partitioning schemes in place. Just need to do a bit more testing.

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

No branches or pull requests

2 participants