Hide menu

BandUP: Band Unfolding code for Plane-wave based calculations

Graphene@Cu(111): The total surface area of the supercell used in the calculations is 54 times larger than the area of graphene's primitive unit cell.


BandUP is a code that allows you to obtain a primitive cell representation of the band structure of systems simulated using supercells. The unfolding of the bands is performed as described in the following papers:

Paulo V. C. Medeiros, Sven Stafström and Jonas Björk, Phys. Rev. B 89, 041407(R) (2014)

Paulo V. C. Medeiros, Stepan S. Tsirkin, Sven Stafström and Jonas Björk, Phys. Rev. B 91, 041116(R) (2015)


No explicit calculations involving the reference primitive cell are needed. One only needs to know the primitive cell vectors to determine the geometric unfolding relations.

BandUP checks the symmetries of both supercell and reference primitive cell in order to (i) reduce the number of necessary k-points to a minimum  —  thus reducing the space required to store wavefunction files (WAVECAR for VASP, *.evc for Quantum ESPRESSO, *_WFK for ABINIT, *.orbitals for CASTEP), and (ii) produce properly symmetry-averaged effective unfolded band structures (EBS) when the symmetry of the supercell is different from the one of the primitive cell. This is handy when defects, impurities and/or other types of perturbations are present. Besides performing its main unfolding task, BandUP also helps you to (i) choose the set of K-points that should be used with your plane-wave code to obtain the the wavefunctions needed for band unfolding, (ii) plot the EBS, and (iii) obtain the smearing widths of the unfolded bands. BandUP also suports atom/orbital-decomposed unfolding of bands (currently only available with for the VASP interface).

Download and license

BandUP, as well as the pre- and post-processing utilities that come along with it, are totally free and distributed under the terms of the GNU General Public License, so you can use it (and modify/improve it) in whatever way you want. If you do modify the code, we would really appreciate it if you could share your changes with us, so we could make them available to others. The source code is available for download from our GitHub page.


If you find BandUP useful in your research, you should (i) cite our papers and the appropriate references therein AND (ii) state in your manuscript/paper that you have used the BandUP code (or a modified version of it when this is the case). An appropriate way of acknowledging the use of BandUP in your publications would be, for instance, adding a sentence like 

"The unfolding has been performed using the BandUP code",

followed by the citation to our papers.

Feel free to get in touch when you publish something using the code, so we can include your paper/preprint in our list of publications using BandUP.

Plane-wave codes currently supported by BandUP

The current version of BandUP can be used as a standalone post-processing band unfolding tool for calculations performed using:
Don't hesitate to contact us if you use other plane-wave code and you would like to have support to it added too. As usual, we'll do our best to help you out. Of course, this would be faster if you can collaborate with us. For instance, if you write and/or send me a routine to read the wavefunctions produced by your code, then we'd only need to write an interface to it.


Feel free to email us at bandunfolding@gmail.com to ask for more information, report issues, or if you want to collaborate. We greatly appreciate the valuable feedback given by all of those who have contacted us to suggest features, provide benchmarks for our tests, report issues, etc. This has really helped us to improve BandUP. Thanks and keep the feedback coming!

Kind regards,

Paulo and Jonas.

Responsible for this page: Paulo V. C. Medeiros
Last updated: 05/22/18