Skip to content

A lightweight Python package for calculating descriptors of chemical bonding and local electronic structure from Wannier functions.

License

Notifications You must be signed in to change notification settings

PatrickJTaylor/pengWann

Repository files navigation

The pengWann logo: a purple penguin.

(technically pronounced peng-van, but some pronounce numpy as num-pee rather than num-pie, so who really knows?)

JOSS status License: GPL v3 Docs Test coverage Requires Python 3.10+ Requires Rust 1.82.0+ PyPI version

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.

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.

Getting started 🚀

Installation 🐧

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.

Basic usage 📝

For a quick run through of the basics, see the first example in the docs on computing bonding descriptors in diamond.

Support 🤝

Getting help 👋

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.

Bugs 🐛

If you think you have found a bug in pengwann, please create an issue and let us know!

Contributing 🛠

Contributions to pengwann via pull request are very welcome, whether the changes are big or small! See the contributing guide for more details.

Acknowledgements 📣

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

  1. S. Kundu et al., Population analysis with Wannier orbitals, In: J. Chem. Phys. 154 (10 2021), p. 104111

About

A lightweight Python package for calculating descriptors of chemical bonding and local electronic structure from Wannier functions.

Topics

Resources

License

Stars

Watchers

Forks