Critical Points - Potential Bug?
Posted: Thu May 22, 2025 8:45 am
I'm working on a bit of a different situation from the solid state systems usually studied with the Bader analysis. We're simulating the solvated electron in liquid ammonia, where the PAW basis set of VASP is crucial to allowing the electron to fully delocalize. In addition, the spatial extent is very much of interest here, so I'd like to know more about the Bader volumes themselves, so I've been running the critical points calculation to try and get a better understanding of how it looks in space, but it's giving some errors.
The relevant excerpt from the output:
=========================================
Number of critical point count: 13958
Number of nuclear, bond, ring and cage critical point counts : 352 6107 5807 1692
ERROR: TWO TYPES OF CP ARE TOO CLOSE TO EACH OTHER.
The CPs 405 433 have number of negative eigenvalues: 0 1
STOPPING. NO MORE CP WILL BE OUTPUT.
After a round of reduction
Number of atoms: 258
Number of critical point count: 112
Number of nuclear, bond, ring and cage critical point counts : 66 17 23 6
WARNING: There is more nuclear CP than number of atoms!
ERROR: FAILED Poincare Hopf Rule and Morse Relationship
Writting critical point output files
Critical point information are written in file: CPFU00.dat
Network Graph is written in file: LINK00.dat
outputting debugging information to allcpPOSCAR
writting atomic locations
end of critpoint_find
Heuristic features not turned on. Exiting
=========================================
And for reference, the system has 258 atoms and 192 bonds. If nothing else, it's clearly failing to correctly account for the CP for some reason.
The thing catching my eye is that it's saying that "There is more nuclear CP than number of atoms", but that is not true? 66 nuclear critical points found and 258 atoms.
I'm also not sure why it's saying that it failed the Poincare Hopf Rule. My reading said that this theorem states that you can't create a closed volume around a saddle point without also including at least one minimum or maximum, and I'm assuming this is in reference to the Bader volumes being constructed? My system is weird, having a diffuse electron spread across most of the system, but I don't see why that would cause it to fail the Poincare Hopf Rule. When I looked at the code, it seems like this error gets thrown after simply having a large number (>100,000) for cptnum, which seems odd. I'm guessing that it's running the reduction of the CP and then checking if the number of CP is still high, which would indicate failure? But coupled with the code stating that there are more nuclear CP than atoms when that's not true, I wonder if some of the logic for this module is flawed. Or I could be wrong, but either way, could anyone help me get the critical point module working?
For what it's worth, the actual charges, the ACF and BCF, perform flawlessly. ACF has exactly 258 volumes, it computes reasonable charges for every atom. BCF has 260 volumes, which matches expectations for having 2 free electrons in the system. It only seems to be the critical point module that's having issues, but I'd really like to take a look at the critical points.
The relevant excerpt from the output:
=========================================
Number of critical point count: 13958
Number of nuclear, bond, ring and cage critical point counts : 352 6107 5807 1692
ERROR: TWO TYPES OF CP ARE TOO CLOSE TO EACH OTHER.
The CPs 405 433 have number of negative eigenvalues: 0 1
STOPPING. NO MORE CP WILL BE OUTPUT.
After a round of reduction
Number of atoms: 258
Number of critical point count: 112
Number of nuclear, bond, ring and cage critical point counts : 66 17 23 6
WARNING: There is more nuclear CP than number of atoms!
ERROR: FAILED Poincare Hopf Rule and Morse Relationship
Writting critical point output files
Critical point information are written in file: CPFU00.dat
Network Graph is written in file: LINK00.dat
outputting debugging information to allcpPOSCAR
writting atomic locations
end of critpoint_find
Heuristic features not turned on. Exiting
=========================================
And for reference, the system has 258 atoms and 192 bonds. If nothing else, it's clearly failing to correctly account for the CP for some reason.
The thing catching my eye is that it's saying that "There is more nuclear CP than number of atoms", but that is not true? 66 nuclear critical points found and 258 atoms.
I'm also not sure why it's saying that it failed the Poincare Hopf Rule. My reading said that this theorem states that you can't create a closed volume around a saddle point without also including at least one minimum or maximum, and I'm assuming this is in reference to the Bader volumes being constructed? My system is weird, having a diffuse electron spread across most of the system, but I don't see why that would cause it to fail the Poincare Hopf Rule. When I looked at the code, it seems like this error gets thrown after simply having a large number (>100,000) for cptnum, which seems odd. I'm guessing that it's running the reduction of the CP and then checking if the number of CP is still high, which would indicate failure? But coupled with the code stating that there are more nuclear CP than atoms when that's not true, I wonder if some of the logic for this module is flawed. Or I could be wrong, but either way, could anyone help me get the critical point module working?
For what it's worth, the actual charges, the ACF and BCF, perform flawlessly. ACF has exactly 258 volumes, it computes reasonable charges for every atom. BCF has 260 volumes, which matches expectations for having 2 free electrons in the system. It only seems to be the critical point module that's having issues, but I'd really like to take a look at the critical points.