Ghost atoms & IBOs
See original GitHub issueHi Team,
The IBO code currently fails for systems with ghost atoms (e.g., with a ‘X-’ prefix):
[...]
File "/Users/janus/anaconda3/lib/python3.7/site-packages/pyscf/lo/ibo.py", line 135, in ibo_loc
AtomOffsets = MakeAtomIbOffsets(Atoms)[0]
File "/Users/janus/anaconda3/lib/python3.7/site-packages/pyscf/lo/ibo.py", line 402, in MakeAtomIbOffsets
iBfAt.append(iBfAt[-1] + nAoX[Atom])
KeyError: 'XO'
Out of curiosity, what is the expected and correct behaviour here? To treat the ghost atoms merely as their native atoms (for instance, treating ‘X-O’ as ‘O’)? Isn’t this what’s done elsewhere?
Cheers, Janus
Issue Analytics
- State:
- Created 3 years ago
- Comments:10 (8 by maintainers)
Top Results From Across the Web
Developers - Ghost atoms & IBOs - - Bountysource
Ghost atoms & IBOs. ... The IBO code currently fails for systems with ghost atoms (e.g., with a 'X-' prefix): [.
Read more >Source code for pyscf.lo.ibo
Note the IBOs of this implementation do not strictly maximize the IAO Mulliken ... render Atoms list without ghost atoms iao_mol = iao.reference_mol(mol, ......
Read more >Molecule topology for ghost atoms - LAMMPS Development
Hello, I'm currently trying to redesign the local neighbor listing in pair_style mesocnt to use the bond topology rather than relying on ...
Read more >10.2.7 Intrinsic Atomic Orbitals - Q-Chem Manual
However, free-atom atomic orbitals cannot yield a qualitatively correct minimal ... FALSE Do not calculate IBOs TRUE Run the IBO procedure
Read more >pyscf/ibo.py at master - GitHub
Python module for quantum chemistry. Contribute to pyscf/pyscf development by creating an account on GitHub.
Read more >
Top Related Medium Post
No results found
Top Related StackOverflow Question
No results found
Troubleshoot Live Code
Lightrun enables developers to add logs, metrics and snapshots to live code - no restarts or redeploys required.
Start Free
Top Related Reddit Thread
No results found
Top Related Hackernoon Post
No results found
Top Related Tweet
No results found
Top Related Dev.to Post
No results found
Top Related Hashnode Post
No results found
In case anyone else is interested: I think the correct way to deal with ghost atoms is:
Do not put any minimal-basis (B2) functions on the ghost atoms. I.e., treat the ghost atoms as if they would not exist in any way, shape, or form as far as the B2 basis is concerned.
Retain the ghost atom basis functions unchanged in the main computational basis B1. I.e., fully include them in the overlap matrices S11 and S12 (on the B1 side) which get supplied to the IAO construction routine.
The reason I think this is the correct approach is that, ultimately, the ghost atoms are only used to extend the computational basis set B1 in a specific way, and therefore provide more and targeted variation freedom to the original electronic structure computation. But that is the only thing they really do, and that is not very different from, say, using a plane wave basis as B1 to expand the main orbitals in. But as far as the chemical analysis is concerned, they do not exist and therefore need not be treated.[1]
If that is done, IBOs based on such an IAO construction should work automatically, and unchanged, I think. Haven’t looked into the PSI version yet.
[1] To retain correct atomic numbering, and simplify dealing with real- world existing code, the easiest way of dealing with ghost atoms might be to assign them empty minimal basis sets (i.e., basis sets without any functions). That would allow leaving them in, and might simplify code adjustments. Haven’t looked into how PySCF would handle those.
Sorry for being a nuisance, but would anyone ‘volunteer’ to chip in with help, pointers, etc.? Happy to help and discuss. (cf. comment from Gerald above)