For an Open-Source project I am trying to construct the Brillouin zone from the primitive vectors of the unit cell. I need to algorithmically generate the edge points of the Brillouin zone (and which points are connected) so that I can plot it and the user can click on these points to choose a path in the reciprocal space that can be used in a band structure calculation.

This feature is already implemented in xcrysden but in the documentation it is not explained how it is done.

How can it be done?

  • 1
    $\begingroup$ The 'references' section of the linked page links to this paper where the abstract says, In this article the program functions are presented with a short description of the algorithms. Have you looked at this paper? $\endgroup$
    – Kyle Kanos
    Oct 6, 2017 at 1:17
  • $\begingroup$ @KyleKanos Thanks a lot. No I didn't look at this paper yet and it cites nice sources for my problem. $\endgroup$
    – Jannick
    Oct 6, 2017 at 8:33

1 Answer 1


I recently wrote a small python program for creating three-dimensional Brillouin zones and surface BZs: https://github.com/CZJ2020/DrawBZ . Note that you need to input primitive vectors of the bulk BZ instead of the real-space unit cell, which is pretty easy to do.

Welcome to use the program!

  • $\begingroup$ While this link may answer the question, it is better to include the essential parts of the answer here and provide the link for reference. Link-only answers can become invalid if the linked page changes. - From Review $\endgroup$
    – Miyase
    Jul 18, 2022 at 16:21

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.