(technically pronounced peng-van, but some pronounce numpy
as num-pee rather than num-pie, so who really knows?)
A lightweight Python package for computing descriptors of chemical bonding and local electronic structure from Wannier functions.
A handful of example outputs from pengwann
as applied to rutile.
The colour-coded numbers next to the crystal structure are Löwdin-style charges computed for Ti (blue) and O (red).
Core features:
- 📖 Read Wannier90 output files
- 🔎 Identify interatomic and on-site interactions in terms of atom-assigned Wannier functions
- 💻 Compute in parallel:
- The Wannier orbital Hamilton population (WOHP)
- The Wannier orbital bond index (WOBI)
- The Wannier-projected density of states (pDOS)
- Orbital and k-resolved implementations of all of the above
- 📈 Integrate descriptors to derive:
- Löwdin-style populations and charges
- Measures of bond strength and bond order
pengwann
replicates the core functionality of LOBSTER but uses Wannier functions rather than pre-defined atomic or pseudo-atomic orbitals as a local basis in which to express the Hamiltonian and the density matrix.
A Wannier basis is advantageous in that, when derived from energetically isolated bands, the spilling factor is strictly 0.
For further details regarding detailed methodology, functionality and examples, see the documentation.
The latest tagged release of pengwann
is pip
-installable as:
pip install pengwann
Alternatively, to install the current development build, you can build from source with:
pip install git+https://github.com/PatrickJTaylor/pengwann.git
Note that building pengwann
from source entails compiling a small Rust extension, meaning that a suitable version of the Rust compiler must be available on the host machine.
For more details regarding installation and platform support, see the full installation guide in the docs.
For a quick run through of the basics, see the first example in the docs on computing bonding descriptors in diamond.
If you're having problems using pengwann
and the docs do not provide a solution, feel free to open a discussion and we will endeavour to get back to you as soon as possible.
If you think you have found a bug in pengwann
, please create an issue and let us know!
Contributions to pengwann
via pull request are very welcome, whether the changes are big or small!
See the contributing guide for more details.
The development of pengwann
was initially inspired by WOBSTER, which in turn drew inspiration from previous work on using Wannier functions for population analysis1.
Footnotes
-
S. Kundu et al., Population analysis with Wannier orbitals, In: J. Chem. Phys. 154 (10 2021), p. 104111 ↩