Adding Critical Points (Vectorized) and Finding Bond Paths #59
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Description
The critical points algorithm is as follows:
1. Points that are close to center and that have small gradients are
included to be initial guesses. Points whose density values is small are not.
2. While-loop is done until each point from the initial guess converges to a critical point using Newton-Ralphson (Armijo backtracing is not used).
3. Points whose density values are too small are removed from the iteration process.
4. When the while-loop is finished. Points that are identical are merged together by first rounding to some decimal
places and then a KDTree is used to group the points into small balls and the
points with the smallest gradient are picked out of each ball.
The API follows the previous critical point finder:
Examples
It takes four seconds (with ChemtoolsCUDA) to find critical points of dipeptide ALA_ALA (23 atoms) and 20 seconds for PHE_TRP (53 atoms and def2-SPVD basis-set) It took 5 seconds to find the bond paths and note the bcp and rcp found between pi-teeing (T-shaped) side-chains :
Here is 2014 GPU implementation of other people code (with basis-set 6-31++G(2p,2d) ). Note that our method seems to be significantly faster than theirs)
Here is a bond-path version
Type of Changes
Please remove the lines that don't represent the type of your PR.
✨ New Feature