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

QTAIM Surface Algorithm #56

Open
wants to merge 90 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
90 commits
Select commit Hold shift + click to select a range
7b660ca
Add qtaim voronoi and line search
Ali-Tehrani Sep 5, 2022
8474757
Add tests for qtaim
Ali-Tehrani Sep 5, 2022
f8d3459
Add documentation to the qtaim algorithms
Ali-Tehrani Sep 6, 2022
ca89aea
Move yu-trinkle to seperate file
Ali-Tehrani Jan 4, 2023
8588657
Update qtaim algorithm
Ali-Tehrani Jan 4, 2023
18f8349
Update QTAIM algorithm
Ali-Tehrani Jan 25, 2023
0d5b12a
Add vectorization algorithm
Ali-Tehrani Feb 2, 2023
6306544
Add vectorized version of qtaim algorithm
Ali-Tehrani Feb 8, 2023
6f63298
Seperate parts of algorithm into diff files
Ali-Tehrani Feb 9, 2023
b46598e
Add ode solver as arguments
Ali-Tehrani Feb 16, 2023
c366b81
Add saving isosurface value to surface object
Ali-Tehrani Feb 20, 2023
8798be3
Add automatic bounds for solving isosurface
Ali-Tehrani Feb 20, 2023
705c36e
Update tests for qtaim
Ali-Tehrani Feb 20, 2023
dfeadf6
Add error if non-nuclear attractor was found
Ali-Tehrani Feb 22, 2023
7264e43
Add stop for NNA
Ali-Tehrani Feb 22, 2023
a912d8c
Update beta-sphere determination ODE parameters
Ali-Tehrani Feb 22, 2023
d6ae40a
Remove print statements
Ali-Tehrani Feb 22, 2023
09a558b
Update save in surface
Ali-Tehrani Feb 22, 2023
21b3a73
Update how atom grid surface is calculated
Ali-Tehrani Mar 13, 2023
dc9c632
Add finding NNA during beta-spheres
Ali-Tehrani Mar 17, 2023
25eaf2a
Add option to include extra points on surface
Ali-Tehrani Mar 17, 2023
b287f0b
Add checking for NNA during ode solving
Ali-Tehrani Mar 17, 2023
5631170
Add automatic NNA checking
Ali-Tehrani Mar 17, 2023
86fa851
Add multiple intersection finding
Ali-Tehrani Apr 11, 2023
8fa12e7
Add another method of finding IAS
Ali-Tehrani Apr 11, 2023
08c65c5
Add multiple changes
Ali-Tehrani Apr 11, 2023
7cbfc53
Add beta-spheres to surface object
Ali-Tehrani Apr 11, 2023
7cac14c
Add refinement between IAS and OAS to surface
Ali-Tehrani Apr 11, 2023
ca5713b
Make OAS root solving faster
Ali-Tehrani Apr 11, 2023
8845296
Update radial grid parameters
Ali-Tehrani Apr 11, 2023
6ba035d
Add finding NNA to utils
Ali-Tehrani Apr 11, 2023
bc4ff5b
For refinement, added check for OAS pts
Ali-Tehrani Apr 12, 2023
b7d654e
Update parameters in qtaim algorithm
Ali-Tehrani Apr 12, 2023
e9f02f5
Update docs in utils
Ali-Tehrani Apr 12, 2023
99e6655
Change OAS root solving is done
Ali-Tehrani Apr 14, 2023
fd4293e
Update angular
Apr 14, 2023
dad259b
Update angular grid degree for NNA
Ali-Tehrani Apr 15, 2023
3c914a2
Update solving root eqn twice if failed for OAS
Ali-Tehrani Apr 15, 2023
015b11d
Add a very small beta-sphere in case radial grid
Ali-Tehrani Apr 15, 2023
caaf40a
Reduce printing when solving for IAs
Apr 15, 2023
25c07bb
Add second attempt to solving OAS points
Ali-Tehrani Apr 16, 2023
81208d6
Change root-solving to Newton-Ralpson
Ali-Tehrani Apr 20, 2023
4e2a6cc
Update bounds for refining the edges along IAS&OAS
Ali-Tehrani Apr 20, 2023
a44db98
Add a check for IAS points that should be OAS
Ali-Tehrani Apr 20, 2023
cb22fff
Fix obj func in solving root eqn second time
Apr 16, 2023
f189371
Raise error if NNA is found or BCP/RCP converged
Ali-Tehrani Apr 26, 2023
736ef90
Add ability to surface to handle subset of atoms
Ali-Tehrani Apr 26, 2023
95eb5e4
Vectorize refinement of atoms
Ali-Tehrani Apr 26, 2023
fb843ec
Add option to check for nna
Ali-Tehrani Apr 26, 2023
c8eb9dc
Rename files around
Ali-Tehrani Apr 27, 2023
b7a1c77
Rename test file
Ali-Tehrani May 1, 2023
ee315b3
Add header and update parameters to ode.py
Ali-Tehrani May 1, 2023
c37f18f
Add new method of solving for root of isosurface
Ali-Tehrani May 1, 2023
181ff59
Update the qtaim surface algorithm
Ali-Tehrani May 1, 2023
ac140a1
Update tests for the qtaim surface algorithm
Ali-Tehrani May 1, 2023
6f862ba
Fix how BCP and RCP are found when backtracing
Ali-Tehrani May 1, 2023
50fceae
Update parameters for beta-sphere
Apr 26, 2023
be54e56
Delete qtaim_gpu.py
Jun 9, 2023
c84f170
Fix how BCP and RCP are found
Jun 24, 2023
8ce9c77
Fix finding nna in beta-sphere search with hessian
Jun 24, 2023
584d1e7
Update test
Ali-Tehrani Jun 20, 2023
e7919e1
Add rotation check for beta-spheres
Ali-Tehrani Jun 23, 2023
e3e955c
Fix when to check for NNA
Ali-Tehrani Jun 23, 2023
b40cf53
Increase accuracy of basin finding in beta-sphere
Ali-Tehrani Jun 23, 2023
4c28b9e
Change raise error to warning
Ali-Tehrani Jun 23, 2023
0631cac
Add step-size radial grid to differ per atom
Ali-Tehrani Jun 23, 2023
1ba04c9
Fix saving surface qtaim for python 3.8
Ali-Tehrani Sep 14, 2023
a6f9008
Add option to include optional degree
Ali-Tehrani Sep 14, 2023
885c93f
Add annotating maximas in plotting
Ali-Tehrani Sep 14, 2023
044bdc2
Fix isosurface points problem
Ali-Tehrani Sep 14, 2023
b37d670
Add getting surfaces of atoms
Ali-Tehrani Sep 14, 2023
743b787
Add print statement and increase maxiter
Sep 26, 2023
b5e87f3
Add no refinement if not enough points on OAS
Sep 26, 2023
5b6eaae
Decrease beta-sphere when NNA are found
Sep 26, 2023
9d76e28
Add option for having minimal radial point to API
Sep 26, 2023
59a944b
Fix bug in getting IAS and surface points
Ali-Tehrani Sep 29, 2023
752b7c0
Update parameter variables to make it more clear
Ali-Tehrani Sep 29, 2023
58b9adf
Fix radial grids to use all maximas
Ali-Tehrani Sep 29, 2023
d6d3873
Add second method of obtaining group of surfaces
Ali-Tehrani Sep 29, 2023
b5db1be
Merge branch 'qtaim' of https://github.com/Ali-Tehrani/chemtools into…
Ali-Tehrani Sep 29, 2023
fd91f95
Add surface partitioning to Hirshfeld
Ali-Tehrani Oct 18, 2023
80e931c
Fix density issue when using beta-spheres
Oct 23, 2023
bfc5089
Add negative indices check
Ali-Tehrani Nov 7, 2023
f3f6f90
Add list to numpy array
Nov 7, 2023
24eb39b
Add linalg error catching to crtical_pt finder
Ali-Tehrani Nov 22, 2023
9c2ecb3
Change correct type for later numpy
Feb 20, 2024
4417d25
Fix bug in final bad rays
Feb 20, 2024
9d20e42
Update to new grid api for angulargrid
Ali-Tehrani May 10, 2024
52c8c64
Add to utils hirshfeld surface finder
Ali-Tehrani May 23, 2024
fb5a44d
Add refinement to hirshfeld type methods
Ali-Tehrani May 23, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions chemtools/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@
from chemtools.denstools import *
from chemtools.utils import *
from chemtools.outputs import *
from chemtools.topology import *
import horton


Expand Down
4 changes: 3 additions & 1 deletion chemtools/topology/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -23,4 +23,6 @@
"""The Scalar Field Topological Analysis Module."""


from chemtools.topology import *
from chemtools.topology.point import *
from chemtools.topology.critical import *
from chemtools.topology.qtaim import *
9 changes: 6 additions & 3 deletions chemtools/topology/critical.py
Original file line number Diff line number Diff line change
Expand Up @@ -147,9 +147,12 @@ def find_critical_points(self):
if abs(dens) < 1.e-4 and np.all(abs(grad) < 1.e-4):
continue
# compute rank & signature of critical point
eigenvals, eigenvecs = np.linalg.eigh(self.hess(coord))
cp = CriticalPoint(coord, eigenvals, eigenvecs, 1e-4)
self._cps.setdefault((cp.rank[0], cp.signature[0]), []).append(cp)
try:
eigenvals, eigenvecs = np.linalg.eigh(self.hess(coord))
cp = CriticalPoint(coord, eigenvals, eigenvecs, 1e-4)
self._cps.setdefault((cp.rank[0], cp.signature[0]), []).append(cp)
except np.linalg.LinAlgError:
pass
# check Poincare–Hopf equation
if not self.poincare_hopf_equation:
warnings.warn("Poincare–Hopf equation is not satisfied.", RuntimeWarning)
Expand Down
Loading